Tab Archive: Documentdropdown for Printing

- define structure for single print array
- fill array with documents according to Fas Dropdown Drucken
- event for adding documents from extension/addons
This commit is contained in:
ma0068
2025-08-27 14:11:03 +02:00
parent 6d7429eb8e
commit 3a5c4444cb
8 changed files with 754 additions and 8 deletions
@@ -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
@@ -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,
];
}
}
+1 -1
View File
@@ -39,5 +39,5 @@ export default {
url: 'api/frontend/v1/stv/archiv/delete',
params: {akte_id, studiengang_kz}
};
}
},
};
+14
View File
@@ -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}
};
}
}
@@ -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: {
@@ -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: `
<div class="stv-details-archiv h-100 d-flex flex-column">
<core-filter-cmpt
ref="table"
table-only
@@ -270,6 +347,7 @@ export default {
:reload-btn-infotext="this.$p.t('table', 'reload')"
>
<template #actions>
<div class="input-group w-auto">
<select class="form-select" v-model="selectedVorlage">
<option v-for="vorlage in vorlagenArchiv" :key="vorlage.vorlage_kurzbz" :value="vorlage">
@@ -285,6 +363,17 @@ export default {
{{ $p.t('stv/archiv_dokument_archivieren') }}
</button>
</div>
<document-dropdown
v-if="documentDropdownObject.data"
:documents="documentDropdownObject.data"
:showAllFormats='true'
:studentUids="studentUids"
:showDropDownMulti="showDropDownMulti"
:cisRoot="cisRoot"
:stgKz="stg_kz"
></document-dropdown>
</template>
</core-filter-cmpt>
<akte-edit ref="edit" :config="config" @saved="updateData"></akte-edit>
@@ -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: `
<div class="stv-document-dropdown">
<div class="btn-group">
<button
v-if="!showDropDownMulti"
ref="toolbarButton"
type="button"
class="btn btn-secondary dropdown-toggle"
data-bs-toggle="dropdown"
data-bs-auto-close="outside"
aria-expanded="false"
@[\`show.bs.dropdown\`]="event => { if (event.target.closest('.tabulator-row')) event.target.closest('.tabulator-row').style.zIndex = 12 }"
@[\`hidden.bs.dropdown\`]="event => { if (event.target.closest('.tabulator-row')) event.target.closest('.tabulator-row').style.zIndex = '' }"
>
{{this.$p.t('dokumente','dokument_erstellen')}}
</button>
<button
v-else
ref="toolbarButton"
type="button"
class="btn btn-secondary dropdown-toggle"
data-bs-toggle="dropdown"
data-bs-auto-close="outside"
aria-expanded="false"
>
multi: {{this.$p.t('tools','dokument_erstellen')}}
</button>
<ul class="dropdown-menu dropdown-menu-right">
<template v-for="doc in documents" :key="doc.id">
<li v-if="doc.type === 'documenturl'">
<button class="dropdown-item" type="button" @click="printDokument(doc.url, doc.scope)">
{{ doc.name }}
</button>
</li>
<li v-else-if="doc.type === 'submenu'" class="dropend">
<a
class="dropdown-item dropdown-toggle"
href="#"
role="button"
data-bs-toggle="dropdown"
aria-expanded="false"
>
{{ doc.name }}
</a>
<ul class="dropdown-menu">
<template v-for="child in doc.data" :key="child.id">
<li v-if="child.type === 'documenturl'">
<button class="dropdown-item" type="button" @click="printDokument(child.url, child.scope)">
{{ child.name }}
</button>
</li>
<li v-else-if="child.type === 'submenu'" class="dropend">
<a
class="dropdown-item dropdown-toggle"
href="#"
role="button"
data-bs-toggle="dropdown"
aria-expanded="false"
>
{{ child.name }}
</a>
</li>
</template>
</ul>
</li>
</template>
</ul>
</div>
</div>`
};
+22
View File
@@ -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 ###
);