From 254dad870045edb7d54fef9869a07d8841099fa9 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Wed, 13 Jan 2021 21:15:44 +0100 Subject: [PATCH 01/44] db changes for projektarbeitsbeurteilung - added lehre.tbl_projektarbeitsbeurteilung - added columns zugangstoken, zugangstoken_gueltigbis to lehre.tbl_projektbetreuer --- system/dbupdate_3.3.php | 110 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 109 insertions(+), 1 deletion(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 2336ebad4..b08a7581d 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -4465,6 +4465,113 @@ if($result = $db->db_query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE } } +// SEQUENCE tbl_projektarbeitsbeurteilung_id_se +if ($result = $db->db_query("SELECT 0 FROM pg_class WHERE relname = 'tbl_projektarbeitsbeurteilung_id_seq'")) +{ + if ($db->db_num_rows($result) == 0) + { + $qry = ' + CREATE SEQUENCE lehre.tbl_projektarbeitsbeurteilung_id_seq + START WITH 1 + INCREMENT BY 1 + NO MAXVALUE + NO MINVALUE + CACHE 1; + '; + if(!$db->db_query($qry)) + echo 'lehre.tbl_projektarbeitsbeurteilung_id_seq '.$db->db_last_error().'
'; + else + echo '
Created sequence: lehre.tbl_projektarbeitsbeurteilung_id_seq'; + + // GRANT SELECT, UPDATE ON SEQUENCE lehre.tbl_projektarbeitsbeurteilung_id_seq TO vilesci; + $qry = 'GRANT SELECT, UPDATE ON SEQUENCE lehre.tbl_projektarbeitsbeurteilung_id_seq TO vilesci;'; + if (!$db->db_query($qry)) + echo 'lehre.tbl_projektarbeitsbeurteilung_id_seq '.$db->db_last_error().'
'; + else + echo '
Granted privileges to vilesci on lehre.tbl_projektarbeitsbeurteilung_id_seq'; + + // GRANT SELECT, UPDATE ON SEQUENCE lehre.tbl_projektarbeitsbeurteilung_id_seq TO fhcomplete; + $qry = 'GRANT SELECT, UPDATE ON SEQUENCE lehre.tbl_projektarbeitsbeurteilung_id_seq TO fhcomplete;'; + if (!$db->db_query($qry)) + echo 'lehre.tbl_projektarbeitsbeurteilung_id_seq '.$db->db_last_error().'
'; + else + echo '
Granted privileges to vilesci on lehre.tbl_projektarbeitsbeurteilung_id_seq'; + } +} + +// TABLE lehre.tbl_projektarbeitsbeurteilung +if (!@$db->db_query("SELECT 0 FROM lehre.tbl_projektarbeitsbeurteilung WHERE 0 = 1")) +{ + $qry = ' + CREATE TABLE lehre.tbl_projektarbeitsbeurteilung ( + projektarbeitsbeurteilung_id integer NOT NULL DEFAULT nextval(\'lehre.tbl_projektarbeitsbeurteilung_id_seq\'::regclass), + projektarbeit_id integer NOT NULL, + projektbetreuer_person_id integer NOT NULL, + betreuerart_kurzbz varchar(16) NOT NULL, + bewertung jsonb NOT NULL, + abgeschicktamum timestamp, + abgeschicktvon varchar(32), + insertamum timestamp default now(), + insertvon varchar(32), + updateamum timestamp + ); + + ALTER TABLE lehre.tbl_projektarbeitsbeurteilung ADD CONSTRAINT pk_projektarbeitsbeurteilung PRIMARY KEY (projektarbeitsbeurteilung_id); + ALTER TABLE lehre.tbl_projektarbeitsbeurteilung ADD CONSTRAINT fk_projektarbeitsbeurteilung_projektarbeit_id FOREIGN KEY (projektarbeit_id, projektbetreuer_person_id, betreuerart_kurzbz) REFERENCES lehre.tbl_projektbetreuer (projektarbeit_id, person_id, betreuerart_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE; + '; + + if (!$db->db_query($qry)) + echo 'lehre.tbl_projektarbeitsbeurteilung ' . $db->db_last_error() . '
'; + else + echo '
Created table lehre.tbl_projektarbeitsbeurteilung'; + + + // GRANT SELECT ON TABLE lehre.tbl_projektarbeitsbeurteilung TO web; + $qry = 'GRANT SELECT ON TABLE lehre.tbl_projektarbeitsbeurteilung TO web;'; + if (!$db->db_query($qry)) + echo 'lehre.tbl_projektarbeitsbeurteilung ' . $db->db_last_error() . '
'; + else + echo '
Granted privileges to web on lehre.tbl_projektarbeitsbeurteilung'; + + // GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE lehre.tbl_projektarbeitsbeurteilung TO vilesci; + $qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE lehre.tbl_projektarbeitsbeurteilung TO vilesci;'; + if (!$db->db_query($qry)) + echo 'lehre.tbl_projektarbeitsbeurteilung ' . $db->db_last_error() . '
'; + else + echo '
Granted privileges to vilesci on lehre.tbl_projektarbeitsbeurteilung'; + +// COMMENT ON TABLE lehre.tbl_projektarbeitsbeurteilung + $qry = 'COMMENT ON TABLE lehre.tbl_projektarbeitsbeurteilung IS \'Table to manage project work asessments\';'; + if (!$db->db_query($qry)) + echo 'Adding comment to lehre.tbl_projektarbeitsbeurteilung: ' . $db->db_last_error() . '
'; + else + echo '
Added comment to lehre.tbl_projektarbeitsbeurteilung'; +} + +// Add column zugangstoken to tbl_projektbetreuer +if(!$result = @$db->db_query("SELECT zugangstoken FROM lehre.tbl_projektbetreuer LIMIT 1")) +{ + $qry = "ALTER table lehre.tbl_projektbetreuer ADD COLUMN zugangstoken VARCHAR(32); + COMMENT ON COLUMN lehre.tbl_projektbetreuer.zugangstoken IS 'Zugangstoken zur Projektarbeitsbewertung fuer externe Betreuer';"; + + if(!$db->db_query($qry)) + echo 'lehre.tbl_projektbetreuer: '.$db->db_last_error().'
'; + else + echo '
lehre.tbl_projektbetreuer: Spalte zugangstoken hinzugefuegt'; +} + +// Add column zugangstoken_gueltigbis to tbl_projektbetreuer +if(!$result = @$db->db_query("SELECT zugangstoken_gueltigbis FROM lehre.tbl_projektbetreuer LIMIT 1")) +{ + $qry = "ALTER table lehre.tbl_projektbetreuer ADD COLUMN zugangstoken_gueltigbis date; + COMMENT ON COLUMN lehre.tbl_projektbetreuer.zugangstoken_gueltigbis IS 'Gueligkeitsdatum fuer Zugangstoken zur Projektarbeitsbewertung fuer externe Betreuer';"; + + if(!$db->db_query($qry)) + echo 'lehre.tbl_projektbetreuer: '.$db->db_last_error().'
'; + else + echo '
lehre.tbl_projektbetreuer: Spalte zugangstoken_gueltigbis hinzugefuegt'; +} + // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; @@ -4593,7 +4700,8 @@ $tabellen=array( "lehre.tbl_notenschluesselzuordnung" => array("notenschluesselzuordnung_id","notenschluessel_kurzbz","lehrveranstaltung_id","studienplan_id","oe_kurzbz","studiensemester_kurzbz"), "lehre.tbl_note" => array("note","bezeichnung","anmerkung","farbe","positiv","notenwert","aktiv","lehre","offiziell","bezeichnung_mehrsprachig","lkt_ueberschreibbar"), "lehre.tbl_projektarbeit" => array("projektarbeit_id","projekttyp_kurzbz","titel","lehreinheit_id","student_uid","firma_id","note","punkte","beginn","ende","faktor","freigegeben","gesperrtbis","stundensatz","gesamtstunden","themenbereich","anmerkung","updateamum","updatevon","insertamum","insertvon","ext_id","titel_english","seitenanzahl","abgabedatum","kontrollschlagwoerter","schlagwoerter","schlagwoerter_en","abstract", "abstract_en", "sprache","final"), - "lehre.tbl_projektbetreuer" => array("person_id","projektarbeit_id","betreuerart_kurzbz","note","faktor","name","punkte","stunden","stundensatz","updateamum","updatevon","insertamum","insertvon","ext_id","vertrag_id"), + "lehre.tbl_projektarbeitsbeurteilung" => array("projektarbeitsbeurteilung_id","projektarbeit_id","projektbetreuer_person_id","betreuerart_kurzbz","bewertung","abgeschicktamum","abgeschicktvon","insertamum","insertvon","updateamum"), + "lehre.tbl_projektbetreuer" => array("person_id","projektarbeit_id","betreuerart_kurzbz","note","faktor","name","punkte","stunden","stundensatz","updateamum","updatevon","insertamum","insertvon","ext_id","vertrag_id", "zugangstoken", "zugangstoken_gueltigbis"), "lehre.tbl_projekttyp" => array("projekttyp_kurzbz","bezeichnung","aktiv"), "lehre.tbl_pruefung" => array("pruefung_id","lehreinheit_id","student_uid","mitarbeiter_uid","note","pruefungstyp_kurzbz","datum","anmerkung","insertamum","insertvon","updateamum","updatevon","ext_id","pruefungsanmeldung_id","vertrag_id", "punkte"), "lehre.tbl_pruefungstyp" => array("pruefungstyp_kurzbz","beschreibung","abschluss","sort"), From 98deb3d2a0fd9d86fabb5fedaaa5af73ba669c48 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Thu, 14 Jan 2021 10:32:42 +0100 Subject: [PATCH 02/44] moved creation of tbl_projektarbeitsbeurteilung to FHC_Core_Abschlusspruefungsbeurteilung extension --- system/dbupdate_3.3.php | 83 ----------------------------------------- 1 file changed, 83 deletions(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index b08a7581d..3adf241ff 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -4465,89 +4465,6 @@ if($result = $db->db_query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE } } -// SEQUENCE tbl_projektarbeitsbeurteilung_id_se -if ($result = $db->db_query("SELECT 0 FROM pg_class WHERE relname = 'tbl_projektarbeitsbeurteilung_id_seq'")) -{ - if ($db->db_num_rows($result) == 0) - { - $qry = ' - CREATE SEQUENCE lehre.tbl_projektarbeitsbeurteilung_id_seq - START WITH 1 - INCREMENT BY 1 - NO MAXVALUE - NO MINVALUE - CACHE 1; - '; - if(!$db->db_query($qry)) - echo 'lehre.tbl_projektarbeitsbeurteilung_id_seq '.$db->db_last_error().'
'; - else - echo '
Created sequence: lehre.tbl_projektarbeitsbeurteilung_id_seq'; - - // GRANT SELECT, UPDATE ON SEQUENCE lehre.tbl_projektarbeitsbeurteilung_id_seq TO vilesci; - $qry = 'GRANT SELECT, UPDATE ON SEQUENCE lehre.tbl_projektarbeitsbeurteilung_id_seq TO vilesci;'; - if (!$db->db_query($qry)) - echo 'lehre.tbl_projektarbeitsbeurteilung_id_seq '.$db->db_last_error().'
'; - else - echo '
Granted privileges to vilesci on lehre.tbl_projektarbeitsbeurteilung_id_seq'; - - // GRANT SELECT, UPDATE ON SEQUENCE lehre.tbl_projektarbeitsbeurteilung_id_seq TO fhcomplete; - $qry = 'GRANT SELECT, UPDATE ON SEQUENCE lehre.tbl_projektarbeitsbeurteilung_id_seq TO fhcomplete;'; - if (!$db->db_query($qry)) - echo 'lehre.tbl_projektarbeitsbeurteilung_id_seq '.$db->db_last_error().'
'; - else - echo '
Granted privileges to vilesci on lehre.tbl_projektarbeitsbeurteilung_id_seq'; - } -} - -// TABLE lehre.tbl_projektarbeitsbeurteilung -if (!@$db->db_query("SELECT 0 FROM lehre.tbl_projektarbeitsbeurteilung WHERE 0 = 1")) -{ - $qry = ' - CREATE TABLE lehre.tbl_projektarbeitsbeurteilung ( - projektarbeitsbeurteilung_id integer NOT NULL DEFAULT nextval(\'lehre.tbl_projektarbeitsbeurteilung_id_seq\'::regclass), - projektarbeit_id integer NOT NULL, - projektbetreuer_person_id integer NOT NULL, - betreuerart_kurzbz varchar(16) NOT NULL, - bewertung jsonb NOT NULL, - abgeschicktamum timestamp, - abgeschicktvon varchar(32), - insertamum timestamp default now(), - insertvon varchar(32), - updateamum timestamp - ); - - ALTER TABLE lehre.tbl_projektarbeitsbeurteilung ADD CONSTRAINT pk_projektarbeitsbeurteilung PRIMARY KEY (projektarbeitsbeurteilung_id); - ALTER TABLE lehre.tbl_projektarbeitsbeurteilung ADD CONSTRAINT fk_projektarbeitsbeurteilung_projektarbeit_id FOREIGN KEY (projektarbeit_id, projektbetreuer_person_id, betreuerart_kurzbz) REFERENCES lehre.tbl_projektbetreuer (projektarbeit_id, person_id, betreuerart_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE; - '; - - if (!$db->db_query($qry)) - echo 'lehre.tbl_projektarbeitsbeurteilung ' . $db->db_last_error() . '
'; - else - echo '
Created table lehre.tbl_projektarbeitsbeurteilung'; - - - // GRANT SELECT ON TABLE lehre.tbl_projektarbeitsbeurteilung TO web; - $qry = 'GRANT SELECT ON TABLE lehre.tbl_projektarbeitsbeurteilung TO web;'; - if (!$db->db_query($qry)) - echo 'lehre.tbl_projektarbeitsbeurteilung ' . $db->db_last_error() . '
'; - else - echo '
Granted privileges to web on lehre.tbl_projektarbeitsbeurteilung'; - - // GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE lehre.tbl_projektarbeitsbeurteilung TO vilesci; - $qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE lehre.tbl_projektarbeitsbeurteilung TO vilesci;'; - if (!$db->db_query($qry)) - echo 'lehre.tbl_projektarbeitsbeurteilung ' . $db->db_last_error() . '
'; - else - echo '
Granted privileges to vilesci on lehre.tbl_projektarbeitsbeurteilung'; - -// COMMENT ON TABLE lehre.tbl_projektarbeitsbeurteilung - $qry = 'COMMENT ON TABLE lehre.tbl_projektarbeitsbeurteilung IS \'Table to manage project work asessments\';'; - if (!$db->db_query($qry)) - echo 'Adding comment to lehre.tbl_projektarbeitsbeurteilung: ' . $db->db_last_error() . '
'; - else - echo '
Added comment to lehre.tbl_projektarbeitsbeurteilung'; -} - // Add column zugangstoken to tbl_projektbetreuer if(!$result = @$db->db_query("SELECT zugangstoken FROM lehre.tbl_projektbetreuer LIMIT 1")) { From c3f24f30385a87c13417907c8d1cd862297bbc9e Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Thu, 28 Jan 2021 13:03:18 +0100 Subject: [PATCH 03/44] - Projektarbeitsbeurtielung: added app Projektarbeitsbeurteilung and phrases for Projektarbeitsformular --- system/dbupdate_3.3.php | 15 +- system/phrasesupdate.php | 1205 +++++++++++++++++++++++++++++++++++++- 2 files changed, 1218 insertions(+), 2 deletions(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 3adf241ff..59dba9f9d 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -4489,6 +4489,20 @@ if(!$result = @$db->db_query("SELECT zugangstoken_gueltigbis FROM lehre.tbl_proj echo '
lehre.tbl_projektbetreuer: Spalte zugangstoken_gueltigbis hinzugefuegt'; } +// App 'projektarbeitsbeurteilung' hinzufügen +if($result = $db->db_query("SELECT 1 FROM system.tbl_app WHERE app='projektarbeitsbeurteilung'")) +{ + if($db->db_num_rows($result)==0) + { + $qry = "INSERT INTO system.tbl_app(app) VALUES('projektarbeitsbeurteilung');"; + + if(!$db->db_query($qry)) + echo 'App: '.$db->db_last_error().'
'; + else + echo '
Neue App projektarbeitsbeurteilung in system.tbl_app hinzugefügt'; + } +} + // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; @@ -4617,7 +4631,6 @@ $tabellen=array( "lehre.tbl_notenschluesselzuordnung" => array("notenschluesselzuordnung_id","notenschluessel_kurzbz","lehrveranstaltung_id","studienplan_id","oe_kurzbz","studiensemester_kurzbz"), "lehre.tbl_note" => array("note","bezeichnung","anmerkung","farbe","positiv","notenwert","aktiv","lehre","offiziell","bezeichnung_mehrsprachig","lkt_ueberschreibbar"), "lehre.tbl_projektarbeit" => array("projektarbeit_id","projekttyp_kurzbz","titel","lehreinheit_id","student_uid","firma_id","note","punkte","beginn","ende","faktor","freigegeben","gesperrtbis","stundensatz","gesamtstunden","themenbereich","anmerkung","updateamum","updatevon","insertamum","insertvon","ext_id","titel_english","seitenanzahl","abgabedatum","kontrollschlagwoerter","schlagwoerter","schlagwoerter_en","abstract", "abstract_en", "sprache","final"), - "lehre.tbl_projektarbeitsbeurteilung" => array("projektarbeitsbeurteilung_id","projektarbeit_id","projektbetreuer_person_id","betreuerart_kurzbz","bewertung","abgeschicktamum","abgeschicktvon","insertamum","insertvon","updateamum"), "lehre.tbl_projektbetreuer" => array("person_id","projektarbeit_id","betreuerart_kurzbz","note","faktor","name","punkte","stunden","stundensatz","updateamum","updatevon","insertamum","insertvon","ext_id","vertrag_id", "zugangstoken", "zugangstoken_gueltigbis"), "lehre.tbl_projekttyp" => array("projekttyp_kurzbz","bezeichnung","aktiv"), "lehre.tbl_pruefung" => array("pruefung_id","lehreinheit_id","student_uid","mitarbeiter_uid","note","pruefungstyp_kurzbz","datum","anmerkung","insertamum","insertvon","updateamum","updatevon","ext_id","pruefungsanmeldung_id","vertrag_id", "punkte"), diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index 727a389e4..833ca1c73 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -7988,7 +7988,1210 @@ Any unusual occurrences 'insertvon' => 'system' ) ) - ) + ), + array( + 'app' => 'core', + 'category' => 'global', + 'phrase' => 'und', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'und', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'and', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + + //******************* Projektarbeitsbeurteilung - CORE + array( + 'app' => 'core', + 'category' => 'lehre', + 'phrase' => 'sehrGut', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Sehr Gut', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Excellent', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'lehre', + 'phrase' => 'gut', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Gut', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Good', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'lehre', + 'phrase' => 'befriedigend', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Befriedigend', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Satisfactory', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'lehre', + 'phrase' => 'genuegend', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Genügend', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Sufficient', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'lehre', + 'phrase' => 'nichtGenuegend', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Nicht genügend', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Insufficient', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'lehre', + 'phrase' => 'notenschluessel', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Notenschlüssel', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'criteria', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'ui', + 'phrase' => 'speichernAbsenden', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Speichern und Absenden', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Save and send', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + //******************* Projektarbeitsbeurteilung - specific + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'beurteilung', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Beurteilung', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Assessment', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'erstBegutachter', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Erst-Begutachter*in', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'First Assessor', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'plagiatscheckUnauffaellig', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Der Plagiatscheck ist unauffällig.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The plagiarism check reveals nothing of note.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'kriterien', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Kriterien', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Criteria', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'punkte', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Punkte', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Points', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'thema', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Thema', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Subject', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'themaText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Das Thema wurde in eine im Rahmen einer Masterarbeit bearbeitbare Form übergeführt (Entwicklung sinnvoller Forschungsfragen bzw. Aufgabenstellungen, etc.).', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The subject was handled in a suitable manner for a master thesis (well-structured, meaningful research questions or tasks, etc.)', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'loesungsansatz', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Lösungsansatz', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Solution Approach', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'loesungsansatzText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Der Lösungsansatz ist dem Stand der Technik entsprechend argumentiert und zeigt ein adäquates Problemverständnis.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The approach to the solution is argued according to the state of the art and shows an adequate understanding of the problem.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'methode', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Methode', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Methods', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'methodeText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Die methodische Vorgangsweise ist in Bezug auf die Ausrichtung der Arbeit (technisch-ingenieurwissenschaftlich, sozial-wirtschaftswissenschaftlich…) angemessen, gut begründet und wird korrekt umgesetzt.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The methodological approach is appropriate, well-founded and correctly implemented in relation to the orientation of the work (technical-engineering, socio-economic…).', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'ereignisseDiskussion', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Ergebnisse und Diskussion', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Results & Discussion of the conclusion', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'ereignisseDiskussionText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Die Frage- bzw. Aufgabenstellungen wurden zielführend beantwortet; die Ergebnisse werden diskutiert.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The research questions or the tasks were answered in a manner appropriate with the objectives; the results are discussed.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'ereignisseDiskussionTextMaster', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Die Forschungsfrage(n) wurde(n) zielführend beantwortet; die Ergebnisse werden kritisch diskutiert und liefern einen Mehrwert für Forschung und/oder Berufspraxis.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The research question(s) was (were) answered in a manner appropriate with the objectives; the results are examined critically and provide added value for research and / or professional practice.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'eigenstaendigkeit', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Eigenständigkeit', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Independence', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'eigenstaendigkeitText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Die Arbeit wurde in selbständiger Arbeitsweise (z.B. eigenständige Lösung der Fragestellungen und aufgetretener Probleme) verfasst.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The thesis was written in an independent way (e.g. independent solutions to the questions and problems that occurred)', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'struktur', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Struktur', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Structure', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'strukturText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Die Arbeit ist schlüssig aufgebaut und gut strukturiert.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The thesis is coherently arranged and well structured.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'stil', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Stil', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Style', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'stilText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Der Stil entspricht einer wissenschaftlichen Arbeit. Die Arbeit ist flüssig lesbar und weist eine klare, eindeutige und gendergerechte Sprache auf.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The style is suitable for a piece of scientific work. The thesis is easy to read and has a clear, unambiguous and gender-appropriate language.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'form', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Form', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Form', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'formText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Die Anforderungen an Gliederung, Verzeichnisse, Textsatz und Grafiken bzw. Tabellen sind nach den geltenden Richtlinien umgesetzt.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The requirements for structure, lists, typesetting and graphics or tables are implemented in accordance with the applicable guidelines.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'literatur', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Literatur', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Sources', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'literaturText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Die verwendeten Quellen sind passend, aktuell und werden ausreichend variiert.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The sources used are appropriate, current and sufficiently varied.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'zitierregeln', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Zitierregeln', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Citation Rules', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'zitierregelnText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Die Zitierregeln werden korrekt angewendet und durchgehend umgesetzt.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The citation rules are correctly applied and implemented throughout.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'gesamtpunkte', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Gesamtpunkte', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Total points', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'gutachtenZweitBegutachtung', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Das Gutachten des/der Zweit-BegutachterIn liegt vor und ist in die Beurteilung eingeflossen.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The second assessor’s assessment has been submitted and is part of the final grade.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'bitteBeurteilen', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Bitte beurteilen', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Please assess', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'begruendungText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Begründung (verpflichtend nur für die Note "Nicht Genügend")', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Reason (only required for the grade "insufficient")', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'unzureichendErfuellt', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'unzureichend erfüllt', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'inadequately met', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'genuegendErfuellt', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'genügend erfüllt', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'adequately met', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'gutErfuellt', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'gut erfüllt', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'well fulfilled', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'sehrGutErfuellt', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'sehr gut erfüllt', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'very well fulfilled', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'notenschluesselHinweis', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Liegt die Punkteanzahl bei den Kriterien "1 - 5" oder "6 - 10" in Summe unter 50%, ist die Masterarbeit insgesamt als negativ zu beurteilen.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'If, within any of the criteria, the points total is under 50%, the Master’s Thesis is deemed to have failed overall.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'zweitBegutachter', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Zweit-Begutachter*in', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Second Assessor', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'kurzeSchriftlicheBeurteilung', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Kurze schriftliche Beurteilung', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Short written assessment', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'fragestellungRelevant', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Ist die Fragestellung relevant und aktuell?', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Is the question relevant and topical?', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'inhaltMethode', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Inhalt und Methode', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Content and Methods', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'aufgabenstellungNachvollziehbar', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Ist die Aufgabenstellung nachvollziehbar und gut argumentiert dargestellt?', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Is the task presented comprehensibly and is it well argued?', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'methodischeVorgangsweiseAngemessen', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Ist die methodische Vorgangsweise angemessen und korrekt angewendet?', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Has the methodological approach been applied appropriately and correctly?', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'mehrwertBerufspraxis', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Liefert das Ergebnis einen Mehrwert für die Berufspraxis?', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Does the result provide added value for professional practice?', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'eigenstaendigkeitErgebnis', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Eigenständigkeit beim Erreichen des Ergebnisses', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Independence in achieving the result', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'arbeitEigenstaendigVerfasst', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Ist die Arbeit eigenständig verfasst worden?', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Was the thesis written independently?', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'arbeitGutStrukturiert', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Ist die Arbeit gut strukturiert?', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Is the thesis well structured?', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'gliederungInhaltlichVerstaendlich', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Ist die Gliederung inhaltlich verständlich und in Bezug auf das Thema schlüssig aufgebaut ("roter Faden")?', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 's the structure understandable in terms of content and is it coherent in relation to the topic ("red thread")?', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'nameStudierende', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Name des/der Studierenden', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Name of student', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'beurteiltVon', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Beurteilt von', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Assessed by', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'personenkennzeichen', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Personenkennzeichen', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Student number', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'beurteilungGespeichertGesendet', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Beurteilung gespeichert und gesendet', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Assessment saved and sent', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'beurteilungGespeichert', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Beurteilung gespeichert', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Assessment saved', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'beurteilungFehler', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Fehler beim Speichern der Beurteilung', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Error when saving assessment', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), ); From 1f88bfae4078889beb5881373f61dbde72b99b0f Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Thu, 4 Feb 2021 11:21:40 +0100 Subject: [PATCH 04/44] - Projektbetreuer Model: added getBetreuerByToken method - phrasesupdate: added new Projektarbeitsbeurtielung phrases --- .../education/Projektbetreuer_model.php | 19 ++++ system/phrasesupdate.php | 101 ++++++++++++++++++ 2 files changed, 120 insertions(+) diff --git a/application/models/education/Projektbetreuer_model.php b/application/models/education/Projektbetreuer_model.php index 746e4c052..4da88e344 100644 --- a/application/models/education/Projektbetreuer_model.php +++ b/application/models/education/Projektbetreuer_model.php @@ -41,4 +41,23 @@ class Projektbetreuer_model extends DB_Model return error ('Incorrect parameter type'); } } + + /** + * Get Projektbetreuer data by authentification token + * @param $zugangstoken + * @return object + */ + public function getBetreuerByToken($zugangstoken) + { + $qry = ' + SELECT tbl_projektbetreuer.person_id, tbl_projektbetreuer.projektarbeit_id, student_uid + FROM lehre.tbl_projektbetreuer + JOIN lehre.tbl_projektarbeit USING (projektarbeit_id) + WHERE zugangstoken = ? AND zugangstoken_gueltigbis >= NOW() + ORDER BY tbl_projektbetreuer.insertamum DESC, projektarbeit_id DESC + LIMIT 1 + '; + + return $this->execQuery($qry, array($zugangstoken)); + } } diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index 833ca1c73..7dff6a675 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -8151,6 +8151,46 @@ Any unusual occurrences ) ) ), + array( + 'app' => 'core', + 'category' => 'ui', + 'phrase' => 'fehlt', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'fehlt', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'missing', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'ui', + 'phrase' => 'ungueltig', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'ungültig', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'invalid', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), //******************* Projektarbeitsbeurteilung - specific array( 'app' => 'projektarbeitsbeurteilung', @@ -8172,6 +8212,26 @@ Any unusual occurrences ) ) ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'projektarbeitsbeurteilung', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Projektarbeitsbeurteilung', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Projekt Work Assessment', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), array( 'app' => 'projektarbeitsbeurteilung', 'category' => 'projektarbeitsbeurteilung', @@ -9192,6 +9252,47 @@ Any unusual occurrences ) ) ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'ungueltigerToken', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Ungültiger Token', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Invalid Token', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'zurProjektarbeitsUebersicht', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Zur Projektarbeitsübersicht (CIS login)', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Projekt work overview (CIS login)', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + ); From fd79551f0081c669d05b080434ccb094d4c96d02 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Thu, 4 Feb 2021 20:37:05 +0100 Subject: [PATCH 05/44] - Pruefungsprotokoll bugfix: replaced bitwise and with logical and --- application/controllers/lehre/Pruefungsprotokoll.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/controllers/lehre/Pruefungsprotokoll.php b/application/controllers/lehre/Pruefungsprotokoll.php index 467a7dc71..21f50acca 100644 --- a/application/controllers/lehre/Pruefungsprotokoll.php +++ b/application/controllers/lehre/Pruefungsprotokoll.php @@ -220,7 +220,7 @@ class Pruefungsprotokoll extends Auth_Controller $nullfields = array('uhrzeit', 'endezeit', 'abschlussbeurteilung_kurzbz', 'protokoll'); foreach ($data as $idx => $item) { - if (in_array($idx, $nullfields) & $item === '') + if (in_array($idx, $nullfields) && $item === '') $data[$idx] = null; } From 20413b1b03275a56b840ee8d5f13a12db74fce4a Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Thu, 18 Feb 2021 01:53:57 +0100 Subject: [PATCH 06/44] abgabetool: replaced link in CIS to redirect to new Beurteilungsformular --- cis/private/lehre/abgabe_lektor_details.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cis/private/lehre/abgabe_lektor_details.php b/cis/private/lehre/abgabe_lektor_details.php index 7022ead1f..c3cfbfed5 100644 --- a/cis/private/lehre/abgabe_lektor_details.php +++ b/cis/private/lehre/abgabe_lektor_details.php @@ -358,7 +358,7 @@ while ($result_nam && $row_nam=$db->db_fetch_object($result_nam)) } $htmlstr .= "\n"; $htmlstr .= ""; -$htmlstr .= ""; From 9677a5a4fdb2d0720e9578f77c29d67e4ded2a8c Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Mon, 1 Mar 2021 09:33:14 +0100 Subject: [PATCH 07/44] - BenutzerModel: added comment for getFromPersonId method - UPDATE permission for web for tbl_projektbetreuer added - added phrase for Zweitbegutachter - link --- application/models/person/Benutzer_model.php | 5 +++++ system/dbupdate_3.3.php | 14 +++++++++++++ system/phrasesupdate.php | 21 +++++++++++++++++++- 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/application/models/person/Benutzer_model.php b/application/models/person/Benutzer_model.php index c1e76ce38..eff1329a6 100644 --- a/application/models/person/Benutzer_model.php +++ b/application/models/person/Benutzer_model.php @@ -13,6 +13,11 @@ class Benutzer_model extends DB_Model $this->hasSequence = false; } + /** + * Gets active Benutzer from person_id + * @param $person_id + * @return object + */ public function getFromPersonId($person_id) { return $this->loadWhere(array('person_id' => $person_id, 'aktiv' => true)); diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 59dba9f9d..55a00500b 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -4503,6 +4503,20 @@ if($result = $db->db_query("SELECT 1 FROM system.tbl_app WHERE app='projektarbei } } +// UPDATE Berechtigung für lehre.tbl_projektbetreuer für web user hinzufügen +if($result = @$db->db_query("SELECT * FROM information_schema.role_table_grants WHERE table_name='tbl_projektbetreuer' AND table_schema='lehre' AND grantee='web' AND privilege_type='UPDATE'")) +{ + if($db->db_num_rows($result)==0) + { + $qry = "GRANT UPDATE ON lehre.tbl_projektbetreuer TO web;"; + + if(!$db->db_query($qry)) + echo 'Projektbetreuer Berechtigungen: '.$db->db_last_error().'
'; + else + echo '
Web User: update fuer lehre.tbl_projektbetreuer berechtigt'; + } +} + // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index 7dff6a675..6e4ed26a6 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -9292,7 +9292,26 @@ Any unusual occurrences ) ) ), - + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'zurZweitbegutachterBewertung', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Zur Bewertung des Zweitbegutachters', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'To assessment of second assessor', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ) ); From 9ba6f3b538b123c67ee7d3a045816ed0b3e656d6 Mon Sep 17 00:00:00 2001 From: Cris Date: Tue, 2 Mar 2021 15:44:46 +0100 Subject: [PATCH 08/44] Fixed HTML code appearing within mail message body . by breaking lines with \n . using nowrap to avoid breaking text Signed-off-by: cris-technikum --- content/statistik/bewerberstatistik.php | 36 ++++++++++++++----------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/content/statistik/bewerberstatistik.php b/content/statistik/bewerberstatistik.php index 932a8c6cb..47e5dd0ec 100644 --- a/content/statistik/bewerberstatistik.php +++ b/content/statistik/bewerberstatistik.php @@ -1733,6 +1733,7 @@ else $content .= "
"; $content .= '
".$p->t('abgabetool/student').": ".$db->convert_html_chars($studentenname)."
"; +$htmlstr .= "
"; $htmlstr .= "\n"; $htmlstr .= "\n"; $htmlstr .= "
'; + $content .= "\n"; } //Aufsplittungen für Mischformen holen @@ -1744,28 +1745,32 @@ else { if ($db->db_num_rows($result) > 0) { - $content .= "

Aufsplittung Mischformen


"; - $content .= "\n - - - "; + $content .= "

"; + $content .= "

Aufsplittung Mischformen


"; + $content .= "\n
Studiengang
"; + $content .= "\n"; + $content .= "\n"; + $content .= "\n"; foreach ($studenttypes as $heading) { - $content .= ""; + $content .= "\n"; } - $content .= ""; + $content .= "\n"; + $content .= "\n\n"; //orgformheadings (VZ, BB,...) ausgeben for ($i = 0; $i < $noStudenttypes; $i++) { foreach ($orgform_arr as $row_orgform) { - $content .= ""; } } - $content .= ""; + $content .= "\n"; + $content .= "\n"; + $content .= "\n"; $sumarr = array(); @@ -1773,13 +1778,13 @@ else { $content .= "\n"; $content .= ''; - $content .= ""; + $content .= "\n"; foreach ($studenttypes as $key => $value) { foreach ($orgform_arr as $row_orgform) { $fullAlias = $key."_".mb_strtolower($row_orgform); - $content .= ""; //Summe berechnen @@ -1794,14 +1799,15 @@ else } } } - $content .= ""; + $content .= "\n"; $content .= "\n"; - $content .= ''; - $content .= ""; + $content .= ""; + $content .= ''; + $content .= "\n"; foreach ($sumarr as $sum) { - $content .= ""; + $content .= "\n"; } $content .= ""; $content .= '
Studiengang$heading$heading
 
"; + $content .= "\n"; $content .= $row_orgform; $content .= "
".mb_strtoupper($row->typ.$row->kurzbz)." ($row->kurzbzlang)".mb_strtoupper($row->typ.$row->kurzbz)." ($row->kurzbzlang)"; + $content .= "\n"; $content .= $row->{$fullAlias}; $content .= "
Summe
Summe".$sum."".$sum."
'; From edf657fdb96735bda2ccabfac1cf8984f79158e8 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Wed, 3 Mar 2021 00:00:51 +0100 Subject: [PATCH 09/44] abgabe_student_details.php: Mail with link (and possibly token for second assessor) to project assessment is sent with final upload to first and second assessor. --- cis/private/lehre/abgabe_student_details.php | 138 ++++++++++++++++++- 1 file changed, 136 insertions(+), 2 deletions(-) diff --git a/cis/private/lehre/abgabe_student_details.php b/cis/private/lehre/abgabe_student_details.php index e12bb1fb8..5506ddc74 100644 --- a/cis/private/lehre/abgabe_student_details.php +++ b/cis/private/lehre/abgabe_student_details.php @@ -397,7 +397,7 @@ if($command=="update" && $error!=true) echo $p->t('global/dateiNichtErfolgreichHochgeladen'); } } - //E-Mail an 1.Begutachter + //E-Mail an 1.Begutachter und 2.Begutachter if($bid!='' && $bid!=NULL) { $qry_betr="SELECT distinct trim(COALESCE(titelpre,'')||' '||COALESCE(vorname,'')||' '||COALESCE(nachname,'')||' '||COALESCE(titelpost,'')) as first, @@ -424,13 +424,48 @@ if($command=="update" && $error!=true) { $row_std=$db->db_fetch_object($result_std); + $mail_anrede = "Sehr geehrte".($row_betr->anrede=="Herr"?"r":"")." ".$row_betr->anrede." ".$row_betr->first."!\n\n"; + $mail_abgabetext = ($row_std->anrede)." ".trim($row_std->titelpre." ".$row_std->vorname." ".$row_std->nachname." ".$row_std->titelpost)." hat eine Abgabe vorgenommen.\n\n"; + $mail_zurbeurteilung = "Zur Beurteilung der Arbeit:\n"; + $mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/Projektarbeitsbeurteilung"; + $mail_fulllink = "$mail_baselink?projektarbeit_id=".$projektarbeit_id."&uid=".$user."\n\n"; + $mail_abschluss = "--------------------------------------------------------------------------\n"; + $mail_abschluss .= "Dies ist ein vom Bachelor-/Masterarbeitsabgabesystem generiertes Info-Mail\nCis->Mein CIS->Projektarbeiten->Bachelor- und Masterarbeitsabgabe\n"; + $mail_abschluss .= "--------------------------------------------------------------------------"; + + $mailtext_erstbetr = $mail_anrede.$mail_abgabetext.$mail_zurbeurteilung.$mail_fulllink.$mail_abschluss; + + // send Mail to 1. Begutachter $mail = new mail($row_betr->mitarbeiter_uid."@".DOMAIN, "no-reply@".DOMAIN, "Bachelor-/Masterarbeitsbetreuung", - "Sehr geehrte".($row_betr->anrede=="Herr"?"r":"")." ".$row_betr->anrede." ".$row_betr->first."!\n\n".($row_std->anrede)." ".trim($row_std->titelpre." ".$row_std->vorname." ".$row_std->nachname." ".$row_std->titelpost)." hat eine Abgabe vorgenommen.\n\n--------------------------------------------------------------------------\nDies ist ein vom Bachelor-/Masterarbeitsabgabesystem generiertes Info-Mail\nCis->Mein CIS->Projektarbeiten->Bachelor- und Masterarbeitsabgabe\n--------------------------------------------------------------------------"); + $mailtext_erstbetr); $mail->setReplyTo($user."@".DOMAIN); if(!$mail->send()) { echo "".$p->t('abgabetool/fehlerMailBegutachter')."
 "; } + + // send Mail to 2. Begutachter + $zweitbetr = getZweitbegutachterWithToken($projektarbeit_id, $bid, $user); + + if ($zweitbetr) + { + $intern = isset($zweitbetr->uid); + $zweitbetrmail = $intern ? $zweitbetr->uid."@".DOMAIN : $zweitbetr->kontakt; + + $mail_link = $intern ? $mail_fulllink : $mail_baselink."\n\n"; + $mail_anrede = "Sehr geehrte".($zweitbetr->anrede=="Herr"?"r":"")." ".$zweitbetr->anrede." ".$zweitbetr->first."!\n\n"; + $mail_token = isset($zweitbetr->zugangstoken) && !$intern ? "Zugangstoken: ".$zweitbetr->zugangstoken."\n\n" : ""; + + $mailtext_zweitbetr = $mail_anrede.$mail_abgabetext.$mail_zurbeurteilung.$mail_link.$mail_token.$mail_abschluss; + + $mail = new mail($zweitbetrmail, "no-reply@".DOMAIN, "Masterarbeitsbetreuung", + $mailtext_zweitbetr); + $mail->setReplyTo($user."@".DOMAIN); + if(!$mail->send()) + { + echo "".$p->t('abgabetool/fehlerMailBegutachter')."
 "; + } + } } } else @@ -605,4 +640,103 @@ function isAbgabeOutOfDate($paabgabe_id) } return false; } + +/** + * Holt Zweitbegutachter einer Projektarbeit. + * Wenn Zweitbegutachter extern ist (kein Benutzeraccount) und noch keinen Token hat, + * wird der Token erstellt. + * @param $projektarbeit_id int + * @param $bid int person_id des Erstbegutachters + * @param $student_uid string uid des Studenten der Arbeit abgibt + * @return object + */ +function getZweitbegutachterWithToken($projektarbeit_id, $bid, $student_uid) +{ + global $db, $p; + + $qry_betr="SELECT betr.person_id, anrede, betr.zugangstoken, betr.zugangstoken_gueltigbis, tbl_benutzer.uid, kontakt, + trim(COALESCE(titelpre,'')||' '||COALESCE(vorname,'')||' '||COALESCE(nachname,'')||' '||COALESCE(titelpost,'')) as first + FROM lehre.tbl_projektbetreuer betr + JOIN lehre.tbl_projektarbeit parb ON betr.projektarbeit_id = parb.projektarbeit_id + JOIN public.tbl_person pers ON betr.person_id = pers.person_id + JOIN public.tbl_kontakt ON pers.person_id = tbl_kontakt.person_id + LEFT JOIN public.tbl_benutzer ON pers.person_id = tbl_benutzer.person_id + WHERE betr.betreuerart_kurzbz = 'Zweitbegutachter' + AND betr.projektarbeit_id = ".$db->db_add_param($projektarbeit_id, FHC_INTEGER)." + AND parb.student_uid = ".$db->db_add_param($student_uid)." + AND EXISTS ( + SELECT 1 FROM lehre.tbl_projektbetreuer + WHERE person_id = ".$db->db_add_param($bid, FHC_INTEGER)." + AND betreuerart_kurzbz = 'Erstbegutachter' + AND projektarbeit_id = betr.projektarbeit_id + ) + AND kontakttyp='email' AND zustellung AND (tbl_benutzer.aktiv OR tbl_benutzer.aktiv IS NULL) + ORDER BY betr.insertamum DESC + LIMIT 1"; + + if (!$betr=$db->db_query($qry_betr)) + { + echo "".$p->t('global/fehlerBeimLesenAusDatenbank')."
 "; + return null; + } + else + { + $row_betr = $db->db_fetch_object($betr); + + if ($row_betr) + { + // if externer Betreuer and no valid token, generate + if (!isset($row_betr->uid) && (!isset($row_betr->zugangstoken) || $row_betr->zugangstoken_gueltigbis < date('Y-m-d'))) + { + $tokenanzahl = 1; + + while ($tokenanzahl > 0) + { + //generate random string + $rand_token = openssl_random_pseudo_bytes(16); + //change binary to hexadecimal + $token = bin2hex($rand_token); + //token generated + + $qry_tokencheck = " + SELECT count(*) AS anzahl + FROM lehre.tbl_projektbetreuer + WHERE zugangstoken = ".$db->db_add_param($token)." + "; + + if ($tokencount = $db->db_query($qry_tokencheck)) + { + $row_tokencount = $db->db_fetch_object($tokencount); + + $tokenanzahl = (int) $row_tokencount->anzahl; + } + else + { + echo "".$p->t('global/fehleraufgetreten')."
 "; + break; + } + } + + $qry_upd="UPDATE lehre.tbl_projektbetreuer SET + zugangstoken = ".$db->db_add_param($token).", + zugangstoken_gueltigbis = CURRENT_DATE + interval '1 year' + WHERE projektarbeit_id = ".$db->db_add_param($projektarbeit_id, FHC_INTEGER)." + AND person_id = ".$db->db_add_param($row_betr->person_id, FHC_INTEGER)." + AND betreuerart_kurzbz = 'Zweitbegutachter' + "; + + if($result=$db->db_query($qry_upd)) + { + $row_betr->zugangstoken = $token; + } + else + { + echo "".$p->t('global/fehleraufgetreten')."
 "; + } + } + + return $row_betr; + } + } +} ?> From 6bb9c77ca1c6745c972fa237303d5f4f2bfa2fed Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Wed, 3 Mar 2021 10:43:37 +0100 Subject: [PATCH 10/44] abgabe_student_details.php: Mail to Erst- and Zweitbegutachter is a sancho mail --- cis/private/lehre/abgabe_student_details.php | 41 ++++++++++++++++++-- locale/de-AT/abgabetool.php | 3 +- locale/en-US/abgabetool.php | 3 +- locale/it-IT/abgabetool.php | 3 +- 4 files changed, 44 insertions(+), 6 deletions(-) diff --git a/cis/private/lehre/abgabe_student_details.php b/cis/private/lehre/abgabe_student_details.php index 5506ddc74..fcd5e7206 100644 --- a/cis/private/lehre/abgabe_student_details.php +++ b/cis/private/lehre/abgabe_student_details.php @@ -34,6 +34,7 @@ require_once('../../../include/mail.class.php'); require_once('../../../include/benutzerberechtigung.class.php'); require_once('../../../include/phrasen.class.php'); require_once('../../../include/projektarbeit.class.php'); +require_once('../../../include/sancho.inc.php'); $anzeigesprache = getSprache(); $p = new phrasen($anzeigesprache); @@ -424,7 +425,7 @@ if($command=="update" && $error!=true) { $row_std=$db->db_fetch_object($result_std); - $mail_anrede = "Sehr geehrte".($row_betr->anrede=="Herr"?"r":"")." ".$row_betr->anrede." ".$row_betr->first."!\n\n"; +/* $mail_anrede = "Sehr geehrte".($row_betr->anrede=="Herr"?"r":"")." ".$row_betr->anrede." ".$row_betr->first."!\n\n"; $mail_abgabetext = ($row_std->anrede)." ".trim($row_std->titelpre." ".$row_std->vorname." ".$row_std->nachname." ".$row_std->titelpost)." hat eine Abgabe vorgenommen.\n\n"; $mail_zurbeurteilung = "Zur Beurteilung der Arbeit:\n"; $mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/Projektarbeitsbeurteilung"; @@ -440,6 +441,24 @@ if($command=="update" && $error!=true) $mailtext_erstbetr); $mail->setReplyTo($user."@".DOMAIN); if(!$mail->send()) + { + echo "".$p->t('abgabetool/fehlerMailBegutachter')."
 "; + }*/ + + $mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/Projektarbeitsbeurteilung"; + $mail_fulllink = "$mail_baselink?projektarbeit_id=".$projektarbeit_id."&uid=".$user; + $maildata = array(); + $maildata['geehrt'] = "geehrte".($row_betr->anrede=="Herr"?"r":""); + $maildata['anrede'] = $row_betr->anrede; + $maildata['betreuer_voller_name'] = $row_betr->first; + $maildata['student_anrede'] = $row_std->anrede; + $maildata['student_voller_name'] = trim($row_std->titelpre." ".$row_std->vorname." ".$row_std->nachname." ".$row_std->titelpost); + $maildata['link'] = $mail_fulllink; + $maildata['token'] = ""; + + $mailres = sendSanchoMail('ParbeitsbeurteilungEndupload', $maildata, $row_betr->mitarbeiter_uid."@".DOMAIN, "Bachelor-/Masterarbeitsbetreuung"); + + if(!$mailres) { echo "".$p->t('abgabetool/fehlerMailBegutachter')."
 "; } @@ -452,7 +471,7 @@ if($command=="update" && $error!=true) $intern = isset($zweitbetr->uid); $zweitbetrmail = $intern ? $zweitbetr->uid."@".DOMAIN : $zweitbetr->kontakt; - $mail_link = $intern ? $mail_fulllink : $mail_baselink."\n\n"; + /*$mail_link = $intern ? $mail_fulllink : $mail_baselink."\n\n"; $mail_anrede = "Sehr geehrte".($zweitbetr->anrede=="Herr"?"r":"")." ".$zweitbetr->anrede." ".$zweitbetr->first."!\n\n"; $mail_token = isset($zweitbetr->zugangstoken) && !$intern ? "Zugangstoken: ".$zweitbetr->zugangstoken."\n\n" : ""; @@ -464,6 +483,22 @@ if($command=="update" && $error!=true) if(!$mail->send()) { echo "".$p->t('abgabetool/fehlerMailBegutachter')."
 "; + }*/ + + $zweitbetmaildata = array(); + $zweitbetmaildata['geehrt'] = "geehrte".($zweitbetr->anrede=="Herr"?"r":""); + $zweitbetmaildata['anrede'] = $zweitbetr->anrede; + $zweitbetmaildata['betreuer_voller_name'] = $zweitbetr->first; + $zweitbetmaildata['student_anrede'] = $maildata['student_anrede']; + $zweitbetmaildata['student_voller_name'] = $maildata['student_voller_name']; + $zweitbetmaildata['link'] = $mail_link = $intern ? $mail_fulllink : $mail_baselink; + $zweitbetmaildata['token'] = isset($zweitbetr->zugangstoken) && !$intern ? "

Zugangstoken: ".$zweitbetr->zugangstoken."

" : ""; + + $mailres = sendSanchoMail('ParbeitsbeurteilungEndupload', $zweitbetmaildata, $zweitbetrmail, "Masterarbeitsbetreuung"); + + if(!$mailres) + { + echo "".$p->t('abgabetool/fehlerMailZweitBegutachter')."
 "; } } } @@ -654,7 +689,7 @@ function getZweitbegutachterWithToken($projektarbeit_id, $bid, $student_uid) { global $db, $p; - $qry_betr="SELECT betr.person_id, anrede, betr.zugangstoken, betr.zugangstoken_gueltigbis, tbl_benutzer.uid, kontakt, + $qry_betr="SELECT betr.person_id, pers.anrede, betr.zugangstoken, betr.zugangstoken_gueltigbis, tbl_benutzer.uid, kontakt, trim(COALESCE(titelpre,'')||' '||COALESCE(vorname,'')||' '||COALESCE(nachname,'')||' '||COALESCE(titelpost,'')) as first FROM lehre.tbl_projektbetreuer betr JOIN lehre.tbl_projektarbeit parb ON betr.projektarbeit_id = parb.projektarbeit_id diff --git a/locale/de-AT/abgabetool.php b/locale/de-AT/abgabetool.php index eb12cab75..a1b108ddf 100644 --- a/locale/de-AT/abgabetool.php +++ b/locale/de-AT/abgabetool.php @@ -61,7 +61,8 @@ $this->phrasen['abgabetool/fehlerTerminEintragen']='Die Termin konnte nicht eing $this->phrasen['abgabetool/fehlerTerminLoeschen']='Fehler beim Löschen des Termins!'; $this->phrasen['abgabetool/keineBerechtigungStudentenansicht']='Sie haben keine Berechtigung zum Anzeigen der Studentenansicht'; $this->phrasen['abgabetool/dateneingabeUnvollstaendig']='Die Dateneingabe ist unvollständig'; -$this->phrasen['abgabetool/fehlerMailBegutachter']='Fehler beim Versenden des Mails an den (Erst-)Begutachter!'; +$this->phrasen['abgabetool/fehlerMailBegutachter']='Fehler beim Versenden des Mails an den Erstbegutachter!'; +$this->phrasen['abgabetool/fehlerMailZweitBegutachter']='Fehler beim Versenden des Mails an den Zweitbegutachter!'; $this->phrasen['abgabetool/fehlerBetreuerNichtGefundenKeinMail']='Betreuer nicht gefunden. Kein Mail verschickt!'; $this->phrasen['abgabetool/keinPDF']='Upload ist keine pdf-Datei! Bitte wiederholen Sie den Fileupload.'; $this->phrasen['abgabetool/dateiZuGross']='Die Datei ist zu groß! Maximale Dateigröße 15 MB'; diff --git a/locale/en-US/abgabetool.php b/locale/en-US/abgabetool.php index bc4201125..119ea0642 100644 --- a/locale/en-US/abgabetool.php +++ b/locale/en-US/abgabetool.php @@ -60,7 +60,8 @@ $this->phrasen['abgabetool/fehlerTerminEintragen']='The deadline could not be en $this->phrasen['abgabetool/fehlerTerminLoeschen']='Error deleting the deadline!'; $this->phrasen['abgabetool/keineBerechtigungStudentenansicht']='You are not allowed to view this Page'; $this->phrasen['abgabetool/dateneingabeUnvollstaendig']='Incomplete Data input'; -$this->phrasen['abgabetool/fehlerMailBegutachter']='Error sending E-Mail to Assessor!'; +$this->phrasen['abgabetool/fehlerMailBegutachter']='Error sending E-Mail to first Assessor!'; +$this->phrasen['abgabetool/fehlerMailZweitBegutachter']='Error sending E-Mail to second Assessor!'; $this->phrasen['abgabetool/fehlerBetreuerNichtGefundenKeinMail']='Assessor not found. No E-Mail sent!'; $this->phrasen['abgabetool/keinPDF']='Upload-File ist not a PDF! Please retry the Fileupload.'; $this->phrasen['abgabetool/dateiZuGross']='The File is too big! Maximum File size: 15 MB'; diff --git a/locale/it-IT/abgabetool.php b/locale/it-IT/abgabetool.php index 7a515b417..25ce11e87 100644 --- a/locale/it-IT/abgabetool.php +++ b/locale/it-IT/abgabetool.php @@ -28,7 +28,8 @@ $this->phrasen['abgabetool/englischeSchlagwoerter']='parole chiave inglesi'; $this->phrasen['abgabetool/erklaerungNichtAkzeptiert']='dichiarazione non accettata'; $this->phrasen['abgabetool/fehlerBetreuerNichtGefundenKeinMail']='Impossibile trovare il relatore. Nessuna email spedita'; $this->phrasen['abgabetool/fehlerMail']='errore di spedizione della email!'; -$this->phrasen['abgabetool/fehlerMailBegutachter']='Errore di trasmissione della mail al (primo) esaminatore'; +$this->phrasen['abgabetool/fehlerMailBegutachter']='Errore di trasmissione della mail al primo esaminatore'; +$this->phrasen['abgabetool/fehlerMailZweitBegutachter']='Errore di trasmissione della mail al secondo esaminatore'; $this->phrasen['abgabetool/fehlerMailStudent']='errore di spedizione della mai agli studenti!'; $this->phrasen['abgabetool/fehlerTerminEintragen']='scadenza non è stata registrata!'; $this->phrasen['abgabetool/fehlerTerminLoeschen']='Errore in sede di cancellazione della scadenza!'; From 5b546d25a8fdcb2ea66e840b651da7c31fe60143 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Thu, 4 Mar 2021 00:04:47 +0100 Subject: [PATCH 11/44] - abgabe_student_details.php: added reply to and other header/footer to sancho Endupload mails - sancho.inc.php: enabled reply-to and passing of footer image --- cis/private/lehre/abgabe_student_details.php | 19 +++++++++++++++++-- include/sancho.inc.php | 16 +++++++++++----- 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/cis/private/lehre/abgabe_student_details.php b/cis/private/lehre/abgabe_student_details.php index fcd5e7206..206a38364 100644 --- a/cis/private/lehre/abgabe_student_details.php +++ b/cis/private/lehre/abgabe_student_details.php @@ -456,7 +456,14 @@ if($command=="update" && $error!=true) $maildata['link'] = $mail_fulllink; $maildata['token'] = ""; - $mailres = sendSanchoMail('ParbeitsbeurteilungEndupload', $maildata, $row_betr->mitarbeiter_uid."@".DOMAIN, "Bachelor-/Masterarbeitsbetreuung"); + $mailres = sendSanchoMail( + 'ParbeitsbeurteilungEndupload', + $maildata, + $row_betr->mitarbeiter_uid."@".DOMAIN, + "Bachelor-/Masterarbeitsbetreuung", + 'sancho_header_min_bw.jpg', + 'sancho_footer_min_bw.jpg', + $user."@".DOMAIN); if(!$mailres) { @@ -494,7 +501,15 @@ if($command=="update" && $error!=true) $zweitbetmaildata['link'] = $mail_link = $intern ? $mail_fulllink : $mail_baselink; $zweitbetmaildata['token'] = isset($zweitbetr->zugangstoken) && !$intern ? "

Zugangstoken: ".$zweitbetr->zugangstoken."

" : ""; - $mailres = sendSanchoMail('ParbeitsbeurteilungEndupload', $zweitbetmaildata, $zweitbetrmail, "Masterarbeitsbetreuung"); + $mailres = sendSanchoMail( + 'ParbeitsbeurteilungEndupload', + $zweitbetmaildata, + $zweitbetrmail, + "Masterarbeitsbetreuung", + 'sancho_header_min_bw.jpg', + 'sancho_footer_min_bw.jpg', + $user."@".DOMAIN + ); if(!$mailres) { diff --git a/include/sancho.inc.php b/include/sancho.inc.php index a57bc8428..b52a7fb28 100644 --- a/include/sancho.inc.php +++ b/include/sancho.inc.php @@ -23,6 +23,7 @@ require_once(dirname(__FILE__).'/mail.class.php'); require_once(dirname(__FILE__).'/vorlage.class.php'); const DEFAULT_SANCHO_HEADER_IMG = 'sancho_header_DEFAULT.jpg'; +const DEFAULT_SANCHO_FOOTER_IMG = 'sancho_footer_DEFAULT.jpg'; /** * Send single Mail with Sancho Design and Layout. @@ -31,14 +32,15 @@ const DEFAULT_SANCHO_HEADER_IMG = 'sancho_header_DEFAULT.jpg'; * to be replaced in the content template. * @param string $to Email-adress. * @param string $subject Subject of mail. - * @param string $headerImg Filename of the specific Sancho header image. - * @return boolean True, if succeeded. + * @param string $headerImg Filename of the specific Sancho header image. + * @param string $replyTo default Email-adress for reply. + * @return boolean True, if succeeded. */ -function sendSanchoMail($vorlage_kurzbz, $vorlage_data, $to, $subject, $headerImg = DEFAULT_SANCHO_HEADER_IMG) +function sendSanchoMail($vorlage_kurzbz, $vorlage_data, $to, $subject, $headerImg = DEFAULT_SANCHO_HEADER_IMG, $footerImg = DEFAULT_SANCHO_FOOTER_IMG, $replyTo = '') { $from = 'sancho@'. DOMAIN; $sanchoHeader_img = dirname(__FILE__). '/../skin/images/sancho/'. $headerImg; - $sanchoFooter_img = dirname(__FILE__). '/../skin/images/sancho/sancho_footer.jpg'; + $sanchoFooter_img = dirname(__FILE__). '/../skin/images/sancho/'. $footerImg; // Set unique content id for embedding header and footer image $cid_header = uniqid(); @@ -63,7 +65,11 @@ function sendSanchoMail($vorlage_kurzbz, $vorlage_data, $to, $subject, $headerIm // * embed the images $mail->addEmbeddedImage($sanchoHeader_img, 'image/jpg', '', $cid_header); $mail->addEmbeddedImage($sanchoFooter_img, 'image/jpg', '', $cid_footer); - + + // * Set reply-to + if (isset($replyTo) && $replyTo != '') + $mail->setReplyTo($replyTo); + // * embed the html content $mail->setHTMLContent($body); From 3db9b9abee1000b35ce604d48f94e49369711613 Mon Sep 17 00:00:00 2001 From: ma0048 Date: Tue, 9 Mar 2021 14:13:55 +0100 Subject: [PATCH 12/44] added projektbeurteilung pdfexport --- content/pdfExport.php | 2 +- content/student/studentprojektarbeit.js.php | 5 +++++ content/student/studentprojektarbeitoverlay.xul.php | 2 +- include/organisationsform.class.php | 4 +++- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/content/pdfExport.php b/content/pdfExport.php index 29feeef6e..a85ebb345 100644 --- a/content/pdfExport.php +++ b/content/pdfExport.php @@ -252,7 +252,7 @@ else array('uid', 'stg_kz', 'person_id', 'id', 'prestudent_id', 'buchungsnummern', 'ss', 'abschlusspruefung_id', 'typ', 'all', 'preoutgoing_id', 'lvid', 'projekt_kurzbz', 'von', 'bis', 'stundevon', 'stundebis', 'sem', 'lehreinheit', 'mitarbeiter_uid', 'studienordnung_id', 'fixangestellt', 'standort', - 'abrechnungsmonat', 'form') + 'abrechnungsmonat', 'form', 'projektarbeit_id', 'betreuerart_kurzbz') ) ) { diff --git a/content/student/studentprojektarbeit.js.php b/content/student/studentprojektarbeit.js.php index ab284808e..4216f6a30 100644 --- a/content/student/studentprojektarbeit.js.php +++ b/content/student/studentprojektarbeit.js.php @@ -1122,6 +1122,11 @@ function StudentProjektbetreuerDetailDisableFields(val) document.getElementById('student-projektbetreuer-button-speichern').disabled=val; document.getElementById('student-projektbetreuer-button-neueperson').disabled=val; document.getElementById('student-projektbetreuer-button-kontaktdaten').disabled=val; + + if (document.getElementById('student-projektbetreuer-button-beurteilung')) + { + document.getElementById('student-projektbetreuer-button-beurteilung').disabled=val; + } } // **** diff --git a/content/student/studentprojektarbeitoverlay.xul.php b/content/student/studentprojektarbeitoverlay.xul.php index fe4b8b2b9..3171ef10e 100644 --- a/content/student/studentprojektarbeitoverlay.xul.php +++ b/content/student/studentprojektarbeitoverlay.xul.php @@ -529,7 +529,7 @@ $is_hidden = (!defined('FAS_STUDIERENDE_PROJEKTARBEIT_VERTRAGSDETAILS_ANZEIGEN') - +