diff --git a/application/controllers/api/frontend/v1/stv/Archiv.php b/application/controllers/api/frontend/v1/stv/Archiv.php index cc636951d..09cefc045 100644 --- a/application/controllers/api/frontend/v1/stv/Archiv.php +++ b/application/controllers/api/frontend/v1/stv/Archiv.php @@ -39,7 +39,7 @@ class Archiv extends FHCAPI_Controller 'archive' => ['admin:w', 'assistenz:w'], 'download' => ['admin:w', 'assistenz:w'], 'update' => ['admin:w'], - 'delete' => ['admin:w', 'assistenz:w'] + 'delete' => ['admin:w', 'assistenz:w'], ]); // Load models diff --git a/application/controllers/api/frontend/v1/stv/Dokumente.php b/application/controllers/api/frontend/v1/stv/Dokumente.php index 18c976eb6..520f5d824 100644 --- a/application/controllers/api/frontend/v1/stv/Dokumente.php +++ b/application/controllers/api/frontend/v1/stv/Dokumente.php @@ -2,6 +2,7 @@ if (! defined('BASEPATH')) exit('No direct script access allowed'); +use \CI3_Events as Events; use \DateTime as DateTime; class Dokumente extends FHCAPI_Controller @@ -19,6 +20,8 @@ class Dokumente extends FHCAPI_Controller 'getDoktypen' => ['admin:r', 'assistenz:r'], 'uploadDokument' => ['admin:rw', 'assistenz:rw'], 'download' => ['admin:rw', 'assistenz:rw'], + 'getDocumentDropDown' => ['admin:rw', 'assistenz:rw'], + 'getDocumentDropDownMulti' => ['admin:rw', 'assistenz:rw'], ]); // Load Libraries @@ -566,4 +569,507 @@ class Dokumente extends FHCAPI_Controller return false; } } + + public function getDocumentDropDown($prestudent_id, $studiensemester_kurzbz, $studiengang_kz) + { + //TODO(Manu) Berechtigungen hasPermissionOutputformat + //TODO(Manu) remove: just for test ouput + $hasPermissionOutputformat = false; + + //TODO(Manu) Validierungen + if (!$prestudent_id) { + $this->terminateWithError('Prestudent id is required.'); + } + if (!$studiensemester_kurzbz) + $this->terminateWithError("kein Studiensemester"); + if (!$studiengang_kz) + $this->terminateWithError("kein Studiengang_kz"); + + $uid = $this->_loadUIDFromPrestudent($prestudent_id); + $semArray = $this->_getEntriesStudiensemester(); + $stgTyp = $this->_getStudiengangstyp($studiengang_kz); + + //TODO(Manu) check if if Array[0] bis Array[4] befüllt + //TODO(Manu) handling stgTyp ungleich b,m,d + + // $semString = implode(";", $semArray); + // $this->terminateWithError("Semester " . $semString . " " . $semArray[0] . " " . $semArray[1]); + + $documents = [ + $this->buildDropdownEntry("accountinfo", "Accountinfoblatt", "xml=accountinfoblatt.xml.php&xsl=AccountInfo&output=pdf", $uid, 10, null), + $this->buildDropdownEntry("ausbildungsvertrag", "Ausbildungsvertrag", "xml=ausbildungsvertrag.xml.php&xsl=Ausbildungsver&output=pdf", $uid, 20, null), + $this->buildDropdownEntry("ausbildungsvertrag_en", "Ausbildungsvertrag Englisch", "xml=ausbildungsvertrag.xml.php&xsl=AusbVerEng&output=pdf", $uid, 21, null), + $this->buildDropdownEntry("studienbestaetigung", "Studienbestätigung", "xml=student.rdf.php&xsl=Inskription&output=pdf", $uid, 40, null), + $this->buildDropdownEntry("studienbestaetigung_en", "Studienbestätigung Englisch", "xml=student.rdf.php&xsl=InskriptionEng&output=pdf", $uid, 41, null), + $this->buildDropdownEntry("zutrittskarte", "Zutrittskarte", "xsl=ZutrittskarteStud&output=pdf&data=$uid", $uid,100, "zutrittskarte.php"), + $this->buildDropdownEntry("studienblatt", "Studienblatt", "xml=studienblatt.xml.php&xsl=Studienblatt&output=pdf&ss=$studiensemester_kurzbz", $uid, 60, null), + $this->buildDropdownEntry("studienblatt_eng", "Studienblatt Englisch", "xml=studienblatt.xml.php&xsl=StudienblattEng&output=pdf&ss=$studiensemester_kurzbz", $uid, 61, null), + + // Studienerfolg Menüs automatisch + $this->buildStudienerfolgSubmenu("de", $uid, $semArray, $studiensemester_kurzbz), + $this->buildStudienerfolgSubmenu("en", $uid, $semArray, $studiensemester_kurzbz), + $this->buildStudienerfolgSubmenu("de", $uid, $semArray, $studiensemester_kurzbz, true), + $this->buildStudienerfolgSubmenu("en", $uid, $semArray, $studiensemester_kurzbz, true), + + [ + "id" => "submenu_studstatus", + "type" => "submenu", + "name" => "Verwaltung des StudierendenStatus", + "order" => 110, + "data" => [ + $this->buildDropdownEntry("Abmeldung", "Abmeldung", "xml=AntragAbmeldung.xml.php&xsl=AntragAbmeldungl&prestudent_id=$prestudent_id&output=pdf", $uid, null, null), + $this->buildDropdownEntry("Abmeldung durch Stgl", "AntragAbmeldungStgl", "xml=AntragAbmeldungStgl.xml.php&xsl=AntragAbmeldungStgl&prestudent_id=$prestudent_id&output=pdf", $uid, null, null), + $this->buildDropdownEntry("Unterbrechung", "Unterbrechung", "xml=AntragUnterbrechung.xml.php&xsl=AntragUnterbrechung&prestudent_id=$prestudent_id&output=pdf", $uid, null, null), + $this->buildDropdownEntry("Wiederholung", "Abmeldung durch Ablauf der Wiederholungsfrist", "xml=AntragWiederholung.xml.php&xsl=AntragWiederholung&prestudent_id=$prestudent_id&output=pdf", $uid, null, null), + ] + ], + + $this->loadDropDownEntriesFinalExam($hasPermissionOutputformat, $stgTyp, $uid), + + $this->buildDropdownEntry("bescheid", "Bescheid (nur Voransicht)", "xml=abschlusspruefung.rdf.php&xsl_stg_kz=$studiengang_kz&xsl=Bescheid&output=pdf", $uid, 80, null), + $this->buildDropdownEntry("diplomasupp", "Diploma Supplement (nur Voransicht)", "xml=diplomasupplement.xml.php&xsl_stg_kz=$studiengang_kz&xsl=DiplSupplement&output=pdf", $uid, 81, null) + ]; + + Events::trigger('DocumentGenerationDropDown', + // passing $menu per reference + function & () use (&$documents) { + return $documents; + }, + $prestudent_id, + $studiensemester_kurzbz, + $studiengang_kz + ); + + usort($documents, function ($a, $b) { + $orderA = isset($a['order']) ? (int)$a['order'] : PHP_INT_MAX; + $orderB = isset($b['order']) ? (int)$b['order'] : PHP_INT_MAX; + return $orderA <=> $orderB; + }); + + + $this->terminateWithSuccess($documents); + return $documents || null; + } + + public function getDocumentDropDownMulti() + { + $studentUids = $this->input->get('studentUids'); + $prestudentIds = []; + + if (is_array($studentUids) && !empty($studentUids)) { + foreach ($studentUids as $uid) { + $prestudent_id = $this-> _loadPrestudentFromUid($uid); + $prestudentIds[] = $prestudent_id; + } + } else { + echo "No prestudent IDs received."; + } + + $uidString = implode(";", $studentUids); + $prestudentIdsString = implode(";", $prestudentIds); + + + $documents = [ + [ + "id" => "accountinfo1", + "type" => "documenturl", + "name" => "Accountinfoblatt", + "url" => "pdfExport.php?xml=accountinfoblatt.xml.php&xsl=AccountInfo&output=pdf&uid=" . $uidString, + "scope" => "prestudent" + ], + [ + "id" => "ausbildungsvertrag1_de", + "type" => "documenturl", + "name" => "Ausbildungsvertrag Deutsch", + "url" => "pdfExport.php?xml=ausbildungsvertrag.xml.php&xsl=Ausbildungsver&output=pdf&uid=" . $uidString, + "scope" => "prestudent" + ], + [ + "id" => "ausbildungsvertrag1_en", + "type" => "documenturl", + "name" => "Ausbildungsvertrag Englisch", + "url" => "pdfExport.php?xml=ausbildungsvertrag.xml.php&xsl=AusbVerEng&output=pdf&uid=" . $uidString, + "scope" => "prestudent" + ], + [ + "id" => "submenu_studienerfolg_1", + "type" => "submenu", + "name" => "Studienerfolg", + "data" => [ + [ + "id" => "submenu_studienerfolg_sem1", + "type" => "submenu", + "name" => "Studienerfolg WS2025", + "data" => [ + [ + "id" => "studienerfolg_sem_alle_1", + "type" => "submenu", + "name" => "Studienerfolg WS2025 Alle", + "data" => [ + [ + "id" => "studienerfolg_sem_alle_1_FA", + "type" => "documenturl", + "name" => "Studienerfolg Alle FINANZAMT", + "url" => "pdfExport.php?xml=ausbildungsvertrag.xml.php&xsl=AusbVerEng&output=pdf&uid=" . $uidString, + "scope" => "prestudent" + ], + [ + "id" => "studienerfolg_sem_alle_1_nichtFA", + "type" => "documenturl", + "name" => "Studienerfolg Alle NICHT FINANZAMT", + "url" => "pdfExport.php?xml=ausbildungsvertrag.xml.php&xsl=AusbVerEng&output=pdf&uid=" . $uidString, + "scope" => "prestudent" + ] + ] + + ] + ] + ] + ] + ], + [ + "id" => "submenu_studstatus", + "type" => "submenu", + "name" => "Verwaltung des StudierendenStatus", + "data" => [ + [ + "id" => "Abmeldung", + "type" => "documenturl", + "name" => "Abmeldung", + "url" => "pdfExport.php?xml=AntragAbmeldung.xml.php&xsl=AntragAbmeldung&output=pdf&uid=" . $uidString, + "scope" => "prestudent" + ], + [ + "id" => "Abmeldung durch Stg", + "type" => "documenturl", + "name" => "AntragAbmeldungStgl", + "url" => "pdfExport.php?xml=AntragAbmeldungStgl.xml.php&xsl=AntragAbmeldungStgl&output=pdf&uid=" . $uidString, + "scope" => "prestudent" + ] + ] + ], + [ + "id" => "zutrittskarte", + "type" => "documenturl", + "name" => "Zutrittskarte", + "url" => "zutrittskarte.php?xsl=ZutrittskarteStud&output=pdf&data=" . $uidString, + "scope" => "prestudent" + ], + [ + "id" => "zutrittskarte", + "type" => "parameterurl", + "name" => "Zutrittskarte", + "baseurl" => "zutrittskarte.php", + "parameterurl" =>"xsl=ZutrittskarteStud&output=pdf&data=" . $uidString, + "scope" => "prestudent" + ], + [ + "id" => "studienbestaetigung", + "type" => "documenturl", + "name" => "Studienbestätigung", + "url" => "pdfExport.php?xml=ausbildungsvertrag.xml.php&xsl=AusbVerEng&output=pdf&uid=" . $uidString, + "scope" => "prestudent" + ], + [ + "id" => "studienerfolg", + "type" => "documenturl", + "name" => "Studienbestätigung", + "url" => "pdfExport.php?xml=ausbildungsvertrag.xml.php&xsl=AusbVerEng&output=pdf&uid=" . $uidString, + "scope" => "prestudent" + ], + + ]; + +/* Events::trigger('DocumentGenerationDropDownMulti', + // passing $menu per reference + function & () use (&$documents) { + return $documents; + }, + $prestudent_id, + $studiensemester_kurzbz, + $studiengang_kz + );*/ + + usort($documents, function ($a, $b) { + $orderA = isset($a['order']) ? (int)$a['order'] : PHP_INT_MAX; + $orderB = isset($b['order']) ? (int)$b['order'] : PHP_INT_MAX; + return $orderA <=> $orderB; + }); + + // FireEvent(DocumentGenerationDropDownMulti(&$documents); + + $this->terminateWithSuccess($documents); + + return $documents || null; + } + + private function _loadUIDFromPrestudent($prestudent_id) + { + if(!$prestudent_id){ + return $this->terminateWithError("no prestudent ID received."); + } + $this->load->model('crm/Student_model', 'StudentModel'); + $result = $this->StudentModel->loadWhere( + ['prestudent_id' => $prestudent_id] + ); + + $data = $this->getDataOrTerminateWithError($result); + $student = current($data); + + return $student->student_uid; + } + + private function _loadPrestudentFromUid($studentUid) + { + + $this->load->model('crm/Student_model', 'StudentModel'); + $result = $this->StudentModel->loadWhere( + ['student_uid' => $studentUid] + ); + + $data = $this->getDataOrTerminateWithError($result); + $student = current($data); + + + return $student->prestudent_id; + } + + /** + * is building an array with studiensemesterkurzb + * actual studiensemester plus the 5 studiensemester in the past + + * @return Array Studiensemester_kurzbz + */ + private function _getEntriesStudiensemester(){ + $this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel'); + + $this->StudiensemesterModel->addPlusMinus(1, 5); + $this->StudiensemesterModel->addOrder('ende', 'DESC'); + $result = $this->StudiensemesterModel->load(); + $data = $this->getDataOrTerminateWithError($result); + + foreach($data as $sem) + { + $semArray[] = $sem->studiensemester_kurzbz; + } + + array_shift($semArray); + + return $semArray; + } + /** + * is returning the typ of Studiengang (Bakk oder Master) + + * @return character eg. 'b' or 'm' + */ + private function _getStudiengangstyp($studiengang_kz) + { + $this->load->model('organisation/Studiengang_model', 'StudiengangModel'); + + $result = $this->StudiengangModel->loadWhere( + array('studiengang_kz' => $studiengang_kz) + ); + $data = $this->getDataOrTerminateWithError($result); + + $typStudiengang = current($data)->typ; + + return $typStudiengang; + } + + //TODO(Manu) make helperfunction + /** + * is building an array for Dropdown Entry in Print Dropdown + * @param $id id for the Document to add to the Document Array + * @param $name name of the dropdownEntry + * @param $parameterUrl url of parameters xml, xsl,format as needed + * WITHOUT BASEURL eg. "xml=abschlusspruefung.rdf.php&xsl_stg_kz=$studiengang_kz&xsl=Bescheid&output=pdf" + * @param $uid default parameter, if null only parameterurl will be added + * additional needed parameter: put in the parameterUrl + * @param $alternativeBaseUrl: if baseUrl not pdfExport.php, put here alternative without ? char, eg. "zutrittskarte.php" + + * @return Array + */ + private function buildDropdownEntry($id, $name, $parameterurl, $uid=null, $order=null, $alternativeBaseUrl=null) + { + //DEFAULT BASEURL + $baseurl = "pdfExport.php?"; + + $uidString = $uid ? "&uid=" . $uid : ""; + + if($alternativeBaseUrl) + { + return [ + "id" => $id, + "type" => "documenturl", + "name" => $name, + "url" => $alternativeBaseUrl . "?" . $parameterurl . $uidString, + "order" => $order + ]; + } + else + return [ + "id" => $id, + "type" => "documenturl", + "name" => $name, + "url" => $baseurl . $parameterurl . "&uid=" . $uid, + "order" => $order + ]; + + } + + /** + * helper function to create ArrayStructure + * actual studiensemester plus the 5 studiensemester in the past + + * @return Array Studiensemester_kurzbz + */ + private function buildStudienerfolgSubmenu($lang, $uid, $semArray, $studiensemester_kurzbz, $fa = false) + { + $entries = []; + + $xsl = $lang === "de" ? "Studienerfolg" : "StudienerfolgEng"; + $idPrefix = "submenu_studienerfolg_" . $lang . ($fa ? "_fa" : ""); + + $entries[] = $this->buildDropdownEntry( + $idPrefix . "_aktuell", + "ausgewähltes Semester", + "xml=studienerfolg.rdf.php&xsl=$xsl&ss=$studiensemester_kurzbz" . ($fa ? "&typ=finanzamt" : ""), + $uid + ); + + //all semester + $entries[] = $this->buildDropdownEntry( + $idPrefix . "_all", + "alle Semester", + "xml=studienerfolg.rdf.php&xsl=$xsl&ss=$studiensemester_kurzbz&all=true" . ($fa ? "&typ=finanzamt" : ""), + $uid + ); + + //sem from array + foreach ($semArray as $i => $sem) { + $entries[] = $this->buildDropdownEntry( + $idPrefix . ($i === 0 ? "_akt" : "_minus" . $i), + $sem, + "xml=studienerfolg.rdf.php&xsl=$xsl&ss=$sem" . ($fa ? "&typ=finanzamt" : ""), + $uid + ); + + } + $order = 0; + if ($lang === "de" && !$fa) $order = 75; // Studienerfolg + if ($lang === "en" && !$fa) $order = 76; // Studienerfolg Englisch + if ($lang === "de" && $fa) $order = 77; // Studienerfolg Finanzamt + if ($lang === "en" && $fa) $order = 78; // Studienerfolg Finanzamt Englisch + + return [ + "id" => $idPrefix, + "type" => "submenu", + "name" => "Studienerfolg " . ($fa ? " Finanzamt" : "") . ($lang === "de" ? "" : "Englisch") , + "order" => $order, + "data" => $entries, + ]; + } + + private function loadDropDownEntriesFinalExam($hasPermissionOutputformat, $stgTyp, $uid) + { + if ($stgTyp == 'b') + $postfix = 'Bakk'; + else if ($stgTyp == 'm' || $stgTyp == 'd') + $postfix = 'Master'; + else + //TODO(Manu) sollte nicht null sein!! -> dropdown wird im Falle von Lehrgängen nicht erstellt + return null; + + + $arrayFinalExam = [ + 'pruefungsprotokoll' => [ + 'de' => [ + 'Bakk' => 'PrProtBA', + 'Master' => 'PrProtMA', + ], + 'en' => [ + 'Bakk' => 'PrProtBAEng', + 'Master' => 'PrProtMAEng', + ], + ], + 'pruefungszeugnis' => [ + 'de' => [ + 'Bakk' => 'Bakkzeugnis', + 'Master' => 'Diplomzeugnis', + ], + 'en' => [ + 'Bakk' => 'BakkzeugnisEng', + 'Master' => 'DiplomzeugnisEng', + ], + ], + 'urkunde' => [ + 'de' => [ + 'Bakk' => 'Bakkurkunde', + 'Master' => 'Diplomurkunde', + ], + 'en' => [ + 'Bakk' => 'BakkurkundeEng', + 'Master' => 'DiplomurkundeEng', + ], + ], + ]; + + $langLabels = [ + "de" => "Deutsch", + "en" => "Englisch" + ]; + + $docLabels = [ + "pruefungsprotokoll" => "Prüfungsprotokoll", + "pruefungszeugnis" => "Zeugnis", + "urkunde" => "Urkunde" + ]; + + $submenuData = []; + if ($hasPermissionOutputformat) { + foreach ($arrayFinalExam as $docType => $langs) { + foreach ($langs as $lang => $types) { + $xsl = $types[$postfix]; + $idPrefix = $docType . "_" . $lang; + + $baseName = $docLabels[$docType] . " " . $langLabels[$lang]; + $baseUrl = "xml=abschlusspruefung.rdf.php&xsl={$xsl}"; + + //3 outputformates + foreach (["pdf", "odt", "docx"] as $format) { + $submenuData[] = $this->buildDropdownEntry( + $idPrefix . "_" . $format, + $baseName . " (" . strtoupper($format) . ")", + $baseUrl . "&output=" . $format, + $uid + ); + } + } + } + } + else + { + foreach ($arrayFinalExam as $docType => $langs) { + foreach ($langs as $lang => $types) { + $xsl = $types[$postfix]; // Auswahl Bakk/Master für jeweilige Sprache + $id = $docType . "_" . $lang; + + $name = $docLabels[$docType] . " " . $langLabels[$lang]; + + $url = "xml=abschlusspruefung.rdf.php&xsl=" . $xsl . "&output=pdf"; + + $submenuData[] = $this->buildDropdownEntry($id, $name, $url, $uid); + } + } + } + return [ + "id" => "submenu_finalexam", + "type" => "submenu", + "name" => "Abschlussprüfung", + "data" => $submenuData, + "order" => null, + "order" => 80, + ]; + } + } diff --git a/public/js/api/factory/stv/archiv.js b/public/js/api/factory/stv/archiv.js index ca8f25116..cf380b25d 100644 --- a/public/js/api/factory/stv/archiv.js +++ b/public/js/api/factory/stv/archiv.js @@ -39,5 +39,5 @@ export default { url: 'api/frontend/v1/stv/archiv/delete', params: {akte_id, studiengang_kz} }; - } + }, }; diff --git a/public/js/api/factory/stv/documents.js b/public/js/api/factory/stv/documents.js index 1898023cd..37ec8298b 100644 --- a/public/js/api/factory/stv/documents.js +++ b/public/js/api/factory/stv/documents.js @@ -73,4 +73,18 @@ export default { params }; }, + getDocumentDropdown(params){ + console.log(params); + return { + method: 'get', + url: 'api/frontend/v1/stv/dokumente/getDocumentDropDown/' + params.prestudent_id + '/' + params.studiensemester_kurzbz + '/' + params.studiengang_kz, + }; + }, + getDocumentDropdownMulti(studentUids){ + return { + method: 'get', + url: 'api/frontend/v1/stv/dokumente/getDocumentDropDownMulti/', + params: {studentUids} + }; + } } \ No newline at end of file diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Abschlusspruefung/Abschlusspruefung.js b/public/js/components/Stv/Studentenverwaltung/Details/Abschlusspruefung/Abschlusspruefung.js index e5c4cade1..5bcb75176 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Abschlusspruefung/Abschlusspruefung.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Abschlusspruefung/Abschlusspruefung.js @@ -7,7 +7,6 @@ import AbschlusspruefungDropdown from "./AbschlusspruefungDropdown.js"; import ApiStudiengang from '../../../../../api/factory/studiengang.js'; import ApiStvAbschlusspruefung from '../../../../../api/factory/stv/abschlusspruefung.js'; -import ApiStvAddress from "../../../../../api/factory/stv/kontakt/address.js"; export default { components: { diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Archiv.js b/public/js/components/Stv/Studentenverwaltung/Details/Archiv.js index 7a156965f..f439d0135 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Archiv.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Archiv.js @@ -3,18 +3,29 @@ import FormInput from "../../../Form/Input.js"; import AkteEdit from "./Archiv/Edit.js"; import ApiStvArchiv from '../../../../api/factory/stv/archiv.js'; +import ApiStvDocuments from '../../../../api/factory/stv/documents.js'; +import DocumentDropdown from "../Details/Archiv/DocumentDropdown"; + export default { name: 'Archiv', components: { CoreFilterCmpt, FormInput, - AkteEdit + AkteEdit, + DocumentDropdown }, inject: { currentSemester: { from: 'currentSemester' - } + }, + /* isBerechtigtDocAndOdt: { + from: 'hasPermissionOutputformat', + default: false + },*/ + cisRoot: { + from: 'cisRoot' + }, }, props: { modelValue: Object, @@ -64,7 +75,8 @@ export default { 'abschlussdokument_lehrgaenge.xml.php': [ 'AbschlussdokumentLehrgaenge' ] - } + }, + documentDropdownObject: {} }; }, computed: { @@ -184,7 +196,42 @@ export default { ]; return events; + }, + studentUids() { + if (this.modelValue.uid) + { + return [this.modelValue.uid]; + } + return this.modelValue.map(e => e.uid); + }, + studentKzs(){ + if (this.modelValue.uid) + { + return [this.modelValue.studiengang_kz]; + } + return this.modelValue.map(e => e.studiengang_kz); + }, + stg_kz(){ + return this.studentKzs[0]; + }, + showAllFormats() { + if( this.isBerechtigtDocAndOdt === false + || !Array.isArray(this.isBerechtigtDocAndOdt) ) + { + return false; + } + let retval = this.isBerechtigtDocAndOdt.includes(this.stgInfo.oe_kurzbz); + return retval; + }, + showDropDownMulti(){ + + if (this.modelValue.length) { + console.log("started comp property showDropdown Multi " + this.modelValue.length); + return true; + } + return false; } + }, watch: { modelValue() { @@ -252,14 +299,44 @@ export default { } }, created() { + this.$api + .call(ApiStvArchiv.getArchivVorlagen()) + .then(result => { + this.vorlagenArchiv = result.data; + this.selectedVorlage = result.data.filter(o => o.vorlage_kurzbz == 'Zeugnis')[0]; + }) + .catch(this.$fhcAlert.handleSystemError); + + if (this.modelValue.length) { + console.log("multi" + this.modelValue.length); + console.log(this.studentUids); this.$api - .call(ApiStvArchiv.getArchivVorlagen()) - .then(result => {this.vorlagenArchiv = result.data; this.selectedVorlage = result.data.filter(o => o.vorlage_kurzbz == 'Zeugnis')[0];}) + .call(ApiStvDocuments.getDocumentDropdownMulti(this.studentUids)) + .then(result => { + console.log(result); + this.documentDropdownObject = result; + }) .catch(this.$fhcAlert.handleSystemError); + } else { + console.log("single"); + const params = { + prestudent_id: this.modelValue.prestudent_id, + studiensemester_kurzbz: this.currentSemester, + studiengang_kz: this.modelValue.studiengang_kz + }; + this.$api + .call(ApiStvDocuments.getDocumentDropdown(params)) + .then(result => { + console.log(result); + this.documentDropdownObject = result; + }) + .catch(this.$fhcAlert.handleSystemError); + } }, template: `
+ diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Archiv/DocumentDropdown.js b/public/js/components/Stv/Studentenverwaltung/Details/Archiv/DocumentDropdown.js new file mode 100644 index 000000000..215a1f1ca --- /dev/null +++ b/public/js/components/Stv/Studentenverwaltung/Details/Archiv/DocumentDropdown.js @@ -0,0 +1,116 @@ +export default { + name: "DocumentDropdown", + props: { + documents: { + type: [Object, Array], + required: true, + }, + studentUids: { + type: [Array, String], + required: true, + default: () => [] + }, + showDropDownMulti: { + type: Boolean, + required: true + }, + cisRoot: { + type: String, + required: true + }, + stgKz: { + type: Number, + required: true + }, + showAllFormats: { + type: Boolean, + required: true + } + }, + data() { + return {}; + }, + methods: { + printDokument(url, scope){ + //TODO Manu(check if logic not in content (Zutrittkarte also in content folder)) + let linkToPdf = this.cisRoot + 'content/' + url; + console.log("in print " + linkToPdf + " scope" + scope); + window.open(linkToPdf, '_blank'); + } + }, + template: ` +
+
+ + + + + +
+
` +}; + + diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index 23eb39a21..fa03c4ba5 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -47543,6 +47543,28 @@ and represent the current state of research on the topic. The prescribed citatio ) ), //**************************** CORE/search end + // ### DOKUMENTE ERSTELLEN PHRASEN START ### + array( + 'app' => 'core', + 'category' => 'dokumente', + 'phrase' => 'dokument_erstellen', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Dokument erstellen', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Create Document', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + // ### DOKUMENTE ERSTELLEN PHRASEN END ### );