From 254dad870045edb7d54fef9869a07d8841099fa9 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Wed, 13 Jan 2021 21:15:44 +0100 Subject: [PATCH 01/28] 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/28] 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/28] - 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/28] - 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/28] - 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/28] 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/28] - 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 edf657fdb96735bda2ccabfac1cf8984f79158e8 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Wed, 3 Mar 2021 00:00:51 +0100 Subject: [PATCH 08/28] 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 09/28] 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 10/28] - 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 11/28] 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') - +
".$p->t('abgabetool/student').": ".$db->convert_html_chars($studentenname)."
"; +$htmlstr .= "
"; $htmlstr .= "\n"; $htmlstr .= "\n"; $htmlstr .= "
\n"; $htmlstr .= ""; -$htmlstr .= ""; +if ($num_rows_sem >= 1) +{ + $htmlstr .= ""; + if($betreuerart!="Zweitbegutachter") { $htmlstr .= "\n"; //class='liste".($i%2)."' - $htmlstr .= " \n"; + + if (is_null($row->note) && $row->aktiv === 't') + $htmlstr .= " \n"; + elseif (!is_null($row->babgeschickt) || !is_null($row->zweitbetreuer_abgeschickt)) + { + $htmlstr .= ""; + } else + { + $htmlstr .= ""; + } + + $htmlstr .= " \n"; $htmlstr .= " \n"; $htmlstr .= "
".$p->t('abgabetool/student').": ".$db->convert_html_chars($studentenname)."
"; -$htmlstr .= "\n"; -$htmlstr .= "\n"; -$htmlstr .= "
"; + $htmlstr .= "
"; + $htmlstr .= "\n"; + $htmlstr .= "\n"; + $htmlstr .= "
"; +} +else +{ + $htmlstr .= "
"; + $htmlstr .= "".$p->t('abgabetool/aeltereParbeitBenoten').""; +} +$htmlstr .= "
"; diff --git a/locale/de-AT/abgabetool.php b/locale/de-AT/abgabetool.php index a1b108ddf..1b40fa187 100644 --- a/locale/de-AT/abgabetool.php +++ b/locale/de-AT/abgabetool.php @@ -1,5 +1,6 @@ phrasen['abgabetool/abgabetool']='Abgabetool'; +$this->phrasen['abgabetool/aeltereParbeitBenoten']='Projektarbeit für älteres Semester, bitte Word-Formular zur Benotung verwenden!'; $this->phrasen['abgabetool/typ']='Typ'; $this->phrasen['abgabetool/titel']='Titel'; $this->phrasen['abgabetool/betreuerart']='Betreuerart'; diff --git a/locale/en-US/abgabetool.php b/locale/en-US/abgabetool.php index 119ea0642..55a30d049 100644 --- a/locale/en-US/abgabetool.php +++ b/locale/en-US/abgabetool.php @@ -1,5 +1,6 @@ phrasen['abgabetool/abgabetool']='Submission tool'; +$this->phrasen['abgabetool/aeltereParbeitBenoten']='Thesis handed in for older semester, please use word form for assessment!'; $this->phrasen['abgabetool/typ']='Type'; $this->phrasen['abgabetool/titel']='Title'; $this->phrasen['abgabetool/betreuerart']='Supervisor type'; diff --git a/locale/it-IT/abgabetool.php b/locale/it-IT/abgabetool.php index 25ce11e87..793ac204d 100644 --- a/locale/it-IT/abgabetool.php +++ b/locale/it-IT/abgabetool.php @@ -1,5 +1,6 @@ phrasen['abgabetool/abgabeLektorenbereich']='Consegna portale lettori'; +$this->phrasen['abgabetool/aeltereParbeitBenoten']='Thesis handed in for older semester, please use word form for assessment!'; $this->phrasen['abgabetool/abgabeStudentenbereich']='consegna portale studente'; $this->phrasen['abgabetool/abgabetermine']='scadenze consegna'; $this->phrasen['abgabetool/abgabetool']='Strumenti di consegna'; diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index 6e4ed26a6..b308623be 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -8900,13 +8900,13 @@ Any unusual occurrences '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.', + 'text' => 'Liegt die Punkteanzahl bei den Kriterien "1 - 5" oder "6 - 10" in Summe unter 50%%, ist die %s 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.', + 'text' => 'If, within any of the criteria, the points total is under 50%%, the %s is deemed to have failed overall.', 'description' => '', 'insertvon' => 'system' ) From 95c5a9c4757c667121e784944040cba387c43b61 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Mon, 15 Mar 2021 23:48:00 +0100 Subject: [PATCH 14/28] added UNIQUE constraing to zugangstoken column of lehre.tbl_projektbetreuer --- system/dbupdate_3.3.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 55a00500b..6b52c3aa1 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -4468,8 +4468,9 @@ if($result = $db->db_query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE // 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';"; + $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'; + ALTER TABLE lehre.tbl_projektbetreuer ADD CONSTRAINT uk_tbl_projektbetreuer_zugangstoken UNIQUE (zugangstoken);"; if(!$db->db_query($qry)) echo 'lehre.tbl_projektbetreuer: '.$db->db_last_error().'
'; From fbb7b45b690a6f81c739b24e7654180fc717ba9e Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Mon, 22 Mar 2021 04:55:46 +0100 Subject: [PATCH 15/28] - added zweitbegutachterFehltWarnung phrase --- system/phrasesupdate.php | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index b308623be..33c79cf80 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -9311,6 +9311,26 @@ Any unusual occurrences 'insertvon' => 'system' ) ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'zweitbegutachterFehltWarnung', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Die Beurteilung des Zweitbegutachters liegt noch nicht vor.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The assessment of the second assessor is not available yet.', + 'description' => '', + 'insertvon' => 'system' + ) + ) ) ); From 6ae8f000668801077ef077cf384d678d7979c8e2 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Tue, 23 Mar 2021 21:32:34 +0100 Subject: [PATCH 16/28] =?UTF-8?q?-=20Zweitbegutachter=20im=20Abgabetool=20?= =?UTF-8?q?angezeigt=20-=20Tokenneuversand=20f=C3=BCr=20zweitbegutachter?= =?UTF-8?q?=20m=C3=B6glich?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/lehre/abgabe_lektor_details.php | 141 +++++++++++++++++-- cis/private/lehre/abgabe_student_details.php | 121 +++------------- include/functions.inc.php | 53 +++++++ include/projektbetreuer.class.php | 126 +++++++++++++++++ locale/de-AT/abgabetool.php | 3 + locale/en-US/abgabetool.php | 3 + locale/it-IT/abgabetool.php | 3 + 7 files changed, 336 insertions(+), 114 deletions(-) diff --git a/cis/private/lehre/abgabe_lektor_details.php b/cis/private/lehre/abgabe_lektor_details.php index fa64f8683..d3721213f 100644 --- a/cis/private/lehre/abgabe_lektor_details.php +++ b/cis/private/lehre/abgabe_lektor_details.php @@ -35,6 +35,8 @@ require_once('../../../include/datum.class.php'); require_once('../../../include/mail.class.php'); require_once('../../../include/phrasen.class.php'); require_once('../../../include/projektarbeit.class.php'); +require_once('../../../include/projektbetreuer.class.php'); +require_once('../../../include/sancho.inc.php'); if (!$db = new basis_db()) $db=false; @@ -116,6 +118,63 @@ if($projektarbeit_id==-1) if(!$projektarbeit_obj->load($projektarbeit_id)) die('Fehler beim Laden der Projektarbeit'); $titel = $projektarbeit_obj->titel; +$student_uid = $projektarbeit_obj->student_uid; + +// paarbeit sollte nur ab SS2021 online bewertet werden +$qry_sem="SELECT 1 + FROM lehre.tbl_projektarbeit + JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) + JOIN public.tbl_studiensemester USING(studiensemester_kurzbz) + WHERE projektarbeit_id=".$db->db_add_param($projektarbeit_id, FHC_INTEGER)." + AND tbl_studiensemester.start >= (SELECT start FROM public.tbl_studiensemester WHERE studiensemester_kurzbz = 'SS2021') + LIMIT 1"; +$result_sem=$db->db_query($qry_sem); +$num_rows_sem = $db->db_num_rows($result_sem); + +// Zweitbegutachter holen +if($betreuerart=="Erstbegutachter") +{ + $projektbetreuer = new projektbetreuer(); + $alleBegutachter = $projektbetreuer->getProjektbetreuer($projektarbeit_id); + + if ($alleBegutachter) + { + $alleBegutachterResults = $projektbetreuer->result; + + foreach ($alleBegutachterResults as $begutachter) + { + if ($begutachter->betreuerart_kurzbz == "Erstbegutachter") + { + $erstbetreuer_id = $begutachter->person_id; + $zweitbegutachter = $projektbetreuer->getZweitbegutachterWithToken($erstbetreuer_id, $projektarbeit_id, $student_uid); + break; + } + } + + if ($zweitbegutachter && $num_rows_sem >= 1 && isset($_GET['zweitbegutachtertoken'])) + { + $qry_std="SELECT * FROM campus.vw_benutzer where uid=".$db->db_add_param($uid); + if(!$result_std=$db->db_query($qry_std)) + { + echo "Student konnte nicht gefunden werden!
 "; + } + else + { + $row_std=@$db->db_fetch_object($result_std); + $mailres = sendZweitbegutachterMail($zweitbegutachter, $erstbetreuer_id, $row_std); + + if ($mailres) + { + echo "
