From f1b32cd00dd2e35786a71814cbe54aae4856a0dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Tue, 20 Feb 2018 17:10:37 +0100 Subject: [PATCH] =?UTF-8?q?-=20Neue=20Booleans=20fuer=20archiv,=20signiert?= =?UTF-8?q?,=20stud=5Fselfservice=20zu=20tbl=5Fakte=20hinzugef=C3=BCgt=20-?= =?UTF-8?q?=20Archiv=20zeigt=20nun=20alle=20Dokumente=20an=20die=20auf=20a?= =?UTF-8?q?rchiv=20gesetzt=20sind=20anstatt=20nur=20Zugnisse=20-=20Bei=20V?= =?UTF-8?q?orlagen=20kann=20definiert=20werden=20ob=20das=20dokument=20sig?= =?UTF-8?q?niert,=20archiviert=20oder=20heruntergeladen=20werden=20kann.?= =?UTF-8?q?=20-=20Vorlagen=20koennen=20mit=20Dokumentarten=20verkn=C3=BCpf?= =?UTF-8?q?t=20werden?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/pdfExport.php | 104 +++++------- content/student/studentoverlay.js.php | 42 +++-- content/student/studentzeugnisoverlay.xul.php | 55 +++---- include/akte.class.php | 112 ++++++++++++- include/vorlage.class.php | 39 ++++- rdf/akte.rdf.php | 35 ++-- rdf/vorlage.rdf.php | 44 +++++ system/dbupdate_3.3.php | 152 +++++++++++++++++- 8 files changed, 441 insertions(+), 142 deletions(-) create mode 100644 rdf/vorlage.rdf.php diff --git a/content/pdfExport.php b/content/pdfExport.php index 80a62948a..7104ed3cc 100644 --- a/content/pdfExport.php +++ b/content/pdfExport.php @@ -177,21 +177,9 @@ if (isset($_GET['output']) && $_GET['output'] != 'pdf') else $output = 'pdf'; -/** TODO *******************/ - //XSL aus der DB holen - $vorlage = new vorlage(); - if ($xsl_oe_kurzbz != '') - { - $vorlage->getAktuelleVorlage($xsl_oe_kurzbz, $xsl, $version); - } - else - { - if ($xsl_stg_kz == '') - $xsl_stg_kz = '0'; - - $vorlage->getAktuelleVorlage($xsl_stg_kz, $xsl, $version); - } -/** TODO ENDE ****************/ +$vorlage = new vorlage(); +if(!$vorlage->loadVorlage($xsl)) + die('Vorlage wurde nicht gefunden'); //Berechtigung pruefen if ($xsl == 'AccountInfo') @@ -233,61 +221,25 @@ if ($xsl == 'AccountInfo') exit; } } -elseif (in_array($xsl,array('Lehrveranstaltungszeugnis','Zertifikat','Diplomurkunde','Diplomzeugnis', -'Bescheid', 'BescheidEng','Bakkurkunde','BakkurkundeEng','Bakkzeugnis', -'PrProtokollBakk','PrProtokollDipl','Lehrauftrag','DiplomurkundeEng','Zeugnis','ZeugnisEng','StudienerfolgEng', -'Sammelzeugnis','PrProtDiplEng','PrProtBakkEng','BakkzeugnisEng','DiplomzeugnisEng','statusbericht', -'DiplSupplement','Zutrittskarte','Projektbeschr','Ausbildungsver','AusbildStatus','PrProtBA','PrProtMA', -'PrProtBAEng','PrProtMAEng','Studienordnung','Erfolgsnachweis','ErfolgsnwHead','Studienblatt','LV_Informationen', -'LVZeugnis','AnwListBarcode','Honorarvertrag','AusbVerEng','AusbVerEngHead','Zeugnis','ZeugnisNeu','ZeugnisEngNeu', -'ErfolgsnachweisE','ErfolgsnwHeadE','Magisterurkunde','Masterurkunde','Defensiourkunde','Magisterzeugnis', -'Laufzettel','StudienblattEng','Zahlung1','Terminliste','Studienbuchblatt','Veranstaltungen'))) -{ - if (!$rechte->isBerechtigt('admin') && !$rechte->isBerechtigt('assistenz')) - { - echo 'Sie haben keine Berechtigung dieses Dokument zu erstellen'; - exit; - } -} -elseif (in_array($xsl,array('Ressource'))) -{ - if (!$rechte->isBerechtigt('lehre/lvplan')) - { - echo 'Sie haben keine Berechtigung dieses Dokument zu erstellen'; - exit; - } -} -elseif (in_array($xsl,array('Inskription','Studienerfolg','OutgoingLearning','OutgoingChangeL','LearningAgree','Zahlung','DichiaSost'))) -{ - if (!$rechte->isBerechtigt('admin') && !$rechte->isBerechtigt('assistenz')) - { - echo 'Sie haben keine Berechtigung dieses Dokument zu erstellen'; - exit; - } -} -elseif ($xsl=='Uebernahme') -{ - if (!$rechte->isBerechtigt('wawi/inventar') && !$rechte->isBerechtigt('assistenz') && !$rechte->isBerechtigt('basis/betriebsmittel')) - { - echo 'Sie haben keine Berechtigung dieses Dokument zu erstellen'; - exit; - } -} -elseif ($xsl=='Bestellung') -{ - if (!$rechte->isBerechtigt('wawi/bestellung')) - { - echo 'Sie haben keine Berechtigung dieses Dokument zu erstellen'; - exit; - } -} else { + $vorlagestudiengang = new vorlage(); + if ($xsl_oe_kurzbz != '') + { + $vorlagestudiengang->getAktuelleVorlage($xsl_oe_kurzbz, $xsl, $version); + } + else + { + if ($xsl_stg_kz == '') + $xsl_stg_kz = '0'; + + $vorlagestudiengang->getAktuelleVorlage($xsl_stg_kz, $xsl, $version); + } // Wenn Berechtigung direkt beim der Vorlage angegeben ist - if (count($vorlage->berechtigung)>0) + if (count($vorlagestudiengang->berechtigung)>0) { $allowed = false; - foreach($vorlage->berechtigung as $berechtigung_kurzbz) + foreach($vorlagestudiengang->berechtigung as $berechtigung_kurzbz) { if ($rechte->isBerechtigt($berechtigung_kurzbz)) $allowed = true; @@ -327,6 +279,11 @@ if ($xsl_oe_kurzbz == '') $xsl_oe_kurzbz = $stg_obj->oe_kurzbz; } +if($sign === true && $vorlage->signierbar === false) +{ + die('Diese Vorlage darf nicht signiert werden'); +} + if (!isset($_REQUEST["archive"])) { if (mb_strstr($vorlage->mimetype, 'application/vnd.oasis.opendocument')) @@ -383,6 +340,9 @@ if (!isset($_REQUEST["archive"])) } else { + if(!$vorlage->archivierbar) + die('Dieses Dokument ist nicht archivierbar'); + // Archivieren von Dokumenten $uid = $_REQUEST["uid"]; $heute = date('Y-m-d'); @@ -446,6 +406,11 @@ else die($dokument->errormsg); $error = false; + + // Beim Archivieren wird das Dokument immer signiert wenn moeglich + if($vorlage->signierbar) + $sign = true; + if ($sign === true) { if ($dokument->sign($user)) @@ -467,7 +432,10 @@ else $hex = base64_encode($doc); $akte = new akte(); $akte->person_id = $person_id; - $akte->dokument_kurzbz = 'Zeugnis'; + if($vorlage->dokument_kurzbz!='') + $akte->dokument_kurzbz = $vorlage->dokument_kurzbz; + else + $akte->dokument_kurzbz = 'Zeugnis'; $akte->inhalt = $hex; $akte->mimetype = 'application/octet-stream'; $akte->erstelltam = $heute; @@ -481,6 +449,10 @@ else $akte->ext_id = ''; $akte->uid = $uid; $akte->new = true; + $akte->archiv = true; + $akte->signiert = $sign; + $akte->stud_selfservice = $vorlage->stud_selfservice; + if (!$akte->save()) { echo 'Erstellen Fehlgeschlagen: '.$akte->errormsg; diff --git a/content/student/studentoverlay.js.php b/content/student/studentoverlay.js.php index 9fdfa4382..f2332eb3b 100644 --- a/content/student/studentoverlay.js.php +++ b/content/student/studentoverlay.js.php @@ -1273,7 +1273,7 @@ function StudentAuswahl() { // *** Zeugnis *** zeugnistree = document.getElementById('student-zeugnis-tree'); - url='rdf/akte.rdf.php?person_id='+person_id+"&dokument_kurzbz=Zeugnis&"+gettimestamp(); + url='rdf/akte.rdf.php?person_id='+person_id+"&"+gettimestamp(); try { @@ -2926,17 +2926,10 @@ function StudentAkteDel() function StudentAkteDisableFields(val) { document.getElementById('student-zeugnis-button-archive').disabled=val; + // Zeugnis als Default markieren + document.getElementById('student-zeugnis-menulist-dokument').value='Zeugnis'; } -function StudentAkteToggleDetails() -{ - var studentarchivierendetails = document.getElementById('student-zeugnis-archivieren-erweitert'); - - if(studentarchivierendetails.hidden) - studentarchivierendetails.hidden = false; - else - studentarchivierendetails.hidden = true; -} // **** // * Offent eine Seite zum Upload einer neuen Datei zu einer archivierten Akte // **** @@ -2986,19 +2979,39 @@ function StudentZeugnisDokumentArchivieren() var vorlage = document.getElementById('student-zeugnis-menulist-dokument').value; var url = 'content/pdfExport.php'; var xml = ''; + switch(vorlage) { case 'Zeugnis': case 'ZeugnisEng': xml = 'zeugnis.rdf.php' break; + + case 'PrProtokollBakk': + case 'PrProtBakkEng': + case 'PrProtBA': + case 'PrProtBAEng': + case 'PrProtokollDipl': + case 'PrProtDiplEng': + case 'PrProtMA': + case 'PrProtMAEng': case 'Bescheid': case 'BescheidEng': xml = 'abschlusspruefung.rdf.php'; break; + case 'DiplSupplement': xml = 'diplomasupplement.xml.php'; break; + + case 'Studienblatt': + case 'StudienblattEng': + xml = 'studienblatt.xml.php'; + break; + default: + alert('Das archivieren fuer diesen Dokumenttyp wird derzeit nicht unterstuetzt'); + return + break; } var labelalt = document.getElementById('student-zeugnis-button-archive').label; @@ -3019,9 +3032,6 @@ function StudentZeugnisDokumentArchivieren() req.add('archive', '1'); req.add('uid', uid); - if(document.getElementById('student-zeugnis-checkbox-sign').checked) - req.add('sign', '1'); - var response = req.execute(); if(response!='') errormsg = errormsg + response; @@ -3038,6 +3048,7 @@ function StudentZeugnisDokumentArchivieren() // * Startet das Script zum Archivieren des Zeugnisses und // * Refresht dann den Tree // **** +/* function StudentZeugnisArchivieren(lang) { lang = lang || 'ger'; @@ -3142,7 +3153,7 @@ function StudentBescheidArchivieren(lang) StudentAkteTreeDatasource.Refresh(false); } - +*/ // **************** Incomming/Outgoing ****************** // **** @@ -5273,6 +5284,7 @@ function StudentCreateDiplSupplement(event) // **** // * Archiviert das Diplomasupplement einer Person // **** +/* function StudentDiplomasupplementArchivieren() { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); @@ -5309,7 +5321,7 @@ function StudentDiplomasupplementArchivieren() document.getElementById('student-zeugnis-button-archivieren-diplomasupplement').label=labelalt; StudentAkteTreeDatasource.Refresh(false); } - +*/ // **** // * Erstellt den Ausbildungsvertrag fuer einen oder mehrere Studenten // **** diff --git a/content/student/studentzeugnisoverlay.xul.php b/content/student/studentzeugnisoverlay.xul.php index c17c95887..c47ee85b7 100644 --- a/content/student/studentzeugnisoverlay.xul.php +++ b/content/student/studentzeugnisoverlay.xul.php @@ -77,7 +77,7 @@ echo ''; class="sortDirectionIndicator" sort="rdf:http://www.technikum-wien.at/akte/rdf#erstelltam" /> -