From 1197f051a2a7039e9abf322ea0f90aa974d7cef6 Mon Sep 17 00:00:00 2001 From: cgfhtw Date: Thu, 17 Mar 2022 16:20:54 +0100 Subject: [PATCH 01/72] kvp phrases --- system/phrasesupdate.php | 523 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 522 insertions(+), 1 deletion(-) diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index 139ab17b5..a973ac15b 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -13714,7 +13714,528 @@ array( 'insertvon' => 'system' ) ) - ) + ), + //******************* KVP + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'new.title', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Neuer Eintrag", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "New entry", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'new.info', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Im Rahmen des KVP (Kontinuierlicher Verbesserungsprozess) können Sie hier wichtige Fehler und/oder Verbesserungen einmelden. Diese können sich auf technische, inhaltliche, medien-didaktische oder test- und prüfungsrelevante Aspekte beziehen. Eine mögliche Umsetzung Ihrer Einmeldungen für das folgende Studienjahr wird im KVP geprüft und priorisiert, und ggf. im Anschluss vom Teamlead im Quellkurs entsprechend eingearbeitet.", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Im Rahmen des KVP (Kontinuierlicher Verbesserungsprozess) können Sie hier wichtige Fehler und/oder Verbesserungen einmelden. Diese können sich auf technische, inhaltliche, medien-didaktische oder test- und prüfungsrelevante Aspekte beziehen. Eine mögliche Umsetzung Ihrer Einmeldungen für das folgende Studienjahr wird im KVP geprüft und priorisiert, und ggf. im Anschluss vom Teamlead im Quellkurs entsprechend eingearbeitet.", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'new.form.info', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Bitte füllen Sie pro Verbesserungspotential einen eigenen Eintrag aus!", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Bitte füllen Sie pro Verbesserungspotential einen eigenen Eintrag aus!", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'new.workpackages', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Vorhandene Einmeldungen", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Vorhandene Einmeldungen", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'new.form.success', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Die Einmeldung würde erfolgreich versandt.", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Die Einmeldung würde erfolgreich versandt.", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'new.form.required', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Pflichtfeld", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Required field", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'new.error.required', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Sie müssen hier einen Wert eintragen.", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "You must supply a value here.", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'new.form.kurs_id', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Bitte geben Sie Ihre Kurs ID (i.e. 5 Zahlen in der URL im Browser oben) an.", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Bitte geben Sie Ihre Kurs ID (i.e. 5 Zahlen in der URL im Browser oben) an.", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'new.form.kurs_id.label', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Kurs Url", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Kurs Url", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'new.form.kurs_kurzbz', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Bitte geben Sie die Kurzbezeichnug Ihres Kurses an (zb. TEZEI).", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Bitte geben Sie die Kurzbezeichnug Ihres Kurses an (zb. TEZEI).", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'new.form.kurs_kurzbz.label', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Kurskrzl", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Kurskrzl", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'new.form.name', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Einreichende*r; Vor. und Nachname", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Einreichende*r; Vor. und Nachname", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'new.form.name.label', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Einreichende*r", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Einreichende*r", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'new.form.type', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Art der Einmeldung:", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Art der Einmeldung:", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'new.form.type.label', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Art der Einmeldung", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Art der Einmeldung", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'new.form.title', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Bitte geben Sie einen aussagekräftigen Titel der Einmeldung an", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Bitte geben Sie einen aussagekräftigen Titel der Einmeldung an", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'new.form.title.label', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Titel der Einmeldung", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Titel der Einmeldung", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'new.form.priority', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Bitte geben Sie an, wie hoch Sie den Aufwand für die Umsetzung einschätzen", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Bitte geben Sie an, wie hoch Sie den Aufwand für die Umsetzung einschätzen", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'new.form.priority.label', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Aufwand der Umsetzung", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Aufwand der Umsetzung", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'new.form.description', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => " Beschreiben Sie das Verbesserungspotential:

Geben Sie so konkret wie möglich an, auf welche Stelle im Kurs Sie sich beziehen (z.B. Eigenstudium C Test).", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => " Beschreiben Sie das Verbesserungspotential:

Geben Sie so konkret wie möglich an, auf welche Stelle im Kurs Sie sich beziehen (z.B. Eigenstudium C Test).", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'new.form.description.label', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Beschreiben Sie das Verbesserungspotenzial.", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Beschreiben Sie das Verbesserungspotenzial.", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'new.form.items', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Bitte spezifizieren Sie, welche Items (Aufgaben, Materialien...) von dem Verbesserungspotential betroffen sind.", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Bitte spezifizieren Sie, welche Items (Aufgaben, Materialien...) von dem Verbesserungspotential betroffen sind.", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'new.form.items.label', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "betroffene items", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "betroffene items", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'new.form.implemented', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Wurde das Verbesserungspotential im Quellkurs bereits umgesetzt?", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Wurde das Verbesserungspotential im Quellkurs bereits umgesetzt?", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'new.form.implemented.label', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "bereits umgesetzt?", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "bereits umgesetzt?", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'new.form.submit', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Speichern", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Save", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ) ); From 56079a367423143bf33186cbb0ada89f996c6836 Mon Sep 17 00:00:00 2001 From: cgfhtw Date: Mon, 28 Mar 2022 11:32:32 +0200 Subject: [PATCH 02/72] phrasesupdate --- system/phrasesupdate.php | 200 +++++++++++++++++++++++++++++++-------- 1 file changed, 160 insertions(+), 40 deletions(-) diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index a973ac15b..e8e67dac3 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -13716,6 +13716,126 @@ array( ) ), //******************* KVP + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'op.label.type', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Art der Einmeldung", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Art der Einmeldung", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'op.label.name', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Einreichende*r", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Einreichende*r", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'op.label.email', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Email", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Email", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'op.label.phone', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "DW", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "DW", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'op.label.implemented', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "bereits umgesetzt?", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "bereits umgesetzt?", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'op.label.items', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Betroffene items", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Betroffene items", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), array( 'app' => 'core', 'category' => 'kvp', @@ -13796,6 +13916,26 @@ array( ) ) ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'list.empty', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Keine Einmeldungen vorhanden", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Keine Einmeldungen vorhanden", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), array( 'app' => 'core', 'category' => 'kvp', @@ -13936,46 +14076,6 @@ array( ) ) ), - array( - 'app' => 'core', - 'category' => 'kvp', - 'phrase' => 'new.form.name', - 'insertvon' => 'system', - 'phrases' => array( - array( - 'sprache' => 'German', - 'text' => "Einreichende*r; Vor. und Nachname", - 'description' => '', - 'insertvon' => 'system' - ), - array( - 'sprache' => 'English', - 'text' => "Einreichende*r; Vor. und Nachname", - 'description' => '', - 'insertvon' => 'system' - ) - ) - ), - array( - 'app' => 'core', - 'category' => 'kvp', - 'phrase' => 'new.form.name.label', - 'insertvon' => 'system', - 'phrases' => array( - array( - 'sprache' => 'German', - 'text' => "Einreichende*r", - 'description' => '', - 'insertvon' => 'system' - ), - array( - 'sprache' => 'English', - 'text' => "Einreichende*r", - 'description' => '', - 'insertvon' => 'system' - ) - ) - ), array( 'app' => 'core', 'category' => 'kvp', @@ -14176,6 +14276,26 @@ array( ) ) ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'new.form.attachments', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Attachments", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Attachments", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), array( 'app' => 'core', 'category' => 'kvp', From 9e8e8c98c85f7e3a352f9d709a725184a3b40d7e Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Mon, 11 Apr 2022 10:23:45 +0200 Subject: [PATCH 03/72] checksystem: added column melde_studiengang_kz for tbl_studiengang --- system/dbupdate_3.3.php | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index fa073bcba..48f525408 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -5979,6 +5979,19 @@ if ($result = $db->db_query("SELECT * FROM pg_class WHERE relname='idx_webservic } } +// Add column melde_studiengang_kz to public.tbl_studiengang and prefill values +if (!$result = @$db->db_query("SELECT melde_studiengang_kz FROM public.tbl_studiengang LIMIT 1")) +{ + $qry = "ALTER TABLE public.tbl_studiengang ADD COLUMN melde_studiengang_kz integer; + UPDATE public.tbl_studiengang stg SET melde_studiengang_kz = (SELECT abs(studiengang_kz) FROM tbl_studiengang WHERE studiengang_kz = stg.studiengang_kz) WHERE melderelevant AND typ != 'l'; + COMMENT ON COLUMN public.tbl_studiengang.melde_studiengang_kz IS 'Studiengangskennzahl, mit der der Studiengang gemeldet wird (z.B. Bismeldung)'"; + + if(!$db->db_query($qry)) + echo 'public.tbl_studiengang: '.$db->db_last_error().'
'; + else + echo '
public.tbl_studiengang: Neue Spalte melde_studiengang_kz hinzugefuegt.'; +} + // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; @@ -6213,7 +6226,7 @@ $tabellen=array( "public.tbl_statistik" => array("statistik_kurzbz","bezeichnung","url","gruppe","sql","content_id","insertamum","insertvon","updateamum","updatevon","berechtigung_kurzbz","publish","preferences"), "public.tbl_student" => array("student_uid","matrikelnr","prestudent_id","studiengang_kz","semester","verband","gruppe","updateamum","updatevon","insertamum","insertvon","ext_id"), "public.tbl_studentlehrverband" => array("student_uid","studiensemester_kurzbz","studiengang_kz","semester","verband","gruppe","updateamum","updatevon","insertamum","insertvon","ext_id"), - "public.tbl_studiengang" => array("studiengang_kz","kurzbz","kurzbzlang","typ","bezeichnung","english","farbe","email","telefon","max_semester","max_verband","max_gruppe","erhalter_kz","bescheid","bescheidbgbl1","bescheidbgbl2","bescheidgz","bescheidvom","orgform_kurzbz","titelbescheidvom","aktiv","ext_id","zusatzinfo_html","moodle","sprache","testtool_sprachwahl","studienplaetze","oe_kurzbz","lgartcode","mischform","projektarbeit_note_anzeige", "onlinebewerbung","melderelevant","foerderrelevant","standort_code"), + "public.tbl_studiengang" => array("studiengang_kz","kurzbz","kurzbzlang","typ","bezeichnung","english","farbe","email","telefon","max_semester","max_verband","max_gruppe","erhalter_kz","bescheid","bescheidbgbl1","bescheidbgbl2","bescheidgz","bescheidvom","orgform_kurzbz","titelbescheidvom","aktiv","ext_id","zusatzinfo_html","moodle","sprache","testtool_sprachwahl","studienplaetze","oe_kurzbz","lgartcode","mischform","projektarbeit_note_anzeige", "onlinebewerbung","melderelevant","foerderrelevant","standort_code","melde_studiengang_kz"), "public.tbl_studiengangstyp" => array("typ","bezeichnung","beschreibung","bezeichnung_mehrsprachig"), "public.tbl_studienjahr" => array("studienjahr_kurzbz","bezeichnung"), "public.tbl_studiensemester" => array("studiensemester_kurzbz","bezeichnung","start","ende","studienjahr_kurzbz","ext_id","beschreibung","onlinebewerbung"), From 3804cce361aef87bc8b276197f6af924f202aea1 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Tue, 12 Apr 2022 18:34:06 +0200 Subject: [PATCH 04/72] =?UTF-8?q?studentenmeldung.php:=20export=20for=20al?= =?UTF-8?q?l=20Studieng=C3=A4nge:=20ausserordentliche=20Studierende=20are?= =?UTF-8?q?=20also=20included=20if=20their=20Studiengang=20is=20melderelev?= =?UTF-8?q?ant?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vilesci/bis/studentenmeldung.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/vilesci/bis/studentenmeldung.php b/vilesci/bis/studentenmeldung.php index dd21574f3..b106b6ed5 100644 --- a/vilesci/bis/studentenmeldung.php +++ b/vilesci/bis/studentenmeldung.php @@ -304,7 +304,9 @@ elseif ($stg_kz == 'alleBaMa') JOIN public.tbl_studiengang ON (tbl_studiengang.studiengang_kz=tbl_student.studiengang_kz) WHERE bismelden=TRUE - AND tbl_studiengang.typ IN ('b','m') + AND tbl_studiengang.typ IN ('b','m','e') + AND tbl_studiengang.melderelevant=TRUE + AND tbl_studiengang.studiengang_kz > 0 AND (((tbl_prestudentstatus.studiensemester_kurzbz=".$db->db_add_param($ssem).") AND (tbl_prestudentstatus.datum<=".$db->db_add_param($bisdatum).") AND (status_kurzbz='Student' OR status_kurzbz='Outgoing' OR status_kurzbz='Praktikant' OR status_kurzbz='Diplomand' OR status_kurzbz='Absolvent' From 899e2e18df87f7e696d6097ac1d2b2871bd63ec7 Mon Sep 17 00:00:00 2001 From: cgfhtw Date: Thu, 21 Apr 2022 15:29:16 +0200 Subject: [PATCH 05/72] 18775 - Admin GUI f. Tabelle extension.tbl_opkvp_organisationseinheit_opprj --- system/phrasesupdate.php | 280 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 280 insertions(+) diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index e8e67dac3..c5964950d 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -14355,6 +14355,286 @@ array( 'insertvon' => 'system' ) ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'admin.title.oes', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Organisations Einheiten", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Organisations Einheiten", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'admin.title.openproject', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "OpenProject Projekte", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "OpenProject Projects", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'admin.title.edit', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "%s (%s) ändern", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Edit %s (%s)", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'admin.title.delete', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Löschen?", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Delete?", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'admin.title.source_linked', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Link auflösen?", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Remove link?", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'admin.title.target_linked', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Link auflösen?", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Remove link?", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'admin.text.delete', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Soll diese Verknüpfung wirklich entfernt werden?", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Do you really want to remove this link?", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'admin.text.source_linked', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Das Objekt ist noch mit einem anderen Objekt verknüpft. Diese Verknüpfung wird entfernt!", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Your Source is already linked to another item. This connection will be removed!", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'admin.text.target_linked', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Das Zielobjekt ist bereits mit einem anderen Objekt verknüpft. Diese Verknüpfung wird entfernt!", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Your Target is already linked to another item. This connection will be removed!", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'admin.label.search', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Suchen", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Search", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'admin.label.none', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "-Keine-", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "-None-", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'admin.confirm.ok', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "OK", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "OK", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'admin.confirm.cancel', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Abbrechen", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Cancel", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'admin.search.error.none', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Keine Einträge gefunden", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "No entries found", + 'description' => '', + 'insertvon' => 'system' + ) + ) ) ); From 63142f58d5c42bbb20bd8d0b6686e5194e415bce Mon Sep 17 00:00:00 2001 From: cgfhtw Date: Thu, 28 Apr 2022 08:56:38 +0200 Subject: [PATCH 06/72] admin templates - & error phrases --- system/phrasesupdate.php | 160 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 160 insertions(+) diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index c5964950d..344965b54 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -14356,6 +14356,46 @@ array( ) ) ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'new.error.nosourcecourse.title', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Fehler", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Error", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'new.error.nosourcecourse.msg', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Dieser Moodle Kurs ist keinem Quellkurs zugeordnet", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "This Moodle Course doesn't have a Source Course", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), array( 'app' => 'core', 'category' => 'kvp', @@ -14635,6 +14675,126 @@ array( 'insertvon' => 'system' ) ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'admin.label.template', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Template", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Template", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'admin.label.oe', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Organisationseinheit", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Organisation unit", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'admin.label.language', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Sprache", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Language", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'admin.label.moodle', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Moodle Kurs", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Moodle Course", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'admin.label.project', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "OP Projekt", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "OP Project", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'kvp', + 'phrase' => 'admin.label.version', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "OP Version", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "OP Version", + 'description' => '', + 'insertvon' => 'system' + ) + ) ) ); From 707c8a3a6a3c68625f6012206512eb7cc835a83e Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Mon, 2 May 2022 18:12:29 +0200 Subject: [PATCH 07/72] dbupdate_3.3.php: field melde_studiengang_kz in tbl_studiengang is prefilled correctly --- 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 48f525408..66f31a715 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -5982,8 +5982,9 @@ if ($result = $db->db_query("SELECT * FROM pg_class WHERE relname='idx_webservic // Add column melde_studiengang_kz to public.tbl_studiengang and prefill values if (!$result = @$db->db_query("SELECT melde_studiengang_kz FROM public.tbl_studiengang LIMIT 1")) { - $qry = "ALTER TABLE public.tbl_studiengang ADD COLUMN melde_studiengang_kz integer; - UPDATE public.tbl_studiengang stg SET melde_studiengang_kz = (SELECT abs(studiengang_kz) FROM tbl_studiengang WHERE studiengang_kz = stg.studiengang_kz) WHERE melderelevant AND typ != 'l'; + $qry = "ALTER TABLE public.tbl_studiengang ADD COLUMN melde_studiengang_kz varchar(32); + UPDATE public.tbl_studiengang stg SET melde_studiengang_kz = (SELECT lpad(abs(studiengang_kz)::text, 4, '0') FROM tbl_studiengang WHERE studiengang_kz = stg.studiengang_kz) WHERE melderelevant AND lgartcode IS NULL; + UPDATE public.tbl_studiengang stg SET melde_studiengang_kz = (SELECT (SELECT lpad(erhalter_kz::text, 3, '0') FROM public.tbl_erhalter) || lpad(abs(studiengang_kz)::text, 4, '0') FROM tbl_studiengang WHERE studiengang_kz = stg.studiengang_kz) WHERE melderelevant AND lgartcode IS NOT NULL; COMMENT ON COLUMN public.tbl_studiengang.melde_studiengang_kz IS 'Studiengangskennzahl, mit der der Studiengang gemeldet wird (z.B. Bismeldung)'"; if(!$db->db_query($qry)) From 6aa4d4d719441a1ff7663cf5c7cb3c9304f5c963 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Mon, 30 May 2022 11:37:59 +0200 Subject: [PATCH 08/72] added extension/dvuh_gui_begrenzt Berechtigung for limited functionality access in DVUH GUI --- system/dbupdate_3.3.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 66f31a715..874f7fab0 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -5993,6 +5993,20 @@ if (!$result = @$db->db_query("SELECT melde_studiengang_kz FROM public.tbl_studi echo '
public.tbl_studiengang: Neue Spalte melde_studiengang_kz hinzugefuegt.'; } +// Add permission for calling certain APIs in Datenverbund extension +if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'extension/dvuh_gui_begrenzt';")) +{ + if($db->db_num_rows($result) == 0) + { + $qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES('extension/dvuh_gui_begrenzt', 'Berechtigung für einzelne Abfragen in der Datenverbund GUI');"; + + if(!$db->db_query($qry)) + echo 'system.tbl_berechtigung '.$db->db_last_error().'
'; + else + echo '
system.tbl_berechtigung: Added permission for extension/dvuh_gui_begrenzt'; + } +} + // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; From c547fd86a72dbe81bb0bc5c9c8ed26eb05adfdc7 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Tue, 7 Jun 2022 18:31:43 +0200 Subject: [PATCH 09/72] replaced Berechtigung dvuh_gui_begrenz with dvuh_gui_ekz_anfordern for requesting ekz only --- system/dbupdate_3.3.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 874f7fab0..f3507e474 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -5994,16 +5994,16 @@ if (!$result = @$db->db_query("SELECT melde_studiengang_kz FROM public.tbl_studi } // Add permission for calling certain APIs in Datenverbund extension -if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'extension/dvuh_gui_begrenzt';")) +if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'extension/dvuh_gui_ekz_anfordern';")) { if($db->db_num_rows($result) == 0) { - $qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES('extension/dvuh_gui_begrenzt', 'Berechtigung für einzelne Abfragen in der Datenverbund GUI');"; + $qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES('extension/dvuh_gui_ekz_anfordern', 'Berechtigung für Abfage des Ersatzkennzeichens in der Datenverbund GUI');"; if(!$db->db_query($qry)) echo 'system.tbl_berechtigung '.$db->db_last_error().'
'; else - echo '
system.tbl_berechtigung: Added permission for extension/dvuh_gui_begrenzt'; + echo '
system.tbl_berechtigung: Added permission for extension/dvuh_gui_ekz_anfordern'; } } From 95f1d87878625dade06b3e6f556eed178f29272d Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Wed, 15 Jun 2022 23:15:23 +0200 Subject: [PATCH 10/72] melde_studienang_kz can be edited in vilesci --- include/studiengang.class.php | 79 +++++++++++++--------- vilesci/stammdaten/studiengang_details.php | 10 +++ 2 files changed, 57 insertions(+), 32 deletions(-) diff --git a/include/studiengang.class.php b/include/studiengang.class.php index 530b072c0..676ee97f3 100644 --- a/include/studiengang.class.php +++ b/include/studiengang.class.php @@ -27,35 +27,36 @@ class studiengang extends basis_db public $new; // boolean public $result = array(); // studiengang Objekt - public $studiengang_kz; // integer - public $kurzbz; // varchar(5) - public $kurzbzlang; // varchar(10) - public $bezeichnung; // varchar(128) - public $english; // varchar(128) - public $typ; // char(1) - public $farbe; // char(6) - public $email; // varchar(64) - public $max_semester; // smallint - public $max_verband; // char(1) - public $max_gruppe; // char(1) - public $erhalter_kz; // smallint - public $bescheid; // varchar(256) - public $bescheidbgbl1; // varchar(16) - public $bescheidbgbl2; // varchar(16) - public $bescheidgz; // varchar(16) - public $bescheidvom; // Date - public $titelbescheidvom; // Date - public $ext_id; // bigint - public $orgform_kurzbz; // varchar(3) - public $zusatzinfo_html; // text - public $sprache; // varchar(16) - public $testtool_sprachwahl;// boolean - public $studienplaetze; // smallint - public $oe_kurzbz; // varchar(32) - public $onlinebewerbung; // boolean - public $melderelevant; // boolean - public $foerderrelevant; // boolean - public $standort_code; // integer + public $studiengang_kz; // integer + public $kurzbz; // varchar(5) + public $kurzbzlang; // varchar(10) + public $bezeichnung; // varchar(128) + public $english; // varchar(128) + public $typ; // char(1) + public $farbe; // char(6) + public $email; // varchar(64) + public $max_semester; // smallint + public $max_verband; // char(1) + public $max_gruppe; // char(1) + public $erhalter_kz; // smallint + public $bescheid; // varchar(256) + public $bescheidbgbl1; // varchar(16) + public $bescheidbgbl2; // varchar(16) + public $bescheidgz; // varchar(16) + public $bescheidvom; // Date + public $titelbescheidvom; // Date + public $ext_id; // bigint + public $orgform_kurzbz; // varchar(3) + public $zusatzinfo_html; // text + public $sprache; // varchar(16) + public $testtool_sprachwahl; // boolean + public $studienplaetze; // smallint + public $oe_kurzbz; // varchar(32) + public $onlinebewerbung; // boolean + public $melderelevant; // boolean + public $foerderrelevant; // boolean + public $standort_code; // integer + public $melde_studiengang_kz; // varchar(32) public $kuerzel; // = typ + kurzbz (Bsp: BBE) public $kuerzel_arr = array(); // Array mit allen Kurzeln Index=studiengangs_kz @@ -134,6 +135,7 @@ class studiengang extends basis_db $this->melderelevant = $this->db_parse_bool($row->melderelevant); $this->foerderrelevant = $this->db_parse_bool($row->foerderrelevant); $this->standort_code = $row->standort_code; + $this->melde_studiengang_kz = $row->melde_studiengang_kz; $this->bezeichnung_arr['German'] = $this->bezeichnung; $this->bezeichnung_arr['English'] = $this->english; @@ -210,6 +212,7 @@ class studiengang extends basis_db $stg_obj->melderelevant = $this->db_parse_bool($row->melderelevant); $stg_obj->foerderrelevant = $this->db_parse_bool($row->foerderrelevant); $stg_obj->standort_code = $row->standort_code; + $stg_obj->melde_studiengang_kz = $row->melde_studiengang_kz; $stg_obj->bezeichnung_arr['German'] = $row->bezeichnung; $stg_obj->bezeichnung_arr['English'] = $row->english; @@ -431,6 +434,7 @@ class studiengang extends basis_db $stg_obj->melderelevant = $this->db_parse_bool($row->melderelevant); $stg_obj->foerderrelevant = $this->db_parse_bool($row->foerderrelevant); $stg_obj->standort_code = $row->standort_code; + $stg_obj->melde_studiengang_kz = $row->melde_studiengang_kz; $stg_obj->bezeichnung_arr['German'] = $row->bezeichnung; $stg_obj->bezeichnung_arr['English'] = $row->english; @@ -474,6 +478,11 @@ class studiengang extends basis_db $this->errormsg = 'studiengang_kz ungueltig!'; return false; } + if(isset($this->melde_studiengang_kz) && $this->melde_studiengang_kz != '' && !is_numeric($this->melde_studiengang_kz)) + { + $this->errormsg = 'melde_studiengang_kz ungueltig!'; + return false; + } $this->errormsg = ''; return true; } @@ -501,7 +510,7 @@ class studiengang extends basis_db typ, farbe, email, telefon, max_verband, max_semester, max_gruppe, erhalter_kz, bescheid, bescheidbgbl1, bescheidbgbl2, bescheidgz, bescheidvom, titelbescheidvom, aktiv, onlinebewerbung, orgform_kurzbz, zusatzinfo_html, oe_kurzbz, moodle, sprache, testtool_sprachwahl, studienplaetze, lgartcode, mischform,projektarbeit_note_anzeige, - melderelevant, foerderrelevant, standort_code) VALUES ('. + melderelevant, foerderrelevant, standort_code, melde_studiengang_kz) VALUES ('. $this->db_add_param($this->studiengang_kz, FHC_INTEGER).', '. $this->db_add_param($this->kurzbz).', '. $this->db_add_param($this->kurzbzlang).', '. @@ -535,7 +544,8 @@ class studiengang extends basis_db $this->db_add_param($this->projektarbeit_note_anzeige, FHC_BOOLEAN).','. $this->db_add_param($this->melderelevant, FHC_BOOLEAN).','. $this->db_add_param($this->foerderrelevant, FHC_BOOLEAN).','. - $this->db_add_param($this->standort_code).');'; + $this->db_add_param($this->standort_code).','. + $this->db_add_param($this->melde_studiengang_kz).');'; } else { @@ -575,7 +585,8 @@ class studiengang extends basis_db 'mischform='.$this->db_add_param($this->mischform, FHC_BOOLEAN).', '. 'melderelevant='.$this->db_add_param($this->melderelevant, FHC_BOOLEAN).', '. 'foerderrelevant='.$this->db_add_param($this->foerderrelevant, FHC_BOOLEAN).', '. - 'standort_code='.$this->db_add_param($this->standort_code).' '. + 'standort_code='.$this->db_add_param($this->standort_code).', '. + 'melde_studiengang_kz='.$this->db_add_param($this->melde_studiengang_kz).' '. 'WHERE studiengang_kz='.$this->db_add_param($this->studiengang_kz, FHC_INTEGER, false).';'; } @@ -701,6 +712,7 @@ class studiengang extends basis_db $this->melderelevant = $this->db_parse_bool($row->melderelevant); $this->foerderrelevant = $this->db_parse_bool($row->foerderrelevant); $this->standort_code = $row->standort_code; + $this->melde_studiengang_kz = $row->melde_studiengang_kz; $this->projektarbeit_note_anzeige = $this->db_parse_bool($row->projektarbeit_note_anzeige); $this->bezeichnung_arr['German'] = $this->bezeichnung; @@ -844,6 +856,7 @@ class studiengang extends basis_db $obj->melderelevant = $this->db_parse_bool($row->melderelevant); $obj->foerderrelevant = $this->db_parse_bool($row->foerderrelevant); $obj->standort_code = $row->standort_code; + $obj->melde_studiengang_kz = $row->melde_studiengang_kz; $obj->aktiv = $this->db_parse_bool($row->aktiv); $this->result[] = $obj; @@ -1024,6 +1037,7 @@ class studiengang extends basis_db $obj->melderelevant = $this->db_parse_bool($row->melderelevant); $obj->foerderrelevant = $this->db_parse_bool($row->foerderrelevant); $obj->standort_code = $row->standort_code; + $obj->melde_studiengang_kz = $row->melde_studiengang_kz; $obj->bezeichnung_arr['German'] = $obj->bezeichnung; $obj->bezeichnung_arr['English'] = $obj->english; @@ -1161,6 +1175,7 @@ class studiengang extends basis_db $obj->melderelevant = $this->db_parse_bool($row->melderelevant); $obj->foerderrelevant = $this->db_parse_bool($row->foerderrelevant); $obj->standort_code = $row->standort_code; + $obj->melde_studiengang_kz = $row->melde_studiengang_kz; $obj->bezeichnung_arr['German'] = $obj->bezeichnung; $obj->bezeichnung_arr['English'] = $obj->english; diff --git a/vilesci/stammdaten/studiengang_details.php b/vilesci/stammdaten/studiengang_details.php index 46915f52e..d7f1a61d6 100644 --- a/vilesci/stammdaten/studiengang_details.php +++ b/vilesci/stammdaten/studiengang_details.php @@ -92,6 +92,7 @@ $lgartcode=''; $melderelevant = false; $foerderrelevant = false; $standort_code=''; +$melde_studiengang_kz = ''; $schick = filter_input(INPUT_POST, 'schick'); $onlinebewerbung = false; @@ -155,6 +156,7 @@ if($schick) $melderelevant = filter_input(INPUT_POST, 'melderelevant', FILTER_VALIDATE_BOOLEAN); $foerderrelevant = filter_input(INPUT_POST, 'foerderrelevant', FILTER_VALIDATE_BOOLEAN); $standort_code = filter_input(INPUT_POST, 'standort_code'); + $melde_studiengang_kz = filter_input(INPUT_POST, 'melde_studiengang_kz'); $ext_id = filter_input(INPUT_POST, 'ext_id'); @@ -223,6 +225,7 @@ if($schick) $sg_update->melderelevant = $melderelevant; $sg_update->foerderrelevant = $foerderrelevant; $sg_update->standort_code = $standort_code; + $sg_update->melde_studiengang_kz = $melde_studiengang_kz; $sg_update->bescheidvom=$date->formatDatum($sg_update->bescheidvom,'Y-m-d'); $sg_update->titelbescheidvom=$date->formatDatum($sg_update->titelbescheidvom,'Y-m-d'); @@ -292,6 +295,7 @@ if ((isset($_REQUEST['studiengang_kz'])) && ((!isset($_REQUEST['neu'])) || ($_RE $melderelevant = $sg->melderelevant; $foerderrelevant = $sg->foerderrelevant; $standort_code = $sg->standort_code; + $melde_studiengang_kz = $sg->melde_studiengang_kz; } $erh = new erhalter(); @@ -611,6 +615,12 @@ if (!$erh->getAll('kurzbz')) + + + + - + + + - - + - + - diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index d7be2d115..d010d70db 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -10589,6 +10589,27 @@ Any unusual occurrences ) ) ), + + array( + 'app' => 'core', + 'category' => 'anrechnung', + 'phrase' => 'anrechnungEctsTooltipText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Anzeige aller bisher angerechneten ECTS. Für Quereinsteiger werden die ECTS der angerechneten Semester berechnet.