".$p->t('abgabetool/zweitbegutachterMailGesendet', $zweitbegutachter->email)."
 "; + } + elseif(!$mailres) + { + echo "".$p->t('abgabetool/fehlerMailZweitBegutachter')."
 "; + } + } + } + } +} echo ' @@ -357,16 +416,6 @@ while ($result_nam && $row_nam=$db->db_fetch_object($result_nam)) $studentenname=$row_nam->studnam; } -$qry_sem="SELECT 1 - FROM lehre.tbl_projektarbeit - JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) - JOIN public.tbl_studiensemester USING(studiensemester_kurzbz) - WHERE projektarbeit_id=".$db->db_add_param($projektarbeit_id, FHC_INTEGER)." - AND tbl_studiensemester.start >= (SELECT start FROM public.tbl_studiensemester WHERE studiensemester_kurzbz = 'SS2021') - LIMIT 1"; -$result_sem=$db->db_query($qry_sem); -$num_rows_sem = $db->db_num_rows($result_sem); - $htmlstr .= "\n"; $htmlstr .= ""; if ($num_rows_sem >= 1) @@ -387,7 +436,9 @@ $htmlstr .= ""; if($betreuerart!="Zweitbegutachter") { $htmlstr .= ""; + $htmlstr .= ""; + $htmlstr .= "\n"; + $htmlstr .= "\n"; } else { @@ -396,7 +447,26 @@ else $htmlstr .= ""; $htmlstr .= "\n"; $htmlstr .= "
