From 4a0170d7262def3a61fb95caf6c533140196bc6e Mon Sep 17 00:00:00 2001 From: Cris Date: Tue, 30 Apr 2019 16:28:57 +0200 Subject: [PATCH 01/24] Fixed Select language for menu in Reihungstesttool (CHROME Incompatibility) Now the select menu is working also on CHROME Browser. Also added Bootstrap. --- cis/testtool/topbar.php | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/cis/testtool/topbar.php b/cis/testtool/topbar.php index 9eb969c3b..c4ca24357 100644 --- a/cis/testtool/topbar.php +++ b/cis/testtool/topbar.php @@ -69,7 +69,6 @@ if(isset($_GET['sprache_user'])) $sprache_user = getSpracheUser(); $p = new phrasen($sprache_user); - ?> @@ -77,7 +76,11 @@ $p = new phrasen($sprache_user); + + + + + + + '; - } - } - else - { - echo ''.$p->t('testtool/keinPrueflingseintragVorhanden').''; - } - } - else - { - //LOGIN FORM (Startseite vor Login) - $prestudent_id_dummy_student = (defined('PRESTUDENT_ID_DUMMY_STUDENT')?PRESTUDENT_ID_DUMMY_STUDENT:''); + echo ''; + } + } - echo '
- '; - echo '  '.$p->t('global/geburtsdatum').': '; - echo ''; - echo '  '; - echo '
'; + echo '

'; + echo ' +
+ '.$p->t('testtool/klickenSieAufEinTeilgebiet').' +
+ '; - echo '


-
- '.$p->t('testtool/willkommenstext').' -
'; - } + if($pruefling->pruefling_id!='') + { + $_SESSION['pruefling_id']=$pruefling->pruefling_id; + echo ''; + } + } + else + { + echo ''.$p->t('testtool/keinPrueflingseintragVorhanden').''; + } +} +else +{ + //LOGIN FORM (Startseite vor Login) + $prestudent_id_dummy_student = (defined('PRESTUDENT_ID_DUMMY_STUDENT')?PRESTUDENT_ID_DUMMY_STUDENT:''); + + echo '
+ '; + echo '  '.$p->t('global/geburtsdatum').': '; + echo ''; + echo ''; + echo '
'; + + echo '


+
+ '.$p->t('testtool/willkommenstextTitel').'

+ '.$p->t('testtool/willkommenstext').' +
'; +} ?> diff --git a/cis/testtool/menu.php b/cis/testtool/menu.php index 88eedfd35..1c2a09f73 100644 --- a/cis/testtool/menu.php +++ b/cis/testtool/menu.php @@ -84,7 +84,7 @@ session_start(); - + db_fetch_object($result)) + { if($content_id->content_id!='') + { echo ' '.$p->t('testtool/einleitung').' - '; - + + '; + } + } echo ''; $studiengang_kz = (isset($_SESSION['studiengang_kz'])) ? $_SESSION['studiengang_kz'] : ''; diff --git a/locale/de-AT/testtool.php b/locale/de-AT/testtool.php index 554ef917e..ef01e13d6 100644 --- a/locale/de-AT/testtool.php +++ b/locale/de-AT/testtool.php @@ -4,8 +4,8 @@ $this->phrasen['testtool/login']='Login'; $this->phrasen['testtool/tag']='Tag'; $this->phrasen['testtool/monat']='Monat'; $this->phrasen['testtool/jahr']='Jahr'; -$this->phrasen['testtool/willkommenstext']='Herzlich Willkommen zum Reihungstest.

- Bitte warten Sie mit dem Login auf die Anweisung der Aufsichtsperson.

+$this->phrasen['testtool/willkommenstextTitel']='Herzlich Willkommen zum Reihungstest'; +$this->phrasen['testtool/willkommenstext']='Bitte warten Sie mit dem Login auf die Anweisung der Aufsichtsperson.

Wir wünschen Ihnen einen erfolgreichen Start ins Studium.'; $this->phrasen['testtool/nameAuswaehlen']='Name auswählen...'; $this->phrasen['testtool/quereinstieg']='(Quereinstieg)'; @@ -16,11 +16,12 @@ $this->phrasen['testtool/reihungstestNichtFreigeschalten']='Der zuteilte Reihung $this->phrasen['testtool/reihungstestKannNichtGeladenWerden']='Der Reihungstest dem Sie zugeteilt sind, kann nicht geladen werden'; $this->phrasen['testtool/geburtsdatumStimmtNichtUeberein']='Ihr Geburtsdatum stimmt nicht mit unseren Daten überein. Bitte wenden Sie sich an die Aufsichtsperson'; $this->phrasen['testtool/home']='Home'; -$this->phrasen['testtool/klickenSieAufEinTeilgebiet']='Klicken Sie links auf ein Teilgebiet'; +$this->phrasen['testtool/klickenSieAufEinTeilgebiet']='Zum Starten klicken Sie bitte links auf ein Teilgebiet.
Wir wünschen Ihnen viel Erfolg!'; $this->phrasen['testtool/gebietStarten']='Gebiet starten'; $this->phrasen['testtool/startseite']='Startseite'; $this->phrasen['testtool/zurueckZurStartseite']='Zurück zur Startseite'; -$this->phrasen['testtool/begruessungstext']='Willkommen zum Reihungstest der Fachhochschule Technikum Wien. Sie sind mit folgenden Daten angemeldet:'; +$this->phrasen['testtool/begruessungstext']="Willkommen zum Reihungstest der Fachhochschule Technikum Wien!"; +$this->phrasen['testtool/anmeldedaten']= "Sie sind mit folgenden Daten angemeldet:"; $this->phrasen['testtool/keineAntwort']='Keine Antwort'; $this->phrasen['testtool/speichernUndWeiter']='Speichern und weiter'; $this->phrasen['testtool/alleFragenBeantwortet']='GLÜCKWUNSCH! \n\nSie haben alle Fragen in der zur Verfügung stehenden Zeit beantwortet. \nNutzen Sie die verbleibende Zeit, um Ihre Antworten zu kontrollieren oder fahren Sie mit dem nächsten Teilgebiet fort'; diff --git a/locale/en-US/testtool.php b/locale/en-US/testtool.php index 76f2e75b9..d8154245e 100644 --- a/locale/en-US/testtool.php +++ b/locale/en-US/testtool.php @@ -4,8 +4,8 @@ $this->phrasen['testtool/login']='Login'; $this->phrasen['testtool/tag']='Day'; $this->phrasen['testtool/monat']='Month'; $this->phrasen['testtool/jahr']='Year'; -$this->phrasen['testtool/willkommenstext']='Welcome to the placement test.

- Please wait for the tutor\'s instructions before you log in.

+$this->phrasen['testtool/willkommenstextTitel']='Welcome to the placement test.'; +$this->phrasen['testtool/willkommenstext']='Please wait for the tutor\'s instructions before you log in.