Vorgabe für Anrechnungen:
Max. 60 ECTS schulische Qualifikation
Max. 60 ECTS berufliche Qualifikation
Max. 90 ECTS INSGESAMT (schulische + berufliche Qualifikation)', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'All previous recognized ECTS. Lateral Entries are calculated with full ECTS of all recognized semester.

Condition for Recognition of Prior Knowledge:
Max. 60 ECTS school qualification
Max. 60 ECTS professional qualification
Max. 90 ECTS OVERALL (school + professional qualification)', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), array( 'app' => 'core', 'category' => 'anrechnung', From fcf829d03b27f23a9e57cc5634e6424083b3f83b Mon Sep 17 00:00:00 2001 From: Manfred Date: Fri, 24 Jun 2022 14:29:08 +0200 Subject: [PATCH 16/72] =?UTF-8?q?Button=20"Liste=20ausr=C3=A4umen"=20erg?= =?UTF-8?q?=C3=A4nzt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Löscht leere (unbenutzte) Prüflinge --- vilesci/stammdaten/auswertung_fhtw.php | 75 ++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/vilesci/stammdaten/auswertung_fhtw.php b/vilesci/stammdaten/auswertung_fhtw.php index 69d4dc7b9..9e8160808 100644 --- a/vilesci/stammdaten/auswertung_fhtw.php +++ b/vilesci/stammdaten/auswertung_fhtw.php @@ -440,6 +440,44 @@ if ($deleteAllResults) } } +// Ajax-Request um die Liste zusammenzuräumen +$clearList = filter_input(INPUT_POST, 'clearList', FILTER_VALIDATE_BOOLEAN); +if ($clearList) +{ + if (!$rechte->isBerechtigt('infocenter', null, 'suid')) + { + echo json_encode(array( + 'status' => 'fehler', + 'msg' => $rechte->errormsg + )); + exit(); + } + + $qry = "DELETE FROM testtool.tbl_pruefling pf + WHERE + ( + NOT EXISTS (SELECT 1 FROM testtool.tbl_pruefling_frage WHERE pruefling_id=pf.pruefling_id) AND + NOT EXISTS (SELECT 1 FROM testtool.tbl_antwort WHERE pruefling_id=pf.pruefling_id) + )"; + + if ($result = $db->db_query($qry)) + { + echo json_encode(array( + 'status' => 'ok', + 'msg' => $db->db_affected_rows($result).' leere Prüflinge wurden gelöscht')); + exit(); + } + else + { + echo json_encode(array( + 'status' => 'fehler', + 'msg' => 'Fehler beim Löschen der leeren Prüflinge' + )); + exit(); + } +} + +// Ajax-Request um einen Prüfling zu sperren $rtprueflingEntSperren = filter_input(INPUT_POST, 'rtprueflingEntSperren', FILTER_VALIDATE_BOOLEAN); if ($rtprueflingEntSperren) { @@ -2581,6 +2619,39 @@ else }); window.location.href = "mailto:?bcc="+adresseArray.join(";"); } + + function clearList() + { + $.ajax({ + url: "auswertung_fhtw.php", + data: {clearList: true}, + type: "POST", + dataType: "json", + success: function(data) + { + if(data.status !== "ok") + { + $("#msgbox").attr("class","alert alert-danger"); + $("#msgbox").show(); + $("#msgbox").html(data["msg"]); + } + else + { + $("#freischaltenWarning").show(); + $("#freischaltenInfo").hide(); + $("#msgbox").show(); + $("#msgbox").html(data["msg"]).delay(2000).fadeOut(); + } + }, + error: function(data) + { + $("#msgbox").attr("class","alert alert-danger"); + $("#msgbox").show(); + $("#msgbox").html(data["msg"]); + } + }); + } + function checkAllWithResult() { // Schleife ueber die einzelnen Elemente @@ -2965,6 +3036,10 @@ else { echo '  Testfortschritt ansehen'; } + if ($rechte->isBerechtigt('infocenter', null, 'suid')) + { + echo '  '; + } echo ''; echo '
From 1c3acc6366f8050ac804b8eb8e1eb6e8d11040dd Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Wed, 29 Jun 2022 17:59:57 +0200 Subject: [PATCH 17/72] =?UTF-8?q?issue=20overview:=20added=20column=20"Zug?= =?UTF-8?q?eh=C3=B6rigkeit"(Belonging)=20to=20show=20study=20programs=20of?= =?UTF-8?q?=20concerning=20person=20and=20wether=20it=20is=20an=20employee?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/system/issues/issuesData.php | 47 +++++++++++++------ system/filtersupdate.php | 3 ++ system/phrasesupdate.php | 20 ++++++++ 3 files changed, 56 insertions(+), 14 deletions(-) diff --git a/application/views/system/issues/issuesData.php b/application/views/system/issues/issuesData.php index a3b011531..ce05ecf8a 100644 --- a/application/views/system/issues/issuesData.php +++ b/application/views/system/issues/issuesData.php @@ -31,15 +31,35 @@ $query = "WITH zustaendigkeiten AS ( $query .= " THEN TRUE ELSE FALSE END AS \"zustaendig\" - FROM system.tbl_fehler_zustaendigkeiten zst + FROM system.tbl_fehler_zustaendigkeiten zst )"; $query .= "SELECT issue_id, fehlercode AS \"Fehlercode\", iss.fehlercode_extern AS \"Fehlercode extern\", datum AS \"Datum\", - inhalt AS \"Inhalt\", inhalt_extern AS \"Inhalt extern\", iss.person_id AS \"PersonId\", iss.oe_kurzbz AS \"OE\", + inhalt AS \"Inhalt\", inhalt_extern AS \"Inhalt extern\", iss.person_id AS \"PersonId\", iss.oe_kurzbz AS \"OE\", ftyp.bezeichnung_mehrsprachig[".$LANGUAGE_INDEX."] AS \"Fehlertyp\", stat.bezeichnung_mehrsprachig[".$LANGUAGE_INDEX."] AS \"Fehlerstatus\", verarbeitetvon AS \"Verarbeitet von\",verarbeitetamum AS \"Verarbeitet am\", fr.app AS \"Applikation\", fr.fehlertyp_kurzbz AS \"Fehlertypcode\", iss.status_kurzbz AS \"Statuscode\", - pers.vorname AS \"Vorname\", pers.nachname AS \"Nachname\", + pers.vorname AS \"Vorname\", pers.nachname AS \"Nachname\", + ( + /* show all relevant Studiengänge of person and wether it is an employee*/ + SELECT STRING_AGG(studiengang || ' ' || last_status, ' | ') + || (CASE WHEN EXISTS ( + SELECT 1 FROM public.tbl_mitarbeiter ma + JOIN public.tbl_benutzer ben ON ma.mitarbeiter_uid = ben.uid + WHERE person_id = prestudents.person_id + AND ben.aktiv + ) THEN ' | Mitarbeiter' ELSE '' END) + FROM ( + SELECT DISTINCT person_id, prestudent_id, UPPER(stg.typ || stg.kurzbz) AS studiengang, get_rolle_prestudent(ps.prestudent_id, null) AS last_status + FROM public.tbl_prestudent ps + JOIN public.tbl_studiengang stg USING (studiengang_kz) + WHERE person_id = pers.person_id + ORDER BY prestudent_id DESC + ) prestudents + WHERE last_status IN ('Aufgenommener', 'Student', 'Incoming', 'Diplomand', 'Abbrecher', 'Unterbrecher', 'Absolvent') + GROUP BY person_id + LIMIT 1; + ) AS \"Zugehörigkeit\", CASE WHEN EXISTS(SELECT 1 @@ -60,7 +80,7 @@ $query .= "SELECT issue_id, fehlercode AS \"Fehlercode\", iss.fehlercode_extern FROM system.tbl_fehler_zustaendigkeiten JOIN public.tbl_person USING (person_id) WHERE fehlercode = fr.fehlercode - GROUP BY fehlercode + GROUP BY fehlercode ) AS \"Person Zuständigkeiten\", ( SELECT string_agg(organisationseinheittyp_kurzbz || ' ' || oe.bezeichnung || COALESCE(' - ' || fu.beschreibung, ''), ' | ' ORDER BY bezeichnung, oe_kurzbz) @@ -68,7 +88,7 @@ $query .= "SELECT issue_id, fehlercode AS \"Fehlercode\", iss.fehlercode_extern LEFT JOIN public.tbl_organisationseinheit oe USING (oe_kurzbz) LEFT JOIN public.tbl_funktion fu USING (funktion_kurzbz) WHERE fehlercode = fr.fehlercode - GROUP BY fehlercode + GROUP BY fehlercode ) AS \"Organisationseinheit Zuständigkeiten\" FROM system.tbl_issue iss JOIN system.tbl_fehler fr USING (fehlercode) @@ -95,13 +115,13 @@ if (!isEmptyArray($all_oe_kurzbz_berechtigt)) AND NOT EXISTS (SELECT 1 /* irrelevant if already finished studies and studied a while ago */ FROM public.tbl_prestudentstatus ps_finished JOIN public.tbl_studiensemester sem_finished USING (studiensemester_kurzbz) - WHERE prestudent_id = ps.prestudent_id + WHERE prestudent_id = ps.prestudent_id AND status_kurzbz IN ('Absolvent','Abbrecher','Abgewiesener') AND datum::date + interval '2 months' < NOW() AND EXISTS (SELECT 1 FROM public.tbl_prestudent /* if more recent prestudent exists, still display the issue */ JOIN public.tbl_prestudentstatus USING (prestudent_id) JOIN public.tbl_studiensemester USING (studiensemester_kurzbz) - WHERE tbl_prestudentstatus.status_kurzbz IN $RELEVANT_PRESTUDENT_STATUS + WHERE tbl_prestudentstatus.status_kurzbz IN $RELEVANT_PRESTUDENT_STATUS AND person_id = ps.person_id AND prestudent_id <> ps_finished.prestudent_id AND tbl_studiensemester.start::date > sem_finished.start::date) @@ -149,6 +169,7 @@ $filterWidgetArray = array( ucfirst($this->p->t('fehlermonitoring', 'statuscode')), ucfirst($this->p->t('person', 'vorname')), ucfirst($this->p->t('person', 'nachname')), + ucfirst($this->p->t('fehlermonitoring', 'zugehoerigkeit')), ucfirst($this->p->t('fehlermonitoring', 'hauptzustaendig')), ucfirst($this->p->t('fehlermonitoring', 'zustaendigePersonen')), ucfirst($this->p->t('fehlermonitoring', 'zustaendigeOrganisationseinheiten')) @@ -180,16 +201,16 @@ $filterWidgetArray = array( $datasetRaw->{'OE'} = '-'; } - if ($datasetRaw->{'Verarbeitet am'} == null) - { - $datasetRaw->{'Verarbeitet am'} = '-'; - } - if ($datasetRaw->{'Verarbeitet von'} == null) { $datasetRaw->{'Verarbeitet von'} = '-'; } + if ($datasetRaw->{'Zugehörigkeit'} == null) + { + $datasetRaw->{'Zugehörigkeit'} = '-'; + } + if ($datasetRaw->{'Person Zuständigkeiten'} == null) { $datasetRaw->{'Person Zuständigkeiten'} = '-'; @@ -200,8 +221,6 @@ $filterWidgetArray = array( $datasetRaw->{'Organisationseinheit Zuständigkeiten'} = '-'; } - - return $datasetRaw; }, 'markRow' => function($datasetRaw) { diff --git a/system/filtersupdate.php b/system/filtersupdate.php index 203e96701..abe8ac1a5 100644 --- a/system/filtersupdate.php +++ b/system/filtersupdate.php @@ -927,6 +927,7 @@ $filters = array( {"name": "Nachname"}, {"name": "PersonId"}, {"name": "Fehlerstatus"}, + {"name": "Zugehörigkeit"}, {"name": "Person Zuständigkeiten"}, {"name": "Organisationseinheit Zuständigkeiten"} ], @@ -963,6 +964,7 @@ $filters = array( {"name": "Nachname"}, {"name": "PersonId"}, {"name": "Fehlerstatus"}, + {"name": "Zugehörigkeit"}, {"name": "Person Zuständigkeiten"}, {"name": "Organisationseinheit Zuständigkeiten"} ], @@ -995,6 +997,7 @@ $filters = array( {"name": "Nachname"}, {"name": "PersonId"}, {"name": "Fehlerstatus"}, + {"name": "Zugehörigkeit"}, {"name": "Verarbeitet von"}, {"name": "Verarbeitet am"} ], diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index ccba62ff0..f198ee6f6 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -14852,6 +14852,26 @@ array( ) ) ), + array( + 'app' => 'core', + 'category' => 'fehlermonitoring', + 'phrase' => 'zugehoerigkeit', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Zugehörigkeit", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "belonging", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), array( 'app' => 'core', 'category' => 'ui', From f74e036ec8b84232b61b755cc08162415ca9a95b Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Thu, 30 Jun 2022 11:27:24 +0200 Subject: [PATCH 18/72] moved Berechtigung "extension/dvuh_gui_ekz_anfordern" to DVUH extension SQL --- system/dbupdate_3.3.php | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index bca2f9c55..01839e4b9 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -6140,19 +6140,6 @@ if (!$result = @$db->db_query("SELECT melde_studiengang_kz FROM public.tbl_studi echo '
public.tbl_studiengang: Neue Spalte melde_studiengang_kz hinzugefuegt.'; } -// Add permission for calling certain APIs in Datenverbund extension -if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'extension/dvuh_gui_ekz_anfordern';")) -{ - if($db->db_num_rows($result) == 0) - { - $qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES('extension/dvuh_gui_ekz_anfordern', 'Berechtigung für Abfage des Ersatzkennzeichens in der Datenverbund GUI');"; - if(!$db->db_query($qry)) - echo 'system.tbl_berechtigung '.$db->db_last_error().'
'; - else - echo '
system.tbl_berechtigung: Added permission for extension/dvuh_gui_ekz_anfordern'; - } -} - // ADD COLUMN insertamum to system.tbl_fehler_zustaendigkeiten if(!@$db->db_query("SELECT insertamum FROM system.tbl_fehler_zustaendigkeiten LIMIT 1")) { From 1641a879af52d24b4a01c784a9e76e4fb8abb826 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Fri, 1 Jul 2022 09:04:52 +0200 Subject: [PATCH 19/72] PHP Version Compatibility fixed --- application/models/person/Person_model.php | 2 +- cis/private/tools/suche.php | 2 +- include/person.class.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/application/models/person/Person_model.php b/application/models/person/Person_model.php index 173cec529..94ffb78a3 100644 --- a/application/models/person/Person_model.php +++ b/application/models/person/Person_model.php @@ -82,7 +82,7 @@ class Person_model extends DB_Model } else { - $person['svnr'] = $person['svnr'] . 'v' . ($result->retval[0]->svnr{11} + 1); + $person['svnr'] = $person['svnr'] . 'v' . ($result->retval[0]->svnr[11] + 1); } } } diff --git a/cis/private/tools/suche.php b/cis/private/tools/suche.php index b4574a95f..15d75c546 100644 --- a/cis/private/tools/suche.php +++ b/cis/private/tools/suche.php @@ -275,7 +275,7 @@ function searchOE($searchItems) $oe->result[] = new organisationseinheit($row->oe_kurzbz); } - if(count($oe->result)>0) + if(is_array($oe->result) && count($oe->result)>0) { echo '

',$p->t('global/organisationseinheiten'),'

'; echo ' diff --git a/include/person.class.php b/include/person.class.php index e10862ea1..8295a76e1 100644 --- a/include/person.class.php +++ b/include/person.class.php @@ -284,7 +284,7 @@ class person extends basis_db //Quersumme bilden for ($i = 0; $i < 10; $i++) { - $erg += $gewichtung[$i] * $this->svnr{$i}; + $erg += $gewichtung[$i] * $this->svnr[$i]; } if ($this->svnr[3] != ($erg % 11)) //Vergleichen der Pruefziffer mit Quersumme Modulo 11 From ac231722f1955b717eb063d751bb541e22149d16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Fri, 1 Jul 2022 14:31:39 +0200 Subject: [PATCH 20/72] Problem behoben wodruch Fehlermeldungen nicht korrekt angezeigt wurden in der Zeitaufzeichnung --- include/zeitaufzeichnung_import_post.class.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/include/zeitaufzeichnung_import_post.class.php b/include/zeitaufzeichnung_import_post.class.php index dc6381ecb..a6a59376e 100644 --- a/include/zeitaufzeichnung_import_post.class.php +++ b/include/zeitaufzeichnung_import_post.class.php @@ -43,7 +43,7 @@ class zeitaufzeichnung_import_post extends zeitaufzeichnung_import { $this->edit = $edit; $this->data = $data; } - + /** * @return string @@ -77,7 +77,7 @@ class zeitaufzeichnung_import_post extends zeitaufzeichnung_import { $this->addError($ex->getMessage()); } } - + /** * @param string $zeitaufzeichnung_id * @return void @@ -125,7 +125,7 @@ class zeitaufzeichnung_import_post extends zeitaufzeichnung_import { $this->zeit->service_id = $service_id; $this->zeit->kunde_uid = $kunde_uid; } - + /** * @param string $start datetime * @param string $end datetime @@ -145,7 +145,7 @@ class zeitaufzeichnung_import_post extends zeitaufzeichnung_import { * @param string $start "Y-m-d H:i:s" formatted datetime * @param string $end "Y-m-d H:i:s" formatted datetime * @return void - * + * * @throws Exception */ protected function checkPauseInArbeitszeit($start, $end) { @@ -158,7 +158,7 @@ class zeitaufzeichnung_import_post extends zeitaufzeichnung_import { * @param string $start "Y-m-d H:i:s" formatted datetime * @param string $end "Y-m-d H:i:s" formatted datetime * @return void - * + * * @throws Exception */ protected function checkPauseValid($start, $end) { @@ -177,7 +177,7 @@ class zeitaufzeichnung_import_post extends zeitaufzeichnung_import { $ende = $this->zeit->ende; $this->zeit->ende = $this->datum->formatDatum($start, 'Y-m-d H:i:s'); if (!$this->zeit->save()) { - $this->addError($p->t("global/fehlerBeimSpeichernDerDaten") . ': ' . $this->zeit->errormsg); + $this->addError($this->p->t("global/fehlerBeimSpeichernDerDaten") . ': ' . $this->zeit->errormsg); } //Eintrag für die Pause $pause = new zeitaufzeichnung(); @@ -193,7 +193,7 @@ class zeitaufzeichnung_import_post extends zeitaufzeichnung_import { $pause->ende = $this->datum->formatDatum($end, 'Y-m-d H:i:s'); $pause->beschreibung = ''; if (!$pause->save()) { - $this->addError($p->t("global/fehlerBeimSpeichernDerDaten") . ': ' . $pause->errormsg); + $this->addError($this->p->t("global/fehlerBeimSpeichernDerDaten") . ': ' . $pause->errormsg); } // Eintrag Arbeit ab der Pause if ($this->zeit->new == false) { @@ -208,7 +208,7 @@ class zeitaufzeichnung_import_post extends zeitaufzeichnung_import { /** * @return void - * + * * @throws Exception */ protected function saveZeit() { @@ -218,5 +218,5 @@ class zeitaufzeichnung_import_post extends zeitaufzeichnung_import { $this->addInfo($this->p->t("global/datenWurdenGespeichert")); } } - + } From afb9bec9ba514191e35d77c7fc490ef53653e4eb Mon Sep 17 00:00:00 2001 From: Manfred Date: Tue, 5 Jul 2022 15:32:29 +0200 Subject: [PATCH 21/72] Zugangscode ausblenden, wenn Bewerbungstool-Addon nicht aktiv --- content/student/studentdetailoverlay.xul.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/content/student/studentdetailoverlay.xul.php b/content/student/studentdetailoverlay.xul.php index 51be7d554..0ac45f3d9 100644 --- a/content/student/studentdetailoverlay.xul.php +++ b/content/student/studentdetailoverlay.xul.php @@ -71,9 +71,10 @@ echo '';
'; } echo "
Meldestudiengangskennzahl + +
Bezeichnung From 42fb7a4fc82ed4c3d5537b21cdb98250b339d21b Mon Sep 17 00:00:00 2001 From: Cris Date: Wed, 22 Jun 2022 10:47:29 +0200 Subject: [PATCH 11/72] Added ECTS Summe functions to AnrechnungLib Added functions to calculate total ECTS Summe of . angerechnete Studiensemester of Quereinsteiger . bisher angerechnete schulische Kenntnisse . bisher angerechente berufliche Kenntisse --- application/libraries/AnrechnungLib.php | 114 ++++++++++++++++++++++++ 1 file changed, 114 insertions(+) diff --git a/application/libraries/AnrechnungLib.php b/application/libraries/AnrechnungLib.php index ee197ab05..610f0cec9 100644 --- a/application/libraries/AnrechnungLib.php +++ b/application/libraries/AnrechnungLib.php @@ -80,14 +80,22 @@ class AnrechnungLib // Get latest ZGV $result = $this->ci->PrestudentModel->getLatestZGVBezeichnung($prestudent_id); $latest_zgv_bezeichnung = hasData($result) ? getData($result)[0]->bezeichnung : ''; + + // Get Sum of berufliche and schulische ECTS + $sumEctsQuereinsteiger = $this->getQuereinsteigerEctsSumme($prestudent_id, $lv->studiengang_kz); + $sumEctsSchulisch = $this->getSchulischeAnrechnungenEctsSumme($uid); + $sumEctsBeruflich = $this->getBeruflicheAnrechnungenEctsSumme($uid); // Set the given studiensemester $antrag_data->lv_id = $lv_id; $antrag_data->lv_bezeichnung = $lv->bezeichnung; $antrag_data->ects = $lv->ects; + $antrag_data->sumEctsSchulisch = $sumEctsQuereinsteiger + $sumEctsSchulisch; + $antrag_data->sumEctsBeruflich = $sumEctsBeruflich; $antrag_data->studiensemester_kurzbz = $studiensemester_kurzbz; $antrag_data->vorname = $person->vorname; $antrag_data->nachname = $person->nachname; + $antrag_data->student_uid = $uid; $antrag_data->matrikelnr = $student->matrikelnr; $antrag_data->studiengang_kz = $studiengang->studiengang_kz; $antrag_data->stg_bezeichnung = $studiengang->bezeichnung; @@ -823,4 +831,110 @@ class AnrechnungLib return $anrechnung_data; } + + /** + * If Student is a Quereinsteiger, get ECTS Summe of all angerechnete Studiensemester. + * + * @param $prestudent_id + * @param $studiengang_kz Studiengang_kz der LV + * @return int|mixed + */ + public function getQuereinsteigerEctsSumme($prestudent_id, $studiengang_kz) + { + $sumEctsQuereinsteiger = 0; + + // Check, if student is Quereinsteiger + $this->ci->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel'); + $result = $this->ci->PrestudentstatusModel->getFirstStatus($prestudent_id, 'Student'); + + $prestudentFirstStudentStatus = getData($result)[0]; + + // If Prestudent is not a Quereinsteiger + if ($prestudentFirstStudentStatus->ausbildungssemester == 1) + { + return $sumEctsQuereinsteiger; // return 0 + } + + $anzahlAngerechneteStudiensemester = $prestudentFirstStudentStatus->ausbildungssemester - 1; + + // If Prestudent is a Quereinsteiger + if ($prestudentFirstStudentStatus->ausbildungssemester > 1) + { + // Get the 'angerechnete Studiensemester' + $this->ci->load->model('organisations/Studiensemester_model', 'StudiensemesterModel'); + $result = $this->ci->StudiensemesterModel->getPreviousFrom( + $prestudentFirstStudentStatus->studiensemester_kurzbz, + $anzahlAngerechneteStudiensemester + ); + + // Get ECTS Summe of each 'angerechnetes Studiensemester' + foreach (getData($result) as $studiensemester) + { + $result = $this->ci->LehrveranstaltungModel->getSumQuereinstiegsECTSProSemester( + $studiengang_kz, + $studiensemester->studiensemester_kurzbz, + $anzahlAngerechneteStudiensemester--, + $prestudentFirstStudentStatus->orgform_kurzbz + ); + + if (hasData($result)) + { + $sumEctsQuereinsteiger = $sumEctsQuereinsteiger + getData($result)[0]->sum_ects; + } + } + } + return $sumEctsQuereinsteiger; // return sum of ects of all 'angerechnete Studiensemester' + } + + /** + * Get ECTS Summe of all Anrechnungen based on schulische Kenntnisse. + * + * @param $student_uid + * @return int|mixed + */ + public function getSchulischeAnrechnungenEctsSumme($student_uid) + { + $sumEctsSchule = 0; + + $result = $this->ci->LehrveranstaltungModel->getSumAngerechneteECTSByBegruendung($student_uid); + + if (hasData($result)) + { + foreach (getData($result) as $ects) + { + if ($ects->begruendung_id != 4) + { + $sumEctsSchule = $sumEctsSchule + $ects->sum; + } + } + } + + return $sumEctsSchule; + } + + /** + * Get ECTS Summe of all Anrechnungen based on berufliche Kenntnisse. + * + * @param $student_uid + * @return int + */ + public function getBeruflicheAnrechnungenEctsSumme($student_uid) + { + $sumEctsBeruflich = 0; + + $result = $this->ci->LehrveranstaltungModel->getSumAngerechneteECTSByBegruendung($student_uid); + + if (hasData($result)) + { + foreach (getData($result) as $ects) + { + if ($ects->begruendung_id == 4) + { + $sumEctsBeruflich = $ects->sum; + } + } + } + + return $sumEctsBeruflich; + } } From 12c9afbd3d0885e4901c5e5c6aff2552b6de23f3 Mon Sep 17 00:00:00 2001 From: Cris Date: Wed, 22 Jun 2022 10:48:48 +0200 Subject: [PATCH 12/72] Added function getFirstStatus to Prestudentstatus_model.php MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Funktion liefert den Ersten Status eines Prestudenten mit der übergebenen Statuskurzbezeichnung. --- .../models/crm/Prestudentstatus_model.php | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/application/models/crm/Prestudentstatus_model.php b/application/models/crm/Prestudentstatus_model.php index 3335de021..f39a41fda 100644 --- a/application/models/crm/Prestudentstatus_model.php +++ b/application/models/crm/Prestudentstatus_model.php @@ -52,6 +52,24 @@ class Prestudentstatus_model extends DB_Model return $this->execQuery($query, $parametersArray); } + /** + * Liefert den Ersten Status eines Prestudenten mit der übergebenen Statuskurzbezeichnung. + * + * @param $prestudent_id + * @param $status_kurzbz + * @return array + */ + public function getFirstStatus($prestudent_id, $status_kurzbz) + { + $this->addOrder('datum, insertamum, ext_id'); + $this->addLimit(1); + + return $this->loadWhere(array( + 'prestudent_id' => $prestudent_id, + 'status_kurzbz' => $status_kurzbz + )); + } + /** * updateStufe */ From b52a3c93974586052c629ca85d0c3e439f146606 Mon Sep 17 00:00:00 2001 From: Cris Date: Wed, 22 Jun 2022 10:51:39 +0200 Subject: [PATCH 13/72] Added DB queries to calculate ECTS Summe in Lehrveranstaltung_model.php --- .../education/Lehrveranstaltung_model.php | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/application/models/education/Lehrveranstaltung_model.php b/application/models/education/Lehrveranstaltung_model.php index 8517d7f9d..2ef856a40 100644 --- a/application/models/education/Lehrveranstaltung_model.php +++ b/application/models/education/Lehrveranstaltung_model.php @@ -309,4 +309,89 @@ class Lehrveranstaltung_model extends DB_Model return $this->execQuery($query, array($uid, $studiensemester_kurzbz, $lehrveranstaltung_id)); } + + /** + * Get ECTS Summe pro angerechnetes Quereinstiegssemester. + * + * @param $studiengang_kz + * @param $studiensemester_kurzbz + * @param $ausbildungssemester + * @param $orgform_kurzbz + * @return array|stdClass|null + */ + public function getSumQuereinstiegsECTSProSemester($studiengang_kz, $studiensemester_kurzbz, $ausbildungssemester, $orgform_kurzbz) + { + $qry = ' + SELECT + sum(tbl_lehrveranstaltung.ects) as "sum_ects" + FROM + lehre.tbl_studienplan + JOIN lehre.tbl_studienplan_lehrveranstaltung USING (studienplan_id) + JOIN lehre.tbl_lehrveranstaltung USING (lehrveranstaltung_id) + WHERE + tbl_studienplan.studienplan_id = ( + SELECT + studienplan_id + FROM + lehre.tbl_studienordnung + JOIN lehre.tbl_studienplan USING (studienordnung_id) + JOIN lehre.tbl_studienplan_semester USING (studienplan_id) + WHERE tbl_studienordnung.studiengang_kz = ? + AND tbl_studienplan_semester.semester = ? + AND tbl_studienplan_semester.studiensemester_kurzbz = ? + AND tbl_studienplan.orgform_kurzbz = ? + + LIMIT 1 + ) + AND tbl_studienplan_lehrveranstaltung.semester = ? + AND studienplan_lehrveranstaltung_id_parent IS NULL -- auf Modulebene + AND tbl_studienplan_lehrveranstaltung.export = TRUE + '; + + return $this->execQuery($qry, array( + $studiengang_kz, $ausbildungssemester, $studiensemester_kurzbz, $orgform_kurzbz, $ausbildungssemester) + ); + } + + /** + * Get ECTS Summe aller bisher angerechneten LVs. + * Wenn keine explizite Begruendung angegeben ist, wird eine schulische Begruendung angenommen. + * + * @param $student_uid + * @return array|stdClass|null + */ + public function getSumAngerechneteECTSByBegruendung($student_uid) + { + $qry = ' + SELECT sum(ects), begruendung_id FROM ( + SELECT + lehrveranstaltung_id, studiensemester_kurzbz, ects, COALESCE(begruendung_id, 1) as begruendung_id -- fallback auf externes Zeugnis + FROM + lehre.tbl_zeugnisnote + LEFT JOIN lehre.tbl_anrechnung USING(lehrveranstaltung_id, studiensemester_kurzbz) + JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) + JOIN public.tbl_student USING(student_uid) + WHERE + tbl_zeugnisnote.note = 6 + AND student_uid = ? + AND (lehre.tbl_anrechnung.prestudent_id = tbl_student.prestudent_id + OR lehre.tbl_anrechnung.prestudent_id is null) + + UNION + + SELECT + lehrveranstaltung_id, studiensemester_kurzbz, ects, begruendung_id -- fallback auf externes Zeugnis + FROM + lehre.tbl_anrechnung + JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) + JOIN public.tbl_student USING(prestudent_id) + WHERE + genehmigt_von is not null + AND student_uid = ? + ) lvsangerechnet + GROUP BY begruendung_id + '; + + return $this->execQuery($qry, array($student_uid, $student_uid)); + } } From 7bba155bb5278906f359bd510ea044d17df41ef8 Mon Sep 17 00:00:00 2001 From: Cris Date: Wed, 22 Jun 2022 10:52:51 +0200 Subject: [PATCH 14/72] Adapted function getPreviousFrom to return more than 1 previous semester if needed --- application/models/organisation/Studiensemester_model.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/application/models/organisation/Studiensemester_model.php b/application/models/organisation/Studiensemester_model.php index e7a3d77b1..bb9b94c92 100644 --- a/application/models/organisation/Studiensemester_model.php +++ b/application/models/organisation/Studiensemester_model.php @@ -105,7 +105,7 @@ class Studiensemester_model extends DB_Model /** * getPreviousFrom */ - public function getPreviousFrom($studiensemester_kurzbz) + public function getPreviousFrom($studiensemester_kurzbz, $limit = 1) { $query = 'SELECT studiensemester_kurzbz, start, @@ -117,9 +117,9 @@ class Studiensemester_model extends DB_Model WHERE studiensemester_kurzbz = ? ) ORDER BY start DESC - LIMIT 1'; + LIMIT ?'; - return $this->execQuery($query, array($studiensemester_kurzbz)); + return $this->execQuery($query, array($studiensemester_kurzbz, $limit)); } /** From 5f5031e8d1ffcae56f72e29b70dbe999d1e95967 Mon Sep 17 00:00:00 2001 From: Cris Date: Wed, 22 Jun 2022 10:54:17 +0200 Subject: [PATCH 15/72] Added ECTS Summe to Anrechnung Detail View. --- .../anrechnung/approveAnrechnungDetail.php | 18 +++++++++++----- system/phrasesupdate.php | 21 +++++++++++++++++++ 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/application/views/lehre/anrechnung/approveAnrechnungDetail.php b/application/views/lehre/anrechnung/approveAnrechnungDetail.php index cd38fd9ac..f909f7e65 100644 --- a/application/views/lehre/anrechnung/approveAnrechnungDetail.php +++ b/application/views/lehre/anrechnung/approveAnrechnungDetail.php @@ -123,12 +123,20 @@ $this->load->view(
p->t('lehre', 'ects'); ?>p->t('lehre', 'ects'); ?> ects ?>Bisher angerechnete ECTS + + + + sumEctsSchulisch + $antragData->sumEctsBeruflich. ' [Schulisch: '. $antragData->sumEctsSchulisch. ' / Beruflich: '. $antragData->sumEctsBeruflich. ']' ?>
p->t('lehre', 'lektorInnen'); ?> + lektoren) - 1 ?> lektoren as $key => $lektor): ?> vorname . ' ' . $lektor->nachname; @@ -138,15 +146,15 @@ $this->load->view(
p->t('global', 'zgv')); ?>zgv ?>zgv ?>
p->t('anrechnung', 'herkunftDerKenntnisse'); ?>anmerkung ?>anmerkung ?>
p->t('anrechnung', 'nachweisdokumente'); ?> + dokumentname) ?>
"; - if ($rechte->isBerechtigt('lehre/studienordnung', null, 'suid')) + if ($rechte->isBerechtigt('lehre/studienplan', null, 'sui')) { echo ''; } From acffebf5157a30804da9ca7a999d9aec12298868 Mon Sep 17 00:00:00 2001 From: ma0048 Date: Wed, 6 Jul 2022 10:56:24 +0200 Subject: [PATCH 23/72] =?UTF-8?q?check=20doppelte=20benutzer=20auch=20mit?= =?UTF-8?q?=20unterschiedlicher=20gro=C3=9F=20und=20kleinschreibung?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/models/person/Person_model.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/application/models/person/Person_model.php b/application/models/person/Person_model.php index 94ffb78a3..8875fd4c5 100644 --- a/application/models/person/Person_model.php +++ b/application/models/person/Person_model.php @@ -283,8 +283,8 @@ class Person_model extends DB_Model SELECT p2.person_id FROM public.tbl_person p JOIN public.tbl_person p2 - ON p.vorname = p2.vorname - AND p.nachname = p2.nachname + ON lower(p.vorname) = lower(p2.vorname) + AND lower(p.nachname) = lower(p2.nachname) AND p.gebdatum = p2.gebdatum AND p.person_id = ? ) @@ -310,8 +310,8 @@ class Person_model extends DB_Model SELECT p2.person_id FROM public.tbl_person p JOIN public.tbl_person p2 - ON p.vorname = p2.vorname - AND p.nachname = p2.nachname + ON lower(p.vorname) = lower(p2.vorname) + AND lower(p.nachname) = lower(p2.nachname) AND p.gebdatum = p2.gebdatum AND p.person_id = ? ) @@ -330,7 +330,7 @@ class Person_model extends DB_Model SELECT vorname, nachname, gebdatum, person_id FROM tbl_person ) p2 - ON (p1.vorname = p2.vorname AND p1.nachname = p2.nachname AND p1.gebdatum = p2.gebdatum) + ON (lower(p1.vorname) = lower(p2.vorname) AND lower(p1.nachname) = lower(p2.nachname) AND p1.gebdatum = p2.gebdatum) WHERE p1.person_id != p2.person_id AND (p1.person_id = ?)"; return $this->execQuery($qry, array($person_id, $person_id, $person_id)); From 9d7589ddc4323b5831e72ae6bfa0d6ba3d6b3393 Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 7 Jul 2022 10:18:40 +0200 Subject: [PATCH 24/72] Added DB methods to get ECTS Summen by schulische/berufliche Qualifikation --- .../education/Lehrveranstaltung_model.php | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/application/models/education/Lehrveranstaltung_model.php b/application/models/education/Lehrveranstaltung_model.php index 392c50ff6..f54443955 100644 --- a/application/models/education/Lehrveranstaltung_model.php +++ b/application/models/education/Lehrveranstaltung_model.php @@ -440,4 +440,35 @@ class Lehrveranstaltung_model extends DB_Model return $this->execQuery($qry, array($student_uid, $student_uid)); } + + /** + * Get ECTS Summe aller bisher schulisch begruendeten angerechneten LVs. + * Derzeit wird auch jede Anrechnung, die nicht beruflich ist, als schulisch angenommen. + * + * @param $student_uid + * @return array|stdClass|null + */ + public function getEctsSumSchulisch($student_uid, $prestudent_id, $studiengang_kz) + { + $qry = ' + SELECT get_ects_summe_schulisch(?, ?, ?) AS ectsSumSchulisch + '; + + return $this->execQuery($qry, array($student_uid, $prestudent_id, $studiengang_kz)); + } + + /** + * Get ECTS Summe aller bisher beruflich angerechneten LVs. + * + * @param $student_uid + * @return array|stdClass|null + */ + public function getEctsSumBeruflich($student_uid) + { + $qry = ' + SELECT get_ects_summe_beruflich(?) AS ectsSumBeruflich + '; + + return $this->execQuery($qry, array($student_uid)); + } } From 1dc49ec4948ab2a3f89229de5f270f9f5777e500 Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 7 Jul 2022 10:21:23 +0200 Subject: [PATCH 25/72] Added methods to sum total ECTS, to be displayed on Anrechnung Details and Uebersicht --- .../anrechnung/approveAnrechnungDetail.js | 35 +++++- .../anrechnung/approveAnrechnungUebersicht.js | 114 ++++++++++++++++++ 2 files changed, 147 insertions(+), 2 deletions(-) diff --git a/public/js/lehre/anrechnung/approveAnrechnungDetail.js b/public/js/lehre/anrechnung/approveAnrechnungDetail.js index c5c0519f3..ffa989056 100644 --- a/public/js/lehre/anrechnung/approveAnrechnungDetail.js +++ b/public/js/lehre/anrechnung/approveAnrechnungDetail.js @@ -4,6 +4,7 @@ const ANRECHNUNGSTATUS_PROGRESSED_BY_LEKTOR = 'inProgressLektor'; const ANRECHNUNGSTATUS_APPROVED = 'approved'; const ANRECHNUNGSTATUS_REJECTED = 'rejected'; +const COLOR_DANGER = '#f2dede'; $(function(){ @@ -36,6 +37,8 @@ $(function(){ // Init tooltips approveAnrechnungDetail.initTooltips(); + approveAnrechnungDetail.alertIfMaxEctsExceeded(); + // Ask if Approve Anrechnungen $("#approveAnrechnungDetail-approve-anrechnung-ask").click(function(){ @@ -93,6 +96,9 @@ $(function(){ data.retval[0].abgeschlossen_von, data.retval[0].status_bezeichnung ); + + approveAnrechnungDetail.sumUpEcts(ects, sumEctsSchulisch, sumEctsBeruflich); + approveAnrechnungDetail.alertIfMaxEctsExceeded(); } }, errorCallback: function (jqXHR, textStatus, errorThrown) @@ -251,18 +257,19 @@ $(function(){ console.log(data); if (data.error && data.retval != null) { - console.log('inside error'); // Print error message FHC_DialogLib.alertWarning(data.retval); } if (!data.error && data.retval != null) { - console.log('inside success'); approveAnrechnungDetail.formatGenehmigungIsWithdrawed( data.retval.status_bezeichnung ); + approveAnrechnungDetail.substractEcts(ects, sumEctsSchulisch, sumEctsBeruflich); + approveAnrechnungDetail.alertIfMaxEctsExceeded(); + FHC_DialogLib.alertSuccess(FHC_PhrasesLib.t("anrechnung", "erfolgreichZurueckgenommen")); } @@ -544,5 +551,29 @@ var approveAnrechnungDetail = { $('#approveAnrechnungDetail-reject-anrechnung-ask').prop('disabled', false); // Hide button to withdraw approval $('#approveAnrechnungDetail-withdraw-request-recommedation').addClass('hidden'); + }, + sumUpEcts: function(ects, sumEctsSchulisch, sumEctsBeruflich){ + $('#sumEctsTotal').text(parseFloat($('#sumEctsSchulisch').text()) + parseFloat($('#sumEctsBeruflich').text()) + parseFloat($('#ects').text())); + $('#sumEctsSchulisch').text(parseFloat($('#sumEctsSchulisch').text()) + parseFloat($('#ects').text())); + + }, + substractEcts: function(ects, sumEctsSchulisch, sumEctsBeruflich){ + $('#sumEctsTotal').text(parseFloat($('#sumEctsSchulisch').text()) + parseFloat($('#sumEctsBeruflich').text()) - parseFloat($('#ects').text())); + $('#sumEctsSchulisch').text(parseFloat($('#sumEctsSchulisch').text()) - parseFloat($('#ects').text())); + }, + alertIfMaxEctsExceeded: function(){ + if( + (parseFloat($('#ects').text()) + parseFloat($('#sumEctsSchulisch').text())) > 60 || + (parseFloat($('#ects').text()) + parseFloat($('#sumEctsBeruflich').text())) > 60 || + (parseFloat($('#ects').text()) + parseFloat($('#sumEctsSchulisch').text()) + parseFloat($('#sumEctsBeruflich').text())) > 90 + ) + { + console.log('inside'); + $('#sumEctsMsg').html("
ACHTUNG! Bei Anrechnung von LV: Maximale ECTS überschritten.
").css('backgroundColor', COLOR_DANGER); + } + else + { + $('#sumEctsMsg').html('').css('border', 'none'); + } } } \ No newline at end of file diff --git a/public/js/lehre/anrechnung/approveAnrechnungUebersicht.js b/public/js/lehre/anrechnung/approveAnrechnungUebersicht.js index fe78217b9..b6a2182d8 100644 --- a/public/js/lehre/anrechnung/approveAnrechnungUebersicht.js +++ b/public/js/lehre/anrechnung/approveAnrechnungUebersicht.js @@ -8,6 +8,9 @@ const ANRECHNUNGSTATUS_APPROVED = 'approved'; const ANRECHNUNGSTATUS_REJECTED = 'rejected'; const COLOR_LIGHTGREY = "#f5f5f5"; +const COLOR_DANGER = '#f2dede'; + +var previousSelectedRows = []; // ----------------------------------------------------------------------------------------------------------------- // Mutators - setter methods to manipulate table data when entering the tabulator @@ -99,6 +102,75 @@ function func_selectableCheck(row){ ); } +// Unformat row when single row is deselected (is not done by func_rowSelectionChanged yet) +function func_rowDeselected(row){ + + // Removes bg-color on single row deselection. + approveAnrechnung.unmarkEctsRow(row); +} + +// Format rows when maximum ECTS are exceeded. +function func_rowSelectionChanged(data, rows){ + + var selectedData = data; + var selectedRows = rows; + + // If no rows selected + if (selectedRows.length == 0) + { + // Check there are still rows marked from previous selection... + if (previousSelectedRows.length > 0) + { + // ... and unmark them + previousSelectedRows.forEach((row) => approveAnrechnung.unmarkEctsRow(row)); + } + + // Show number of selected Rows + approveAnrechnung.showNumberSelectedRows(selectedRows); + return; + } + + // Sum up over all anzurechnenden LV-ECTS by Prestudent + var result = []; + result = approveAnrechnung.getSumLvEctsByPreStudent(selectedData); + + // Filter only Prestudenten, where ECTS exceed maximum + exceededEctsByPreStud = + result.filter((val) => + (val.ectsSumAnzurechnendeLvs + val.ectsSumSchulisch) > 60 || + (val.ectsSumBeruflich) > 60 || + (val.ectsSumAnzurechnendeLvs + val.ectsSumSchulisch + val.ectsSumBeruflich) > 90 + ); + + // Mark all Prestudenten + if (selectedRows.length > 0) + { + selectedRows.forEach((row) => { + + //row.reformat(); + approveAnrechnung.unmarkEctsRow(row); + + if (exceededEctsByPreStud.length > 0) + { + exceededEctsByPreStud.forEach((val) => { + if (row.getData().prestudent_id == val.prestudent_id) + { + approveAnrechnung.markEctsRow(row); + + } + }) + } + + }); + } + + // Keep the selected rows for next selection. + previousSelectedRows = selectedRows; + + // Show number of selected rows. + approveAnrechnung.showNumberSelectedRows(selectedRows); +} + // Performes after row was updated function func_rowUpdated(row){ // Refresh row formatters @@ -595,5 +667,47 @@ var approveAnrechnung = { break; } + }, + markEctsRow(row){ + row.getElement().style["background-color"] = COLOR_DANGER; + // row.getCell('ects').getElement().style["background-color"] = COLOR_DANGER; + // row.getCell('ectsSumTotal').getElement().style["background-color"] = COLOR_DANGER; + // row.getCell('student').getElement().style["background-color"] = COLOR_DANGER; + }, + unmarkEctsRow(row){ + row.getElement().style.removeProperty('background-color'); + // row.getCell('ects').getElement().style.removeProperty('background-color'); + // row.getCell('ectsSumTotal').getElement().style.removeProperty('background-color'); + // row.getCell('student').getElement().style.removeProperty('background-color'); + }, + getSumLvEctsByPreStudent(selectedData){ + + var result = []; + + selectedData.reduce((prev, curr) => { + + if (!prev[curr.prestudent_id]) + { + prev[curr.prestudent_id] = { + anrechnung_id: curr.anrechnung_id, + prestudent_id: curr.prestudent_id, + ectsSumAnzurechnendeLvs: 0, + ectsSumSchulisch: parseFloat(curr.ectssumschulisch), + ectsSumBeruflich: parseFloat(curr.ectssumberuflich) + }; + + result.push(prev[curr.prestudent_id]) + } + + prev[curr.prestudent_id].ectsSumAnzurechnendeLvs+= parseFloat(curr.ects); + + return prev; + + }, {}); + + return result; + }, + showNumberSelectedRows(rows){ + $('#number-selected').html("Ausgewählte Zeilen: " + rows.length + ""); } } \ No newline at end of file From 2fb4118e69e89cb0f16de582dfb6d34ceb0d55c4 Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 7 Jul 2022 10:23:33 +0200 Subject: [PATCH 26/72] Added to DB Update: Create functions to get total ECTS Summe by berufliche and schulische Qualifikation --- system/dbupdate_3.3.php | 166 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 166 insertions(+) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 01839e4b9..759769df7 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -6259,6 +6259,172 @@ if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berecht } } +// Neue Funktion get_ects_summe_schulisch +if(!@$db->db_query("SELECT public.get_ects_summe_schulisch('', 0, 0)")) +{ + $qry = 'CREATE FUNCTION public.get_ects_summe_schulisch(character varying, integer, integer) RETURNS numeric + LANGUAGE plpgsql + AS $_$ + DECLARE var_student_uid ALIAS FOR $1; + DECLARE var_prestudent_id ALIAS FOR $2; + DECLARE var_studiengang_kz ALIAS FOR $3; + DECLARE var_einstiegsausbildungssemester integer; + DECLARE var_einstiegsstudiensemester_kurzbz varchar(32); + DECLARE var_einstiegsorgform_kurzbz varchar(32); + DECLARE rec_quereinstiegs_studiensemester RECORD; + DECLARE sum_quereinstiegs_ects numeric(4, 1) := 0; + DECLARE sum_schulische_ects numeric(4, 1) := 0; + + + BEGIN + + -- IF STUDENT IS QUEREINSTEIGER, GET ECTS SUMME OF ANGERECHNETE SEMESTER + -- Get Einstiegssemester + SELECT INTO var_einstiegsausbildungssemester , var_einstiegsstudiensemester_kurzbz, var_einstiegsorgform_kurzbz ausbildungssemester, studiensemester_kurzbz, orgform_kurzbz from public.tbl_prestudentstatus + WHERE prestudent_id = var_prestudent_id + AND status_kurzbz = \'Student\' + ORDER BY datum, insertamum, ext_id + LIMIT 1; + + -- If Einstiegssemester > 1 (= Quereinsteiger) + IF (var_einstiegsausbildungssemester > 1) THEN + -- ...get all Quereinstiegssemester + FOR rec_quereinstiegs_studiensemester IN SELECT studiensemester_kurzbz FROM public.tbl_studiensemester + WHERE ende <= (select start from public.tbl_studiensemester WHERE studiensemester_kurzbz = var_einstiegsstudiensemester_kurzbz ) + ORDER BY start DESC + LIMIT (var_einstiegsausbildungssemester -1) + -- ...loop the Quereinstiegssemester + LOOP + -- ...and sum up ECTS of each Quereinstiegssemester + sum_quereinstiegs_ects = sum_quereinstiegs_ects + (SELECT + SUM(tbl_lehrveranstaltung.ects) + FROM + lehre.tbl_studienplan + JOIN lehre.tbl_studienplan_lehrveranstaltung USING (studienplan_id) + JOIN lehre.tbl_lehrveranstaltung USING (lehrveranstaltung_id) + WHERE + tbl_studienplan.studienplan_id = ( + SELECT + studienplan_id + FROM + lehre.tbl_studienordnung + JOIN lehre.tbl_studienplan USING (studienordnung_id) + JOIN lehre.tbl_studienplan_semester USING (studienplan_id) + WHERE tbl_studienordnung.studiengang_kz = var_studiengang_kz + AND tbl_studienplan_semester.semester = var_einstiegsausbildungssemester - 1 + AND tbl_studienplan_semester.studiensemester_kurzbz = rec_quereinstiegs_studiensemester.studiensemester_kurzbz + AND tbl_studienplan.orgform_kurzbz = var_einstiegsorgform_kurzbz + + LIMIT 1 + ) + AND tbl_studienplan_lehrveranstaltung.semester = var_einstiegsausbildungssemester + AND studienplan_lehrveranstaltung_id_parent IS NULL -- auf Modulebene + AND tbl_studienplan_lehrveranstaltung.export = TRUE); + + var_einstiegsausbildungssemester = var_einstiegsausbildungssemester - 1; + END LOOP; + END IF; + + + -- GET ECTS SUMME OF ALLE BISHER ANGERECHNETEN LEHRVERANSTALTUNGEN. ANRECHNUNGSGRUND: SCHULISCH. + SELECT INTO sum_schulische_ects COALESCE(SUM(ects), 0) FROM ( + SELECT + lehrveranstaltung_id, studiensemester_kurzbz, ects + FROM + lehre.tbl_zeugnisnote + LEFT JOIN lehre.tbl_anrechnung USING(lehrveranstaltung_id, studiensemester_kurzbz) + JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) + JOIN public.tbl_student USING(student_uid) + WHERE + tbl_zeugnisnote.note = 6 + AND student_uid = var_student_uid + AND lehre.tbl_anrechnung.prestudent_id IN (tbl_student.prestudent_id, NULL) + AND begruendung_id != 4 -- schulisch + + UNION + + SELECT + lehrveranstaltung_id, studiensemester_kurzbz, ects + FROM + lehre.tbl_anrechnung + JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) + JOIN public.tbl_student USING(prestudent_id) + WHERE + genehmigt_von IS NOT NULL + AND student_uid = var_student_uid + AND begruendung_id != 4 -- schulisch + ) lvsangerechnet; + + -- BUILD ECTS SUMME OF QUEREINSTIEGSSEMESTER- + ANGERECHNETEN LVs-ECTS + -- Summe aller bisher schulisch begründet angerechneten LVs + der Quereinstiegssemester + sum_schulische_ects = sum_schulische_ects + sum_quereinstiegs_ects; + + RETURN sum_schulische_ects ; + + END; + $_$; + + ALTER FUNCTION public.get_ects_summe_schulisch(character varying, integer, integer) OWNER TO fhcomplete;'; + + if(!$db->db_query($qry)) + echo 'public.get_ects_summe_schulisch(student_uid, prestudent_id, studiengang_kz): '.$db->db_last_error().'
'; + else + echo '
Funktion public.get_ects_summe_schulisch(student_uid, prestudent_id, studiengang_kz) hinzugefügt'; +} + +// Neue Funktion get_ects_summe_beruflich +if(!@$db->db_query("SELECT public.get_ects_summe_beruflich('')")) +{ + $qry = 'CREATE FUNCTION public.get_ects_summe_beruflich(character varying) RETURNS numeric + LANGUAGE plpgsql + AS $_$ + DECLARE var_student_uid ALIAS FOR $1; + DECLARE sum_berufliche_ects numeric(4, 1) := 0; + + BEGIN + + SELECT INTO sum_berufliche_ects COALESCE(SUM(ects), 0) FROM ( + SELECT + lehrveranstaltung_id, studiensemester_kurzbz, ects + FROM + lehre.tbl_zeugnisnote + LEFT JOIN lehre.tbl_anrechnung USING(lehrveranstaltung_id, studiensemester_kurzbz) + JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) + JOIN public.tbl_student USING(student_uid) + WHERE + tbl_zeugnisnote.note = 6 + AND student_uid = var_student_uid + AND lehre.tbl_anrechnung.prestudent_id IN (tbl_student.prestudent_id, NULL) + AND begruendung_id = 4 -- beruflich + + UNION + + SELECT + lehrveranstaltung_id, studiensemester_kurzbz, ects + FROM + lehre.tbl_anrechnung + JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) + JOIN public.tbl_student USING(prestudent_id) + WHERE + genehmigt_von is not null + AND student_uid = var_student_uid + AND begruendung_id = 4 -- beruflich + ) lvsangerechnet; + + RETURN sum_berufliche_ects; + + END; + $_$; + + ALTER FUNCTION public.get_ects_summe_beruflich(character varying) OWNER TO fhcomplete;'; + + if(!$db->db_query($qry)) + echo 'public.get_ects_summe_beruflich(student_uid): '.$db->db_last_error().'
'; + else + echo '
Funktion public.get_ects_summe_beruflich(student_uid) hinzugefügt'; +} + + // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; From 4d05f54b54ac28f222941b25f365df9f3ee86c86 Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 7 Jul 2022 10:25:19 +0200 Subject: [PATCH 27/72] Added ECTS Summen top AnrechnungData in the AnrechnungLib --- application/libraries/AnrechnungLib.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/application/libraries/AnrechnungLib.php b/application/libraries/AnrechnungLib.php index 610f0cec9..e0e027889 100644 --- a/application/libraries/AnrechnungLib.php +++ b/application/libraries/AnrechnungLib.php @@ -82,10 +82,12 @@ class AnrechnungLib $latest_zgv_bezeichnung = hasData($result) ? getData($result)[0]->bezeichnung : ''; // Get Sum of berufliche and schulische ECTS - $sumEctsQuereinsteiger = $this->getQuereinsteigerEctsSumme($prestudent_id, $lv->studiengang_kz); - $sumEctsSchulisch = $this->getSchulischeAnrechnungenEctsSumme($uid); - $sumEctsBeruflich = $this->getBeruflicheAnrechnungenEctsSumme($uid); - + $result = $this->ci->LehrveranstaltungModel->getEctsSumSchulisch($uid, $prestudent_id, $lv->studiengang_kz); + $sumEctsSchulisch = getData($result)[0]->ectssumschulisch; + + $result = $this->ci->LehrveranstaltungModel->getEctsSumBeruflich($uid); + $sumEctsBeruflich = getData($result)[0]->ectssumberuflich; + // Set the given studiensemester $antrag_data->lv_id = $lv_id; $antrag_data->lv_bezeichnung = $lv->bezeichnung; From b40db6abbd253b1d874b1e9040639b249962aa25 Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 7 Jul 2022 10:26:13 +0200 Subject: [PATCH 28/72] =?UTF-8?q?Added=20ECTS=20Summen=20columns=20to=20An?= =?UTF-8?q?rechnung=20=C3=9Cbersichtstable?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../approveAnrechnungUebersichtData.php | 128 ++++++++++++------ 1 file changed, 86 insertions(+), 42 deletions(-) diff --git a/application/views/lehre/anrechnung/approveAnrechnungUebersichtData.php b/application/views/lehre/anrechnung/approveAnrechnungUebersichtData.php index 368af8b12..f4d63d236 100644 --- a/application/views/lehre/anrechnung/approveAnrechnungUebersichtData.php +++ b/application/views/lehre/anrechnung/approveAnrechnungUebersichtData.php @@ -16,7 +16,7 @@ $query = ' anrechnung.dms_id, anrechnung.studiensemester_kurzbz, stg.studiengang_kz, - stg.bezeichnung AS "stg_bezeichnung", + stg.bezeichnung AS stg_bezeichnung, lv.orgform_kurzbz, (SELECT ausbildungssemester FROM public.tbl_prestudentstatus press @@ -26,8 +26,10 @@ $query = ' ORDER BY press.datum DESC LIMIT 1 ), - lv.bezeichnung AS "lv_bezeichnung", - lv.ects, + lv.bezeichnung AS lv_bezeichnung, + lv.ects::numeric(4,1), + get_ects_summe_schulisch(student.student_uid, anrechnung.prestudent_id, stg.studiengang_kz) AS ectsSumSchulisch, + get_ects_summe_beruflich(student.student_uid) AS ectsSumBeruflich, (person.nachname || \' \' || person.vorname) AS "student", begruendung.bezeichnung AS "begruendung", dmsversion.name AS "dokument_bezeichnung", @@ -49,7 +51,9 @@ $query = ' WHERE anrechnung_id = anrechnung.anrechnung_id ORDER BY insertamum DESC LIMIT 1 - ) AS status_kurzbz + ) AS status_kurzbz, + student.student_uid, + anrechnung.prestudent_id FROM lehre.tbl_anrechnung AS anrechnung JOIN public.tbl_prestudent USING (prestudent_id) JOIN public.tbl_person AS person USING (person_id) @@ -58,44 +62,70 @@ $query = ' LEFT JOIN campus.tbl_dms_version AS dmsversion USING (dms_id) JOIN lehre.tbl_anrechnung_anrechnungstatus USING (anrechnung_id) JOIN lehre.tbl_anrechnung_begruendung AS begruendung USING (begruendung_id) + JOIN public.tbl_student student USING (prestudent_id) + WHERE anrechnung.studiensemester_kurzbz = \'' . $STUDIENSEMESTER . '\' + AND stg.studiengang_kz IN (' . $STUDIENGAENGE_ENTITLED . ') ) - SELECT anrechnungen.*, - array_to_json(anrechnungstatus.bezeichnung_mehrsprachig::varchar[])->>' . $LANGUAGE_INDEX . ' AS "status_bezeichnung", - CASE - WHEN (anrechnungen.empfehlung_anrechnung IS NULL AND anrechnungen.status_kurzbz = \'' . ANRECHNUNGSTATUS_PROGRESSED_BY_STGL . '\') THEN NULL - ELSE - (SELECT insertamum::date - FROM lehre.tbl_anrechnungstatus - JOIN lehre.tbl_anrechnung_anrechnungstatus USING (status_kurzbz) - WHERE anrechnung_id = anrechnungen.anrechnung_id - AND status_kurzbz = \'' . ANRECHNUNGSTATUS_PROGRESSED_BY_LEKTOR . '\' - ORDER BY insertamum DESC - LIMIT 1) - END "empfehlungsanfrageAm", - CASE - WHEN (anrechnungen.empfehlung_anrechnung IS NULL AND anrechnungen.status_kurzbz = \'' . ANRECHNUNGSTATUS_PROGRESSED_BY_STGL . '\') THEN NULL - ELSE - (SELECT COALESCE( - STRING_AGG(CONCAT_WS(\' \', vorname, nachname), \', \') FILTER (WHERE lvleiter = TRUE), - STRING_AGG(CONCAT_WS(\' \', vorname, nachname), \', \') FILTER (WHERE lvleiter = FALSE) - ) empfehlungsanfrageAn - FROM ( - SELECT DISTINCT ON (benutzer.uid) uid, vorname, nachname, - CASE WHEN lehrfunktion_kurzbz = \'LV-Leitung\' THEN TRUE ELSE FALSE END AS lvleiter - FROM lehre.tbl_lehreinheit - JOIN lehre.tbl_lehreinheitmitarbeiter lema USING (lehreinheit_id) - JOIN public.tbl_benutzer benutzer ON lema.mitarbeiter_uid = benutzer.uid - JOIN public.tbl_person USING (person_id) - WHERE studiensemester_kurzbz = \'' . $STUDIENSEMESTER . '\' - AND lehrveranstaltung_id = anrechnungen.lehrveranstaltung_id - AND lema.mitarbeiter_uid NOT like \'_Dummy%\' - AND benutzer.aktiv = TRUE - AND tbl_person.aktiv = TRUE - ORDER BY benutzer.uid, lvleiter DESC, nachname, vorname - ) as tmp_lvlektoren - ) - END "empfehlungsanfrageAn" + SELECT anrechnungen.anrechnung_id, + anrechnungen.lehrveranstaltung_id, + anrechnungen.begruendung_id, + anrechnungen.dms_id, + anrechnungen.studiensemester_kurzbz, + anrechnungen.studiengang_kz, + anrechnungen.stg_bezeichnung, + anrechnungen.orgform_kurzbz, + anrechnungen.ausbildungssemester, + anrechnungen.lv_bezeichnung, + anrechnungen.ects::numeric(4,1) AS ects, + CONCAT_WS(\' \', (COALESCE(ectsSumSchulisch, 0) + COALESCE(ectsSumBeruflich, 0))::numeric(4,1), \' [ S:\', COALESCE(ectsSumSchulisch, 0), \' | B:\', COALESCE(ectsSumBeruflich, 0), \']\') + AS "ectsSumTotal", + anrechnungen.ectsSumSchulisch, + anrechnungen.ectsSumBeruflich, + anrechnungen.student, + anrechnungen.begruendung, + anrechnungen.dokument_bezeichnung, + anrechnungen.anmerkung_student, + anrechnungen.zgv, + anrechnungen.antragsdatum, + anrechnungen.empfehlung_anrechnung, + anrechnungen.status_kurzbz, + array_to_json(anrechnungstatus.bezeichnung_mehrsprachig::varchar[])->>' . $LANGUAGE_INDEX . ' AS "status_bezeichnung", + anrechnungen.prestudent_id, + CASE + WHEN (anrechnungen.empfehlung_anrechnung IS NULL AND anrechnungen.status_kurzbz = \'' . ANRECHNUNGSTATUS_PROGRESSED_BY_STGL . '\') THEN NULL + ELSE + (SELECT insertamum::date + FROM lehre.tbl_anrechnungstatus + JOIN lehre.tbl_anrechnung_anrechnungstatus USING (status_kurzbz) + WHERE anrechnung_id = anrechnungen.anrechnung_id + AND status_kurzbz = \'' . ANRECHNUNGSTATUS_PROGRESSED_BY_LEKTOR . '\' + ORDER BY insertamum DESC + LIMIT 1) + END "empfehlungsanfrageAm", + CASE + WHEN (anrechnungen.empfehlung_anrechnung IS NULL AND anrechnungen.status_kurzbz = \'' . ANRECHNUNGSTATUS_PROGRESSED_BY_STGL . '\') THEN NULL + ELSE + (SELECT COALESCE( + STRING_AGG(CONCAT_WS(\' \', vorname, nachname), \', \') FILTER (WHERE lvleiter = TRUE), + STRING_AGG(CONCAT_WS(\' \', vorname, nachname), \', \') FILTER (WHERE lvleiter = FALSE) + ) empfehlungsanfrageAn + FROM ( + SELECT DISTINCT ON (benutzer.uid) uid, vorname, nachname, + CASE WHEN lehrfunktion_kurzbz = \'LV-Leitung\' THEN TRUE ELSE FALSE END AS lvleiter + FROM lehre.tbl_lehreinheit + JOIN lehre.tbl_lehreinheitmitarbeiter lema USING (lehreinheit_id) + JOIN public.tbl_benutzer benutzer ON lema.mitarbeiter_uid = benutzer.uid + JOIN public.tbl_person USING (person_id) + WHERE studiensemester_kurzbz = \'' . $STUDIENSEMESTER . '\' + AND lehrveranstaltung_id = anrechnungen.lehrveranstaltung_id + AND lema.mitarbeiter_uid NOT like \'_Dummy%\' + AND benutzer.aktiv = TRUE + AND tbl_person.aktiv = TRUE + ORDER BY benutzer.uid, lvleiter DESC, nachname, vorname + ) as tmp_lvlektoren + ) + END "empfehlungsanfrageAn" FROM anrechnungen JOIN lehre.tbl_anrechnungstatus as anrechnungstatus ON (anrechnungstatus.status_kurzbz = anrechnungen.status_kurzbz) WHERE studiensemester_kurzbz = \'' . $STUDIENSEMESTER . '\' @@ -118,7 +148,10 @@ $filterWidgetArray = array( ucfirst($this->p->t('lehre', 'organisationsform')), 'Semester', ucfirst($this->p->t('lehre', 'lehrveranstaltung')), - 'ECTS', + 'ECTS (LV)', + 'ECTS (Bisher angerechnet)', + 'ECTS schulisch', + 'ECTS beruflich', ucfirst($this->p->t('person', 'studentIn')), ucfirst($this->p->t('global', 'begruendung')), ucfirst($this->p->t('anrechnung', 'nachweisdokumente')), @@ -128,6 +161,7 @@ $filterWidgetArray = array( ucfirst($this->p->t('anrechnung', 'empfehlung')), 'status_kurzbz', 'Status', + 'PrestudentID', ucfirst($this->p->t('anrechnung', 'empfehlungsanfrageAm')), ucfirst($this->p->t('anrechnung', 'empfehlungsanfrageAn')) ), @@ -155,7 +189,13 @@ $filterWidgetArray = array( rowFormatter:function(row){ func_rowFormatter(row); }, - rowUpdated:function(row){ + rowDeselected:function(row){ + func_rowDeselected(row); + }, + rowSelectionChanged:function(data, rows){ + func_rowSelectionChanged(data, rows); + }, + rowUpdated:function(row){ func_rowUpdated(row); }, tooltips: function(cell){ @@ -174,6 +214,9 @@ $filterWidgetArray = array( ausbildungssemester: {headerFilter:"input"}, lv_bezeichnung: {headerFilter:"input"}, ects: {headerFilter:"input", align:"center"}, + ectsSumTotal: {headerFilter:"input", align:"left"}, + ectsSumSchulisch: {visible: false, headerFilter:"input"}, + ectsSumBeruflich: {visible: false, headerFilter:"input"}, student: {headerFilter:"input"}, begruendung: {headerFilter:"input"}, zgv: {visible: false, headerFilter:"input"}, @@ -187,6 +230,7 @@ $filterWidgetArray = array( empfehlung_anrechnung: {headerFilter:"input", align:"center", formatter: format_empfehlung_anrechnung, headerFilterFunc: hf_filterTrueFalse}, status_kurzbz: {visible: false, headerFilter:"input"}, status_bezeichnung: {headerFilter:"input"}, + prestudent_id: {visible: false, headerFilter:"input"}, empfehlungsanfrageAm: {visible: false, align:"center", headerFilter:"input", mutator: mut_formatStringDate}, empfehlungsanfrageAn: {visible: false, headerFilter:"input"} }', // col properties From ade55c9d1fbd5cbd71f7aeaf0cd5b63ca0d591e9 Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 7 Jul 2022 10:26:56 +0200 Subject: [PATCH 29/72] Added ECTS Summen to Anrechnung Detail View --- .../anrechnung/approveAnrechnungDetail.php | 30 ++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/application/views/lehre/anrechnung/approveAnrechnungDetail.php b/application/views/lehre/anrechnung/approveAnrechnungDetail.php index f909f7e65..b44da925b 100644 --- a/application/views/lehre/anrechnung/approveAnrechnungDetail.php +++ b/application/views/lehre/anrechnung/approveAnrechnungDetail.php @@ -123,17 +123,23 @@ $this->load->view( - p->t('lehre', 'ects'); ?> - ects ?> - Bisher angerechnete ECTS - + p->t('lehre', 'ects'); ?> + ects ?> + + + Bisher angerechnete ECTS + - - sumEctsSchulisch + $antragData->sumEctsBeruflich. ' [Schulisch: '. $antragData->sumEctsSchulisch. ' / Beruflich: '. $antragData->sumEctsBeruflich. ']' ?> - + + + Total: sumEctsSchulisch + $antragData->sumEctsBeruflich ?> + [Schulisch: sumEctsSchulisch ?> / + Beruflich: sumEctsBeruflich ?> ] + + p->t('lehre', 'lektorInnen'); ?> @@ -186,8 +192,10 @@ $this->load->view(
- + + + + From b2715bb408dea330a53d14a7221737748a0c9d62 Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 7 Jul 2022 10:27:50 +0200 Subject: [PATCH 30/72] Fixed: Added missing Summe ECTS Schulisch to AntragData. --- application/libraries/AnrechnungLib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/libraries/AnrechnungLib.php b/application/libraries/AnrechnungLib.php index e0e027889..8c67b4d14 100644 --- a/application/libraries/AnrechnungLib.php +++ b/application/libraries/AnrechnungLib.php @@ -92,7 +92,7 @@ class AnrechnungLib $antrag_data->lv_id = $lv_id; $antrag_data->lv_bezeichnung = $lv->bezeichnung; $antrag_data->ects = $lv->ects; - $antrag_data->sumEctsSchulisch = $sumEctsQuereinsteiger + $sumEctsSchulisch; + $antrag_data->sumEctsSchulisch = $sumEctsSchulisch; $antrag_data->sumEctsBeruflich = $sumEctsBeruflich; $antrag_data->studiensemester_kurzbz = $studiensemester_kurzbz; $antrag_data->vorname = $person->vorname; From 1434deeca16db1aeccef2f550a748b61c97957fa Mon Sep 17 00:00:00 2001 From: ma0048 Date: Thu, 7 Jul 2022 11:29:38 +0200 Subject: [PATCH 31/72] zeigt die nation gruppe an --- .../system/infocenter/infocenterData.php | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/application/views/system/infocenter/infocenterData.php b/application/views/system/infocenter/infocenterData.php index 9748a6b30..acf8944d6 100644 --- a/application/views/system/infocenter/infocenterData.php +++ b/application/views/system/infocenter/infocenterData.php @@ -254,6 +254,22 @@ ORDER BY ps.zgvmanation DESC NULLS LAST, ps.prestudent_id DESC LIMIT 1 ) AS "ZGVMNation", + ( + SELECT upper(tbl_nation.nationengruppe_kurzbz) + FROM public.tbl_prestudent ps + JOIN bis.tbl_nation ON ps.zgvnation = tbl_nation.nation_code + WHERE ps.person_id = p.person_id + ORDER BY ps.zgvnation DESC NULLS LAST, ps.prestudent_id DESC + LIMIT 1 + ) AS "ZGVNationGruppe", + ( + SELECT upper(tbl_nation.nationengruppe_kurzbz) + FROM public.tbl_prestudent ps + JOIN bis.tbl_nation ON ps.zgvmanation = tbl_nation.nation_code + WHERE ps.person_id = p.person_id + ORDER BY ps.zgvmanation DESC NULLS LAST, ps.prestudent_id DESC + LIMIT 1 + ) AS "ZGVMNationGruppe", ( SELECT tbl_organisationseinheit.bezeichnung FROM public.tbl_benutzerfunktion @@ -361,6 +377,8 @@ ucfirst($this->p->t('lehre', 'studiengang')).' ('.$this->p->t('global', 'aktiv').')', 'ZGV Nation BA', 'ZGV Nation MA', + 'ZGV Gruppe BA', + 'ZGV Gruppe MA', 'InfoCenter Mitarbeiter' ), 'formatRow' => function($datasetRaw) { @@ -452,6 +470,16 @@ $datasetRaw->{'ZGVMNation'} = '-'; } + if ($datasetRaw->{'ZGVNationGruppe'} == null) + { + $datasetRaw->{'ZGVNationGruppe'} = '-'; + } + + if ($datasetRaw->{'ZGVMNationGruppe'} == null) + { + $datasetRaw->{'ZGVMNationGruppe'} = '-'; + } + if ($datasetRaw->{'InfoCenterMitarbeiter'} === null) { $datasetRaw->{'InfoCenterMitarbeiter'} = 'Nein'; From a8f329e50116e7c6a56b458e974b1afb28360197 Mon Sep 17 00:00:00 2001 From: Cris Date: Mon, 11 Jul 2022 10:46:53 +0200 Subject: [PATCH 32/72] Added new Anrechnungbegruendung: Hochschulzeugnis --- system/dbupdate_3.3.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 759769df7..db6fc05ed 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -5169,6 +5169,19 @@ if ($result = @$db->db_query("SELECT 1 FROM lehre.tbl_anrechnung_begruendung WHE } } +// Added Bezeichnung 'Hochschulzeugnis' to Anrechnungbegruendung +if ($result = @$db->db_query("SELECT 1 FROM lehre.tbl_anrechnung_begruendung WHERE bezeichnung = 'Hochschulzeugnis';")) +{ + if ($db->db_num_rows($result) == 0) + { + $qry = "INSERT INTO lehre.tbl_anrechnung_begruendung (bezeichnung) VALUES('Hochschulzeugnis');"; + if (!$db->db_query($qry)) + echo 'lehre.tbl_anrechnung_begruendung '.$db->db_last_error().'
'; + else + echo ' lehre.tbl_anrechnung_begruendung: Added bezeichnung "Hochschulzeugnis"
'; + } +} + // Add permission to apply for Anrechnung if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'student/anrechnung_beantragen';")) { From 91447d7218e92d53979b08512c1e574a215f75ea Mon Sep 17 00:00:00 2001 From: Cris Date: Mon, 11 Jul 2022 11:29:42 +0200 Subject: [PATCH 33/72] =?UTF-8?q?Adapted=20Query=20getEctsSummeSchulisch:?= =?UTF-8?q?=20exclude=20Anrechnung=20aufgrund=20universit=C3=A4rer=20Quali?= =?UTF-8?q?fikation.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Anrechnungen mit universiäterer Qualifikation sind unbegrenzt möglich. --- system/dbupdate_3.3.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index db6fc05ed..d0396ff2f 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -6352,7 +6352,8 @@ if(!@$db->db_query("SELECT public.get_ects_summe_schulisch('', 0, 0)")) tbl_zeugnisnote.note = 6 AND student_uid = var_student_uid AND lehre.tbl_anrechnung.prestudent_id IN (tbl_student.prestudent_id, NULL) - AND begruendung_id != 4 -- schulisch + AND begruendung_id != 5 -- universitäre ECTS nicht mitrechnen + AND begruendung_id != 4 -- berufliche ECTS nicht mitrechnen UNION @@ -6365,7 +6366,8 @@ if(!@$db->db_query("SELECT public.get_ects_summe_schulisch('', 0, 0)")) WHERE genehmigt_von IS NOT NULL AND student_uid = var_student_uid - AND begruendung_id != 4 -- schulisch + AND begruendung_id != 5 -- universitäre ECTS nicht mitrechnen + AND begruendung_id != 4 -- berufliche ECTS nicht mitrechnen ) lvsangerechnet; -- BUILD ECTS SUMME OF QUEREINSTIEGSSEMESTER- + ANGERECHNETEN LVs-ECTS From c851cf9da272c8ed1427a7fd87c46ac7392e3739 Mon Sep 17 00:00:00 2001 From: Manfred Date: Thu, 14 Jul 2022 10:34:24 +0200 Subject: [PATCH 34/72] Testkorrektur HR Services --- cis/private/profile/zeitsperre_resturlaub.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cis/private/profile/zeitsperre_resturlaub.php b/cis/private/profile/zeitsperre_resturlaub.php index 8e449b12d..4a03685dd 100644 --- a/cis/private/profile/zeitsperre_resturlaub.php +++ b/cis/private/profile/zeitsperre_resturlaub.php @@ -282,7 +282,7 @@ function showHideBezeichnungDropDown() } else if (dd.options[dd.selectedIndex].value == 'DienstF') { - sp.innerHTML = 'Dienstfreistellungen nur in Absprache mit Personalservice eintragen!
'; + sp.innerHTML = 'Dienstfreistellungen nur in Absprache mit HR Service eintragen!
'; } else { From 9fa2f56c8910f3960544ad2d90c07473e3584727 Mon Sep 17 00:00:00 2001 From: Manfred Date: Thu, 14 Jul 2022 10:37:25 +0200 Subject: [PATCH 35/72] Grant SELECT to bis.tbl_gsprogramm for web-user --- system/dbupdate_3.3.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 01839e4b9..6824d350f 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -6259,6 +6259,20 @@ if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berecht } } +// Grant SELECT to bis.tbl_gsprogramm for web-user +if($result = @$db->db_query("SELECT * FROM information_schema.role_table_grants WHERE table_name='tbl_gsprogramm' AND table_schema='bis' AND grantee='web' AND privilege_type in ('SELECT')")) +{ + if($db->db_num_rows($result)==0) + { + $qry = "GRANT SELECT ON bis.tbl_gsprogramm TO web;"; + + if(!$db->db_query($qry)) + echo 'tbl_gsprogramm Berechtigungen: '.$db->db_last_error().'
'; + else + echo '
Granted SELECT privileges to web for bis.tbl_gsprogramm'; + } +} + // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; From 3b1d0f3aaa959c0dba76dcdc6a221b0c72df78a7 Mon Sep 17 00:00:00 2001 From: Cris Date: Mon, 18 Jul 2022 10:24:12 +0200 Subject: [PATCH 36/72] Merged DB Model Int/Float conversion + query type cast adaptation --- application/core/DB_Model.php | 54 ++++++++++++++++--- .../approveAnrechnungUebersichtData.php | 12 ++--- 2 files changed, 53 insertions(+), 13 deletions(-) diff --git a/application/core/DB_Model.php b/application/core/DB_Model.php index 4e555be6c..bdd5316e7 100644 --- a/application/core/DB_Model.php +++ b/application/core/DB_Model.php @@ -22,11 +22,16 @@ class DB_Model extends CI_Model const PGSQL_BOOLEAN_FALSE = 'f'; const PGSQL_BOOLEAN_TYPE = 'bool'; const PGSQL_BOOLEAN_ARRAY_TYPE = '_bool'; + const PGSQL_INT2_TYPE = 'int2'; + const PGSQL_INT4_TYPE = 'int4'; + const PGSQL_INT8_TYPE = 'int8'; + const PGSQL_FLOAT4_TYPE = 'float4'; + const PGSQL_FLOAT8_TYPE = 'float8'; protected $dbTable; // Name of the DB-Table for CI-Insert, -Update, ... - protected $pk; // Name of the PrimaryKey for DB-Update, Load, ... + protected $pk; // Name of the PrimaryKey for DB-Update, Load, ... protected $hasSequence; // False if this table has a composite primary key that is not using a sequence - // True if this table has a primary key that uses a sequence + // True if this table has a primary key that uses a sequence private $executedQueryMetaData; private $executedQueryListFields; @@ -271,11 +276,6 @@ class DB_Model extends CI_Model /** * Load data and convert a record into a list of data from the main table, * and linked to every element, the data from the side tables - * - * TODO: - * - Adding support for composed primary key - * - Adding support for cascading side tables (useful?) - * * NOTE: sub queries are not supported in the from clause * * @return array @@ -598,6 +598,28 @@ class DB_Model extends CI_Model return $val; } + /** + * Convert PG-Int* to PHP-Integer + */ + public function pgIntPhp($val) + { + // If it is null, let it be null + if ($val == null) return $val; + + return intval($val); + } + + /** + * Convert PG-Float* to PHP-Float + */ + public function pgFloatPhp($val) + { + // If it is null, let it be null + if ($val == null) return $val; + + return floatval($val); + } + /** * Converts from PostgreSQL array to php array * It also takes care about array of booleans @@ -892,6 +914,11 @@ class DB_Model extends CI_Model // If array type, boolean type OR a UDF if (strpos($eqmd->type, DB_Model::PGSQL_ARRAY_TYPE) !== false || $eqmd->type == DB_Model::PGSQL_BOOLEAN_TYPE + || $eqmd->type == DB_Model::PGSQL_INT2_TYPE + || $eqmd->type == DB_Model::PGSQL_INT4_TYPE + || $eqmd->type == DB_Model::PGSQL_INT8_TYPE + || $eqmd->type == DB_Model::PGSQL_FLOAT4_TYPE + || $eqmd->type == DB_Model::PGSQL_FLOAT8_TYPE || $this->udflib->isUDFColumn($eqmd->name, $eqmd->type)) { // If UDFs are inside this result set @@ -941,6 +968,19 @@ class DB_Model extends CI_Model { $resultElement->{$toBeConverted->name} = $this->pgBoolPhp($resultElement->{$toBeConverted->name}); } + // Integer type + elseif ($toBeConverted->type == DB_Model::PGSQL_INT2_TYPE + || $toBeConverted->type == DB_Model::PGSQL_INT4_TYPE + || $toBeConverted->type == DB_Model::PGSQL_INT8_TYPE) + { + $resultElement->{$toBeConverted->name} = $this->pgIntPhp($resultElement->{$toBeConverted->name}); + } + // Float type + elseif ($toBeConverted->type == DB_Model::PGSQL_FLOAT4_TYPE + || $toBeConverted->type == DB_Model::PGSQL_FLOAT8_TYPE) + { + $resultElement->{$toBeConverted->name} = $this->pgFloatPhp($resultElement->{$toBeConverted->name}); + } } } } diff --git a/application/views/lehre/anrechnung/approveAnrechnungUebersichtData.php b/application/views/lehre/anrechnung/approveAnrechnungUebersichtData.php index f4d63d236..8ec74276f 100644 --- a/application/views/lehre/anrechnung/approveAnrechnungUebersichtData.php +++ b/application/views/lehre/anrechnung/approveAnrechnungUebersichtData.php @@ -77,12 +77,12 @@ $query = ' anrechnungen.orgform_kurzbz, anrechnungen.ausbildungssemester, anrechnungen.lv_bezeichnung, - anrechnungen.ects::numeric(4,1) AS ects, - CONCAT_WS(\' \', (COALESCE(ectsSumSchulisch, 0) + COALESCE(ectsSumBeruflich, 0))::numeric(4,1), \' [ S:\', COALESCE(ectsSumSchulisch, 0), \' | B:\', COALESCE(ectsSumBeruflich, 0), \']\') - AS "ectsSumTotal", - anrechnungen.ectsSumSchulisch, - anrechnungen.ectsSumBeruflich, - anrechnungen.student, + anrechnungen.ects::float4 AS ects, + NULL AS "ectsSumBisherUndNeu", + anrechnungen.ectsSumSchulisch::float4 AS "ectsSumBisherUndNeuSchulisch", + anrechnungen.ectsSumBeruflich::float4 AS "ectsSumBisherUndNeuBeruflich", + anrechnungen.ectsSumSchulisch::float4 AS "ectsSumSchulisch", + anrechnungen.ectsSumBeruflich::float4 AS "ectsSumBeruflich", anrechnungen.begruendung, anrechnungen.dokument_bezeichnung, anrechnungen.anmerkung_student, From 1544653fa375eac8d7671c15cb16243809c006de Mon Sep 17 00:00:00 2001 From: Cris Date: Mon, 18 Jul 2022 17:33:50 +0200 Subject: [PATCH 37/72] =?UTF-8?q?Added=20Begr=C3=BCndungstext=20'Max=20ECT?= =?UTF-8?q?S=20=C3=BCberschritten'=20als=20Ablehnungsgrund?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../anrechnung/approveAnrechnungDetail.php | 8 ++++++++ .../approveAnrechnungUebersicht.php | 6 ++++++ system/phrasesupdate.php | 20 +++++++++++++++++++ 3 files changed, 34 insertions(+) diff --git a/application/views/lehre/anrechnung/approveAnrechnungDetail.php b/application/views/lehre/anrechnung/approveAnrechnungDetail.php index b44da925b..69456ab75 100644 --- a/application/views/lehre/anrechnung/approveAnrechnungDetail.php +++ b/application/views/lehre/anrechnung/approveAnrechnungDetail.php @@ -325,6 +325,14 @@ $this->load->view( +
  • + p->t('anrechnung', 'genehmigungNegativEctsHoechstgrenzeUeberschritten'); ?> + + + +
  • p->t('anrechnung', 'genehmigungNegativEmpfehlungstextUebernehmen'); ?> load->view(
  • +
  • p->t('anrechnung', 'genehmigungNegativEctsHoechstgrenzeUeberschritten'); ?> + + + +
  • p->t('anrechnung', 'andereBegruendung'); ?>

  • diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index 786caa47d..19b1b2f6a 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -11630,6 +11630,26 @@ Any unusual occurrences ) ) ), + array( + 'app' => 'core', + 'category' => 'anrechnung', + 'phrase' => 'genehmigungNegativEctsHoechstgrenzeUeberschritten', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Anrechnung wird nicht genehmigt aufgrund einer Überschreitung der Höchstgrenzen für Anrechnungen gem. § 12 Abs. 3 Fachhochschulgesetz.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Recognition and exemption is rejected because of exceedance of maximum limit for exemption (see § 12 para. 3, Regulations of the UASTW).', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), array( 'app' => 'core', 'category' => 'anrechnung', From 4ba1f2cef53a7763e349a424a79207d916fe1543 Mon Sep 17 00:00:00 2001 From: Cris Date: Mon, 18 Jul 2022 17:38:20 +0200 Subject: [PATCH 38/72] Changed: Dynamic ECTS Summen (LV ECTS Sum by Prestudent + former ECTS) now build with tabulators mutator and rowFormatter --- .../approveAnrechnungUebersichtData.php | 26 +-- .../anrechnung/approveAnrechnungUebersicht.js | 170 ++++++++++-------- 2 files changed, 106 insertions(+), 90 deletions(-) diff --git a/application/views/lehre/anrechnung/approveAnrechnungUebersichtData.php b/application/views/lehre/anrechnung/approveAnrechnungUebersichtData.php index 8ec74276f..21dc90694 100644 --- a/application/views/lehre/anrechnung/approveAnrechnungUebersichtData.php +++ b/application/views/lehre/anrechnung/approveAnrechnungUebersichtData.php @@ -84,6 +84,7 @@ $query = ' anrechnungen.ectsSumSchulisch::float4 AS "ectsSumSchulisch", anrechnungen.ectsSumBeruflich::float4 AS "ectsSumBeruflich", anrechnungen.begruendung, + anrechnungen.student, anrechnungen.dokument_bezeichnung, anrechnungen.anmerkung_student, anrechnungen.zgv, @@ -149,11 +150,13 @@ $filterWidgetArray = array( 'Semester', ucfirst($this->p->t('lehre', 'lehrveranstaltung')), 'ECTS (LV)', - 'ECTS (Bisher angerechnet)', - 'ECTS schulisch', - 'ECTS beruflich', - ucfirst($this->p->t('person', 'studentIn')), + 'ECTS (LV + Bisher)', + 'ECTS (LV + Schule)', + 'ECTS (LV + Beruf)', + 'ECTS (Bisher schulisch)', + 'ECTS (Bisher beruflich', ucfirst($this->p->t('global', 'begruendung')), + ucfirst($this->p->t('person', 'studentIn')), ucfirst($this->p->t('anrechnung', 'nachweisdokumente')), ucfirst($this->p->t('anrechnung', 'herkunft')), ucfirst($this->p->t('global', 'zgv')), @@ -175,7 +178,7 @@ $filterWidgetArray = array( headerFilterPlaceholder: " ", index: "anrechnung_id", // assign specific column as unique id (important for row indexing) selectable: true, // allow row selection - selectableRangeMode: "click", // allow range selection using shift end click on end of range + selectableRangeMode: "click", // allow range selection using shift end click on end of range -- TODO: check, löst rowSelectionChanged 2* aus selectablePersistence:false, // deselect previously selected rows when table is filtered, sorted or paginated tableBuilt: function(){ func_tableBuilt(this); @@ -189,9 +192,6 @@ $filterWidgetArray = array( rowFormatter:function(row){ func_rowFormatter(row); }, - rowDeselected:function(row){ - func_rowDeselected(row); - }, rowSelectionChanged:function(data, rows){ func_rowSelectionChanged(data, rows); }, @@ -214,11 +214,13 @@ $filterWidgetArray = array( ausbildungssemester: {headerFilter:"input"}, lv_bezeichnung: {headerFilter:"input"}, ects: {headerFilter:"input", align:"center"}, - ectsSumTotal: {headerFilter:"input", align:"left"}, - ectsSumSchulisch: {visible: false, headerFilter:"input"}, - ectsSumBeruflich: {visible: false, headerFilter:"input"}, + ectsSumBisherUndNeu: {mutator: mut_getEctsSumBisherUndNeu, formatter:"html"}, + ectsSumBisherUndNeuSchulisch: {headerFilter: "input", visible: false}, + ectsSumBisherUndNeuBeruflich: {headerFilter: "input", visible: false}, + ectsSumSchulisch: {visible: true, headerFilter:"input", align:"right"}, + ectsSumBeruflich: {visible: true, headerFilter:"input", align:"right"}, + begruendung: {headerFilter:"input", visible: true}, student: {headerFilter:"input"}, - begruendung: {headerFilter:"input"}, zgv: {visible: false, headerFilter:"input"}, dokument_bezeichnung: {headerFilter:"input", formatter:"link", formatterParams:{ labelField:"dokument_bezeichnung", diff --git a/public/js/lehre/anrechnung/approveAnrechnungUebersicht.js b/public/js/lehre/anrechnung/approveAnrechnungUebersicht.js index b6a2182d8..97415a8f2 100644 --- a/public/js/lehre/anrechnung/approveAnrechnungUebersicht.js +++ b/public/js/lehre/anrechnung/approveAnrechnungUebersicht.js @@ -10,7 +10,8 @@ const ANRECHNUNGSTATUS_REJECTED = 'rejected'; const COLOR_LIGHTGREY = "#f5f5f5"; const COLOR_DANGER = '#f2dede'; -var previousSelectedRows = []; +var tabulator = null; // Set in tableBuilt function. +var rowSelectionChanged = false; // Set in rowSelectionChanged function. Useful in rowUpdate to differ update behaviour. // ----------------------------------------------------------------------------------------------------------------- // Mutators - setter methods to manipulate table data when entering the tabulator @@ -26,6 +27,20 @@ var mut_formatStringDate = function(value, data, type, params, component) { } } +var mut_getEctsSumBisherUndNeu = function(value, data, type, params, component){ + + let ectsSumBisherUndNeuTotal = (data.ectsSumBisherUndNeuSchulisch + data.ectsSumBisherUndNeuBeruflich); + let ectsSumBisherUndNeuSchulisch = data.ectsSumBisherUndNeuSchulisch; + let ectsSumBisherUndNeuBeruflich = data.ectsSumBisherUndNeuBeruflich; + + // Format text + ectsSumBisherUndNeuTotal = (ectsSumBisherUndNeuTotal > 90) ? "" + ectsSumBisherUndNeuTotal + "" : ectsSumBisherUndNeuTotal; + ectsSumBisherUndNeuSchulisch = (ectsSumBisherUndNeuSchulisch > 60) ? "" + ectsSumBisherUndNeuSchulisch + "" : ectsSumBisherUndNeuSchulisch; + ectsSumBisherUndNeuBeruflich = (ectsSumBisherUndNeuBeruflich > 60) ? "" + ectsSumBisherUndNeuBeruflich + "" : ectsSumBisherUndNeuBeruflich; + + return "T: " + ectsSumBisherUndNeuTotal + " [ S: " + ectsSumBisherUndNeuSchulisch + " | B: " + ectsSumBisherUndNeuBeruflich + " ]"; +} + // TABULATOR FUNCTIONS // --------------------------------------------------------------------------------------------------------------------- // Returns relative height (depending on screen size) @@ -55,6 +70,10 @@ function hf_filterTrueFalse(headerValue, rowValue){ // Adds column details // Sets focus on filterbutton, if table starts with stored filter. function func_tableBuilt(table) { + + // Store table in global var + tabulator = table; + table.addColumn( { title: "Details", @@ -82,13 +101,31 @@ function func_tableBuilt(table) { // Formats the rows function func_rowFormatter(row){ let status_kurzbz = row.getData().status_kurzbz; + let begruendung_id = row.getData().begruendung_id; + let ectsSumBisherUndNeuSchulisch = row.getData().ectsSumBisherUndNeuSchulisch; + let ectsSumBisherUndNeuBeruflich = row.getData().ectsSumBisherUndNeuBeruflich; - row.getCells().forEach(function(cell){ - if (status_kurzbz != ANRECHNUNGSTATUS_PROGRESSED_BY_STGL) + if (status_kurzbz != ANRECHNUNGSTATUS_PROGRESSED_BY_STGL) + { + row.getElement().style["background-color"] = COLOR_LIGHTGREY; // default + } + + // Color column if maximum ECTS exceeded + if (begruendung_id != 5 && row.isSelected()) + { + if ( + (ectsSumBisherUndNeuSchulisch + ectsSumBisherUndNeuBeruflich) > 90 || + ectsSumBisherUndNeuSchulisch > 60 || + ectsSumBisherUndNeuBeruflich > 60 + ) { - row.getElement().style["background-color"] = COLOR_LIGHTGREY; // default + row.getCell('ectsSumBisherUndNeu').getElement().style["background-color"] = COLOR_DANGER; } - }); + } + else + { + row.getCell('ectsSumBisherUndNeu').getElement().style.removeProperty('background-color'); + } } // Formats row selectable/unselectable @@ -102,79 +139,56 @@ function func_selectableCheck(row){ ); } -// Unformat row when single row is deselected (is not done by func_rowSelectionChanged yet) -function func_rowDeselected(row){ - - // Removes bg-color on single row deselection. - approveAnrechnung.unmarkEctsRow(row); -} - // Format rows when maximum ECTS are exceeded. function func_rowSelectionChanged(data, rows){ var selectedData = data; var selectedRows = rows; + var tableData = tabulator.getData(true); // only the filtered / sorted table rows - // If no rows selected - if (selectedRows.length == 0) - { - // Check there are still rows marked from previous selection... - if (previousSelectedRows.length > 0) - { - // ... and unmark them - previousSelectedRows.forEach((row) => approveAnrechnung.unmarkEctsRow(row)); - } - - // Show number of selected Rows - approveAnrechnung.showNumberSelectedRows(selectedRows); - return; - } + rowSelectionChanged = true; // Sum up over all anzurechnenden LV-ECTS by Prestudent - var result = []; - result = approveAnrechnung.getSumLvEctsByPreStudent(selectedData); + var selectedPrestudentWithAccumulatedLvEcts = []; + selectedPrestudentWithAccumulatedLvEcts = approveAnrechnung.getSumLvEctsByPreStudent(selectedData); - // Filter only Prestudenten, where ECTS exceed maximum - exceededEctsByPreStud = - result.filter((val) => - (val.ectsSumAnzurechnendeLvs + val.ectsSumSchulisch) > 60 || - (val.ectsSumBeruflich) > 60 || - (val.ectsSumAnzurechnendeLvs + val.ectsSumSchulisch + val.ectsSumBeruflich) > 90 - ); + // Loop through table rows + tableData.forEach(function(td){ - // Mark all Prestudenten - if (selectedRows.length > 0) - { - selectedRows.forEach((row) => { + let selectedPrestudent = selectedPrestudentWithAccumulatedLvEcts.find(x => x.prestudent_id === td.prestudent_id); - //row.reformat(); - approveAnrechnung.unmarkEctsRow(row); - - if (exceededEctsByPreStud.length > 0) - { - exceededEctsByPreStud.forEach((val) => { - if (row.getData().prestudent_id == val.prestudent_id) - { - approveAnrechnung.markEctsRow(row); + // Add accumulated LV ECTS to bisherige ECTS in ECTS 'controlling column', if Prestudent is selected at least once + if (selectedPrestudent != undefined) + { + td.ectsSumBisherUndNeuSchulisch = td.ectsSumSchulisch + selectedPrestudent.ectsSumAnzurechnendeLvsSchulisch; + td.ectsSumBisherUndNeuBeruflich = td.ectsSumBeruflich + selectedPrestudent.ectsSumAnzurechnendeLvsBeruflich; - } - }) - } + } + // ..else reset to bisherige ECTS + else + { + td.ectsSumBisherUndNeuSchulisch = td.ectsSumSchulisch; + td.ectsSumBisherUndNeuBeruflich = td.ectsSumBeruflich; + } + }); - }); - } - - // Keep the selected rows for next selection. - previousSelectedRows = selectedRows; + // Update ECTS columns + tabulator.updateData(tableData); // Show number of selected rows. approveAnrechnung.showNumberSelectedRows(selectedRows); + + rowSelectionChanged = false; } // Performes after row was updated function func_rowUpdated(row){ - // Refresh row formatters - row.reformat(); + + // If rowUpdate is called on row selection change, return to avoid following row deselection and formatting. + if (rowSelectionChanged) + { + return; + } // Deselect and disable new selection of updated rows row.deselect(); @@ -668,38 +682,38 @@ var approveAnrechnung = { } }, - markEctsRow(row){ - row.getElement().style["background-color"] = COLOR_DANGER; - // row.getCell('ects').getElement().style["background-color"] = COLOR_DANGER; - // row.getCell('ectsSumTotal').getElement().style["background-color"] = COLOR_DANGER; - // row.getCell('student').getElement().style["background-color"] = COLOR_DANGER; - }, - unmarkEctsRow(row){ - row.getElement().style.removeProperty('background-color'); - // row.getCell('ects').getElement().style.removeProperty('background-color'); - // row.getCell('ectsSumTotal').getElement().style.removeProperty('background-color'); - // row.getCell('student').getElement().style.removeProperty('background-color'); - }, - getSumLvEctsByPreStudent(selectedData){ + getSumLvEctsByPreStudent(data){ var result = []; - - selectedData.reduce((prev, curr) => { + + // Berechne für jeden Prestudenten die kumulierte Summe aller selektierten LV ECTS + data.reduce((prev, curr) => { if (!prev[curr.prestudent_id]) { prev[curr.prestudent_id] = { - anrechnung_id: curr.anrechnung_id, prestudent_id: curr.prestudent_id, - ectsSumAnzurechnendeLvs: 0, - ectsSumSchulisch: parseFloat(curr.ectssumschulisch), - ectsSumBeruflich: parseFloat(curr.ectssumberuflich) + ectsSumAnzurechnendeLvsSchulisch: 0, + ectsSumAnzurechnendeLvsBeruflich: 0 }; result.push(prev[curr.prestudent_id]) } - prev[curr.prestudent_id].ectsSumAnzurechnendeLvs+= parseFloat(curr.ects); + // Kumulierte Summe aller selektierten LVs, die angerechnet werden sollen, getrennt nach + // schulischer und beruflicher Qualifikation. + // Ausgenommen ist die universitäre Qualifikation (5), da diese unbegrenzt möglich sind. + if (curr.begruendung_id != 5) + { + if (curr.begruendung_id == 4) + { + prev[curr.prestudent_id].ectsSumAnzurechnendeLvsBeruflich += curr.ects; + } + else + { + prev[curr.prestudent_id].ectsSumAnzurechnendeLvsSchulisch += curr.ects; + } + } return prev; From 760e5758cea0cd3a27933537f0426f493ac233e1 Mon Sep 17 00:00:00 2001 From: Cris Date: Tue, 19 Jul 2022 17:33:28 +0200 Subject: [PATCH 39/72] =?UTF-8?q?Optimized=20performance=20of=20all=20'All?= =?UTF-8?q?e=20ausw=C3=A4hlen'-buttons=20defined=20via=20tableWidgetHook?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ...by passing an array of rows to be selected, instead of selecting each row one by one. Further triggered functions, e.g. rowSelectionChanged, are now called once only, not for each row. --- public/js/lehre/anrechnung/approveAnrechnungUebersicht.js | 7 ++++--- public/js/lehre/anrechnung/reviewAnrechnungUebersicht.js | 7 ++++--- public/js/lehre/lehrauftrag/acceptLehrauftrag.js | 7 ++++--- public/js/lehre/lehrauftrag/approveLehrauftrag.js | 7 ++++--- public/js/lehre/lehrauftrag/orderLehrauftrag.js | 7 ++++--- 5 files changed, 20 insertions(+), 15 deletions(-) diff --git a/public/js/lehre/anrechnung/approveAnrechnungUebersicht.js b/public/js/lehre/anrechnung/approveAnrechnungUebersicht.js index 97415a8f2..d16218de6 100644 --- a/public/js/lehre/anrechnung/approveAnrechnungUebersicht.js +++ b/public/js/lehre/anrechnung/approveAnrechnungUebersicht.js @@ -222,11 +222,12 @@ var format_empfehlung_anrechnung = function(cell, formatterParams){ * (Ignore rows that are approved, rejected or in request for recommendation) */ function tableWidgetHook_selectAllButton(tableWidgetDiv){ - tableWidgetDiv.find("#tableWidgetTabulator").tabulator('getRows', true) + var resultRows = tableWidgetDiv.find("#tableWidgetTabulator").tabulator('getRows', true) .filter(row => row.getData().status_kurzbz == ANRECHNUNGSTATUS_PROGRESSED_BY_STGL - ) - .forEach((row => row.select())); + ); + + tableWidgetDiv.find("#tableWidgetTabulator").tabulator('selectRow', resultRows); } diff --git a/public/js/lehre/anrechnung/reviewAnrechnungUebersicht.js b/public/js/lehre/anrechnung/reviewAnrechnungUebersicht.js index 2cf7c1623..2d5d65ac9 100644 --- a/public/js/lehre/anrechnung/reviewAnrechnungUebersicht.js +++ b/public/js/lehre/anrechnung/reviewAnrechnungUebersicht.js @@ -127,11 +127,12 @@ var format_empfehlung_anrechnung = function(cell, formatterParams){ * (Ignore rows that are approved, rejected or in request for recommendation) */ function tableWidgetHook_selectAllButton(tableWidgetDiv){ - tableWidgetDiv.find("#tableWidgetTabulator").tabulator('getRows', true) + var resultRows = tableWidgetDiv.find("#tableWidgetTabulator").tabulator('getRows', true) .filter(row => row.getData().status_kurzbz == ANRECHNUNGSTATUS_PROGRESSED_BY_LEKTOR - ) - .forEach((row => row.select())); + ); + + tableWidgetDiv.find("#tableWidgetTabulator").tabulator('selectRow', resultRows); } diff --git a/public/js/lehre/lehrauftrag/acceptLehrauftrag.js b/public/js/lehre/lehrauftrag/acceptLehrauftrag.js index a39fe3667..08a0645bc 100644 --- a/public/js/lehre/lehrauftrag/acceptLehrauftrag.js +++ b/public/js/lehre/lehrauftrag/acceptLehrauftrag.js @@ -274,12 +274,13 @@ function func_renderComplete(table){ * Select all (filtered) rows and ignore rows that are bestellt and erteilt */ function tableWidgetHook_selectAllButton(tableWidgetDiv){ - tableWidgetDiv.find("#tableWidgetTabulator").tabulator('getRows', true) + var resultRows = tableWidgetDiv.find("#tableWidgetTabulator").tabulator('getRows', true) .filter(row => row.getData().bestellt != null && // bestellt row.getData().erteilt != null && // AND erteilt row.getData().akzeptiert == null && // AND NOT akzeptiert - row.getData().status != 'Geändert') // AND NOT geändert - .forEach((row => row.select())); + row.getData().status != 'Geändert'); // AND NOT geändert + + tableWidgetDiv.find("#tableWidgetTabulator").tabulator('selectRow', resultRows); } // ----------------------------------------------------------------------------------------------------------------- diff --git a/public/js/lehre/lehrauftrag/approveLehrauftrag.js b/public/js/lehre/lehrauftrag/approveLehrauftrag.js index cd8816c1e..c16016cf5 100644 --- a/public/js/lehre/lehrauftrag/approveLehrauftrag.js +++ b/public/js/lehre/lehrauftrag/approveLehrauftrag.js @@ -319,12 +319,13 @@ function func_rowUpdated(row){ * Select all (filtered) rows that are bestellt */ function tableWidgetHook_selectAllButton(tableWidgetDiv){ - tableWidgetDiv.find("#tableWidgetTabulator").tabulator('getRows', true) + var resultRows = tableWidgetDiv.find("#tableWidgetTabulator").tabulator('getRows', true) .filter(row => row.getData().personalnummer >= 0 && // NOT dummies row.getData().bestellt != null && // AND bestellt row.getData().erteilt == null && // AND NOT erteilt - row.getData().status != 'Geändert') // AND NOT geaendert - .forEach((row => row.select())); + row.getData().status != 'Geändert'); // AND NOT geaendert + + tableWidgetDiv.find("#tableWidgetTabulator").tabulator('selectRow', resultRows); } // ----------------------------------------------------------------------------------------------------------------- diff --git a/public/js/lehre/lehrauftrag/orderLehrauftrag.js b/public/js/lehre/lehrauftrag/orderLehrauftrag.js index d6b165b65..06db3ce60 100644 --- a/public/js/lehre/lehrauftrag/orderLehrauftrag.js +++ b/public/js/lehre/lehrauftrag/orderLehrauftrag.js @@ -343,7 +343,7 @@ function func_rowUpdated(row){ * Select all (filtered) rows and ignore rows which have status bestellt */ function tableWidgetHook_selectAllButton(tableWidgetDiv){ - tableWidgetDiv.find("#tableWidgetTabulator").tabulator('getRows', true) + var resultRows = tableWidgetDiv.find("#tableWidgetTabulator").tabulator('getRows', true) .filter(row => ( row.getData().personalnummer > 0 || // not dummies row.getData().personalnummer == null) && // include Projektbetreuer @@ -355,8 +355,9 @@ function tableWidgetHook_selectAllButton(tableWidgetDiv){ (row.getData().bestellt != null && // OR (bestellt row.getData().status == 'Geändert') // AND geaendert) ) - ) - .forEach((row => row.select())); + ); + + tableWidgetDiv.find("#tableWidgetTabulator").tabulator('selectRow', resultRows); } // ----------------------------------------------------------------------------------------------------------------- From 86d7f8a35e0ae33b72f3ab74dd188dd2cb729589 Mon Sep 17 00:00:00 2001 From: Cris Date: Tue, 19 Jul 2022 17:56:16 +0200 Subject: [PATCH 40/72] Code refactoring of Dynamic ECTS Summen . now build with tabulators column formatter. . rows are reinitialized instead of using the updateData. . format of cell background-color has moved out from row formatter to cell formatter --- .../anrechnung/approveAnrechnungDetail.php | 4 +- .../approveAnrechnungUebersichtData.php | 10 +- .../anrechnung/approveAnrechnungDetail.js | 1 - .../anrechnung/approveAnrechnungUebersicht.js | 138 ++++++++---------- 4 files changed, 69 insertions(+), 84 deletions(-) diff --git a/application/views/lehre/anrechnung/approveAnrechnungDetail.php b/application/views/lehre/anrechnung/approveAnrechnungDetail.php index 69456ab75..15887dfd5 100644 --- a/application/views/lehre/anrechnung/approveAnrechnungDetail.php +++ b/application/views/lehre/anrechnung/approveAnrechnungDetail.php @@ -127,7 +127,8 @@ $this->load->view(
    - diff --git a/application/views/lehre/anrechnung/approveAnrechnungUebersichtData.php b/application/views/lehre/anrechnung/approveAnrechnungUebersichtData.php index 21dc90694..e78bf4059 100644 --- a/application/views/lehre/anrechnung/approveAnrechnungUebersichtData.php +++ b/application/views/lehre/anrechnung/approveAnrechnungUebersichtData.php @@ -79,8 +79,6 @@ $query = ' anrechnungen.lv_bezeichnung, anrechnungen.ects::float4 AS ects, NULL AS "ectsSumBisherUndNeu", - anrechnungen.ectsSumSchulisch::float4 AS "ectsSumBisherUndNeuSchulisch", - anrechnungen.ectsSumBeruflich::float4 AS "ectsSumBisherUndNeuBeruflich", anrechnungen.ectsSumSchulisch::float4 AS "ectsSumSchulisch", anrechnungen.ectsSumBeruflich::float4 AS "ectsSumBeruflich", anrechnungen.begruendung, @@ -151,8 +149,6 @@ $filterWidgetArray = array( ucfirst($this->p->t('lehre', 'lehrveranstaltung')), 'ECTS (LV)', 'ECTS (LV + Bisher)', - 'ECTS (LV + Schule)', - 'ECTS (LV + Beruf)', 'ECTS (Bisher schulisch)', 'ECTS (Bisher beruflich', ucfirst($this->p->t('global', 'begruendung')), @@ -178,7 +174,7 @@ $filterWidgetArray = array( headerFilterPlaceholder: " ", index: "anrechnung_id", // assign specific column as unique id (important for row indexing) selectable: true, // allow row selection - selectableRangeMode: "click", // allow range selection using shift end click on end of range -- TODO: check, löst rowSelectionChanged 2* aus + selectableRangeMode: "click", // allow range selection using shift end click on end of range selectablePersistence:false, // deselect previously selected rows when table is filtered, sorted or paginated tableBuilt: function(){ func_tableBuilt(this); @@ -214,9 +210,7 @@ $filterWidgetArray = array( ausbildungssemester: {headerFilter:"input"}, lv_bezeichnung: {headerFilter:"input"}, ects: {headerFilter:"input", align:"center"}, - ectsSumBisherUndNeu: {mutator: mut_getEctsSumBisherUndNeu, formatter:"html"}, - ectsSumBisherUndNeuSchulisch: {headerFilter: "input", visible: false}, - ectsSumBisherUndNeuBeruflich: {headerFilter: "input", visible: false}, + ectsSumBisherUndNeu: {formatter: format_ectsSumBisherUndNeu}, ectsSumSchulisch: {visible: true, headerFilter:"input", align:"right"}, ectsSumBeruflich: {visible: true, headerFilter:"input", align:"right"}, begruendung: {headerFilter:"input", visible: true}, diff --git a/public/js/lehre/anrechnung/approveAnrechnungDetail.js b/public/js/lehre/anrechnung/approveAnrechnungDetail.js index ffa989056..6658a4b15 100644 --- a/public/js/lehre/anrechnung/approveAnrechnungDetail.js +++ b/public/js/lehre/anrechnung/approveAnrechnungDetail.js @@ -568,7 +568,6 @@ var approveAnrechnungDetail = { (parseFloat($('#ects').text()) + parseFloat($('#sumEctsSchulisch').text()) + parseFloat($('#sumEctsBeruflich').text())) > 90 ) { - console.log('inside'); $('#sumEctsMsg').html("
    ACHTUNG! Bei Anrechnung von LV: Maximale ECTS überschritten.
    ").css('backgroundColor', COLOR_DANGER); } else diff --git a/public/js/lehre/anrechnung/approveAnrechnungUebersicht.js b/public/js/lehre/anrechnung/approveAnrechnungUebersicht.js index d16218de6..b971745a2 100644 --- a/public/js/lehre/anrechnung/approveAnrechnungUebersicht.js +++ b/public/js/lehre/anrechnung/approveAnrechnungUebersicht.js @@ -11,7 +11,9 @@ const COLOR_LIGHTGREY = "#f5f5f5"; const COLOR_DANGER = '#f2dede'; var tabulator = null; // Set in tableBuilt function. -var rowSelectionChanged = false; // Set in rowSelectionChanged function. Useful in rowUpdate to differ update behaviour. + +// Array with accumulated LV ECTS by Prestudent. Used to find out if max ECTS are exceeded. +var selectedPrestudentWithAccumulatedLvEcts = []; // ----------------------------------------------------------------------------------------------------------------- // Mutators - setter methods to manipulate table data when entering the tabulator @@ -27,20 +29,6 @@ var mut_formatStringDate = function(value, data, type, params, component) { } } -var mut_getEctsSumBisherUndNeu = function(value, data, type, params, component){ - - let ectsSumBisherUndNeuTotal = (data.ectsSumBisherUndNeuSchulisch + data.ectsSumBisherUndNeuBeruflich); - let ectsSumBisherUndNeuSchulisch = data.ectsSumBisherUndNeuSchulisch; - let ectsSumBisherUndNeuBeruflich = data.ectsSumBisherUndNeuBeruflich; - - // Format text - ectsSumBisherUndNeuTotal = (ectsSumBisherUndNeuTotal > 90) ? "" + ectsSumBisherUndNeuTotal + "" : ectsSumBisherUndNeuTotal; - ectsSumBisherUndNeuSchulisch = (ectsSumBisherUndNeuSchulisch > 60) ? "" + ectsSumBisherUndNeuSchulisch + "" : ectsSumBisherUndNeuSchulisch; - ectsSumBisherUndNeuBeruflich = (ectsSumBisherUndNeuBeruflich > 60) ? "" + ectsSumBisherUndNeuBeruflich + "" : ectsSumBisherUndNeuBeruflich; - - return "T: " + ectsSumBisherUndNeuTotal + " [ S: " + ectsSumBisherUndNeuSchulisch + " | B: " + ectsSumBisherUndNeuBeruflich + " ]"; -} - // TABULATOR FUNCTIONS // --------------------------------------------------------------------------------------------------------------------- // Returns relative height (depending on screen size) @@ -98,34 +86,65 @@ function func_tableBuilt(table) { } } +/** + * Formats column ECTS (LV + Bisher). + */ +var format_ectsSumBisherUndNeu = function(cell, formatterParams, onRendered){ + let row = cell.getRow(); + let rowData = row.getData(); + + let begruendung_id = (rowData.begruendung_id); + let ectsSumBisherUndNeuTotal = (rowData.ectsSumSchulisch + rowData.ectsSumBeruflich); + let ectsSumBisherUndNeuSchulisch = rowData.ectsSumSchulisch; + let ectsSumBisherUndNeuBeruflich = rowData.ectsSumBeruflich; + + // If exists, add accumulated LV ECTS to bisherige ECTS + if (selectedPrestudentWithAccumulatedLvEcts.length > 0) + { + let selectedPrestudent = selectedPrestudentWithAccumulatedLvEcts.find(x => x.prestudent_id === rowData.prestudent_id); + + if (selectedPrestudent != undefined) + { + ectsSumBisherUndNeuTotal = (rowData.ectsSumSchulisch + rowData.ectsSumBeruflich) + selectedPrestudent.ectsSumAnzurechnendeLvsSchulisch; + ectsSumBisherUndNeuSchulisch = rowData.ectsSumSchulisch + selectedPrestudent.ectsSumAnzurechnendeLvsSchulisch; + ectsSumBisherUndNeuBeruflich = rowData.ectsSumBeruflich + selectedPrestudent.ectsSumAnzurechnendeLvsBeruflich; + } + + // Color column if maximum ECTS exceeded + if (begruendung_id != 5 && row.isSelected()) + { + + if ( + (ectsSumBisherUndNeuSchulisch + ectsSumBisherUndNeuBeruflich) > 90 || + ectsSumBisherUndNeuSchulisch > 60 || + ectsSumBisherUndNeuBeruflich > 60 + ) + { + cell.getElement().style["background-color"] = COLOR_DANGER; + } + } + else + { + cell.getElement().style.removeProperty('background-color'); + } + } + + // If max ECTS is exceeded, format font color / weight + ectsSumBisherUndNeuTotal = (ectsSumBisherUndNeuTotal > 90) ? "" + ectsSumBisherUndNeuTotal + "" : ectsSumBisherUndNeuTotal; + ectsSumBisherUndNeuSchulisch = (ectsSumBisherUndNeuSchulisch > 60) ? "" + ectsSumBisherUndNeuSchulisch + "" : ectsSumBisherUndNeuSchulisch; + ectsSumBisherUndNeuBeruflich = (ectsSumBisherUndNeuBeruflich > 60) ? "" + ectsSumBisherUndNeuBeruflich + "" : ectsSumBisherUndNeuBeruflich; + + return "T: " + ectsSumBisherUndNeuTotal + " [ S: " + ectsSumBisherUndNeuSchulisch + " | B: " + ectsSumBisherUndNeuBeruflich + " ]"; +} + // Formats the rows function func_rowFormatter(row){ let status_kurzbz = row.getData().status_kurzbz; - let begruendung_id = row.getData().begruendung_id; - let ectsSumBisherUndNeuSchulisch = row.getData().ectsSumBisherUndNeuSchulisch; - let ectsSumBisherUndNeuBeruflich = row.getData().ectsSumBisherUndNeuBeruflich; if (status_kurzbz != ANRECHNUNGSTATUS_PROGRESSED_BY_STGL) { row.getElement().style["background-color"] = COLOR_LIGHTGREY; // default } - - // Color column if maximum ECTS exceeded - if (begruendung_id != 5 && row.isSelected()) - { - if ( - (ectsSumBisherUndNeuSchulisch + ectsSumBisherUndNeuBeruflich) > 90 || - ectsSumBisherUndNeuSchulisch > 60 || - ectsSumBisherUndNeuBeruflich > 60 - ) - { - row.getCell('ectsSumBisherUndNeu').getElement().style["background-color"] = COLOR_DANGER; - } - } - else - { - row.getCell('ectsSumBisherUndNeu').getElement().style.removeProperty('background-color'); - } } // Formats row selectable/unselectable @@ -139,57 +158,28 @@ function func_selectableCheck(row){ ); } -// Format rows when maximum ECTS are exceeded. +// Calculate dynamically sum of all LV ECTS by Student and display, when maximum ECTS are exceeded. +// data = selected data, rows = selected rows function func_rowSelectionChanged(data, rows){ - var selectedData = data; - var selectedRows = rows; - var tableData = tabulator.getData(true); // only the filtered / sorted table rows - - rowSelectionChanged = true; - // Sum up over all anzurechnenden LV-ECTS by Prestudent - var selectedPrestudentWithAccumulatedLvEcts = []; - selectedPrestudentWithAccumulatedLvEcts = approveAnrechnung.getSumLvEctsByPreStudent(selectedData); + selectedPrestudentWithAccumulatedLvEcts = approveAnrechnung.getSumLvEctsByPreStudent(data); - // Loop through table rows - tableData.forEach(function(td){ + // Loop through all active rows + var rowManager = tabulator.rowManager; + for (var i = 0; i < rowManager.activeRows.length; i++) { - let selectedPrestudent = selectedPrestudentWithAccumulatedLvEcts.find(x => x.prestudent_id === td.prestudent_id); - - // Add accumulated LV ECTS to bisherige ECTS in ECTS 'controlling column', if Prestudent is selected at least once - if (selectedPrestudent != undefined) - { - td.ectsSumBisherUndNeuSchulisch = td.ectsSumSchulisch + selectedPrestudent.ectsSumAnzurechnendeLvsSchulisch; - td.ectsSumBisherUndNeuBeruflich = td.ectsSumBeruflich + selectedPrestudent.ectsSumAnzurechnendeLvsBeruflich; - - } - // ..else reset to bisherige ECTS - else - { - td.ectsSumBisherUndNeuSchulisch = td.ectsSumSchulisch; - td.ectsSumBisherUndNeuBeruflich = td.ectsSumBeruflich; - } - }); - - // Update ECTS columns - tabulator.updateData(tableData); + // Reinitialize row -> triggers formatters. + rowManager.activeRows[i].reinitialize(); + } // Show number of selected rows. - approveAnrechnung.showNumberSelectedRows(selectedRows); - - rowSelectionChanged = false; + approveAnrechnung.showNumberSelectedRows(rows); } // Performes after row was updated function func_rowUpdated(row){ - // If rowUpdate is called on row selection change, return to avoid following row deselection and formatting. - if (rowSelectionChanged) - { - return; - } - // Deselect and disable new selection of updated rows row.deselect(); row.getElement().style["pointerEvents"] = "none"; From 6a439283224f0ace25beb0c9f8da261f3d388ca4 Mon Sep 17 00:00:00 2001 From: Cris Date: Tue, 26 Jul 2022 18:14:23 +0200 Subject: [PATCH 41/72] Added: Display (Qualifikations-)Begruendung in STGL Anrechnungen Detail View --- application/libraries/AnrechnungLib.php | 4 ++++ .../views/lehre/anrechnung/approveAnrechnungDetail.php | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/application/libraries/AnrechnungLib.php b/application/libraries/AnrechnungLib.php index 8c67b4d14..86a81fb55 100644 --- a/application/libraries/AnrechnungLib.php +++ b/application/libraries/AnrechnungLib.php @@ -122,6 +122,7 @@ class AnrechnungLib $anrechnung_data = new StdClass(); + $this->ci->AnrechnungModel->addJoin('lehre.tbl_anrechnung_begruendung', 'begruendung_id'); $result = $this->ci->AnrechnungModel->load($anrechnung_id); if (isError($result)) @@ -155,6 +156,7 @@ class AnrechnungLib $anrechnung_data->prestudent_id = ''; $anrechnung_data->lehrveranstaltung = ''; $anrechnung_data->begruendung_id = ''; + $anrechnung_data->begruendung = ''; $anrechnung_data->anmerkung = ''; $anrechnung_data->dms_id = ''; $anrechnung_data->insertamum = ''; @@ -165,6 +167,7 @@ class AnrechnungLib $anrechnung_data->status = getUserLanguage() == 'German' ? 'neu' : 'new'; $anrechnung_data->dokumentname = ''; + $this->ci->AnrechnungModel->addJoin('lehre.tbl_anrechnung_begruendung', 'begruendung_id'); $result = $this->ci->AnrechnungModel->loadWhere( array( 'lehrveranstaltung_id' => $lehrveranstaltung_id, @@ -810,6 +813,7 @@ class AnrechnungLib $anrechnung_data->prestudent_id = $anrechnung->prestudent_id; $anrechnung_data->lehrveranstaltung_id = $anrechnung->lehrveranstaltung_id; $anrechnung_data->begruendung_id = $anrechnung->begruendung_id; + $anrechnung_data->begruendung = $anrechnung->bezeichnung; $anrechnung_data->anmerkung = $anrechnung->anmerkung_student; $anrechnung_data->dms_id = $anrechnung->dms_id; $anrechnung_data->insertamum = (new DateTime($anrechnung->insertamum))->format('d.m.Y'); diff --git a/application/views/lehre/anrechnung/approveAnrechnungDetail.php b/application/views/lehre/anrechnung/approveAnrechnungDetail.php index 15887dfd5..995a032b7 100644 --- a/application/views/lehre/anrechnung/approveAnrechnungDetail.php +++ b/application/views/lehre/anrechnung/approveAnrechnungDetail.php @@ -167,6 +167,10 @@ $this->load->view( target="_blank">dokumentname) ?> + + + +
    ects ?>
    Bisher angerechnete ECTS + + p->t('anrechnung', 'bisherAngerechneteEcts'); ?> @@ -139,6 +140,7 @@ $this->load->view( [Schulisch: sumEctsSchulisch ?> / Beruflich: sumEctsBeruflich ?> ] +
    p->t('lehre', 'lektorInnen'); ?>
    p->t('global', 'begruendung'); ?>begruendung ?>
    From 7b9fd39bbc44c536efbdb4f22f8b000563253b66 Mon Sep 17 00:00:00 2001 From: Cris Date: Tue, 26 Jul 2022 18:18:08 +0200 Subject: [PATCH 42/72] Added: Hochschul-Qualifikation + ECTS Anzeige in Student View MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Checkbox zur Angabe von Hochschulqualifikation Anzeige, wenn ECTS Grenzen überschritten werden. --- .../lehre/anrechnung/requestAnrechnung.php | 38 ++++- .../js/lehre/anrechnung/requestAnrechnung.js | 149 ++++++++++++++++++ system/phrasesupdate.php | 81 +++++++++- 3 files changed, 264 insertions(+), 4 deletions(-) diff --git a/application/views/lehre/anrechnung/requestAnrechnung.php b/application/views/lehre/anrechnung/requestAnrechnung.php index 978dd5606..7b51898f6 100644 --- a/application/views/lehre/anrechnung/requestAnrechnung.php +++ b/application/views/lehre/anrechnung/requestAnrechnung.php @@ -31,7 +31,9 @@ $this->load->view( ), 'anrechnung' => array( 'deadlineUeberschritten', - 'benotungDerLV' + 'benotungDerLV', + 'anrechnungEctsTextBeiUeberschreitung', + 'anrechnungEctsTooltipTextBeiUeberschreitung' ), 'person' => array( 'student', @@ -80,9 +82,13 @@ $this->load->view(
    + - + + + +
    @@ -119,8 +125,23 @@ $this->load->view( p->t('lehre', 'ects'); ?> - ects ?> + ects, 1) ?> ECTS + + + p->t('anrechnung', 'bisherAngerechneteEcts'); ?> + + + + + + Total ECTS: sumEctsSchulisch + $antragData->sumEctsBeruflich, 1) ?> + [ Schulisch: sumEctsSchulisch ?> | + Beruflich: sumEctsBeruflich ?> ] + + + p->t('lehre', 'lektorInnen')); ?> @@ -152,6 +173,17 @@ $this->load->view(
    +
    + +