".$p->t('abgabetool/student').": ".$db->convert_html_chars($studentenname).""; - $htmlstr .= "
            
Titel: ".$db->convert_html_chars($titel)."".$p->t('abgabetool/studentenansicht')."
\n"; -$htmlstr .= "
".$p->t('abgabetool/abgabetermine').":\n"; +$htmlstr .= ""; +$htmlstr .= "\n"; +if (isset($zweitbegutachter) && $zweitbegutachter && $num_rows_sem >= 1) // if there is a zweitbegutachter and paarbeit should be graded with online form +{ + $htmlstr .= "\n"; + $htmlstr .= "\n"; + $htmlstr .= "\n"; + $htmlstr .= "\n"; +} +$htmlstr .= "\n"; +$htmlstr .= "

".$p->t('abgabetool/abgabetermine').":
" . $p->t('abgabetool/zweitBegutachter') . ": " . $zweitbegutachter->voller_name . ""; + if (isset($zweitbegutachter->abgabedatum) && !isset($zweitbegutachter->uid)) + { + $htmlstr .= ""; + $htmlstr .= ""; + $htmlstr .= ""; + $htmlstr .= "  \n"; + $htmlstr .= ""; + } + $htmlstr .= "     
\n"; $htmlstr .= "\n"; $htmlstr .= "\n"; $htmlstr .= " @@ -565,4 +635,51 @@ $htmlstr .= "\n"; $htmlstr .= "
\n"; $htmlstr .= "\n"; echo $htmlstr; + +/** + * Mail zum Zweitbegutachter mit Info dass Projektarbeit zur Bewertung bereit ist, inklusive Zugangstoken wenn nötig. + * @param object $zweitbegutachter + * @param $int erstbegutachter_person_id + * @param object $student + * @return bool|projektbetreuer|void|null + */ +function sendZweitbegutachterMail($zweitbegutachter, $erstbegutachter_person_id, $student) +{ + // send Mail to 2. Begutachter + $projektbetreuer = new projektbetreuer(); + + $projektbetreuer->generateZweitbegutachterToken($zweitbegutachter->person_id, $zweitbegutachter->projektarbeit_id); + + if (!$projektbetreuer) + return $projektbetreuer; + + $zweitbetr = $projektbetreuer->getZweitbegutachterWithToken($erstbegutachter_person_id, $zweitbegutachter->projektarbeit_id, $student->uid); + + if ($zweitbetr) + { + $intern = isset($zweitbetr->uid); + $mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/Projektarbeitsbeurteilung"; + $mail_fulllink = "$mail_baselink?projektarbeit_id=".$zweitbegutachter->projektarbeit_id."&uid=".$student->uid; + $maildata = array(); + $maildata['geehrt'] = "geehrte".($zweitbegutachter->anrede=="Herr"?"r":""); + $maildata['anrede'] = $zweitbegutachter->anrede; + $maildata['betreuer_voller_name'] = $zweitbegutachter->voller_name; + $maildata['student_anrede'] = $student->anrede; + $maildata['student_voller_name'] = trim($student->titelpre." ".$student->vorname." ".$student->nachname." ".$student->titelpost); + $maildata['link'] = $mail_link = $intern ? $mail_fulllink : $mail_baselink; + $maildata['token'] = isset($zweitbetr->zugangstoken) && !$intern ? "

Zugangstoken: ".$zweitbetr->zugangstoken."