We wish you a good start to your studies.'; $this->phrasen['testtool/nameAuswaehlen']='Choose name...'; $this->phrasen['testtool/quereinstieg']='(Lateral entry)'; @@ -20,7 +20,8 @@ $this->phrasen['testtool/klickenSieAufEinTeilgebiet']='Select a topic on the lef $this->phrasen['testtool/gebietStarten']='Start section'; $this->phrasen['testtool/startseite']='Startpage'; $this->phrasen['testtool/zurueckZurStartseite']='Back to startpage';; -$this->phrasen['testtool/begruessungstext']='Welcome to the placement test of the UAS Technikum Wien.
You are logged in with the following data:'; +$this->phrasen['testtool/begruessungstext']='Welcome to the placement test of the UAS Technikum Wien!'; +$this->phrasen['testtool/anmeldedaten']= "You are logged in with the following data:"; $this->phrasen['testtool/keineAntwort']='No Answer'; $this->phrasen['testtool/speichernUndWeiter']='Save and next'; $this->phrasen['testtool/alleFragenBeantwortet']='CONGRATULATIONS!\n\nYou have answered all the questions in the time allowed.\n Use the remaining time to check your answers or continue to the next section.'; diff --git a/skin/styles/tw.css b/skin/styles/tw.css index a2dabeb09..8adbcf7da 100644 --- a/skin/styles/tw.css +++ b/skin/styles/tw.css @@ -25,6 +25,12 @@ body.main /* Workaround fuer Farbverlauf im IE statt ShadowBox */ padding:0px; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#cccccc',endColorstr='#ffffff'); } +body.testtool-content +{ + /*/padding: 0px 50px 0px 50px;*/ + overflow: hidden; + width: 50%; +} html { height: 100%; @@ -81,6 +87,11 @@ li.ui-menu-item { list-style-image:none; } +.btn-testtool +{ + width: 200px; + margin-top: 20px; +} #menue { bottom: 2%; From 4b89a5dbe86b0c6338617d7220d4bd41940ba77a Mon Sep 17 00:00:00 2001 From: Cris Date: Tue, 30 Apr 2019 16:41:07 +0200 Subject: [PATCH 03/24] Styled frage page of Reihungstesttool. Slightly styled frage page according to starting page style changes. Added bootstrap. --- cis/testtool/frage.php | 43 +++++++++++++++++++++++++++++++----------- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/cis/testtool/frage.php b/cis/testtool/frage.php index 90c636918..b821ec57c 100644 --- a/cis/testtool/frage.php +++ b/cis/testtool/frage.php @@ -109,7 +109,10 @@ echo ' + + + - + t('testtool/bitteZuerstAnmelden')); @@ -358,7 +361,8 @@ if($result_pruefling = $db->db_query($qry_pruefling)) { if($row_pruefling = $db->db_fetch_object($result_pruefling)) { - $info = "$row_pruefling->vorname $row_pruefling->nachname, $row_pruefling->bezeichnung $row_pruefling->stg_bez"; + /*$info = "$row_pruefling->vorname $row_pruefling->nachname, $row_pruefling->bezeichnung $row_pruefling->stg_bez";*/ + $info = "$row_pruefling->vorname $row_pruefling->nachname"; } } @@ -400,13 +404,33 @@ if($levelgebiet) } //Zeit des Gebietes holen -echo '
'.$info.''.$fortschrittsbalken.'
'; +echo ' + + + + + + + + + + + + + + +
TeilnehmerIn: '.$info.'
'.$fortschrittsbalken.'
'; if($demo) { //Wenn es sich um ein Demobeispiel handelt, dann wird die Maximale Gesamtzeit angezeigt - echo "t("testtool/gebietStarten")."\" onclick=\"GebietStarten('".$db->convert_html_chars($gebiet->bezeichnung)."','".$stunde."','".$minute."','".$sekunde."','".$gebiet_id."')\" /> "; - echo '
'.$p->t('testtool/bearbeitungszeit').': '.$stunde.'h '.$minute.'m '.$sekunde.'s
'; + echo + $p->t('testtool/bearbeitungszeit').': '.$stunde.'h '.$minute.'m '.$sekunde.'s'; + echo ' +
+ '; + echo " + t("testtool/gebietStarten")."\" onclick=\"GebietStarten('".$db->convert_html_chars($gebiet->bezeichnung)."','".$stunde."','".$minute."','".$sekunde."','".$gebiet_id."')\" /> "; } else { @@ -630,7 +654,7 @@ if($frage->frage_id!='') if(!$demo) { - echo ''; + echo ''; } else { @@ -639,7 +663,7 @@ if($frage->frage_id!='') if($nextfrage) { - echo " ".$p->t("testtool/demo").""; + echo " ".$p->t("testtool/demo").""; } else { @@ -655,7 +679,7 @@ if($frage->frage_id!='') if($row->anzahl>1) { //Bei Demos den Weiter-Button nur anzeigen, wenn ausser der Startseite noch andere Demoseiten vorhanden sind - echo " ".$p->t("testtool/zurueckZurStartseite").""; + echo " ".$p->t("testtool/zurueckZurStartseite").""; } } } @@ -670,9 +694,6 @@ else echo "


".$p->t("testtool/startDrueckenUmZuBeginnen")."
"; } - - - ?> From eae51147f40d71bc00a5a2787617c63dfa6bde8d Mon Sep 17 00:00:00 2001 From: Cris Date: Tue, 30 Apr 2019 17:02:44 +0200 Subject: [PATCH 04/24] Styled same margin-top for start-, einleitung- and frage-page in RT-tool. --- cis/testtool/frage.php | 2 +- cis/testtool/index.html | 2 +- cis/testtool/login.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cis/testtool/frage.php b/cis/testtool/frage.php index b821ec57c..95ff2e77c 100644 --- a/cis/testtool/frage.php +++ b/cis/testtool/frage.php @@ -182,7 +182,7 @@ echo ' - + t('testtool/bitteZuerstAnmelden')); diff --git a/cis/testtool/index.html b/cis/testtool/index.html index e01075e46..88660a778 100644 --- a/cis/testtool/index.html +++ b/cis/testtool/index.html @@ -10,7 +10,7 @@ - + <body> diff --git a/cis/testtool/login.php b/cis/testtool/login.php index 875bcfd21..6359a1944 100644 --- a/cis/testtool/login.php +++ b/cis/testtool/login.php @@ -407,7 +407,7 @@ if (isset($prestudent_id)) //Prestudent Informationen echo ' - <h1>'. $p->t('testtool/begruessungstext'). '</h1><br/> + <h1 style="margin-top: -20px;">'. $p->t('testtool/begruessungstext'). '</h1><br/> <p>'. $p->t('testtool/anmeldedaten'). '</p><br/> '; From 625109071b87b4e9acf81978c550e27b6cc72e35 Mon Sep 17 00:00:00 2001 From: Cris <hainberg@technikum-wien.at> Date: Tue, 30 Apr 2019 17:05:41 +0200 Subject: [PATCH 05/24] Fixed wrong menu item width in RT-Tool Menu. When a group of gebiete were answered, then menu items were styled wrong. Now it is well-formed. --- cis/testtool/menu.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cis/testtool/menu.php b/cis/testtool/menu.php index 1c2a09f73..900539686 100644 --- a/cis/testtool/menu.php +++ b/cis/testtool/menu.php @@ -353,7 +353,7 @@ if (isset($_SESSION['pruefling_id'])) { //Gebiet ist zu Ende $style=''; - $class='ItemTesttoolBeendet'; + $class='ItemTesttool ItemTesttoolBeendet'; } } } From 2f38ab228b70a65d8fc4ccc24e540ae0844eab26 Mon Sep 17 00:00:00 2001 From: cris-technikum <hainberg@technikum-wien.at> Date: Tue, 30 Apr 2019 17:24:45 +0200 Subject: [PATCH 06/24] Fixed display of master-study on starting page. Added missing cells and data for Status and Reihungstest. Removed var_dump. --- cis/testtool/login.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cis/testtool/login.php b/cis/testtool/login.php index 6359a1944..013bd137b 100644 --- a/cis/testtool/login.php +++ b/cis/testtool/login.php @@ -504,8 +504,12 @@ if (isset($prestudent_id)) // * wenn Prestudent an einem Master-Studiengang interessiert ist, dann nur den einen STG anführen else { - echo '<pre>', print_r($typ,1),'</pre>'; + // Letzten Status für des Prestudenten einholen + $ps_master = new Prestudent(); + $ps_master->getLastStatus($prestudent_id); echo '<td>'. $typ->bezeichnung.' '.($sprache_user=='English'?$stg_obj->english:$stg_obj->bezeichnung).'</td>'; + echo '<td>'. $ps_master->status_kurzbz.'</td>'; + echo '<td>Basic</td>'; } echo ' From ea4bdaef07db69523e7f35ca72b4e9df4f6b5162 Mon Sep 17 00:00:00 2001 From: cris-technikum <hainberg@technikum-wien.at> Date: Tue, 30 Apr 2019 17:31:48 +0200 Subject: [PATCH 07/24] Fixed wrong menu item width in RT-Tool Menu (for active items) When a group of gebiete have been started, then menu items were styled wrong. Now it is well-formed. --- cis/testtool/menu.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cis/testtool/menu.php b/cis/testtool/menu.php index 900539686..1f364cc6f 100644 --- a/cis/testtool/menu.php +++ b/cis/testtool/menu.php @@ -339,7 +339,7 @@ if (isset($_SESSION['pruefling_id'])) { //Gebiet gestartet aber noch nicht zu ende $style=''; - $class='ItemTesttoolAktiv'; + $class='ItemTesttool ItemTesttoolAktiv'; } else { From defc8926c9457fb32e80ad49f83e4c12ab921572 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= <oesi@technikum-wien.at> Date: Fri, 3 May 2019 11:13:52 +0200 Subject: [PATCH 08/24] Spalte Anmeldefrist wird bei Reihungstestuebersicht per Default mit angezeigt --- system/filtersupdate.php | 1 + 1 file changed, 1 insertion(+) diff --git a/system/filtersupdate.php b/system/filtersupdate.php index 5ec998876..413b821af 100644 --- a/system/filtersupdate.php +++ b/system/filtersupdate.php @@ -353,6 +353,7 @@ $filters = array( {"name": "fakultaet"}, {"name": "datum"}, {"name": "uhrzeit"}, + {"name": "anmeldefrist"}, {"name": "oeffentlich"}, {"name": "studiengaenge"}, {"name": "freie_plaetze"}, From 02bd9d528ff12d3d276d08696c68421fddcd7708 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= <oesi@technikum-wien.at> Date: Fri, 3 May 2019 11:15:59 +0200 Subject: [PATCH 09/24] Fixed Bug where the Last Status was not displayed correctly on the gradelist --- application/controllers/person/Gradelist.php | 10 +++++++++- application/libraries/StudienplanLib.php | 6 ++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/application/controllers/person/Gradelist.php b/application/controllers/person/Gradelist.php index bf179ad35..70913061b 100644 --- a/application/controllers/person/Gradelist.php +++ b/application/controllers/person/Gradelist.php @@ -133,6 +133,11 @@ class Gradelist extends Auth_Controller if (in_array($row_status->status_kurzbz, array('Student','Diplomand','Incoming','Abbrecher','Unterbrecher','Absolvent'))) { + // Wenn das Semester schon vorhanden ist dann ueberspringen + // (bei mehreren Statuseintraegen im selben Semester (zB Absolvent / Diplomand) + if(isset($courses['semester'][$row_status->studiensemester_kurzbz])) + continue; + // LVs fuer das Semester holen lt Studienplan $lvtree = $this->studienplanlib->getLehrveranstaltungTree( $row_status->studienplan_id, @@ -184,7 +189,10 @@ class Gradelist extends Auth_Controller $courses['semester'][$row_noten->studiensemester_kurzbz]['lvs_nonstpl'][] = array( 'lehrveranstaltung_id' => $row_noten->lehrveranstaltung_id, 'lehrtyp_kurzbz' => $result_lv->retval[0]->lehrtyp_kurzbz, + 'lehrform_kurzbz' => $result_lv->retval[0]->lehrform_kurzbz, 'pflicht' => false, + 'sws' => $result_lv->retval[0]->sws, + 'zeugnis' => $result_lv->retval[0]->zeugnis, 'bezeichnung' => $result_lv->retval[0]->bezeichnung, 'ects' => $result_lv->retval[0]->ects, 'note' => $row_noten->note, @@ -316,7 +324,7 @@ class Gradelist extends Auth_Controller ); } - if ($row['childs']) + if (isset($row['childs'])) { $childgrades = $this->getGrades($row['childs']); $grades = array_merge($grades, $childgrades); diff --git a/application/libraries/StudienplanLib.php b/application/libraries/StudienplanLib.php index c40120721..ecc66e5bf 100644 --- a/application/libraries/StudienplanLib.php +++ b/application/libraries/StudienplanLib.php @@ -32,7 +32,10 @@ class StudienplanLib $treeitem = array( 'lehrveranstaltung_id' => $row->lehrveranstaltung_id, 'lehrtyp_kurzbz' => $row->lehrtyp_kurzbz, + 'lehrform_kurzbz' => $row->lehrform_kurzbz, + 'sws' => $row->sws, 'pflicht' => $row->pflicht, + 'zeugnis' => $row->zeugnis, 'bezeichnung' => $row->bezeichnung, 'ects' => $row->ects ); @@ -57,7 +60,10 @@ class StudienplanLib $treeitem = array( 'lehrveranstaltung_id' => $row->lehrveranstaltung_id, 'lehrtyp_kurzbz' => $row->lehrtyp_kurzbz, + 'lehrform_kurzbz' => $row->lehrform_kurzbz, + 'sws' => $row->sws, 'pflicht' => $row->pflicht, + 'zeugnis' => $row->zeugnis, 'bezeichnung' => $row->bezeichnung, 'ects' => $row->ects ); From 25acc66b0bf446cb373c68987b34842a29ca69a8 Mon Sep 17 00:00:00 2001 From: alex <karpen_ko@hotmail.com> Date: Fri, 3 May 2019 11:47:00 +0200 Subject: [PATCH 10/24] - Infocenter: orgform is displayed in Messages Quereinstieg and Quereinstieg kurz --- public/js/infocenter/infocenterDetails.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/public/js/infocenter/infocenterDetails.js b/public/js/infocenter/infocenterDetails.js index 087586c95..2b9401d29 100644 --- a/public/js/infocenter/infocenterDetails.js +++ b/public/js/infocenter/infocenterDetails.js @@ -560,6 +560,7 @@ var InfocenterDetails = { var ausbildungssemester = receiverPrestudentstatus.ausbildungssemester; var studiengangbezeichnung = receiverPrestudentstatus.studiengangbezeichnung; var studiengangbezeichnung_englisch = receiverPrestudentstatus.studiengangbezeichnung_englisch; + var orgform = typeof receiverPrestudentstatus.orgform === 'string' ? receiverPrestudentstatus.orgform : receiverPrestudentstatus.orgform_kurzbz; var msgvars = {}; if (rtfreigabe) @@ -572,7 +573,8 @@ var InfocenterDetails = { msgvars = { 'ausbildungssemester': ausbildungssemester, 'studiengangbezeichnung': studiengangbezeichnung, - 'studiengangbezeichnung_englisch': studiengangbezeichnung_englisch + 'studiengangbezeichnung_englisch': studiengangbezeichnung_englisch, + 'orgform': orgform }; InfocenterDetails.sendFreigabeMessage(prestudent_id, RTFREIGABE_MESSAGE_VORLAGE_QUER_KURZ, msgvars); @@ -587,7 +589,8 @@ var InfocenterDetails = { msgvars = { 'ausbildungssemester': ausbildungssemester, 'studiengangbezeichnung': studiengangbezeichnung, - 'studiengangbezeichnung_englisch': studiengangbezeichnung_englisch + 'studiengangbezeichnung_englisch': studiengangbezeichnung_englisch, + 'orgform': orgform }; vorlage = RTFREIGABE_MESSAGE_VORLAGE_QUER } From 6d20102723e2a408d576f24cb5c077c6430ae8f7 Mon Sep 17 00:00:00 2001 From: Nikolaus Krondraf <krondraf@technikum-wien.at> Date: Fri, 3 May 2019 13:23:15 +0200 Subject: [PATCH 11/24] Status 'offen' wird nur angezeigt wenn Benotung aktiviert ist --- cis/private/profile/studienplan.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/cis/private/profile/studienplan.php b/cis/private/profile/studienplan.php index 92350cb2c..dab3e4d73 100644 --- a/cis/private/profile/studienplan.php +++ b/cis/private/profile/studienplan.php @@ -477,12 +477,14 @@ function drawTree($tree, $depth) } else { - echo '<span>'.$p->t('studienplan/offen').'</span>'; + if ($row_tree->benotung) + echo '<span>'.$p->t('studienplan/offen').'</span>'; } } else { - echo '<span>'.$p->t('studienplan/offen').'</span>'; + if ($row_tree->benotung) + echo '<span>'.$p->t('studienplan/offen').'</span>'; } } //check if compatible course has grade @@ -498,7 +500,8 @@ function drawTree($tree, $depth) } else { - echo '<span>'.$p->t('studienplan/offen').'</span>'; + if ($row_tree->benotung) + echo '<span>'.$p->t('studienplan/offen').'</span>'; } } echo '</td>'; @@ -729,7 +732,8 @@ function checkKompatibleLvs($kompatibleLVs, $student, $row_tree, $noten_arr, $no } else { - echo '<span>'.$p->t('studienplan/offen').'</span>'; + if ($row_tree->benotung) + echo '<span>'.$p->t('studienplan/offen').'</span>'; } } } From 9c8512086a346e70dc5e98aa2b977800206b18f6 Mon Sep 17 00:00:00 2001 From: Manfred Kindl <kindlm@technikum-wien.at> Date: Fri, 3 May 2019 16:33:37 +0200 Subject: [PATCH 12/24] Bugfix jQuery-Fehler, wenn Rechte nicht vorhanden --- vilesci/stammdaten/reihungstestverwaltung.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/vilesci/stammdaten/reihungstestverwaltung.php b/vilesci/stammdaten/reihungstestverwaltung.php index 08078759d..8d5b1746f 100644 --- a/vilesci/stammdaten/reihungstestverwaltung.php +++ b/vilesci/stammdaten/reihungstestverwaltung.php @@ -2341,12 +2341,12 @@ $studienplaene_list = implode(',', array_keys($studienplaene_arr)); if ($rechte->isBerechtigt('lehre/reihungstest', $stg_rechtecheck->oe_kurzbz, 'sui')) { echo '<input id="studienplan_id" type="hidden" name="studienplan_id" value="">'; - echo '<input id="studienplan_autocomplete" type="text" name="studienplan" size="40" placeholder="Weiterer Studienplan" value="">'; + echo '<input id="studienplan_autocomplete" type="text" name="studienplan" size="50" placeholder="Weiterer Studienplan" value="">'; echo '<button type="submit" name="speichern"><img src="../../skin/images/list-add.png" alt="Studienplan hinzufügen" height="13px"></button>'; } else { - echo 'Keine Berechtigung zum Zuteilen von Studienplänen'; + echo '<input id="studienplan_autocomplete" type="text" name="studienplan" size="50" placeholder="Keine Berechtigung zum Zuteilen von Studienplänen" value="" disabled>'; } echo '</td>'; echo '</tr>'; @@ -2384,7 +2384,7 @@ $studienplaene_list = implode(',', array_keys($studienplaene_arr)); } else { - echo '<td colspan="2">Keine Berechtigung zum Zuteilen von Räumen</td>'; + echo '<td colspan="2"><input id="ort" type="text" name="ort_kurzbz" size="50" placeholder="Keine Berechtigung zum Zuteilen von Räumen" value="" disabled></td>'; } $orte = new Reihungstest(); $orte->getOrteReihungstest($reihungstest->reihungstest_id); From 464aff25106dd64a1ec2c3ab8ca27cd155bba16f Mon Sep 17 00:00:00 2001 From: Manfred Kindl <kindlm@technikum-wien.at> Date: Fri, 3 May 2019 16:39:02 +0200 Subject: [PATCH 13/24] Auswertung FHTW - Checken, ob Abgewiesener-Status vorhanden ist - Checken, ob Gesamtpunkte gesetzt, wenn zu Bewerber gemacht wird --- vilesci/stammdaten/auswertung_fhtw.php | 83 ++++++++++++++++++++------ 1 file changed, 64 insertions(+), 19 deletions(-) diff --git a/vilesci/stammdaten/auswertung_fhtw.php b/vilesci/stammdaten/auswertung_fhtw.php index 101e12494..a87260940 100644 --- a/vilesci/stammdaten/auswertung_fhtw.php +++ b/vilesci/stammdaten/auswertung_fhtw.php @@ -828,27 +828,43 @@ if ($punkteUebertragen) // Checken, ob schon Bewerberstatus vorhanden ist if (!$prestudent->load_rolle($array['prestudent_id'], 'Bewerber', $prestudentrolle->studiensemester_kurzbz, $prestudentrolle->ausbildungssemester)) { - $prestudent->new = true; - $prestudent->prestudent_id = $array['prestudent_id']; - $prestudent->status_kurzbz = 'Bewerber'; - $prestudent->studiensemester_kurzbz = $prestudentrolle->studiensemester_kurzbz; - $prestudent->ausbildungssemester = $prestudentrolle->ausbildungssemester; - $prestudent->datum =date('Y-m-d'); - $prestudent->insertamum = date('Y-m-d H:i:s'); - $prestudent->insertvon = $user; - $prestudent->orgform_kurzbz = $prestudentrolle->orgform_kurzbz; - $prestudent->bestaetigtam = $prestudentrolle->bestaetigtam; - $prestudent->bestaetigtvon = $prestudentrolle->bestaetigtvon; - $prestudent->bewerbung_abgeschicktamum = $prestudentrolle->bewerbung_abgeschicktamum; - $prestudent->studienplan_id = $prestudentrolle->studienplan_id; - - if (!$prestudent->save_rolle()) + // Checken, ob Abgewiesener-Status vorhanden ist + if (!$prestudent->load_rolle($array['prestudent_id'], 'Abgewiesener', $prestudentrolle->studiensemester_kurzbz, $prestudentrolle->ausbildungssemester)) { - $msg_error .= '<br>Fehler beim speichern des Bewerberstatus für Prestudent '.$array['prestudent_id'].': ' . $prestudent->errormsg; + // Um einen Bewerberstatus zu setzen, muss "reihungstestangetreten" true sein + if ($prestudent->reihungstestangetreten == true) + { + $prestudent->new = true; + $prestudent->prestudent_id = $array['prestudent_id']; + $prestudent->status_kurzbz = 'Bewerber'; + $prestudent->studiensemester_kurzbz = $prestudentrolle->studiensemester_kurzbz; + $prestudent->ausbildungssemester = $prestudentrolle->ausbildungssemester; + $prestudent->datum = date('Y-m-d'); + $prestudent->insertamum = date('Y-m-d H:i:s'); + $prestudent->insertvon = $user; + $prestudent->orgform_kurzbz = $prestudentrolle->orgform_kurzbz; + $prestudent->bestaetigtam = ''; + $prestudent->bestaetigtvon = ''; + $prestudent->bewerbung_abgeschicktamum = ''; + $prestudent->studienplan_id = $prestudentrolle->studienplan_id; + + if (!$prestudent->save_rolle()) + { + $msg_error .= '<br>Fehler beim speichern des Bewerberstatus für Prestudent '.$array['prestudent_id'].': '.$prestudent->errormsg; + } + else + { + $count_success_bewerber++; + } + } + else + { + $msg_error .= '<br>Fehler beim speichern des Bewerberstatus für Prestudent '.$array['prestudent_id'].'. Zuerst muss "Reihungstestverfahren absolviert" gesetzt sein.'; + } } else { - $count_success_bewerber++; + $msg_error .= '<br>Fehler beim speichern des Bewerberstatus für Prestudent '.$array['prestudent_id'].'. Es ist bereits ein Abgewiesener-Status vorhanden'; } } else @@ -2125,6 +2141,30 @@ else { $("#uebertragenOptions").toggle(300); }); + + if($("#uebertragenOptionGesamtpunkte").not(":checked")) + { + $("#div_checkbox_bewerber").addClass("disabled"); + $("#div_checkbox_bewerber").find("label").addClass("text-muted"); + $("#div_checkbox_bewerber").find("label").prop("title", "Erst \"Gesamtpunkte\" und \"Reihungsverfahren absolviert\" setzen"); + $("#uebertragenOptionBewerber").prop("disabled", true); + } + $("#uebertragenOptionGesamtpunkte").on("click", function(e) + { + if($(this).is(":checked")) + { + $("#div_checkbox_bewerber").removeClass("disabled"); + $("#div_checkbox_bewerber").find("label").removeClass("text-muted"); + $("#uebertragenOptionBewerber").prop("disabled", false); + } + else + { + $("#div_checkbox_bewerber").addClass("disabled"); + $("#div_checkbox_bewerber").find("label").addClass("text-muted"); + $("#div_checkbox_bewerber").find("label").prop("title", "Erst \"Gesamtpunkte\" und \"Reihungsverfahren absolviert\" setzen"); + $("#uebertragenOptionBewerber").prop("disabled", true); + } + }); }); function deleteResult(prestudent_id, gebiet_id, name, gebiet_bezeichnung) @@ -2387,6 +2427,11 @@ else alert("Bitte wählen Sie mindestens einen Eintrag aus der Liste"); return false; } + else if ($("#uebertragenOptionBewerber:checked").length === 1 && $("#uebertragenOptionGesamtpunkte:checked").length !== 1) + { + alert("Um den Bewerberstatus setzen zu können, muss \"Gesamtpunkte\" und \"Reihungsverfahren absolviert\" gesetzt sein"); + return false; + } else { //if (confirm("Setzt bei allen markierten Personen \'Zum Reihungstest angetreten\' und informiert die entsprechende Studiengangsassistenz. Wollen Sie fortfahren?")) @@ -2745,8 +2790,8 @@ else <div class="checkbox"> <label><input type="checkbox" id="uebertragenOptionGesamtpunkte" value="">"Gesamtpunkte" und "Reihungsverfahren absolviert" setzen</label> </div> - <div class="checkbox"> - <label><input type="checkbox" id="uebertragenOptionBewerber" value="">Zu Bewerber machen</label> + <div id="div_checkbox_bewerber" class="checkbox"> + <label class="checkbox_bewerber"><input type="checkbox" id="uebertragenOptionBewerber" value="">Zu Bewerber machen</label> </div> <button type="button" class="btn btn-success" onclick="punkteUebertragen('.$reihungstest.')" id="punkteUebertragenButton" style="margin-left: 10px">Jetzt übertragen</button> </div> From 6f4c76162ed032c7760f2874147cb843347a444c Mon Sep 17 00:00:00 2001 From: Manfred Kindl <kindlm@technikum-wien.at> Date: Fri, 3 May 2019 16:40:14 +0200 Subject: [PATCH 14/24] BugFix Bezeichnung Studiensemester englisch --- system/xsl/StudienblattEng_Lehrgaenge.xsl | 36 +++++++++++++++++++++-- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/system/xsl/StudienblattEng_Lehrgaenge.xsl b/system/xsl/StudienblattEng_Lehrgaenge.xsl index 07a406beb..664fe6d7d 100644 --- a/system/xsl/StudienblattEng_Lehrgaenge.xsl +++ b/system/xsl/StudienblattEng_Lehrgaenge.xsl @@ -447,7 +447,17 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn </table:table-cell> <table:table-cell table:style-name="Tabelle3.A1" office:value-type="string"> <text:p text:style-name="P2"> - <text:span text:style-name="T4"><xsl:value-of select="studiensemester_beginn"/></text:span></text:p> + <text:span text:style-name="T4"> + <!-- Deutsches "Sommersemester" auf englisches "Summersemester" ändern --> + <xsl:choose> + <xsl:when test="substring(studiensemester_beginn, 1, 6)='Sommer'"> + Summer<xsl:value-of select="substring(studiensemester_beginn,7)" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="studiensemester_beginn"/> + </xsl:otherwise> + </xsl:choose> + </text:span></text:p> </table:table-cell> </table:table-row> <table:table-row table:style-name="Tabelle3.1"> @@ -456,7 +466,17 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn </table:table-cell> <table:table-cell table:style-name="Tabelle3.A1" office:value-type="string"> <text:p text:style-name="P2"> - <text:span text:style-name="T4"><xsl:value-of select="studiensemester_aktuell"/></text:span></text:p> + <text:span text:style-name="T4"> + <!-- Deutsches "Sommersemester" auf englisches "Summersemester" ändern --> + <xsl:choose> + <xsl:when test="substring(studiensemester_aktuell, 1, 6)='Sommer'"> + Summer<xsl:value-of select="substring(studiensemester_aktuell,7)" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="studiensemester_aktuell"/> + </xsl:otherwise> + </xsl:choose> + </text:span></text:p> </table:table-cell> </table:table-row> <table:table-row table:style-name="Tabelle3.1"> @@ -502,7 +522,17 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn </table:table-cell> <table:table-cell table:style-name="Tabelle3.A1" office:value-type="string"> <text:p text:style-name="P2"> - <text:span text:style-name="T4"><xsl:value-of select="voraussichtlichLetztesStudiensemester"/></text:span></text:p> + <text:span text:style-name="T4"> + <!-- Deutsches "Sommersemester" auf englisches "Summersemester" ändern --> + <xsl:choose> + <xsl:when test="substring(voraussichtlichLetztesStudiensemester, 1, 6)='Sommer'"> + Summer<xsl:value-of select="substring(voraussichtlichLetztesStudiensemester,7)" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="voraussichtlichLetztesStudiensemester"/> + </xsl:otherwise> + </xsl:choose> + </text:span></text:p> </table:table-cell> </table:table-row> <table:table-row table:style-name="Tabelle3.1"> From 855a24968daaa3dbd33f9c4d401c84cb0e506720 Mon Sep 17 00:00:00 2001 From: Manfred Kindl <kindlm@technikum-wien.at> Date: Fri, 3 May 2019 16:46:05 +0200 Subject: [PATCH 15/24] Refactor cronjob remindApplicantsOfPlacementTest - renamed function - extend function with params $bcc and $from to set bcc-receivers and sender - changed function getWorkingDays to isDateWorkingDay - changed function getNextPlacementtestDate to getNextPlacementtests - extend function getNextPlacementtests with optional $days param --- .../controllers/jobs/ReihungstestJob.php | 155 +++++++++++------- application/helpers/hlp_common_helper.php | 134 ++++++--------- application/models/crm/Reihungstest_model.php | 13 +- 3 files changed, 150 insertions(+), 152 deletions(-) diff --git a/application/controllers/jobs/ReihungstestJob.php b/application/controllers/jobs/ReihungstestJob.php index 7f952f96f..49b19e13b 100644 --- a/application/controllers/jobs/ReihungstestJob.php +++ b/application/controllers/jobs/ReihungstestJob.php @@ -315,77 +315,114 @@ class ReihungstestJob extends FHC_Controller } } - public function runRemindApplicantsOfPlacementTestJob() + /* + * Sends an email to all applicants of a placement test to remind them 3 working days before + * + * @param integer $degreeProgram. Kennzahl of Degree Program to check + * @param string $bcc. Optional. BCC-Mailadress to send the Mails to + * @param string $from. Optional. Sender-Mailadress shown to recipient + */ + public function remindApplicantsOfPlacementTest() { - // Get placement tests with testdate within 3 working days + $degreeProgram = $this->input->get('degreeprogram'); + $bcc = $this->input->get('bcc'); + $from = $this->input->get('from'); - // Check if today +3 days is working day - $todayPlus3 = date('Y-m-d', strtotime("+3 days")); - - if (getWorkingDays($todayPlus3, $todayPlus3) == 0) + // Encode Params + if ($bcc != '') { - // If not increase counting days till next working day - for ($i = 3; $i < 100; $i++) + $bcc = urldecode($bcc); + } + if ($from != '') + { + $from = urldecode($from); + } + + // Get placement tests with testdate within the next 2 weeks + $resultNextTestDates = $this->ReihungstestModel->getNextPlacementtests($degreeProgram, 14); + if (hasData($resultNextTestDates)) + { + $nextTestDates = $resultNextTestDates->retval; + $enddate = ''; + // Loop through the dates + foreach ($nextTestDates as $testDates) { - $dateToCheck = date('Y-m-d', strtotime("+".$i." days")); - if (getWorkingDays($dateToCheck, $dateToCheck) == 1) + $workingdays = 0; + $testsOndate = array(); + + // Deduct days till 3 working days are reached + for ($i = 1; ; $i++) { - $nextWorkingDay = $dateToCheck; - break; + if (isDateWorkingDay($testDates->datum, $i) === true) + { + $workingdays++; + } + if ($workingdays == 3) + { + $enddate = date("Y-m-d", strtotime("$testDates->datum -".$i." days")); + break; + } + else + { + continue; + } } - } - } - else - { - $nextWorkingDay = date('Y-m-d', strtotime("+3 days")); - } - // Check if a placement test happens on $nextWorkingDay - $result = $this->ReihungstestModel->getTestsOnDate($nextWorkingDay, 11000); + // If $enddate is today -> load all tests of $testDates->datum + if (date("Y-m-d", strtotime($enddate)) == date('Y-m-d')) + { + $resultTestsOnDate = $this->ReihungstestModel->getTestsOnDate($testDates->datum, $degreeProgram); - $testsOndate = array(); + if (hasData($resultTestsOnDate)) + { + $testsOndate = $resultTestsOnDate->retval; + } + elseif (isError($resultTestsOnDate)) + { + show_error($resultTestsOnDate->error); + } + } - if (hasData($result)) - { - $testsOndate = $result->retval; - } - elseif (isError($result)) - { - show_error($result->error); - } + if (!isEmptyArray($testsOndate)) + { + foreach ($testsOndate as $reihungstest) + { + // Loads applicants of a test + $applicants = $this->ReihungstestModel->getApplicantsOfPlacementTest($reihungstest->reihungstest_id); - $applicants_arr = array(); + if (hasData($applicants)) + { + $applicants_arr = $applicants->retval; + } + elseif (isError($applicants)) + { + show_error($applicants->error); + } - foreach ($testsOndate as $reihungstest) - { - // Loads applicants of a test - $applicants = $this->ReihungstestModel->getApplicantsOfPlacementTest($reihungstest->reihungstest_id); + foreach ($applicants_arr as $applicant) + { + $mailcontent_data_arr = array(); + $mailcontent_data_arr['anrede'] = $applicant->anrede; + $mailcontent_data_arr['nachname'] = $applicant->nachname; + $mailcontent_data_arr['vorname'] = $applicant->vorname; + $mailcontent_data_arr['rt_datum'] = date_format(date_create($reihungstest->datum), 'd.m.Y'); + $mailcontent_data_arr['rt_uhrzeit'] = date_format(date_create($reihungstest->uhrzeit), 'H:i'); + $mailcontent_data_arr['rt_raum'] = $applicant->planbezeichnung; + $mailcontent_data_arr['wegbeschreibung'] = $applicant->lageplan; - if (hasData($applicants)) - { - $applicants_arr = $applicants->retval; - } - elseif (isError($applicants)) - { - show_error($applicants->error); - } - - foreach ($applicants_arr as $applicant) - { - $mailcontent_data_arr = array(); - $mailcontent_data_arr['anrede'] = $applicant->anrede; - $mailcontent_data_arr['nachname'] = $applicant->nachname; - $mailcontent_data_arr['vorname'] = $applicant->vorname; - $mailcontent_data_arr['rt_datum'] = date_format(date_create($reihungstest->datum), 'd.m.Y'); - $mailcontent_data_arr['rt_uhrzeit'] = date_format(date_create($reihungstest->uhrzeit), 'H:i'); - $mailcontent_data_arr['rt_raum'] = $applicant->planbezeichnung; - $mailcontent_data_arr['wegbeschreibung'] = $applicant->lageplan; - - sendSanchoMail( - 'Sancho_RemindApplicantsOfTest', - $mailcontent_data_arr, - array($applicant->email,'kindlm@technikum-wien.at'), - 'Ihre Anmeldung zum Reihungstest - Reminder / Your registration for the placement test - Reminder'); + sendSanchoMail( + 'Sancho_RemindApplicantsOfTest', + $mailcontent_data_arr, + $applicant->email, + 'Ihre Anmeldung zum Reihungstest - Reminder / Your registration for the placement test - Reminder', + DEFAULT_SANCHO_HEADER_IMG, + DEFAULT_SANCHO_FOOTER_IMG, + $from, + '', + $bcc); + } + } + } } } } diff --git a/application/helpers/hlp_common_helper.php b/application/helpers/hlp_common_helper.php index 8213dc105..bc09cd32c 100644 --- a/application/helpers/hlp_common_helper.php +++ b/application/helpers/hlp_common_helper.php @@ -169,98 +169,58 @@ function isEmptyArray($array) } /** - * The function returns the number of business days between two dates and it skips the (static) holidays - * @param string $startDate Date (YYYY-MM-DD) to start counting from (included) - * @param string $endDate Date (YYYY-MM-DD) to end counting (included) - * @param array $dynamic_holidays Optional. Static holidays that have the same date every year are included automatically. - * You can give an array with dates (YYYY-MM-DD) that should be included furthermore - * @return integer Number of working days between $startDate and $endDate + * The function checks if a date is a working day (true) or a holiday (false) + * @param string $date Date (YYYY-MM-DD) to check if working day or holiday + * @param string $days Optional. Number of days to deduct from $date + * @return boolean True, if $date is a working day, false if not */ -function getWorkingDays($startDate, $endDate, $dynamic_holidays = array()) +function isDateWorkingDay($date, $days = null) { - //Get year of $startDate - $startYear = substr($startDate, 0, 4); - //Get year of $endDate - $endYear = substr($endDate, 0, 4); - - $datediff = $endYear - $startYear; + // Array of static Austrian holidays $austrian_holidays = array(); - for ($i = 0; $i <= $datediff; $i++) + //Get year of $resultDate + $startYear = substr($date, 0, 4); + + $austrian_holidays[] = $startYear.'-01-01'; // Neujahr + $austrian_holidays[] = $startYear.'-01-06'; // 3 Könige + $austrian_holidays[] = $startYear.'-05-01'; // Staatsfeiertag + $austrian_holidays[] = $startYear.'-08-15'; // Maria Himmelfahrt + $austrian_holidays[] = $startYear.'-10-26'; // Nationalfeiertag + $austrian_holidays[] = $startYear.'-11-01'; // Allerheiligen + $austrian_holidays[] = $startYear.'-12-08'; // Maria Empfängnis + $austrian_holidays[] = $startYear.'-12-25'; // Weihnachten + $austrian_holidays[] = $startYear.'-12-26'; // Stefanitag + + $ostersonntag = date("Y-m-d", easter_date($startYear)); + + //Ostermontag + $austrian_holidays[] = date("Y-m-d", strtotime($ostersonntag. "+ 1 days")); // Ostersonntag + 1 + + //Christi Himmelfahrt + $austrian_holidays[] = date("Y-m-d", strtotime($ostersonntag. "+ 39 days")); // Ostersonntag + 39 + + //Pfingstmontag + $austrian_holidays[] = date("Y-m-d", strtotime($ostersonntag. "+ 50 days")); // Ostersonntag + 50 + + //Fronleichnam + $austrian_holidays[] = date("Y-m-d", strtotime($ostersonntag. "+ 60 days")); // Ostersonntag + 60 + + if ($days != '') { - $austrian_holidays[] = $startYear.'-01-01'; // Neujahr - $austrian_holidays[] = $startYear.'-01-06'; // 3 Könige - $austrian_holidays[] = $startYear.'-05-01'; // Staatsfeiertag - $austrian_holidays[] = $startYear.'-08-15'; // Maria Himmelfahrt - $austrian_holidays[] = $startYear.'-10-26'; // Nationalfeiertag - $austrian_holidays[] = $startYear.'-11-01'; // Allerheiligen - $austrian_holidays[] = $startYear.'-12-08'; // Maria Empfängnis - $austrian_holidays[] = $startYear.'-12-25'; // Weihnachten - $austrian_holidays[] = $startYear.'-12-26'; // Stefanitag - $startYear++; + if (date("w", strtotime("$date -".$days." days")) == 0 + || date("w", strtotime("$date -".$days." days")) == 6 + || in_array(date("Y-m-d", strtotime("$date -".$days." days")), $austrian_holidays)) + return false; + else + return true; } - if (count($dynamic_holidays) > 0) + else { - $austrian_holidays = array_merge($austrian_holidays, $dynamic_holidays); + if (date("w", strtotime($date)) == 0 + || date("w", strtotime($date)) == 6 + || in_array(date("Y-m-d", strtotime($date)), $austrian_holidays)) + return false; + else + return true; } - // do strtotime calculations just once - $endDate = strtotime($endDate); - $startDate = strtotime($startDate); - - //The total number of days between the two dates. We compute the no. of seconds and divide it to 60*60*24 - //We add one to inlude both dates in the interval. - $days = ($endDate - $startDate) / 86400 + 1; - - $no_full_weeks = floor($days / 7); - $no_remaining_days = fmod($days, 7); - - //It will return 1 if it's Monday,.. ,7 for Sunday - $the_first_day_of_week = date("N", $startDate); - $the_last_day_of_week = date("N", $endDate); - - //---->The two can be equal in leap years when february has 29 days, the equal sign is added here - //In the first case the whole interval is within a week, in the second case the interval falls in two weeks. - if ($the_first_day_of_week <= $the_last_day_of_week) - { - if ($the_first_day_of_week <= 6 && 6 <= $the_last_day_of_week) $no_remaining_days--; - if ($the_first_day_of_week <= 7 && 7 <= $the_last_day_of_week) $no_remaining_days--; - } - else { - // (edit by Tokes to fix an edge case where the start day was a Sunday - // and the end day was NOT a Saturday) - - // the day of the week for start is later than the day of the week for end - if ($the_first_day_of_week == 7) { - // if the start date is a Sunday, then we definitely subtract 1 day - $no_remaining_days--; - - if ($the_last_day_of_week == 6) { - // if the end date is a Saturday, then we subtract another day - $no_remaining_days--; - } - } - else { - // the start date was a Saturday (or earlier), and the end date was (Mon..Fri) - // so we skip an entire weekend and subtract 2 days - $no_remaining_days -= 2; - } - } - - //The no. of business days is: (number of weeks between the two dates) * (5 working days) + the remainder - //---->february in none leap years gave a remainder of 0 but still calculated weekends between first and last day, this is one way to fix it - $workingDays = $no_full_weeks * 5; - if ($no_remaining_days > 0 ) - { - $workingDays += $no_remaining_days; - } - - //We subtract the holidays - foreach($austrian_holidays as $key=>$value) - { - $time_stamp=strtotime($value); - //If the holiday doesn't fall in weekend - if ($startDate <= $time_stamp && $time_stamp <= $endDate && date("N",$time_stamp) != 6 && date("N",$time_stamp) != 7) - $workingDays--; - } - - return $workingDays; } diff --git a/application/models/crm/Reihungstest_model.php b/application/models/crm/Reihungstest_model.php index 6102c2b5e..6068c246f 100644 --- a/application/models/crm/Reihungstest_model.php +++ b/application/models/crm/Reihungstest_model.php @@ -474,22 +474,23 @@ class Reihungstest_model extends DB_Model } /** - * Loads the date of the next placement test to the given degree program - * @param integer $studiengang_kz Kennzahl of degree program to load the next placement test date - * @return string Returns date of the next placement test + * Loads the dates of the next placement tests within $days days to the given degree program + * @param integer $studiengang_kz Kennzahl of degree program to load the next placement tests + * @param integer $days Number of days in the future to load + * @return string Returns dates of the next placement test */ - public function getNextPlacementtestDate($studiengang_kz) + public function getNextPlacementtests($studiengang_kz, $days) { $query = ' SELECT * FROM PUBLIC.tbl_reihungstest WHERE studiengang_kz = ? AND datum > now() + AND datum <= now() + interval ? ORDER BY datum ASC - LIMIT 1 '; - return $this->execQuery($query, array($studiengang_kz)); + return $this->execQuery($query, array($studiengang_kz, $days.' days')); } /** From 69d624b8418e42ae3ac3196e9fec5a12cdd088ad Mon Sep 17 00:00:00 2001 From: Manfred Kindl <kindlm@technikum-wien.at> Date: Mon, 6 May 2019 14:06:44 +0200 Subject: [PATCH 16/24] Fixed display of dragAndDrop filters --- application/views/widgets/filter/selectFields.php | 2 +- public/css/FilterWidget.css | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/application/views/widgets/filter/selectFields.php b/application/views/widgets/filter/selectFields.php index 644bbf277..74b27cfd4 100644 --- a/application/views/widgets/filter/selectFields.php +++ b/application/views/widgets/filter/selectFields.php @@ -1,6 +1,6 @@ <div id="dragAndDropFieldsArea" class="drag-and-drop-fields-area"></div> -<div> +<div class="add-filter-div"> <span class="filter-span-label"> <?php echo ucfirst($this->p->t('filter', 'feldHinzufuegen')); ?>: </span> diff --git a/public/css/FilterWidget.css b/public/css/FilterWidget.css index 3d72b0b2f..295dff8ec 100644 --- a/public/css/FilterWidget.css +++ b/public/css/FilterWidget.css @@ -22,15 +22,23 @@ .drag-and-drop-fields-area { height: 50px; + display: inline; } .drag-and-drop-fields-span { border: 1px solid black; border-radius: 7px; - margin-left: 3px; - margin-right: 3px; - padding: 10px; + /*margin-left: 3px;*/ + margin-right: 6px; + margin-bottom: 10px; + padding: 5px 10px; top: 10px; + display: inline-block; +} + +.add-filter-div +{ + margin-top: 10px; } .drag-and-drop-fields-span:hover { From e2cea2ab583b7047ecdcaaf16ed880190988c018 Mon Sep 17 00:00:00 2001 From: Cris <hainberg@technikum-wien.at> Date: Mon, 6 May 2019 15:48:57 +0200 Subject: [PATCH 17/24] Translated new text components in RT-Tool starting page . Translated new text components into English. Now the starting page is available in German and English. . Minor HTML-tag correction at login.php. --- cis/testtool/frage.php | 2 -- cis/testtool/login.php | 61 ++++++++++++++++++++++----------------- locale/de-AT/testtool.php | 3 ++ locale/en-US/testtool.php | 5 +++- 4 files changed, 41 insertions(+), 30 deletions(-) diff --git a/cis/testtool/frage.php b/cis/testtool/frage.php index 95ff2e77c..ec1f57ca0 100644 --- a/cis/testtool/frage.php +++ b/cis/testtool/frage.php @@ -361,7 +361,6 @@ if($result_pruefling = $db->db_query($qry_pruefling)) { if($row_pruefling = $db->db_fetch_object($result_pruefling)) { - /*$info = "$row_pruefling->vorname $row_pruefling->nachname, $row_pruefling->bezeichnung $row_pruefling->stg_bez";*/ $info = "$row_pruefling->vorname $row_pruefling->nachname"; } } @@ -401,7 +400,6 @@ if($levelgebiet) </tr> </table>'; $fortschrittsbalken .= '<span class="smallb"><b> '.$aktuell.' / '.$max.'</b> ['.number_format($psolved,1,'.','').'%]</span>'; - } //Zeit des Gebietes holen echo ' diff --git a/cis/testtool/login.php b/cis/testtool/login.php index 013bd137b..0ef8aab15 100644 --- a/cis/testtool/login.php +++ b/cis/testtool/login.php @@ -429,25 +429,26 @@ if (isset($prestudent_id)) '; echo '<br>'; echo ' - <p>Für folgende Studiengänge haben Sie sich zum Reihungstest angemeldet:</p><br> - - <table class="table table-bordered"> - <tr> - <thead> - <th>Studiengang</th> + <p>'. $p->t('testtool/fuerFolgendeStgAngemeldet'). '</p><br> + + <table class="table table-bordered"> + <thead> + <tr> + <th>'. $p->t('global/studiengang'). '</th> <th>Status</th> - <th>Reihungstest</th> - </thead> - </tr> + <th>'. $p->t('testtool/reihungstest'). '</th> + </tr> + </thead> + <tbody> '; - // * wenn Prestudent an mehreren Bachelor-Studiengängen interessiert ist, dann alle STG anführen + // * wenn Prestudent an 1 - n Bachelor-Studiengängen interessiert ist, dann STG anführen if ($typ->typ == 'b') { - $ps_arr = new Prestudent(); - $ps_arr->getActualInteressenten($prestudent_id, false, 'b'); + $ps_arr = new Prestudent(); + $ps_arr->getActualInteressenten($prestudent_id, false, 'b'); - if (count($ps_arr->result) > 1) + if (count($ps_arr->result) > 0) { // Jeweils letzten Status ermitteln (ob Interessent oder Abgewiesener) foreach ($ps_arr->result as $ps_obj) @@ -473,13 +474,13 @@ if (isset($prestudent_id)) echo '<td style="width: 50%;">'. $ps_obj->typ_bz .' '. ($sprache_user == 'English' ? $stg->english : $stg->bezeichnung). '</td>'; if($ps_obj->ausbildungssemester == '1') { - echo '<td>Regulärer Einstieg (1. Semester)</td>'; + echo '<td>'. $p->t('testtool/regulaererEinstieg'). ' (1. Semester)</td>'; echo '<td>Basic</td>'; } elseif($ps_obj->ausbildungssemester == '3') { - echo '<td>Quereinsteiger (3.Semester)</td>'; - echo '<td>Basic + Quereinsteiger</td>'; + echo '<td>'. $p->t('testtool/Quereinsteiger'). ' (3.Semester)</td>'; + echo '<td>Basic + '. $p->t('testtool/Quereinsteiger'). '</td>'; } } // wenn letzter Status \'Abgewiesener\' ist, dann als solchen kennzeichnen @@ -492,14 +493,8 @@ if (isset($prestudent_id)) '; } echo '</tr>'; - } } - // * wenn Prestudent nur an einem Bachelor-Studiengang interessiert ist, dann nur den einen STG anführen - else - { - echo '<td>'. $typ->bezeichnung.' '.($sprache_user=='English'?$stg_obj->english:$stg_obj->bezeichnung).'</td>>'; - } } // * wenn Prestudent an einem Master-Studiengang interessiert ist, dann nur den einen STG anführen else @@ -512,9 +507,10 @@ if (isset($prestudent_id)) echo '<td>Basic</td>'; } - echo ' - </table> - '; + echo ' + </tbody> + </table> + '; echo '<br>'; @@ -547,16 +543,27 @@ if (isset($prestudent_id)) { echo ' <p>'. $p->t('testtool/spracheDerTestfragen').':</p><br> - <div class="btn-group btn-group-justified" role="group" style="width: 50%"> '; while($row = $db->db_fetch_object($result)) { $selected = ($_SESSION['sprache'] == $row->sprache) ? 'active' : ''; + $row_sprache = $row->sprache; + if ($sprache_user == 'German') + { + if($row->sprache == 'English') + { + $row_sprache = 'Englisch'; + } + elseif ($row->sprache == 'German') + { + $row_sprache = 'Deutsch'; + } + } echo " <div class='btn-group' role='group'> - <a role='button' class='btn btn-default $selected' href='". $_SERVER['PHP_SELF']. "?type=sprachechange&sprache=". $row->sprache. "'>$row->sprache</a> + <a role='button' class='btn btn-default $selected' href='". $_SERVER['PHP_SELF']. "?type=sprachechange&sprache=". $row->sprache. "'>$row_sprache</a> </div> "; } diff --git a/locale/de-AT/testtool.php b/locale/de-AT/testtool.php index ef01e13d6..497b3adf5 100644 --- a/locale/de-AT/testtool.php +++ b/locale/de-AT/testtool.php @@ -8,6 +8,8 @@ $this->phrasen['testtool/willkommenstextTitel']='Herzlich Willkommen zum Reihung $this->phrasen['testtool/willkommenstext']='Bitte warten Sie mit dem Login auf die Anweisung der Aufsichtsperson.<br /><br /> Wir wünschen Ihnen einen erfolgreichen Start ins Studium.'; $this->phrasen['testtool/nameAuswaehlen']='Name auswählen...'; +$this->phrasen['testtool/reihungstest']= 'Reihungstest'; +$this->phrasen['testtool/regulaererEinstieg']='Regulärer Einstieg'; $this->phrasen['testtool/quereinstieg']='(Quereinstieg)'; $this->phrasen['testtool/quereinsteiger']='Quereinsteiger'; $this->phrasen['testtool/basic']='Basic'; @@ -43,4 +45,5 @@ $this->phrasen['testtool/dieseFrageIstNichtFuerSieBestimmt']='Diese Frage ist ni $this->phrasen['testtool/fehlerBeimSpeichernDerErstansicht']='Fehler beim Speichern der Erstansicht'; $this->phrasen['testtool/startDrueckenUmZuBeginnen']='Um dieses Teilgebiet zu starten, drücken Sie bitte links oben auf <b>Gebiet starten</b>.'; $this->phrasen['testtool/keinPrueflingseintragVorhanden']='Kein Prüflingseintrag vorhanden'; +$this->phrasen['testtool/fuerFolgendeStgAngemeldet']='Für folgende Studiengänge haben Sie sich angemeldet:'; ?> diff --git a/locale/en-US/testtool.php b/locale/en-US/testtool.php index d8154245e..d1339e65d 100644 --- a/locale/en-US/testtool.php +++ b/locale/en-US/testtool.php @@ -8,6 +8,8 @@ $this->phrasen['testtool/willkommenstextTitel']='Welcome to the placement test.' $this->phrasen['testtool/willkommenstext']='Please wait for the tutor\'s instructions before you log in.<br /><br /> We wish you a good start to your studies.'; $this->phrasen['testtool/nameAuswaehlen']='Choose name...'; +$this->phrasen['testtool/reihungstest']= 'Placement test'; +$this->phrasen['testtool/regulaererEinstieg']='Regular entry'; $this->phrasen['testtool/quereinstieg']='(Lateral entry)'; $this->phrasen['testtool/quereinsteiger']='Lateral entry'; $this->phrasen['testtool/basic']='Basic'; @@ -16,7 +18,7 @@ $this->phrasen['testtool/reihungstestNichtFreigeschalten']='The entrance examina $this->phrasen['testtool/reihungstestKannNichtGeladenWerden']='The entrance examination assigned to you can not be loaded.'; $this->phrasen['testtool/geburtsdatumStimmtNichtUeberein']='Your date of birth does not correspond to the data we have. Please speak to the supervisor. '; $this->phrasen['testtool/home']='Home'; -$this->phrasen['testtool/klickenSieAufEinTeilgebiet']='Select a topic on the left side'; +$this->phrasen['testtool/klickenSieAufEinTeilgebiet']='Select a topic on the left side.<br>'; $this->phrasen['testtool/gebietStarten']='Start section'; $this->phrasen['testtool/startseite']='Startpage'; $this->phrasen['testtool/zurueckZurStartseite']='Back to startpage';; @@ -43,4 +45,5 @@ $this->phrasen['testtool/dieseFrageIstNichtFuerSieBestimmt']='This question is n $this->phrasen['testtool/fehlerBeimSpeichernDerErstansicht']='Error in saving the initial view'; $this->phrasen['testtool/startDrueckenUmZuBeginnen']='To start this section, please click on <b>Start section</b> in the top left corner.'; $this->phrasen['testtool/keinPrueflingseintragVorhanden']='No candidate entry available.'; +$this->phrasen['testtool/fuerFolgendeStgAngemeldet']='You have applied for the following degree programs:'; ?> \ No newline at end of file From c2a4c3413e9749498856f837f205cf910c87814e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= <oesi@technikum-wien.at> Date: Tue, 7 May 2019 11:05:43 +0200 Subject: [PATCH 18/24] Removed dependencies from mcrypt Library to work with PHP7.2 --- include/Crypt_CHAP-1.5.0/CHAP.php | 463 ------------------ .../Crypt_CHAP-1.5.0/tests/Crypt_CHAP.phpt | 119 ----- include/functions.inc.php | 27 +- include/tw/passwort.inc.php | 1 - system/environment.php | 1 - 5 files changed, 18 insertions(+), 593 deletions(-) delete mode 100644 include/Crypt_CHAP-1.5.0/CHAP.php delete mode 100644 include/Crypt_CHAP-1.5.0/tests/Crypt_CHAP.phpt diff --git a/include/Crypt_CHAP-1.5.0/CHAP.php b/include/Crypt_CHAP-1.5.0/CHAP.php deleted file mode 100644 index 473433b9a..000000000 --- a/include/Crypt_CHAP-1.5.0/CHAP.php +++ /dev/null @@ -1,463 +0,0 @@ -<?php -/* -Copyright (c) 2002-2010, Michael Bretterklieber <michael@bretterklieber.com> -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. The names of the authors may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -This code cannot simply be copied and put under the GNU Public License or -any other GPL-like (LGPL, GPL2) License. - - $Id: CHAP.php 302857 2010-08-28 21:12:59Z mbretter $ -*/ - -require_once 'PEAR.php'; - -/** -* Classes for generating packets for various CHAP Protocols: -* CHAP-MD5: RFC1994 -* MS-CHAPv1: RFC2433 -* MS-CHAPv2: RFC2759 -* -* @package Crypt_CHAP -* @author Michael Bretterklieber <michael@bretterklieber.com> -* @access public -* @version $Revision: 302857 $ -*/ - -/** - * class Crypt_CHAP - * - * Abstract base class for CHAP - * - * @package Crypt_CHAP - */ -class Crypt_CHAP extends PEAR -{ - /** - * Random binary challenge - * @var string - */ - var $challenge = null; - - /** - * Binary response - * @var string - */ - var $response = null; - - /** - * User password - * @var string - */ - var $password = null; - - /** - * Id of the authentication request. Should incremented after every request. - * @var integer - */ - var $chapid = 1; - - /** - * Constructor - * - * Generates a random challenge - * @return void - */ - function Crypt_CHAP() - { - $this->PEAR(); - $this->generateChallenge(); - } - - /** - * Generates a random binary challenge - * - * @param string $varname Name of the property - * @param integer $size Size of the challenge in Bytes - * @return void - */ - function generateChallenge($varname = 'challenge', $size = 8) - { - $this->$varname = ''; - for ($i = 0; $i < $size; $i++) { - $this->$varname .= pack('C', 1 + mt_rand() % 255); - } - return $this->$varname; - } - - /** - * Generates the response. Overwrite this. - * - * @return void - */ - function challengeResponse() - { - } - -} - -/** - * class Crypt_CHAP_MD5 - * - * Generate CHAP-MD5 Packets - * - * @package Crypt_CHAP - */ -class Crypt_CHAP_MD5 extends Crypt_CHAP -{ - - /** - * Generates the response. - * - * CHAP-MD5 uses MD5-Hash for generating the response. The Hash consists - * of the chapid, the plaintext password and the challenge. - * - * @return string - */ - function challengeResponse() - { - return pack('H*', md5(pack('C', $this->chapid) . $this->password . $this->challenge)); - } -} - -/** - * class Crypt_CHAP_MSv1 - * - * Generate MS-CHAPv1 Packets. MS-CHAP doesen't use the plaintext password, it uses the - * NT-HASH wich is stored in the SAM-Database or in the smbpasswd, if you are using samba. - * The NT-HASH is MD4(str2unicode(plaintextpass)). - * You need the hash extension for this class. - * - * @package Crypt_CHAP - */ -class Crypt_CHAP_MSv1 extends Crypt_CHAP -{ - /** - * Wether using deprecated LM-Responses or not. - * 0 = use LM-Response, 1 = use NT-Response - * @var bool - */ - var $flags = 1; - - /** - * Constructor - * - * Loads the hash extension - * @return void - */ - function Crypt_CHAP_MSv1() - { - $this->Crypt_CHAP(); - $this->loadExtension('hash'); - } - - /** - * Generates the NT-HASH from the given plaintext password. - * - * @access public - * @return string - */ - function ntPasswordHash($password = null) - { - if (isset($password)) { - return pack('H*',hash('md4', $this->str2unicode($password))); - } else { - return pack('H*',hash('md4', $this->str2unicode($this->password))); - } - } - - /** - * Converts ascii to unicode. - * - * @access public - * @return string - */ - function str2unicode($str) - { - $uni = ''; - $str = (string) $str; - for ($i = 0; $i < strlen($str); $i++) { - $a = ord($str{$i}) << 8; - $uni .= sprintf("%X", $a); - } - return pack('H*', $uni); - } - - /** - * Generates the NT-Response. - * - * @access public - * @return string - */ - function challengeResponse() - { - return $this->_challengeResponse(); - } - - /** - * Generates the NT-Response. - * - * @access public - * @return string - */ - function ntChallengeResponse() - { - return $this->_challengeResponse(false); - } - - /** - * Generates the LAN-Manager-Response. - * - * @access public - * @return string - */ - function lmChallengeResponse() - { - return $this->_challengeResponse(true); - } - - /** - * Generates the response. - * - * Generates the response using DES. - * - * @param bool $lm wether generating LAN-Manager-Response - * @access private - * @return string - */ - function _challengeResponse($lm = false) - { - if ($lm) { - $hash = $this->lmPasswordHash(); - } else { - $hash = $this->ntPasswordHash(); - } - - while (strlen($hash) < 21) { - $hash .= "\0"; - } - - $td = mcrypt_module_open(MCRYPT_DES, '', MCRYPT_MODE_ECB, ''); - $iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND); - $key = $this->_desAddParity(substr($hash, 0, 7)); - mcrypt_generic_init($td, $key, $iv); - $resp1 = mcrypt_generic($td, $this->challenge); - mcrypt_generic_deinit($td); - - $key = $this->_desAddParity(substr($hash, 7, 7)); - mcrypt_generic_init($td, $key, $iv); - $resp2 = mcrypt_generic($td, $this->challenge); - mcrypt_generic_deinit($td); - - $key = $this->_desAddParity(substr($hash, 14, 7)); - mcrypt_generic_init($td, $key, $iv); - $resp3 = mcrypt_generic($td, $this->challenge); - mcrypt_generic_deinit($td); - mcrypt_module_close($td); - - return $resp1 . $resp2 . $resp3; - } - - /** - * Generates the LAN-Manager-HASH from the given plaintext password. - * - * @access public - * @return string - */ - function lmPasswordHash($password = null) - { - $plain = isset($password) ? $password : $this->password; - - $plain = substr(strtoupper($plain), 0, 14); - while (strlen($plain) < 14) { - $plain .= "\0"; - } - - return $this->_desHash(substr($plain, 0, 7)) . $this->_desHash(substr($plain, 7, 7)); - } - - /** - * Generates an irreversible HASH. - * - * @access private - * @return string - */ - function _desHash($plain) - { - $key = $this->_desAddParity($plain); - $td = mcrypt_module_open(MCRYPT_DES, '', MCRYPT_MODE_ECB, ''); - $iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND); - mcrypt_generic_init($td, $key, $iv); - $hash = mcrypt_generic($td, 'KGS!@#$%'); - mcrypt_generic_deinit($td); - mcrypt_module_close($td); - return $hash; - } - - /** - * Adds the parity bit to the given DES key. - * - * @access private - * @param string $key 7-Bytes Key without parity - * @return string - */ - function _desAddParity($key) - { - static $odd_parity = array( - 1, 1, 2, 2, 4, 4, 7, 7, 8, 8, 11, 11, 13, 13, 14, 14, - 16, 16, 19, 19, 21, 21, 22, 22, 25, 25, 26, 26, 28, 28, 31, 31, - 32, 32, 35, 35, 37, 37, 38, 38, 41, 41, 42, 42, 44, 44, 47, 47, - 49, 49, 50, 50, 52, 52, 55, 55, 56, 56, 59, 59, 61, 61, 62, 62, - 64, 64, 67, 67, 69, 69, 70, 70, 73, 73, 74, 74, 76, 76, 79, 79, - 81, 81, 82, 82, 84, 84, 87, 87, 88, 88, 91, 91, 93, 93, 94, 94, - 97, 97, 98, 98,100,100,103,103,104,104,107,107,109,109,110,110, - 112,112,115,115,117,117,118,118,121,121,122,122,124,124,127,127, - 128,128,131,131,133,133,134,134,137,137,138,138,140,140,143,143, - 145,145,146,146,148,148,151,151,152,152,155,155,157,157,158,158, - 161,161,162,162,164,164,167,167,168,168,171,171,173,173,174,174, - 176,176,179,179,181,181,182,182,185,185,186,186,188,188,191,191, - 193,193,194,194,196,196,199,199,200,200,203,203,205,205,206,206, - 208,208,211,211,213,213,214,214,217,217,218,218,220,220,223,223, - 224,224,227,227,229,229,230,230,233,233,234,234,236,236,239,239, - 241,241,242,242,244,244,247,247,248,248,251,251,253,253,254,254); - - $bin = ''; - for ($i = 0; $i < strlen($key); $i++) { - $bin .= sprintf('%08s', decbin(ord($key{$i}))); - } - - $str1 = explode('-', substr(chunk_split($bin, 7, '-'), 0, -1)); - $x = ''; - foreach($str1 as $s) { - $x .= sprintf('%02s', dechex($odd_parity[bindec($s . '0')])); - } - - return pack('H*', $x); - - } - - /** - * Generates the response-packet. - * - * @param bool $lm wether including LAN-Manager-Response - * @access private - * @return string - */ - function response($lm = false) - { - $ntresp = $this->ntChallengeResponse(); - if ($lm) { - $lmresp = $this->lmChallengeResponse(); - } else { - $lmresp = str_repeat ("\0", 24); - } - - // Response: LM Response, NT Response, flags (0 = use LM Response, 1 = use NT Response) - return $lmresp . $ntresp . pack('C', !$lm); - } -} - -/** - * class Crypt_CHAP_MSv2 - * - * Generate MS-CHAPv2 Packets. This version of MS-CHAP uses a 16 Bytes authenticator - * challenge and a 16 Bytes peer Challenge. LAN-Manager responses no longer exists - * in this version. The challenge is already a SHA1 challenge hash of both challenges - * and of the username. - * - * @package Crypt_CHAP - */ -class Crypt_CHAP_MSv2 extends Crypt_CHAP_MSv1 -{ - /** - * The username - * @var string - */ - var $username = null; - - /** - * The 16 Bytes random binary peer challenge - * @var string - */ - var $peerChallenge = null; - - /** - * The 16 Bytes random binary authenticator challenge - * @var string - */ - var $authChallenge = null; - - /** - * Constructor - * - * Generates the 16 Bytes peer and authentication challenge - * @return void - */ - function Crypt_CHAP_MSv2() - { - $this->Crypt_CHAP_MSv1(); - $this->generateChallenge('peerChallenge', 16); - $this->generateChallenge('authChallenge', 16); - } - - /** - * Generates a hash from the NT-HASH. - * - * @access public - * @param string $nthash The NT-HASH - * @return string - */ - function ntPasswordHashHash($nthash) - { - return pack('H*',hash('md4', $nthash)); - } - - /** - * Generates the challenge hash from the peer and the authenticator challenge and - * the username. SHA1 is used for this, but only the first 8 Bytes are used. - * - * @access public - * @return string - */ - function challengeHash() - { - return substr(pack('H*',hash('sha1', $this->peerChallenge . $this->authChallenge . $this->username)), 0, 8); - } - - /** - * Generates the response. - * - * @access public - * @return string - */ - function challengeResponse() - { - $this->challenge = $this->challengeHash(); - return $this->_challengeResponse(); - } -} - - -?> diff --git a/include/Crypt_CHAP-1.5.0/tests/Crypt_CHAP.phpt b/include/Crypt_CHAP-1.5.0/tests/Crypt_CHAP.phpt deleted file mode 100644 index b2b8c2651..000000000 --- a/include/Crypt_CHAP-1.5.0/tests/Crypt_CHAP.phpt +++ /dev/null @@ -1,119 +0,0 @@ ---TEST-- -Crypt_CHAP: simple test ---SKIPIF-- -<?php if (!extension_loaded("hash")) echo 'skip'; ?> ---FILE-- -<?php -/* -Copyright (c) 2003-2007, Michael Bretterklieber <michael@bretterklieber.com> -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. The names of the authors may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -This code cannot simply be copied and put under the GNU Public License or -any other GPL-like (LGPL, GPL2) License. - - $Id: chaptest.php 231819 2007-03-14 07:39:07Z mbretter $ -*/ -chdir (dirname(__FILE__)); -if (file_exists('../CHAP.php')) { - require_once '../CHAP.php'; -} else { - require_once 'Crypt/CHAP.php'; -} - -echo "CHAP-MD5 TEST\n"; -$crpt = new Crypt_CHAP_MD5; -$crpt->password = 'MyPw'; -$crpt->chapid = 1; -$crpt->challenge = pack('H*', '102DB5DF085D3041'); -printf ("ChallResp : %s\n", bin2hex($crpt->challengeResponse())); -echo "\n"; - -echo "CHAP-MD5 TEST 2\n"; -$crpt = new Crypt_CHAP_MD5; -$crpt->password = 'sepp'; -$crpt->chapid = 1; -$crpt->challenge = pack('H*', '102DB5DF085D3041'); -printf ("ChallResp : %s\n", bin2hex($crpt->challengeResponse())); -echo "\n"; - -echo "MS-CHAPv1 str2unicode\n"; -$crpt = new Crypt_CHAP_MSv1; -printf("Passed 123 as Number:%s\n", bin2hex($crpt->str2unicode(123))); -printf("Passed 123 as String:%s\n", bin2hex($crpt->str2unicode('123'))); -echo "\n"; - -echo "MS-CHAPv1 TEST\n"; -$crpt->password = 'MyPw'; -$crpt->challenge = pack('H*', '102DB5DF085D3041'); -$unipw = $crpt->str2unicode($crpt->password); -printf ("Unicode PW: %s\n", bin2hex($unipw)); -printf ("NT HASH : %s\n", bin2hex($crpt->ntPasswordHash())); -printf ("NT Resp : %s\n", bin2hex($crpt->challengeResponse())); -printf ("LM HASH : %s\n", bin2hex($crpt->lmPasswordHash())); -printf ("LM Resp : %s\n", bin2hex($crpt->lmChallengeResponse())); -//printf ("Response : %s\nexpected : unknown\n", bin2hex($crpt->response())); -echo "\n"; - -echo "MS-CHAPv2 TEST\n"; -$crpt = new Crypt_CHAP_MSv2; -$crpt->username = 'User'; -$crpt->password = 'clientPass'; -printf ("Username : %s\n", bin2hex($crpt->username)); -$crpt->authChallenge = pack('H*', '5b5d7c7d7b3f2f3e3c2c602132262628'); -$crpt->peerChallenge = pack('H*', '21402324255E262A28295F2B3A337C7E'); -$nthash = $crpt->ntPasswordHash(); -printf ("NT HASH : %s\n", bin2hex($nthash)); -$nthashhash = $crpt->ntPasswordHashHash($nthash); -printf ("NT HASH-HASH : %s\n", bin2hex($nthashhash)); -printf ("ChallResp : %s\n", bin2hex($crpt->challengeResponse())); -printf ("Challenge : %s\n", bin2hex($crpt->challenge)); -echo "\n"; -?> ---EXPECT-- -CHAP-MD5 TEST -ChallResp : 8f028814450d66d94c72331ef455a172 - -CHAP-MD5 TEST 2 -ChallResp : d39bfaf5d6855a948c8c81a85947502c - -MS-CHAPv1 str2unicode -Passed 123 as Number:310032003300 -Passed 123 as String:310032003300 - -MS-CHAPv1 TEST -Unicode PW: 4d00790050007700 -NT HASH : fc156af7edcd6c0edde3337d427f4eac -NT Resp : 4e9d3c8f9cfd385d5bf4d3246791956ca4c351ab409a3d61 -LM HASH : 75ba30198e6d1975aad3b435b51404ee -LM Resp : 91881d0152ab0c33c524135ec24a95ee64e23cdc2d33347d - -MS-CHAPv2 TEST -Username : 55736572 -NT HASH : 44ebba8d5312b8d611474411f56989ae -NT HASH-HASH : 41c00c584bd2d91c4017a2a12fa59f3f -ChallResp : 82309ecd8d708b5ea08faa3981cd83544233114a3d85d6df -Challenge : d02e4386bce91226 - diff --git a/include/functions.inc.php b/include/functions.inc.php index dc896d3b9..534f11f28 100644 --- a/include/functions.inc.php +++ b/include/functions.inc.php @@ -855,11 +855,17 @@ function encryptData($value,$key) return false; } - $text = $value; - $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); - $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); - $crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv); - return trim(safe_b64encode($crypttext)); + require_once(dirname(__FILE__)."/../vendor/autoload.php"); + + $cipher = new phpseclib\Crypt\Rijndael(phpseclib\Crypt\Rijndael::MODE_ECB); + $cipher->setKey($key); + $cipher->disablePadding(); + $length = strlen($value); + $pad = 32 - ($length % 32); + $value = str_pad($value, $length + $pad, chr(0)); + $cipher->setBlockLength(256); + + return trim(safe_b64encode($cipher->encrypt($value))); } function decryptData($value,$key) @@ -869,11 +875,14 @@ function decryptData($value,$key) return false; } + require_once(dirname(__FILE__)."/../vendor/autoload.php"); $crypttext = safe_b64decode($value); - $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); - $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); - $decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $crypttext, MCRYPT_MODE_ECB, $iv); - return trim($decrypttext); + $cipher = new phpseclib\Crypt\Rijndael(phpseclib\Crypt\Rijndael::MODE_ECB); + $cipher->disablePadding(); + $cipher->setBlockLength(256); + $cipher->setKey($key); + + return trim($cipher->decrypt($crypttext)); } function clearHtmlTags($text) diff --git a/include/tw/passwort.inc.php b/include/tw/passwort.inc.php index c5b170cbf..b798623fa 100644 --- a/include/tw/passwort.inc.php +++ b/include/tw/passwort.inc.php @@ -21,7 +21,6 @@ * Funktionen zum Pruefen der Passwort Policy und setzen des Passworts */ require_once(dirname(__FILE__).'/../addon.class.php'); -//require_once(dirname(__FILE__).'/../Crypt_CHAP-1.5.0/CHAP.php'); // die aktiven Addons werden durchsucht, ob eines davon eine eigene UID Generierung vorsieht // falls ja, wird die Version des Addons genommen, ansonsten die Default Generierung diff --git a/system/environment.php b/system/environment.php index 8300c3fa4..a7a9b9a9d 100644 --- a/system/environment.php +++ b/system/environment.php @@ -83,7 +83,6 @@ printValue("php-xsl", extension_loaded('xsl')); printValue("php-gd", extension_loaded('gd')); printValue("php-pgsql", extension_loaded('pgsql')); printValue("php-ldap", extension_loaded('ldap')); -printValue("php-mcrypt", extension_loaded('mcrypt')); printValue("php-mbstring", extension_loaded('mbstring')); printValue("php-soap", extension_loaded('soap')); printValue("php-curl", extension_loaded('curl')); From 3c2e02c3aa57d6013b23a1a3ab5e268a76790c07 Mon Sep 17 00:00:00 2001 From: alex <karpen_ko@hotmail.com> Date: Tue, 7 May 2019 14:55:43 +0200 Subject: [PATCH 19/24] orgform for RT Freigabe Message retrieved only from Studienplan, otherwise empty string --- public/js/infocenter/infocenterDetails.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/js/infocenter/infocenterDetails.js b/public/js/infocenter/infocenterDetails.js index 2b9401d29..e05b772ce 100644 --- a/public/js/infocenter/infocenterDetails.js +++ b/public/js/infocenter/infocenterDetails.js @@ -560,7 +560,7 @@ var InfocenterDetails = { var ausbildungssemester = receiverPrestudentstatus.ausbildungssemester; var studiengangbezeichnung = receiverPrestudentstatus.studiengangbezeichnung; var studiengangbezeichnung_englisch = receiverPrestudentstatus.studiengangbezeichnung_englisch; - var orgform = typeof receiverPrestudentstatus.orgform === 'string' ? receiverPrestudentstatus.orgform : receiverPrestudentstatus.orgform_kurzbz; + var orgform = typeof receiverPrestudentstatus.orgform === 'string' ? receiverPrestudentstatus.orgform : ""; var msgvars = {}; if (rtfreigabe) From a9d59918cea6b9c000fe86d385675435534a86aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= <oesi@technikum-wien.at> Date: Wed, 8 May 2019 11:28:14 +0200 Subject: [PATCH 20/24] =?UTF-8?q?Abgabetool=20-=20Handbuch=20verlinkt=20au?= =?UTF-8?q?f=20Wiki=20-=20Fehler=20behoben=20wodurch=20Projektarbeiten=20d?= =?UTF-8?q?oppelt=20in=20der=20Studierendensicht=20angezeigt=20wurden=20-?= =?UTF-8?q?=20Hinweis=20beim=20Upload=20hinzugef=C3=BCgt=20damit=20keine?= =?UTF-8?q?=20Unterschriebenen=20Dokumente=20hochgeladen=20werden.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/lehre/abgabe_lektor.php | 38 ++++++------- cis/private/lehre/abgabe_student.php | 79 ++++++++++++++-------------- locale/de-AT/abgabetool.php | 6 ++- locale/de-AT/dms_link.php | 6 +-- 4 files changed, 65 insertions(+), 64 deletions(-) diff --git a/cis/private/lehre/abgabe_lektor.php b/cis/private/lehre/abgabe_lektor.php index cf5037435..414c5e423 100644 --- a/cis/private/lehre/abgabe_lektor.php +++ b/cis/private/lehre/abgabe_lektor.php @@ -22,7 +22,7 @@ */ /******************************************************************************************************* * abgabe_lektor - * abgabe_lektor ist die Lektorenmaske des Abgabesystems + * abgabe_lektor ist die Lektorenmaske des Abgabesystems * fuer Diplom- und Bachelorarbeiten *******************************************************************************************************/ @@ -37,7 +37,7 @@ require_once('../../../include/benutzerberechtigung.class.php'); if (!$db = new basis_db()) die('Fehler beim Herstellen der Datenbankverbindung'); - + $getuid=get_uid(); $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($getuid); @@ -55,29 +55,29 @@ $p = new phrasen($sprache); $htmlstr = ""; $showall=isset($_GET['showall']); - -$sql_query = "SELECT + +$sql_query = "SELECT * - FROM + FROM (SELECT tbl_person.vorname, tbl_person.nachname, tbl_studiengang.typ, tbl_studiengang.kurzbz, tbl_projektarbeit.projekttyp_kurzbz, tbl_projekttyp.bezeichnung, tbl_projektarbeit.titel, tbl_projektarbeit.projektarbeit_id, tbl_projektbetreuer.betreuerart_kurzbz, tbl_benutzer.uid, tbl_student.matrikelnr, tbl_lehreinheit.studiensemester_kurzbz - FROM lehre.tbl_projektarbeit LEFT JOIN lehre.tbl_projektbetreuer using(projektarbeit_id) + FROM lehre.tbl_projektarbeit LEFT JOIN lehre.tbl_projektbetreuer using(projektarbeit_id) LEFT JOIN public.tbl_benutzer on(uid=student_uid) LEFT JOIN public.tbl_student on(public.tbl_benutzer.uid=public.tbl_student.student_uid) LEFT JOIN public.tbl_person on(tbl_benutzer.person_id=tbl_person.person_id) - LEFT JOIN lehre.tbl_lehreinheit using(lehreinheit_id) - LEFT JOIN lehre.tbl_lehrveranstaltung using(lehrveranstaltung_id) + LEFT JOIN lehre.tbl_lehreinheit using(lehreinheit_id) + LEFT JOIN lehre.tbl_lehrveranstaltung using(lehrveranstaltung_id) LEFT JOIN public.tbl_studiengang on(lehre.tbl_lehrveranstaltung.studiengang_kz=public.tbl_studiengang.studiengang_kz) LEFT JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz) WHERE (projekttyp_kurzbz='Bachelor' OR projekttyp_kurzbz='Diplom') - AND tbl_projektbetreuer.person_id IN (SELECT person_id FROM public.tbl_benutzer - WHERE public.tbl_benutzer.person_id=lehre.tbl_projektbetreuer.person_id + AND tbl_projektbetreuer.person_id IN (SELECT person_id FROM public.tbl_benutzer + WHERE public.tbl_benutzer.person_id=lehre.tbl_projektbetreuer.person_id AND public.tbl_benutzer.uid=".$db->db_add_param($getuid).") ".($showall?'':' AND public.tbl_benutzer.aktiv AND lehre.tbl_projektarbeit.note IS NULL ')." - AND (betreuerart_kurzbz='Betreuer' OR betreuerart_kurzbz='Begutachter' OR betreuerart_kurzbz='Erstbegutachter' - OR betreuerart_kurzbz='Zweitbegutachter' OR betreuerart_kurzbz='Erstbetreuer') - ORDER BY tbl_projektarbeit.projektarbeit_id, betreuerart_kurzbz desc) as xy + AND (betreuerart_kurzbz='Betreuer' OR betreuerart_kurzbz='Begutachter' OR betreuerart_kurzbz='Erstbegutachter' + OR betreuerart_kurzbz='Zweitbegutachter' OR betreuerart_kurzbz='Erstbetreuer') + ORDER BY tbl_projektarbeit.projektarbeit_id, betreuerart_kurzbz desc) as xy ORDER BY nachname"; if(!$erg=$db->db_query($sql_query)) @@ -141,22 +141,22 @@ echo ' return true; return false; } - - $(document).ready(function() - { + + $(document).ready(function() + { $("#t1").tablesorter( { sortList: [[4,0]], widgets: ["zebra"] - }); - + }); + }); </script> </head> <body>'; -echo "<h1><div style='float: left'>".$p->t('abgabetool/ueberschrift')." ($getuid) </div><div style='text-align:right'><a href='../../../cms/dms.php?id=".$p->t('dms_link/abgabetoolLektorHandbuch')."' target='_blank'><img src='../../../skin/images/information.png' alt='Anleitung' title='Anleitung BaDa-Abgabe' border=0>&nbsp;".$p->t('global/handbuch')."</a></div></h1>"; +echo "<h1><div style='float: left'>".$p->t('abgabetool/ueberschrift')." ($getuid) </div><div style='text-align:right'><a href='".$p->t('dms_link/abgabetoolLektorHandbuch')."' target='_blank'><img src='../../../skin/images/information.png' alt='Anleitung' title='Anleitung Abgabetool' border=0>&nbsp;".$p->t('global/handbuch')."</a></div></h1>"; echo $htmlstr; diff --git a/cis/private/lehre/abgabe_student.php b/cis/private/lehre/abgabe_student.php index 963a11301..a1a6c9b34 100644 --- a/cis/private/lehre/abgabe_student.php +++ b/cis/private/lehre/abgabe_student.php @@ -36,7 +36,7 @@ $p = new phrasen($sprache); if (!$db = new basis_db()) die($p->t('global/fehlerBeimOeffnenDerDatenbankverbindung')); - + $getuid=get_uid(); $uid=$getuid; @@ -46,31 +46,31 @@ if(isset($_GET['uid'])) $uid = $_GET['uid']; //Rechte Pruefen $allowed=false; - + $student = new student(); if(!$student->load($uid)) die($p->t('global/fehlerBeimErmittelnDerUID')); - + $stg_obj = new studiengang(); if(!$stg_obj->load($student->studiengang_kz)) die($p->t('global/fehlerBeimLesenAusDatenbank')); - + //Berechtigung ueber das Berechtigungssystem $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($getuid); if($rechte->isBerechtigt('lehre/abgabetool',$stg_obj->oe_kurzbz,'s')) $allowed=true; - + //oder Lektor mit Betreuung dieses Studenten $qry = "SELECT 1 - FROM - lehre.tbl_projektarbeit - JOIN lehre.tbl_projektbetreuer USING(projektarbeit_id) + FROM + lehre.tbl_projektarbeit + JOIN lehre.tbl_projektbetreuer USING(projektarbeit_id) JOIN campus.vw_benutzer on(vw_benutzer.person_id=tbl_projektbetreuer.person_id) WHERE tbl_projektarbeit.student_uid=".$db->db_add_param($uid)." AND vw_benutzer.uid=".$db->db_add_param($getuid).";"; - + if($result = $db->db_query($qry)) { if($db->db_num_rows($result)>0) @@ -78,11 +78,11 @@ if(isset($_GET['uid'])) $allowed=true; } } - + if(!$allowed) { die($p->t('abgabetool/keineBerechtigungStudentenansicht')); - } + } } $htmlstr = ''; $htmlstr1 = ''; @@ -90,33 +90,32 @@ $vorname=''; $nachname=''; $zweitbetreuer = ''; -$sql_query = "SELECT (SELECT nachname FROM public.tbl_person WHERE person_id=tbl_projektbetreuer.person_id) AS bnachname, - (SELECT vorname FROM public.tbl_person WHERE person_id=tbl_projektbetreuer.person_id) AS bvorname, - (SELECT titelpre FROM public.tbl_person WHERE person_id=tbl_projektbetreuer.person_id) AS btitelpre, - (SELECT titelpost FROM public.tbl_person WHERE person_id=tbl_projektbetreuer.person_id) AS btitelpost, +$sql_query = "SELECT (SELECT nachname FROM public.tbl_person WHERE person_id=tbl_projektbetreuer.person_id) AS bnachname, + (SELECT vorname FROM public.tbl_person WHERE person_id=tbl_projektbetreuer.person_id) AS bvorname, + (SELECT titelpre FROM public.tbl_person WHERE person_id=tbl_projektbetreuer.person_id) AS btitelpre, + (SELECT titelpost FROM public.tbl_person WHERE person_id=tbl_projektbetreuer.person_id) AS btitelpost, (SELECT person_id FROM lehre.tbl_projektbetreuer WHERE projektarbeit_id=tbl_projektarbeit.projektarbeit_id AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter') LIMIT 1) AS zweitbetreuer_person_id, (SELECT betreuerart_kurzbz FROM lehre.tbl_projektbetreuer WHERE projektarbeit_id=tbl_projektarbeit.projektarbeit_id AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter') LIMIT 1) AS zweitbetreuer_betreuerart_kurzbz, - tbl_projektbetreuer.person_id AS betreuer_person_id, - tbl_projekttyp.bezeichnung AS prjbez, * - FROM lehre.tbl_projektarbeit - LEFT JOIN lehre.tbl_projektbetreuer USING(projektarbeit_id) - LEFT JOIN public.tbl_benutzer ON(uid=student_uid) - LEFT JOIN public.tbl_person ON(tbl_benutzer.person_id=tbl_person.person_id) - LEFT JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) - LEFT JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) + tbl_projektbetreuer.person_id AS betreuer_person_id, + tbl_projekttyp.bezeichnung AS prjbez, * + FROM lehre.tbl_projektarbeit + LEFT JOIN lehre.tbl_projektbetreuer USING(projektarbeit_id) + LEFT JOIN public.tbl_benutzer ON(uid=student_uid) + LEFT JOIN public.tbl_person ON(tbl_benutzer.person_id=tbl_person.person_id) + LEFT JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) + LEFT JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) LEFT JOIN public.tbl_studiengang USING(studiengang_kz) LEFT JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz) - WHERE (projekttyp_kurzbz='Bachelor' OR projekttyp_kurzbz='Diplom') - AND (tbl_projektbetreuer.betreuerart_kurzbz='Betreuer' - OR tbl_projektbetreuer.betreuerart_kurzbz='Begutachter' - OR tbl_projektbetreuer.betreuerart_kurzbz='Erstbetreuer' - OR tbl_projektbetreuer.betreuerart_kurzbz='Erstbegutachter' - OR tbl_projektbetreuer.betreuerart_kurzbz='Zweitbegutachter') - AND tbl_projektarbeit.student_uid=".$db->db_add_param($uid)." - AND public.tbl_benutzer.aktiv - AND lehre.tbl_projektarbeit.note IS NULL + WHERE (projekttyp_kurzbz='Bachelor' OR projekttyp_kurzbz='Diplom') + AND (tbl_projektbetreuer.betreuerart_kurzbz='Betreuer' + OR tbl_projektbetreuer.betreuerart_kurzbz='Begutachter' + OR tbl_projektbetreuer.betreuerart_kurzbz='Erstbetreuer' + OR tbl_projektbetreuer.betreuerart_kurzbz='Erstbegutachter') + AND tbl_projektarbeit.student_uid=".$db->db_add_param($uid)." + AND public.tbl_benutzer.aktiv + AND lehre.tbl_projektarbeit.note IS NULL ORDER BY studiensemester_kurzbz desc, tbl_lehrveranstaltung.kurzbz"; //AND tbl_projektarbeit.student_uid='$getuid' 'ie07m102'; @@ -161,8 +160,8 @@ else $htmlstr .= " <td>".strtoupper($row->typ.$row->kurzbz)."</td>\n"; $htmlstr .= " <td align= center>"; - $qry_betr="SELECT mitarbeiter_uid FROM public.tbl_person - JOIN public.tbl_benutzer USING(person_id) + $qry_betr="SELECT mitarbeiter_uid FROM public.tbl_person + JOIN public.tbl_benutzer USING(person_id) JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid) WHERE person_id=".$db->db_add_param($row->betreuer_person_id, FHC_INTEGER).";"; if($result_betr=$db->db_query($qry_betr)) @@ -171,7 +170,7 @@ else { $htmlstr.="<a href='mailto:$row_betr->mitarbeiter_uid@".DOMAIN."?subject=Betreuung%20".$row->prjbez."%20von%20".$row->vorname."%20".$row->nachname."'><img src='../../../skin/images/email.png' alt='email' title='".$p->t('abgabetool/emailAnBetreuer')."'></a>"; } - else + else { $htmlstr.="UID unknown!"; } @@ -201,14 +200,14 @@ echo ' <script type="text/javascript" src="../../../vendor/jquery/sizzle/sizzle.js"></script> <link rel="stylesheet" href="../../../skin/tablesort.css" type="text/css"/> <script language="JavaScript" type="text/javascript"> - $(document).ready(function() - { + $(document).ready(function() + { $("#t1").tablesorter( { sortList: [[4,0]], widgets: ["zebra"] - }); - + }); + }); </script> </head> @@ -217,7 +216,7 @@ echo ' echo '<h1><div style="float:left">'.$p->t('abgabetool/ueberschrift'); if(trim($uid)!='') - echo " ($uid $vorname $nachname)</div> <div style='text-align:right'><a href='../../../cms/dms.php?id=".$p->t('dms_link/abgabetoolStudentHandbuch')."' target='_blank'><img src='../../../skin/images/information.png' alt='Anleitung' title='Anleitung BaDa-Abgabe' border=0>&nbsp;".$p->t('global/handbuch')."</a></div>"; + echo " ($uid $vorname $nachname)</div> <div style='text-align:right'><a href='".$p->t('dms_link/abgabetoolStudentHandbuch')."' target='_blank'><img src='../../../skin/images/information.png' alt='Anleitung' title='Anleitung Abgabetool' border=0>&nbsp;".$p->t('global/handbuch')."</a></div>"; echo '</h1>'; echo $htmlstr; echo '</body> diff --git a/locale/de-AT/abgabetool.php b/locale/de-AT/abgabetool.php index 9a9c8f87d..1d103abf3 100644 --- a/locale/de-AT/abgabetool.php +++ b/locale/de-AT/abgabetool.php @@ -69,10 +69,12 @@ $this->phrasen['abgabetool/fehlerTerminVorbei']='Die Abgabefrist für diesen Ter $this->phrasen['abgabetool/eidesstattlicheErklaerung']='Ich erkläre hiermit an Eides statt, dass ich die vorliegende Arbeit selbständig angefertigt habe. Die aus fremden Quellen direkt oder indirekt übernommenen Gedanken sind als solche kenntlich gemacht. -Die Arbeit wurde bisher weder in gleicher noch in ähnlicher Form einer anderen Prüfungsbehörde vorgelegt und auch noch nicht veröffentlicht.<br> +Die Arbeit wurde bisher weder in gleicher noch in ähnlicher Form einer anderen Prüfungsbehörde vorgelegt und auch noch nicht veröffentlicht.<br><br> Ich räume der Fachhochschule Technikum Wien das Recht ein, das/die übermittelte/n Dokument/e elektronisch zu speichern und in Datennetzen öffentlich zugänglich zu machen. Ich räume der Fachhochschule Technikum Wien ferner das Recht zur Konvertierung zum Zwecke der Langzeitarchivierung unter Beachtung der Bewahrung des Inhalts ein. -Ich erkläre außerdem, dass von mir die urheber- und lizenzrechtliche Seite (Copyright) geklärt wurde und Rechte Dritter der Publikation nicht entgegenstehen.'; +Ich erkläre außerdem, dass von mir die urheber- und lizenzrechtliche Seite (Copyright) geklärt wurde und Rechte Dritter der Publikation nicht entgegenstehen.<br><br> +Bei den Master Arbeiten dürfen ausschließlich Dokumente hochgeladen werden, bei denen die `Eidesstattliche Erklärung´ nicht unterschrieben ist (Datenschutz). +Sollten Sie trotzdem die `Eidesstattliche Erklärung´ samt Unterschrift hochladen, wird seitens der FH Technikum Wien davon ausgegangen, dass Sie keinen Wert auf Schutz Ihrer Unterschrift legen.'; $this->phrasen['abgabetool/gelesenUndAkzeptiert']='Gelesen und akzeptiert'; $this->phrasen['abgabetool/erklaerungNichtAkzeptiert']='Erklärung nicht akzeptiert'; $this->phrasen['abgabetool/downloadProjektarbeit']='Dokument herunterladen'; diff --git a/locale/de-AT/dms_link.php b/locale/de-AT/dms_link.php index 4e4296038..a642a0d51 100644 --- a/locale/de-AT/dms_link.php +++ b/locale/de-AT/dms_link.php @@ -7,9 +7,6 @@ $this->phrasen['dms_link/cisHandbuch']='764'; //CIS-Handbuch, welches im Head-Fr $this->phrasen['dms_link/benotungstoolHandbuch']='32'; //Handbuch Benotungstool $this->phrasen['dms_link/moodleHandbuch']='33'; //Moodle Handbuch $this->phrasen['dms_link/moodleHandbuch24']='1426'; //Moodle Handbuch -$this->phrasen['dms_link/abgabetoolLektorHandbuch']='28'; //Abgabetool Handbuch fuer LektorInnen -$this->phrasen['dms_link/abgabetoolStudentHandbuch']='27'; //Abgabetool Handbuch fuer Studierende -$this->phrasen['dms_link/abgabetoolAssistenzHandbuch']='28'; //Abgabetool Handbuch fuer Assistenz $this->phrasen['dms_link/iconPDF']='46'; //PDF Icon $this->phrasen['dms_link/bedienungsanleitungMailverteiler']='1474'; //Bedienungsanleitung Mailverteiler $this->phrasen['dms_link/berechtigungskonzeptMailverteiler']='1475'; //Berechtigungskonzept Mailverteiler @@ -36,4 +33,7 @@ $this->phrasen['dms_link/lvevaluierungMitarbeiterCMS']=''; //Beschreibung des Ab //Links auf externe Seiten $this->phrasen['dms_link/dokuwikiGesamtnote']='http://fhcomplete.technikum-wien.at/dokuwiki/doku.php?id=cis:gesamtnote'; //Link ins Dokuwiki zur Anleitung Gesamtnote +$this->phrasen['dms_link/abgabetoolLektorHandbuch']='https://fhcomplete.technikum-wien.at/dokuwiki/doku.php?id=cis:abgabetool_fuer_lektoren'; //Abgabetool Handbuch fuer LektorInnen +$this->phrasen['dms_link/abgabetoolStudentHandbuch']='https://fhcomplete.technikum-wien.at/dokuwiki/doku.php?id=cis:abgabetool_fuer_studierende'; //Abgabetool Handbuch fuer Studierende +$this->phrasen['dms_link/abgabetoolAssistenzHandbuch']='https://fhcomplete.technikum-wien.at/dokuwiki/doku.php?id=cis:abgabetool_fuer_lektoren'; //Abgabetool Handbuch fuer Assistenz ?> From 35c6322bbd9970ce51d300b9973eb8921d7d337a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= <oesi@technikum-wien.at> Date: Wed, 8 May 2019 11:40:35 +0200 Subject: [PATCH 21/24] =?UTF-8?q?Abgabetool=20-=20Handbuch=20zum=20Abgabet?= =?UTF-8?q?ool=20f=C3=BCr=20Assistenz=20verlinkt=20jetzt=20ins=20Wiki=20-?= =?UTF-8?q?=20Fehlerhaften=20Tooltiptext=20entfernt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- locale/en-US/abgabetool.php | 6 ++++-- locale/en-US/dms_link.php | 8 ++++---- vilesci/lehre/abgabe_assistenz.php | 8 ++++---- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/locale/en-US/abgabetool.php b/locale/en-US/abgabetool.php index 1de161280..a5e201e22 100644 --- a/locale/en-US/abgabetool.php +++ b/locale/en-US/abgabetool.php @@ -69,10 +69,12 @@ $this->phrasen['abgabetool/fehlerTerminVorbei']='The deadline for this upload ha $this->phrasen['abgabetool/eidesstattlicheErklaerung']='I confirm that this paper is entirely my own work. All sources and quotations have been fully acknowledged in the appropriate places with adequate footnotes and citations. Quotations have been properly acknowledged and marked with appropriate punctuation. The works consulted are listed in the bibliography. -This paper has not been submitted to another examination panel in the same or a similar form, and has not been published.<br> +This paper has not been submitted to another examination panel in the same or a similar form, and has not been published.<br><br> I grant the University Of Applied Sciences Technikum Wien the right to store the uploaded file(s) in electronic form and to make them publicly available in data networks. I further grant the University of Applied Sciences Technikum Wien the right to convert the file(s) for long term preservation purposes. -I declare that copyright and licensing issues related to my work have been resolved and that therefore no rights on the part of any third parties impede the publication.'; +I declare that copyright and licensing issues related to my work have been resolved and that therefore no rights on the part of any third parties impede the publication.<br><br> +Bei den Master Arbeiten dürfen ausschließlich Dokumente hochgeladen werden, bei denen die `Eidesstattliche Erklärung´ nicht unterschrieben ist (Datenschutz). +Sollten Sie trotzdem die `Eidesstattliche Erklärung´ samt Unterschrift hochladen, wird seitens der FH Technikum Wien davon ausgegangen, dass Sie keinen Wert auf Schutz Ihrer Unterschrift legen.'; $this->phrasen['abgabetool/gelesenUndAkzeptiert']='Read and accepted'; $this->phrasen['abgabetool/erklaerungNichtAkzeptiert']='Declaration not accepted'; $this->phrasen['abgabetool/downloadProjektarbeit']='Download File'; diff --git a/locale/en-US/dms_link.php b/locale/en-US/dms_link.php index 80e95529e..700a38f22 100644 --- a/locale/en-US/dms_link.php +++ b/locale/en-US/dms_link.php @@ -7,9 +7,6 @@ $this->phrasen['dms_link/cisHandbuch']='825'; //CIS-Handbuch, welches im Head-Fr $this->phrasen['dms_link/benotungstoolHandbuch']='824'; //Handbuch Benotungstool $this->phrasen['dms_link/moodleHandbuch']='33'; //Moodle Handbuch $this->phrasen['dms_link/moodleHandbuch24']='1426'; //Moodle Handbuch -$this->phrasen['dms_link/abgabetoolLektorHandbuch']='874'; //Abgabetool Handbuch fuer LektorInnen -$this->phrasen['dms_link/abgabetoolStudentHandbuch']='875'; //Abgabetool Handbuch fuer Studierende -$this->phrasen['dms_link/abgabetoolAssistenzHandbuch']='874'; //Abgabetool Handbuch fuer Assistenz $this->phrasen['dms_link/iconPDF']='46'; //PDF Icon $this->phrasen['dms_link/bedienungsanleitungMailverteiler']='1474'; //Bedienungsanleitung Mailverteiler $this->phrasen['dms_link/berechtigungskonzeptMailverteiler']='1475'; //Berechtigungskonzept Mailverteiler @@ -31,4 +28,7 @@ $this->phrasen['dms_link/anleitungMailverteiler']='7578'; //Anleitung für die B //Links auf externe Seiten $this->phrasen['dms_link/dokuwikiGesamtnote']='http://fhcomplete.technikum-wien.at/dokuwiki/doku.php?id=cis:gesamtnote'; //Link ins Dokuwiki zur Anleitung Gesamtnote -?> \ No newline at end of file +$this->phrasen['dms_link/abgabetoolLektorHandbuch']='https://fhcomplete.technikum-wien.at/dokuwiki/doku.php?id=cis:abgabetool_fuer_lektoren'; //Abgabetool Handbuch fuer LektorInnen +$this->phrasen['dms_link/abgabetoolStudentHandbuch']='https://fhcomplete.technikum-wien.at/dokuwiki/doku.php?id=cis:abgabetool_fuer_studierende'; //Abgabetool Handbuch fuer Studierende +$this->phrasen['dms_link/abgabetoolAssistenzHandbuch']='https://fhcomplete.technikum-wien.at/dokuwiki/doku.php?id=cis:abgabetool_fuer_lektoren'; //Abgabetool Handbuch fuer Assistenz +?> diff --git a/vilesci/lehre/abgabe_assistenz.php b/vilesci/lehre/abgabe_assistenz.php index 29cabf174..3c939a330 100644 --- a/vilesci/lehre/abgabe_assistenz.php +++ b/vilesci/lehre/abgabe_assistenz.php @@ -105,7 +105,7 @@ if(!$erg=$db->db_query($sql_query)) else { //$htmlstr .= "<form name='formular'><input type='hidden' name='check' value=''></form>"; - $htmlstr .= "<form name='multitermin' action='abgabe_assistenz_multitermin.php' title='Serientermin' target='al_detail' method='POST'>"; + $htmlstr .= "<form name='multitermin' action='abgabe_assistenz_multitermin.php' target='al_detail' method='POST'>"; //$htmlstr .= "<table id='t1' class='liste table-autosort:5 table-stripeclass:alternate table-autostripe'>\n"; $htmlstr .= "<table id='t1' class='tablesorter'>\n"; $htmlstr .= "<thead><tr class='liste'>\n"; @@ -154,9 +154,9 @@ else OR tbl_projektbetreuer.betreuerart_kurzbz = 'Betreuer' OR tbl_projektbetreuer.betreuerart_kurzbz = 'Begutachter' ) - + UNION - + SELECT '' AS first, trim(COALESCE(nachname, '') || ', ' || COALESCE(titelpre, '') || ' ' || COALESCE(vorname, '') || ' ' || COALESCE(titelpost, '')) AS second, PUBLIC.tbl_mitarbeiter.mitarbeiter_uid, @@ -451,7 +451,7 @@ function btserienmail(trenner, stgbez) <body class="background_main"> <?php -echo "<h2><div style='float:left'>Bachelor-/Masterarbeitsbetreuungen (Studiengang $stg_kz, $stgbez)</div><div style='text-align: right;'><a href='../../cms/dms.php?id=".$p->t('dms_link/abgabetoolAssistenzHandbuch')."' target='_blank'><img src='../../skin/images/information.png' alt='Anleitung' title='Anleitung BaDa-Abgabe' border=0>&nbsp;Handbuch</a></div></h2>"; +echo "<h2><div style='float:left'>Bachelor-/Masterarbeitsbetreuungen (Studiengang $stg_kz, $stgbez)</div><div style='text-align: right;'><a href='".$p->t('dms_link/abgabetoolAssistenzHandbuch')."' target='_blank'><img src='../../skin/images/information.png' alt='Anleitung' title='Anleitung Abgabetool' border=0>&nbsp;Handbuch</a></div></h2>"; echo $htmlstr; ?> From 1c81705e3d66be57ec1c3c4dfffcf721e90af8ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= <oesi@technikum-wien.at> Date: Wed, 8 May 2019 15:10:42 +0200 Subject: [PATCH 22/24] =?UTF-8?q?Aufnahmetermine:=20Ist=20bereits=20eine?= =?UTF-8?q?=20Raumzuordnung=20f=C3=BCr=20einen=20Reihungstest=20erfolgt=20?= =?UTF-8?q?und=20der=20Reihungstest=20wird=20im=20FAS=20auf=20einen=20neue?= =?UTF-8?q?n=20Reihungstesttermin=20ge=C3=A4ndert,=20dann=20wird=20die=20v?= =?UTF-8?q?orhandene=20Raumzuordnung=20der=20Person=20entfernt=20und=20ein?= =?UTF-8?q?=20entsprechender=20Hinweis=20angezeigt.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/student/studentDBDML.php | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/content/student/studentDBDML.php b/content/student/studentDBDML.php index 02fa0deab..5deced246 100644 --- a/content/student/studentDBDML.php +++ b/content/student/studentDBDML.php @@ -4027,6 +4027,7 @@ if(!$error) } $warnung_zu_viele_teilnehmer = false; + $warnung_raumzuordnungentfernt = false; if($reihungstest->reihungstest_id != $rt_id) { // Wenn ein neuer Reihungstesttermin ausgewählt wird, dann wird geprueft ob @@ -4043,6 +4044,12 @@ if(!$error) } if($max_teilnehmer!='' && $aktuelle_anzahl >= $max_teilnehmer) $warnung_zu_viele_teilnehmer = true; + + if ($reihungstest->ort_kurzbz != '') + { + $reihungstest->ort_kurzbz = ''; + $warnung_raumzuordnungentfernt = true; + } } $reihungstest->reihungstest_id = $rt_id; $reihungstest->person_id = $person_id; @@ -4063,8 +4070,15 @@ if(!$error) { $return = false; $error = true; - $errormsg = 'Achtung - die Maximalanzahl der Teilnehmer wurde überschritten;'. - ' Prüfen Sie ob genug Platz zur Verfügung steht - Zuteilung wurde erfolgreich gespeichert'; + $errormsg .= ' - Achtung - die Maximalanzahl der Teilnehmer wurde überschritten;'. + ' Prüfen Sie ob genug Platz zur Verfügung steht'; + } + if ($warnung_raumzuordnungentfernt) + { + $return = false; + $error = true; + $errormsg .= ' - Achtung - Die Person war bereits einem Raum für den Reihungstest zugeordnet.'. + 'Die Raumzuordnung wurde entfernt.'; } } else From 3f423898f993c2ef23f58ed1740c1a9402755502 Mon Sep 17 00:00:00 2001 From: Cris <hainberg@technikum-wien.at> Date: Thu, 9 May 2019 12:49:20 +0200 Subject: [PATCH 23/24] Added alert when test includes MathML format and browser is not Firefox By the moment applicants should absolve the tests using Firefox Browser to ensure the correct display MathML. If they use another browser, they will now get an alert. --- cis/testtool/login.php | 3 +- cis/testtool/menu.php | 34 +++++++++++++++++++++- include/gebiet.class.php | 63 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 97 insertions(+), 3 deletions(-) diff --git a/cis/testtool/login.php b/cis/testtool/login.php index 0ef8aab15..e46e6679c 100644 --- a/cis/testtool/login.php +++ b/cis/testtool/login.php @@ -577,11 +577,10 @@ if (isset($prestudent_id)) <strong>'.$p->t('testtool/klickenSieAufEinTeilgebiet').'</strong> </div> '; - if($pruefling->pruefling_id!='') { $_SESSION['pruefling_id']=$pruefling->pruefling_id; - echo '<script language="Javascript">parent.menu.location.reload()</script>'; + //echo '<script language="Javascript">parent.menu.location.reload()</script>'; } } else diff --git a/cis/testtool/menu.php b/cis/testtool/menu.php index 1f364cc6f..84cddcdc3 100644 --- a/cis/testtool/menu.php +++ b/cis/testtool/menu.php @@ -283,7 +283,7 @@ if (isset($_SESSION['pruefling_id'])) $result = $db->db_query($qry); $lastsemester = ''; $quereinsteiger_stg = ''; - + $gebiet_hasMathML = false; // true, wenn irgendein Gebiet eine/n Frage/Vorschlag im MathML-Format enthält while($row = $db->db_fetch_object($result)) { //Jedes Semester in einer eigenen Tabelle anzeigen @@ -323,6 +323,13 @@ if (isset($_SESSION['pruefling_id'])) } $gebiet = new gebiet(); + + // Prüfen, ob das Gebiet eine/n Frage/Vorschlag im MathML-Format enthält + if (!$gebiet_hasMathML) // sobald nur ein MathML Format gefunden, variable nicht mehr überschreiben + { + $gebiet_hasMathML = $gebiet->hasMathML($row->gebiet_id); + } + if($gebiet->check_gebiet($row->gebiet_id)) { //Status der Gebiete Pruefen @@ -401,4 +408,29 @@ else } ?> </body> + +<script type="text/javascript"> + + // Get users Browser + var ua = navigator.userAgent; + + // If Browser is any other than Mozilla Firefox and the test includes any MathML, + // show message to use Mozilla Firefox + if ((ua.indexOf("Firefox") > -1) == false) + { + let hasMathML = "<?php echo $gebiet_hasMathML; ?>"; + let userLang = "<?php echo $sprache_user; ?>"; + if (hasMathML == true) + { + if (userLang == 'German') + { + alert('BITTE VERWENDEN SIE DEN MOZILLA FIREFOX BROWSER!\n(Manche Prüfungsfragen werden sonst nicht korrekt dargestellt.)'); + } + else if(userLang == 'English') + { + alert('PLEASE USE MOZILLA FIREFOX BROWSER!\n(Ohterwise some exam items will not be displayed correctly.)'); + } + } + } +</script> </html> diff --git a/include/gebiet.class.php b/include/gebiet.class.php index 8983100ce..d421a9d4c 100644 --- a/include/gebiet.class.php +++ b/include/gebiet.class.php @@ -825,5 +825,68 @@ class gebiet extends basis_db return true; } } + + /** + * Prueft, ob das Gebiet zumindest eine Frage oder einen Vorschlag im MathML Format hat. + * @param $gebiet_id + * return true, wenn Gebiet eine/n Frage/Vorschlag im MathML Format enthält. + */ + public function hasMathML($gebiet_id) + { + if (is_numeric($gebiet_id)) + { + $qry = ' + WITH + fragen AS ( + SELECT DISTINCT + frage_id + FROM + testtool.tbl_frage + JOIN + testtool.tbl_gebiet USING (gebiet_id) + WHERE + tbl_gebiet.gebiet_id = '. $this->db_add_param($gebiet_id, FHC_INTEGER). ' + ), + vorschlaege AS ( + SELECT DISTINCT + vorschlag_id + FROM + testtool.tbl_vorschlag + JOIN + fragen USING (frage_id) + ) + + SELECT + 1 + FROM + testtool.tbl_frage_sprache + JOIN + fragen USING (frage_id) + WHERE + SUBSTRING(text, \'MathML\') IS NOT NULL + + UNION + + SELECT + 1 + FROM + testtool.tbl_vorschlag_sprache + JOIN + vorschlaege USING (vorschlag_id) + WHERE + SUBSTRING(text, \'MathML\') IS NOT NULL + '; + + if($result = $this->db_query($qry)) + { + return ($this->db_num_rows($result) > 0); + } + } + else + { + $this->errormsg = 'Eine numerische gebiet_id muss übergeben werden.'; + return false; + } + } } ?> From 0136d78cfd71bd705c7f2504a3cf3955546d471c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= <oesi@technikum-wien.at> Date: Fri, 10 May 2019 07:53:39 +0200 Subject: [PATCH 24/24] Aligned ECTS in Gradelist --- application/views/person/gradelist/course.php | 6 ++++++ application/views/person/gradelist/semester.php | 14 +++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/application/views/person/gradelist/course.php b/application/views/person/gradelist/course.php index 1f1f1911b..4b4b41d0f 100644 --- a/application/views/person/gradelist/course.php +++ b/application/views/person/gradelist/course.php @@ -7,6 +7,12 @@ else <tr class="gradelist_row_<?php echo $course['lehrtyp_kurzbz']; ?> gradelist_row_depth_<?php echo $depth; ?>"> <td><?php echo $course['bezeichnung']; ?></td> <td align="right"><?php echo (isset($course['ects'])?$course['ects']:''); ?></td> + <!-- + <td align="right"><?php echo (isset($course['sws'])?$course['sws']:''); ?></td> + <td align="right"><?php echo (isset($course['lehrform_kurzbz'])?$course['lehrform_kurzbz']:''); ?></td> + <td align="right"><?php echo (isset($course['pflicht'])?($course['pflicht']?'Ja':'Nein'):''); ?></td> + <td align="right"><?php echo (isset($course['zeugnis'])?($course['zeugnis']?'Ja':'Nein'):''); ?></td> + --> <td class="<?php echo $gradeclass; ?>"> <?php if (isset($course['note']) && isset($grades[$course['note']]['anmerkung'])) diff --git a/application/views/person/gradelist/semester.php b/application/views/person/gradelist/semester.php index ae9bbc5bc..d78e19342 100644 --- a/application/views/person/gradelist/semester.php +++ b/application/views/person/gradelist/semester.php @@ -38,7 +38,13 @@ <thead> <tr> <th><?php echo $this->p->t('lehre','lehrveranstaltung');?></th> - <th><?php echo $this->p->t('lehre','ects');?></th> + <th style="text-align: right"><?php echo $this->p->t('lehre','ects');?></th> + <!-- + <th>SWS</th> + <th>Lehrform</th> + <th>Pflichtfach</th> + <th>Zeugnis</th> + --> <th><?php echo $this->p->t('lehre','note');?></th> </tr> </thead> @@ -79,6 +85,12 @@ <tr> <th><?php echo $this->p->t('lehre','lehrveranstaltung');?></th> <th><?php echo $this->p->t('lehre','ects');?></th> + <!-- + <th>SWS</th> + <th>Lehrform</th> + <th>Pflichtfach</th> + <th>Zeugnis</th> + --> <th><?php echo $this->p->t('lehre','note');?></th> </tr> </thead>