" : ""; + + return sendSanchoMail( + 'ParbeitsbeurteilungEndupload', + $maildata, + $zweitbetr->email, + "Masterarbeitsbetreuung", + 'sancho_header_min_bw.jpg', + 'sancho_footer_min_bw.jpg' + ); + } + + return false; +} + ?> diff --git a/cis/private/lehre/abgabe_student_details.php b/cis/private/lehre/abgabe_student_details.php index 5141e495c..6198f9392 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/projektbetreuer.class.php'); require_once('../../../include/sancho.inc.php'); $anzeigesprache = getSprache(); @@ -445,6 +446,7 @@ if($command=="update" && $error!=true) echo "".$p->t('abgabetool/fehlerMailBegutachter')."
 "; }*/ + // 1. Begutachter ohne Token $mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/Projektarbeitsbeurteilung"; $mail_fulllink = "$mail_baselink?projektarbeit_id=".$projektarbeit_id."&uid=".$row_std->uid; $maildata = array(); @@ -470,11 +472,25 @@ if($command=="update" && $error!=true) echo "".$p->t('abgabetool/fehlerMailBegutachter')."
 "; } - // send Mail to 2. Begutachter - $zweitbetr = getZweitbegutachterWithToken($projektarbeit_id, $bid, $row_std->uid); + // 2. Begutachter mit Token wenn extern + $projektbetreuer = new projektbetreuer(); + $zweitbetr = $projektbetreuer->getZweitbegutachterWithToken($bid, $projektarbeit_id, $row_std->uid); if ($zweitbetr) { + if (!isset($zweitbetr->zugangstoken)) + { + $tokenGenRes = $projektbetreuer->generateZweitbegutachterToken($zweitbetr->person_id, $projektarbeit_id); + + if (!$tokenGenRes) + echo "" . $p->t('abgabetool/fehlerMailZweitBegutachter') . "
 "; + + $zweitbetr = $projektbetreuer->getZweitbegutachterWithToken($bid, $projektarbeit_id, $row_std->uid); + + if (!$zweitbetr) + echo "".$p->t('abgabetool/fehlerMailZweitBegutachter')."
 "; + } + $intern = isset($zweitbetr->uid); $zweitbetrmail = $intern ? $zweitbetr->uid."@".DOMAIN : $zweitbetr->kontakt; @@ -495,7 +511,7 @@ if($command=="update" && $error!=true) $zweitbetmaildata = array(); $zweitbetmaildata['geehrt'] = "geehrte".($zweitbetr->anrede=="Herr"?"r":""); $zweitbetmaildata['anrede'] = $zweitbetr->anrede; - $zweitbetmaildata['betreuer_voller_name'] = $zweitbetr->first; + $zweitbetmaildata['betreuer_voller_name'] = $zweitbetr->voller_name; $zweitbetmaildata['student_anrede'] = $maildata['student_anrede']; $zweitbetmaildata['student_voller_name'] = $maildata['student_voller_name']; $zweitbetmaildata['link'] = $mail_link = $intern ? $mail_fulllink : $mail_baselink; @@ -690,103 +706,4 @@ 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, 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 - 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; - } - } -} ?> diff --git a/include/functions.inc.php b/include/functions.inc.php index 534f11f28..587860982 100644 --- a/include/functions.inc.php +++ b/include/functions.inc.php @@ -1121,4 +1121,57 @@ function setLeadingZero($number, $length = 2) return str_pad($number, $length, "0", STR_PAD_LEFT); } } + +/** + * Generates a new token for diffent use cases. Default token length is 64 + * - Reading messages + * - Forgotten password + * - etc + * Returns null on failure + */ +function generateUniqueToken($length = 64) +{ + $token = null; + $firstGeneratedToken = null; + + // For PHP 7 you can use random_bytes() + if (function_exists('random_bytes')) + { + try + { + $firstGeneratedToken = random_bytes($length); // try to generates cryptographically secure pseudo-random bytes... + } + catch (Exception $e) { $firstGeneratedToken = null; } // if fails $firstGeneratedToken is set to null + } + // For PHP >= 5.3 and < 7 and openssl is available + elseif (function_exists('openssl_random_pseudo_bytes')) + { + $firstGeneratedToken = openssl_random_pseudo_bytes($length, $strong); + // If the token generation ended with errors OR the generated token is NOT strong enough + if ($firstGeneratedToken == false || $strong == false) $firstGeneratedToken = null; // $firstGeneratedToken is set to null + } + + if ($firstGeneratedToken != null) // If everything was fine + { + // base64 is about 33% longer, so we need to truncate the result + $token = strtr(substr(base64_encode($firstGeneratedToken), 0, $length), '+/=', '-_,'); + } + + // Fallback to mt_rand if: + // php < 5.3 + // OR no openssl is available + // OR openssl_random_pseudo_bytes used an algorithm that is cryptographically NOT strong + // OR one of the previous methods failed + if ($token == null) + { + $token = ''; // set $token as an empty string + $characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/+'; + $charactersLength = strlen($characters) - 1; + + // Select some random characters + for ($i = 0; $i < $length; $i++) $token .= $characters[mt_rand(0, $charactersLength)]; + } + + return $token; +} ?> diff --git a/include/projektbetreuer.class.php b/include/projektbetreuer.class.php index e962b2d0a..ed8e3bae0 100644 --- a/include/projektbetreuer.class.php +++ b/include/projektbetreuer.class.php @@ -391,5 +391,131 @@ class projektbetreuer extends basis_db return false; } } + + /** + * Holt Zweitbegutachter einer Projektarbeit mit Mail. + * @param $erstbegutachter_person_id int person_id des Erstbegutachters + * @param $projektarbeit_id int + * @param $student_uid string uid des Studenten der Arbeit abgibt + * @return object | bool + */ + public function getZweitbegutachterWithToken($erstbegutachter_person_id, $projektarbeit_id, $student_uid) + { + $qry_betr="SELECT betr.person_id, betr.projektarbeit_id, pers.anrede, betr.zugangstoken, betr.zugangstoken_gueltigbis, tbl_benutzer.uid, kontakt, + trim(COALESCE(titelpre,'')||' '||COALESCE(vorname,'')||' '||COALESCE(nachname,'')||' '||COALESCE(titelpost,'')) as voller_name, + CASE WHEN tbl_benutzer.uid IS NULL THEN kontakt ELSE tbl_benutzer.uid || '@".DOMAIN."' END AS email, abg.abgabedatum + 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 + LEFT JOIN campus.tbl_paabgabe abg ON betr.projektarbeit_id = abg.projektarbeit_id AND abg.paabgabetyp_kurzbz = 'end' + WHERE betr.betreuerart_kurzbz = 'Zweitbegutachter' + AND betr.projektarbeit_id = ".$this->db_add_param($projektarbeit_id, FHC_INTEGER)." + AND parb.student_uid = ".$this->db_add_param($student_uid)." + AND EXISTS ( + SELECT 1 FROM lehre.tbl_projektbetreuer + WHERE person_id = ".$this->db_add_param($erstbegutachter_person_id, 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=$this->db_query($qry_betr)) + { + $row_betr = $this->db_fetch_object($betr); + + if ($row_betr) + return $row_betr; + else + return false; + } + else + { + return false; + } + } + + /** + * Generiert Token für externen Zweitbetreuer wenn noch kein Token vorhanden ist. + * @param int $zweitbegutachter_person_id + * @param int $projektarbeit_id + * @return bool true wenn erfolgreich (generiert oder bereits vorhanden), false wenn fehlgeschlagen + */ + public function generateZweitbegutachterToken($zweitbegutachter_person_id, $projektarbeit_id) + { + // if externer Betreuer and no valid token, generate + $betreuerUidQry = "SELECT uid, zugangstoken, zugangstoken_gueltigbis, tbl_projektbetreuer.person_id + FROM lehre.tbl_projektbetreuer + JOIN public.tbl_person USING(person_id) + LEFT JOIN public.tbl_benutzer USING(person_id) + WHERE projektarbeit_id = ".$this->db_add_param($projektarbeit_id, FHC_INTEGER)." + AND tbl_projektbetreuer.person_id = ".$this->db_add_param($zweitbegutachter_person_id, FHC_INTEGER)." + AND betreuerart_kurzbz = 'Zweitbegutachter' + LIMIT 1"; + + if ($betreueruidres = $this->db_query($betreuerUidQry)) + { + $row_betr = $this->db_fetch_object($betreueruidres); + + if ($row_betr) + { + + 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 + $token = generateUniqueToken(16); + + if (!$token) + return false; + + $qry_tokencheck = "SELECT count(*) AS anzahl + FROM lehre.tbl_projektbetreuer + WHERE zugangstoken = " . $this->db_add_param($token); + + if ($tokencount = $this->db_query($qry_tokencheck)) + { + $row_tokencount = $this->db_fetch_object($tokencount); + + $tokenanzahl = (int)$row_tokencount->anzahl; + } + else + { + return false; + } + } + + $qry_upd = "UPDATE lehre.tbl_projektbetreuer SET + zugangstoken = " . $this->db_add_param($token) . ", + zugangstoken_gueltigbis = CURRENT_DATE + interval '1 year' + WHERE projektarbeit_id = " . $this->db_add_param($projektarbeit_id, FHC_INTEGER) . " + AND person_id = " . $this->db_add_param($row_betr->person_id, FHC_INTEGER) . " + AND betreuerart_kurzbz = 'Zweitbegutachter'"; + + if ($this->db_query($qry_upd)) + { + return true; + } + else + { + return false; + } + } + else + return true; // not generated because intern or already exists + } + else + return false;// not found + } + else + return false; // query error + } } ?> diff --git a/locale/de-AT/abgabetool.php b/locale/de-AT/abgabetool.php index 1b40fa187..3b2bd750a 100644 --- a/locale/de-AT/abgabetool.php +++ b/locale/de-AT/abgabetool.php @@ -80,4 +80,7 @@ Sollten Sie trotzdem die `Eidesstattliche Erklärung´ samt Unterschrift hochlad $this->phrasen['abgabetool/gelesenUndAkzeptiert']='Gelesen und akzeptiert'; $this->phrasen['abgabetool/erklaerungNichtAkzeptiert']='Erklärung nicht akzeptiert'; $this->phrasen['abgabetool/downloadProjektarbeit']='Dokument herunterladen'; +$this->phrasen['abgabetool/zweitBegutachter']='Zweitbegutachter'; +$this->phrasen['abgabetool/zweitbetreuerTokenMailSenden']='Zugangstoken an Zweitbegutachter senden'; +$this->phrasen['abgabetool/zweitbegutachterMailGesendet']='Mail an Zweitbegutachter (%s) gesendet'; ?> diff --git a/locale/en-US/abgabetool.php b/locale/en-US/abgabetool.php index 55a30d049..6ee00d47c 100644 --- a/locale/en-US/abgabetool.php +++ b/locale/en-US/abgabetool.php @@ -80,4 +80,7 @@ Sollten Sie trotzdem die `Eidesstattliche Erklärung´ samt Unterschrift hochlad $this->phrasen['abgabetool/gelesenUndAkzeptiert']='Read and accepted'; $this->phrasen['abgabetool/erklaerungNichtAkzeptiert']='Declaration not accepted'; $this->phrasen['abgabetool/downloadProjektarbeit']='Download File'; +$this->phrasen['abgabetool/zweitBegutachter']='Second assessor'; +$this->phrasen['abgabetool/zweitbetreuerTokenMailSenden']='Send access token to second assessor'; +$this->phrasen['abgabetool/zweitbegutachterMailGesendet']='Mail sent to second assessor (%s)'; ?> diff --git a/locale/it-IT/abgabetool.php b/locale/it-IT/abgabetool.php index 793ac204d..70504ca04 100644 --- a/locale/it-IT/abgabetool.php +++ b/locale/it-IT/abgabetool.php @@ -70,4 +70,7 @@ $this->phrasen['abgabetool/ueberschrift']='tesi bachelor / master'; $this->phrasen['abgabetool/upload']='Upload'; $this->phrasen['abgabetool/variablerAbgabetermin']='scadenza consegna variabile'; $this->phrasen['abgabetool/zweitbetreuerBei']='secondo relatore presso'; +$this->phrasen['abgabetool/zweitBegutachter']='Second assessor'; +$this->phrasen['abgabetool/zweitbetreuerTokenMailSenden']='Send access token to second assessor'; +$this->phrasen['abgabetool/zweitbegutachterMailGesendet']='Mail sent to second assessor (%s)'; ?> From a68dfc1c6cbbc8dca6d0309e829ec2f93c2237d0 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Wed, 24 Mar 2021 22:49:34 +0100 Subject: [PATCH 17/28] - Projektarbeitsabgabe: added Link to Projektarbeitsuebersicht to Zweitbegutachtermail - updated abgabetool phrases --- cis/private/lehre/abgabe_lektor_details.php | 7 +- cis/private/lehre/abgabe_student_details.php | 6 +- locale/de-AT/abgabetool.php | 6 +- system/phrasesupdate.php | 88 +++++++++++++++++++- 4 files changed, 95 insertions(+), 12 deletions(-) diff --git a/cis/private/lehre/abgabe_lektor_details.php b/cis/private/lehre/abgabe_lektor_details.php index d3721213f..8f04bd71f 100644 --- a/cis/private/lehre/abgabe_lektor_details.php +++ b/cis/private/lehre/abgabe_lektor_details.php @@ -167,9 +167,9 @@ if($betreuerart=="Erstbegutachter") { echo "
".$p->t('abgabetool/zweitbegutachterMailGesendet', $zweitbegutachter->email)."
 "; } - elseif(!$mailres) + else { - echo "".$p->t('abgabetool/fehlerMailZweitBegutachter')."
 "; + echo "".$p->t('abgabetool/fehlerMailZweitBegutachter')." Mail: ".$zweitbegutachter->email."
 "; } } } @@ -666,7 +666,8 @@ function sendZweitbegutachterMail($zweitbegutachter, $erstbegutachter_person_id, $maildata['betreuer_voller_name'] = $zweitbegutachter->voller_name; $maildata['student_anrede'] = $student->anrede; $maildata['student_voller_name'] = trim($student->titelpre." ".$student->vorname." ".$student->nachname." ".$student->titelpost); - $maildata['link'] = $mail_link = $intern ? $mail_fulllink : $mail_baselink; + $maildata['parbeituebersichtlink'] = $intern ? "

Zur Projektarbeitsübersicht

" : ""; + $maildata['bewertunglink'] = $mail_link = $intern ? $mail_fulllink : $mail_baselink; $maildata['token'] = isset($zweitbetr->zugangstoken) && !$intern ? "

Zugangstoken: ".$zweitbetr->zugangstoken."

" : ""; return sendSanchoMail( diff --git a/cis/private/lehre/abgabe_student_details.php b/cis/private/lehre/abgabe_student_details.php index 6198f9392..9bfb4abb6 100644 --- a/cis/private/lehre/abgabe_student_details.php +++ b/cis/private/lehre/abgabe_student_details.php @@ -455,7 +455,8 @@ if($command=="update" && $error!=true) $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['parbeituebersichtlink'] = "

Zur Projektarbeitsübersicht

"; + $maildata['bewertunglink'] = $mail_fulllink; $maildata['token'] = ""; $mailres = sendSanchoMail( @@ -514,7 +515,8 @@ if($command=="update" && $error!=true) $zweitbetmaildata['betreuer_voller_name'] = $zweitbetr->voller_name; $zweitbetmaildata['student_anrede'] = $maildata['student_anrede']; $zweitbetmaildata['student_voller_name'] = $maildata['student_voller_name']; - $zweitbetmaildata['link'] = $mail_link = $intern ? $mail_fulllink : $mail_baselink; + $zweitbetmaildata['parbeituebersichtlink'] = $intern ? $maildata['parbeituebersichtlink'] : ""; + $zweitbetmaildata['bewertunglink'] = $mail_link = $intern ? $mail_fulllink : $mail_baselink; $zweitbetmaildata['token'] = isset($zweitbetr->zugangstoken) && !$intern ? "

Zugangstoken: ".$zweitbetr->zugangstoken."

" : ""; $mailres = sendSanchoMail( diff --git a/locale/de-AT/abgabetool.php b/locale/de-AT/abgabetool.php index 3b2bd750a..687bb31b9 100644 --- a/locale/de-AT/abgabetool.php +++ b/locale/de-AT/abgabetool.php @@ -80,7 +80,7 @@ Sollten Sie trotzdem die `Eidesstattliche Erklärung´ samt Unterschrift hochlad $this->phrasen['abgabetool/gelesenUndAkzeptiert']='Gelesen und akzeptiert'; $this->phrasen['abgabetool/erklaerungNichtAkzeptiert']='Erklärung nicht akzeptiert'; $this->phrasen['abgabetool/downloadProjektarbeit']='Dokument herunterladen'; -$this->phrasen['abgabetool/zweitBegutachter']='Zweitbegutachter'; -$this->phrasen['abgabetool/zweitbetreuerTokenMailSenden']='Zugangstoken an Zweitbegutachter senden'; -$this->phrasen['abgabetool/zweitbegutachterMailGesendet']='Mail an Zweitbegutachter (%s) gesendet'; +$this->phrasen['abgabetool/zweitBegutachter']='ZweitbegutachterIn'; +$this->phrasen['abgabetool/zweitbetreuerTokenMailSenden']='Zugangstoken an ZweitbegutachterIn senden'; +$this->phrasen['abgabetool/zweitbegutachterMailGesendet']='Mail an ZweitbegutachterIn (%s) gesendet'; ?> diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index 33c79cf80..2eea11deb 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -8192,6 +8192,66 @@ Any unusual occurrences ) ), //******************* Projektarbeitsbeurteilung - specific + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'studiengang', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Studiengang', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Study Program', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'organisationsform', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Organisationsform', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Organizational structure ', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'arbeitBachelor', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Bachelorarbeit', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Bachelor\'s Paper', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), array( 'app' => 'projektarbeitsbeurteilung', 'category' => 'projektarbeitsbeurteilung', @@ -8206,7 +8266,7 @@ Any unusual occurrences ), array( 'sprache' => 'English', - 'text' => 'Assessment', + 'text' => 'Assessment of', 'description' => '', 'insertvon' => 'system' ) @@ -8337,6 +8397,26 @@ Any unusual occurrences 'category' => 'projektarbeitsbeurteilung', 'phrase' => 'themaText', 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Das Thema wurde in eine im Rahmen einer Bachelorarbeit 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 bachelor thesis (well-structured, meaningful research questions or tasks, etc.)', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'themaTextMaster', + 'insertvon' => 'system', 'phrases' => array( array( 'sprache' => 'German', @@ -8760,7 +8840,7 @@ Any unusual occurrences 'phrases' => array( array( 'sprache' => 'German', - 'text' => 'Das Gutachten des/der Zweit-BegutachterIn liegt vor und ist in die Beurteilung eingeflossen.', + 'text' => 'Das Gutachten des/der Zweit-Begutachter*in liegt vor und ist in die Beurteilung eingeflossen.', 'description' => '', 'insertvon' => 'system' ), @@ -8906,7 +8986,7 @@ Any unusual occurrences ), array( 'sprache' => 'English', - 'text' => 'If, within any of the criteria, the points total is under 50%%, the %s is deemed to have failed overall.', + 'text' => 'If the number of points for the criteria "1 - 5" or "6 - 10" is below 50%% in total, the %s is to be assessed as negative overall.', 'description' => '', 'insertvon' => 'system' ) @@ -9140,7 +9220,7 @@ Any unusual occurrences 'phrases' => array( array( 'sprache' => 'German', - 'text' => 'Name des/der Studierenden', + 'text' => 'Name des*der Studierenden', 'description' => '', 'insertvon' => 'system' ), From 17f085d352d0eb8d1ecb7824234bef5327339a93 Mon Sep 17 00:00:00 2001 From: ma0048 Date: Thu, 25 Mar 2021 10:23:40 +0100 Subject: [PATCH 18/28] =?UTF-8?q?projektbeurteilung=20download=20f=C3=BCr?= =?UTF-8?q?=20studenten=20im=20cis=20hinzugefuegt=20projektbeurteilungsbut?= =?UTF-8?q?ton=20anzeige=20nur=20wenn=20beurteilung=20bereits=20abgeschick?= =?UTF-8?q?t=20wurde?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/lehre/abgabe_student.php | 45 +++++++++++++++---- cis/private/pdfExport.php | 42 ++++++++++++++++- content/student/studentprojektarbeit.js.php | 13 ++++-- .../studentprojektarbeitoverlay.xul.php | 4 +- locale/de-AT/abgabetool.php | 5 +++ locale/en-US/abgabetool.php | 4 ++ 6 files changed, 97 insertions(+), 16 deletions(-) diff --git a/cis/private/lehre/abgabe_student.php b/cis/private/lehre/abgabe_student.php index a1a6c9b34..ab8568632 100644 --- a/cis/private/lehre/abgabe_student.php +++ b/cis/private/lehre/abgabe_student.php @@ -99,7 +99,11 @@ $sql_query = "SELECT (SELECT nachname FROM public.tbl_person WHERE person_id=tb (SELECT betreuerart_kurzbz FROM lehre.tbl_projektbetreuer WHERE projektarbeit_id=tbl_projektarbeit.projektarbeit_id AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter') LIMIT 1) AS zweitbetreuer_betreuerart_kurzbz, tbl_projektbetreuer.person_id AS betreuer_person_id, - tbl_projekttyp.bezeichnung AS prjbez, * + tbl_projekttyp.bezeichnung AS prjbez, *, + lehre.tbl_projektbetreuer.note as note, + public.tbl_benutzer.aktiv as aktiv, + (SELECT abgeschicktvon FROM extension.tbl_projektarbeitsbeurteilung WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id AND betreuer_person_id = tbl_projektbetreuer.person_id) AS babgeschickt, + (SELECT abgeschicktvon FROM extension.tbl_projektarbeitsbeurteilung WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter') LIMIT 1) AS zweitbetreuer_abgeschickt FROM lehre.tbl_projektarbeit LEFT JOIN lehre.tbl_projektbetreuer USING(projektarbeit_id) LEFT JOIN public.tbl_benutzer ON(uid=student_uid) @@ -114,8 +118,6 @@ $sql_query = "SELECT (SELECT nachname FROM public.tbl_person WHERE person_id=tb OR tbl_projektbetreuer.betreuerart_kurzbz='Erstbetreuer' OR tbl_projektbetreuer.betreuerart_kurzbz='Erstbegutachter') AND tbl_projektarbeit.student_uid=".$db->db_add_param($uid)." - AND public.tbl_benutzer.aktiv - AND lehre.tbl_projektarbeit.note IS NULL ORDER BY studiensemester_kurzbz desc, tbl_lehrveranstaltung.kurzbz"; //AND tbl_projektarbeit.student_uid='$getuid' 'ie07m102'; @@ -155,7 +157,32 @@ else ($row->btitelpost!=''?$htmlstr1 .= ' '.$row->btitelpost:$htmlstr1 .= ''); $htmlstr1 .= $zweitbetreuer; $htmlstr .= "
".$p->t('abgabetool/upload')."".$p->t('abgabetool/upload')."".$row->studiensemester_kurzbz."".strtoupper($row->typ.$row->kurzbz).""; @@ -192,11 +219,11 @@ echo ' Abgabesystem_Studentensicht - - - - - + + + + +