diff --git a/application/controllers/Cis/Abgabetool.php b/application/controllers/Cis/Abgabetool.php index 223af86f5..6bf7d951c 100644 --- a/application/controllers/Cis/Abgabetool.php +++ b/application/controllers/Cis/Abgabetool.php @@ -14,7 +14,6 @@ class Abgabetool extends Auth_Controller { parent::__construct([ 'index' => self::PERM_LOGGED, - 'getStudentProjektarbeitAbgabeFile' => array('basis/abgabe_student:rw', 'basis/abgabe_lektor:rw', 'basis/abgabe_assistenz:rw'), 'Mitarbeiter' => array('basis/abgabe_lektor:rw', 'basis/abgabe_assistenz:rw'), 'Assistenz' => array('basis/abgabe_assistenz:rw'), 'Student' => array('basis/abgabe_student:rw', 'basis/abgabe_lektor:rw', 'basis/abgabe_assistenz:rw'), @@ -100,43 +99,4 @@ class Abgabetool extends Auth_Controller $this->load->view('Cis/Abgabetool.php', ['uid' => getAuthUID(), 'route' => 'DeadlinesOverview']); } } - - - public function getStudentProjektarbeitAbgabeFile() - { - $this->_ci =& get_instance(); - $this->_ci->load->helper('download'); - - $paabgabe_id = $this->_ci->input->get('paabgabe_id'); - $student_uid = $this->_ci->input->get('student_uid'); - - if (!isset($paabgabe_id) || isEmptyString($paabgabe_id) || !isset($student_uid) || isEmptyString($student_uid)) - $this->terminateWithJsonError($this->p->t('global', 'wrongParameters'), 'general'); - - $this->_ci->load->model('education/Projektarbeit_model', 'ProjektarbeitModel'); - - $isZugeteilterBetreuer = count($this->_ci->ProjektarbeitModel->checkZuordnung($student_uid, getAuthUID())->retval) > 0; - - if(getAuthUID() == $student_uid || $isZugeteilterBetreuer) { - $file_path = PAABGABE_PATH.$paabgabe_id.'_'.$student_uid.'.pdf'; - if(file_exists($file_path)) { - - header('Content-Description: File Transfer'); - header('Content-Type: application/octet-stream'); - header('Expires: 0'); - header('Cache-Control: must-revalidate'); - header('Pragma: public'); - header('Content-Disposition: attachment; filename="'.basename($file_path).'"'); - header('Content-Length: ' . filesize($file_path)); - - flush(); // send headers first just in case - readfile($file_path); // read file content to output buffer - - } else { - $this->terminateWithJsonError('File not found'); - } - } else { - $this->terminateWithJsonError('Keine Zuordnung!'); - } - } } diff --git a/application/controllers/api/frontend/v1/Abgabe.php b/application/controllers/api/frontend/v1/Abgabe.php index 4a9706789..3a05bd6f6 100644 --- a/application/controllers/api/frontend/v1/Abgabe.php +++ b/application/controllers/api/frontend/v1/Abgabe.php @@ -39,7 +39,9 @@ class Abgabe extends FHCAPI_Controller 'fetchDeadlines' => array('basis/abgabe_assistenz:rw', 'basis/abgabe_lektor:rw'), 'getPaAbgabetypen' => self::PERM_LOGGED, 'getNoten' => self::PERM_LOGGED, - 'getProjektarbeitenForStudiengang' =>array('basis/abgabe_assistenz:rw') + 'getProjektarbeitenForStudiengang' =>array('basis/abgabe_assistenz:rw'), + 'getStudiengaenge' => array('basis/abgabe_assistenz:rw'), + 'getStudentProjektarbeitAbgabeFile' => array('basis/abgabe_student:rw', 'basis/abgabe_lektor:rw', 'basis/abgabe_assistenz:rw'), ]); $this->load->library('PhrasesLib'); @@ -869,6 +871,10 @@ class Abgabe extends FHCAPI_Controller $result = $this->ProjektarbeitModel->getProjektarbeitenForStudiengang($studiengang_kz); $projektarbeiten = $this->getDataOrTerminateWithError($result); + if(count($projektarbeiten) == 0) { // avoid further abgabetermin queries if the are no projektarbeiten + $this->terminateWithSuccess(array($projektarbeiten, DOMAIN)); + } + $mapFunc = function($projektarbeit) { return $projektarbeit->projektarbeit_id; }; @@ -891,4 +897,60 @@ class Abgabe extends FHCAPI_Controller $this->terminateWithSuccess(array($projektarbeiten, DOMAIN)); } + + public function getStudiengaenge() { + $this->load->library('PermissionLib'); + + $stg_allowed = $this->permissionlib->getSTG_isEntitledFor('basis/abgabe_assistenz:rw'); + + if($stg_allowed == false) { + $this->terminateWithError($this->p->t('global', 'keineBerechtigung'), 'general'); + } + + $this->load->model('organisation/Studiengang_model', 'StudiengangModel'); + + $result = $this->StudiengangModel->getStudiengaengeFiltered($stg_allowed); + $data = $this->getDataOrTerminateWithError($result); + + $this->terminateWithSuccess($data); + } + + public function getStudentProjektarbeitAbgabeFile() + { + $this->load->helper('download'); + + $paabgabe_id = $this->input->get('paabgabe_id'); + $student_uid = $this->input->get('student_uid'); + + if (!isset($paabgabe_id) || isEmptyString($paabgabe_id) || !isset($student_uid) || isEmptyString($student_uid)) + $this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general'); + + $this->load->model('education/Projektarbeit_model', 'ProjektarbeitModel'); + + $isZugeteilterBetreuer = count($this->ProjektarbeitModel->checkZuordnung($student_uid, getAuthUID())->retval) > 0; + $isAssistenz = $this->permissionlib->isBerechtigt('extension/abgabe_assistenz'); + + if(getAuthUID() == $student_uid || $isZugeteilterBetreuer || $isAssistenz) { + $file_path = PAABGABE_PATH.$paabgabe_id.'_'.$student_uid.'.pdf'; + if(file_exists($file_path)) { + + header('Content-Description: File Transfer'); + header('Content-Type: application/octet-stream'); + header('Expires: 0'); + header('Cache-Control: must-revalidate'); + header('Pragma: public'); + header('Content-Disposition: attachment; filename="'.basename($file_path).'"'); + header('Content-Length: ' . filesize($file_path)); + + flush(); // send headers first just in case + readfile($file_path); // read file content to output buffer + + } else { + $this->terminateWithError('File not found'); + } + } else { + $this->terminateWithError('Keine Zuordnung!'); + } + } + } \ No newline at end of file diff --git a/application/models/education/Projektarbeit_model.php b/application/models/education/Projektarbeit_model.php index 821a8d007..9cd28cdf8 100644 --- a/application/models/education/Projektarbeit_model.php +++ b/application/models/education/Projektarbeit_model.php @@ -320,107 +320,85 @@ class Projektarbeit_model extends DB_Model } public function getProjektarbeitenForStudiengang($studiengang_kz) { - - // TODO: select less fields, a lot of useless data over here - - $old_qry = "SELECT *, - (SELECT orgform_kurzbz - FROM tbl_prestudentstatus - WHERE prestudent_id=(Select prestudent_id from tbl_student where student_uid=xy.uid limit 1) - ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1 - ) as organisationsform - FROM (SELECT DISTINCT ON(tbl_projektarbeit.projektarbeit_id) public.tbl_studiengang.bezeichnung as stgbez,tbl_projekttyp.bezeichnung AS prjbez,* FROM lehre.tbl_projektarbeit - 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 public.tbl_benutzer.aktiv - AND lehre.tbl_projektarbeit.note IS NULL - AND public.tbl_studiengang.studiengang_kz = ? - ORDER BY tbl_projektarbeit.projektarbeit_id desc) as xy - ORDER BY nachname"; - - - $new_qry = " - SELECT - DISTINCT ON(tbl_projektarbeit.projektarbeit_id) - tbl_projektarbeit.projekttyp_kurzbz, - tbl_projektarbeit.titel, - tbl_projektarbeit.projektarbeit_id, - tbl_studiengang.typ, tbl_studiengang.kurzbz, - student_benutzer.uid as student_uid, - student_person.vorname as student_vorname, - student_person.nachname as student_nachname, - tbl_student.matrikelnr, tbl_lehreinheit.studiensemester_kurzbz, - betreuer_benutzer.uid as betreuer_benutzer_uid, - betreuer_person.vorname as betreuer_vorname, - betreuer_person.nachname as betreuer_nachname, - lehre.tbl_projektbetreuer.betreuerart_kurzbz as betreuerart, - lehre.tbl_projektbetreuer.person_id as betreuer_person_id, - lehre.tbl_projektarbeit.sprache as sprache, - lehre.tbl_projektarbeit.seitenanzahl as seitenanzahl, - lehre.tbl_projektarbeit.kontrollschlagwoerter as kontrollschlagwoerter, - lehre.tbl_projektarbeit.schlagwoerter as schlagwoerter, - lehre.tbl_projektarbeit.schlagwoerter_en as schlagwoerter_en, - lehre.tbl_projektarbeit.abstract as abstract, - lehre.tbl_projektarbeit.abstract_en as abstract_en, - lehre.tbl_projektarbeit.insertamum as insertamum, - ( - SELECT orgform_kurzbz - FROM tbl_prestudentstatus - WHERE prestudent_id = (SELECT prestudent_id - FROM tbl_student - WHERE student_uid = student_benutzer.uid - LIMIT 1) - ORDER BY datum DESC, insertamum DESC, ext_id DESC - LIMIT 1 - ) - as organisationsform, - ( - 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, - ( - SELECT tbl_betreuerart.beschreibung - FROM lehre.tbl_projektbetreuer - JOIN lehre.tbl_betreuerart USING (betreuerart_kurzbz) - WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id - AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter', 'Senatsmitglied') - LIMIT 1 - ) - AS zweitbetreuer_betreuerart_beschreibung, - ( - SELECT trim(COALESCE(titelpre, '') || ' ' || COALESCE(vorname, '') || ' ' || COALESCE(nachname, '') || ' ' || - COALESCE(titelpost, '')) - FROM public.tbl_person - JOIN lehre.tbl_projektbetreuer ON (lehre.tbl_projektbetreuer.person_id = public.tbl_person.person_id) - LEFT JOIN public.tbl_benutzer ON (public.tbl_benutzer.person_id = public.tbl_person.person_id) - LEFT JOIN public.tbl_mitarbeiter ON (public.tbl_benutzer.uid = public.tbl_mitarbeiter.mitarbeiter_uid) - WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id - AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter') - LIMIT 1 - ) - as zweitbetreuer_full_name + $new_qry = "SELECT DISTINCT ON(tmp.projektarbeit_id) *, campus.get_betreuer_details(tmp.zweitbetreuer_person_id) as zweitbetreuer_full_name, campus.get_betreuer_details(tmp.betreuer_person_id) as erstbetreuer_full_name + FROM( + SELECT + DISTINCT ON(tbl_projektarbeit.projektarbeit_id) + tbl_projektarbeit.projekttyp_kurzbz, + tbl_projektarbeit.titel, + tbl_projektarbeit.projektarbeit_id, + tbl_studiengang.typ, tbl_studiengang.kurzbz, + student_benutzer.uid as student_uid, + student_person.vorname as student_vorname, + student_person.nachname as student_nachname, + tbl_student.matrikelnr, tbl_lehreinheit.studiensemester_kurzbz, + betreuer_benutzer.uid as betreuer_benutzer_uid, + betreuer_person.vorname as betreuer_vorname, + betreuer_person.nachname as betreuer_nachname, + lehre.tbl_projektbetreuer.betreuerart_kurzbz as betreuerart, + lehre.tbl_projektbetreuer.person_id as betreuer_person_id, + lehre.tbl_projektarbeit.sprache as sprache, + lehre.tbl_projektarbeit.seitenanzahl as seitenanzahl, + lehre.tbl_projektarbeit.kontrollschlagwoerter as kontrollschlagwoerter, + lehre.tbl_projektarbeit.schlagwoerter as schlagwoerter, + lehre.tbl_projektarbeit.schlagwoerter_en as schlagwoerter_en, + lehre.tbl_projektarbeit.abstract as abstract, + lehre.tbl_projektarbeit.abstract_en as abstract_en, + lehre.tbl_projektarbeit.insertamum as insertamum, + lehre.tbl_projektarbeit.note as note, + ( + SELECT orgform_kurzbz + FROM tbl_prestudentstatus + WHERE prestudent_id = (SELECT prestudent_id + FROM tbl_student + WHERE student_uid = student_benutzer.uid + LIMIT 1) + ORDER BY datum DESC, insertamum DESC, ext_id DESC + LIMIT 1 + ) + as organisationsform, + ( + 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, + ( + SELECT tbl_betreuerart.beschreibung + FROM lehre.tbl_projektbetreuer + JOIN lehre.tbl_betreuerart USING (betreuerart_kurzbz) + WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id + AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter', 'Senatsmitglied') + LIMIT 1 + ) + AS zweitbetreuer_betreuerart_beschreibung, + ( + SELECT trim(COALESCE(titelpre, '') || ' ' || COALESCE(vorname, '') || ' ' || COALESCE(nachname, '') || ' ' || + COALESCE(titelpost, '')) + FROM public.tbl_person + JOIN lehre.tbl_projektbetreuer ON (lehre.tbl_projektbetreuer.person_id = public.tbl_person.person_id) + LEFT JOIN public.tbl_benutzer ON (public.tbl_benutzer.person_id = public.tbl_person.person_id) + LEFT JOIN public.tbl_mitarbeiter ON (public.tbl_benutzer.uid = public.tbl_mitarbeiter.mitarbeiter_uid) + WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id + AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter') + LIMIT 1 + ) + as zweitbetreuer_full_name FROM lehre.tbl_projektarbeit LEFT JOIN public.tbl_benutzer student_benutzer ON (student_benutzer.uid = lehre.tbl_projektarbeit.student_uid) LEFT JOIN public.tbl_person student_person ON (student_benutzer.person_id = student_person.person_id) - LEFT JOIN public.tbl_student on(student_benutzer.uid = public.tbl_student.student_uid) - LEFT JOIN lehre.tbl_lehreinheit USING (lehreinheit_id) + LEFT JOIN public.tbl_student on(student_benutzer.uid = public.tbl_student.student_uid) + LEFT JOIN lehre.tbl_lehreinheit USING (lehreinheit_id) LEFT JOIN lehre.tbl_lehrveranstaltung USING (lehrveranstaltung_id) LEFT JOIN public.tbl_studiengang ON (public.tbl_student.studiengang_kz = public.tbl_studiengang.studiengang_kz) LEFT JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz) @@ -429,14 +407,11 @@ class Projektarbeit_model extends DB_Model LEFT JOIN public.tbl_benutzer betreuer_benutzer ON (betreuer_person.person_id = betreuer_benutzer.person_id) WHERE (projekttyp_kurzbz = 'Bachelor' OR projekttyp_kurzbz = 'Diplom') AND student_benutzer.aktiv AND (lehre.tbl_projektbetreuer.betreuerart_kurzbz = 'Erstbegutachter' OR lehre.tbl_projektbetreuer.betreuerart_kurzbz = 'Begutachter') - -- AND lehre.tbl_projektarbeit.note IS NULL - -- AND public.tbl_studiengang.studiengang_kz= 257 + -- AND lehre.tbl_projektarbeit.note IS NULL + -- AND public.tbl_studiengang.studiengang_kz= 257 AND public.tbl_studiengang.studiengang_kz = ? - ORDER BY tbl_projektarbeit.projektarbeit_id DESC, student_person.nachname ASC - "; -// $oldres = $this->execReadOnlyQuery($old_qry, array($studiengang_kz)); -// $newres = $this->execReadOnlyQuery($new_qry, array($studiengang_kz)); -// return array($newres, $oldres); + ORDER BY tbl_projektarbeit.projektarbeit_id DESC, student_person.nachname ASC + ) as tmp"; return $this->execReadOnlyQuery($new_qry, array($studiengang_kz)); } diff --git a/application/models/organisation/Studiengang_model.php b/application/models/organisation/Studiengang_model.php index 02f972690..660657f28 100644 --- a/application/models/organisation/Studiengang_model.php +++ b/application/models/organisation/Studiengang_model.php @@ -801,4 +801,21 @@ class Studiengang_model extends DB_Model return $this->execReadOnlyQuery($qry, array($studiengang_kz, $orgform_kurzbz, $studiensemester_kurzbz)); } + + public function getStudiengaengeFiltered($allowed_stg) { + $query ="SELECT DISTINCT + public.tbl_studiengang.studiengang_kz, + public.tbl_studiengang.bezeichnung, + public.tbl_studiengang.kurzbzlang, + public.tbl_studiengang.orgform_kurzbz + FROM public.tbl_studiengang JOIN lehre.tbl_studienordnung USING(studiengang_kz) + JOIN lehre.tbl_studienplan USING(studienordnung_id) + JOIN lehre.tbl_studienplan_semester USING(studienplan_id) + WHERE public.tbl_studiengang.aktiv = true + + AND public.tbl_studiengang.studiengang_kz IN ? + ORDER BY public.tbl_studiengang.kurzbzlang"; + + return $this->execReadOnlyQuery($query, [$allowed_stg]); + } } diff --git a/application/views/Cis/Abgabetool.php b/application/views/Cis/Abgabetool.php index af259ca48..d47f33283 100644 --- a/application/views/Cis/Abgabetool.php +++ b/application/views/Cis/Abgabetool.php @@ -24,6 +24,7 @@ $includesArray = array( 'vendor/npm-asset/primevue/inputnumber/inputnumber.min.js', 'vendor/npm-asset/primevue/speeddial/speeddial.min.js', 'vendor/npm-asset/primevue/textarea/textarea.min.js', + 'vendor/npm-asset/primevue/timeline/timeline.min.js', 'vendor/moment/luxonjs/luxon.min.js' ), 'customJSModules' => array( diff --git a/application/views/CisRouterView/CisRouterView.php b/application/views/CisRouterView/CisRouterView.php index 5b16ceb87..4fa215f3d 100644 --- a/application/views/CisRouterView/CisRouterView.php +++ b/application/views/CisRouterView/CisRouterView.php @@ -32,6 +32,7 @@ $includesArray = array( 'vendor/npm-asset/primevue/inputnumber/inputnumber.min.js', 'vendor/npm-asset/primevue/speeddial/speeddial.min.js', 'vendor/npm-asset/primevue/textarea/textarea.min.js', + 'vendor/npm-asset/primevue/timeline/timeline.min.js', 'vendor/moment/luxonjs/luxon.min.js' ), 'customJSModules' => array( diff --git a/public/js/api/factory/abgabe.js b/public/js/api/factory/abgabe.js index 8f4ba61de..1087ec2a0 100644 --- a/public/js/api/factory/abgabe.js +++ b/public/js/api/factory/abgabe.js @@ -36,7 +36,7 @@ export default { }; }, getStudentProjektarbeitAbgabeFile(paabgabe_id, student_uid) { - const url = `/Cis/Abgabetool/getStudentProjektarbeitAbgabeFile?paabgabe_id=${paabgabe_id}&student_uid=${student_uid}`; + const url = `/api/frontend/v1/Abgabe/getStudentProjektarbeitAbgabeFile?paabgabe_id=${paabgabe_id}&student_uid=${student_uid}`; window.open(FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + url) }, @@ -106,5 +106,12 @@ export default { url: '/api/frontend/v1/Abgabe/getProjektarbeitenForStudiengang', params: { studiengang_kz } }; + }, + // TODO: this could also very well be generic info api :^) + getStudiengaenge() { + return { + method: 'get', + url: '/api/frontend/v1/Abgabe/getStudiengaenge' + }; } }; \ No newline at end of file diff --git a/public/js/components/Bootstrap/Offcanvas.js b/public/js/components/Bootstrap/Offcanvas.js new file mode 100644 index 000000000..aab2c55f5 --- /dev/null +++ b/public/js/components/Bootstrap/Offcanvas.js @@ -0,0 +1,151 @@ +export default { + name: 'BootstrapOffcanvas', + data: () => ({ + offcanvas: null + }), + props: { + backdrop: { + type: [Boolean, String], + default: true, + validator(value) { + return ['static', true, false].includes(value); + } + }, + keyboard: { + type: Boolean, + default: true + }, + scroll: { + type: Boolean, + default: false + }, + placement: { + type: String, + default: 'start', // start | end | top | bottom + validator(value) { + return ['start', 'end', 'top', 'bottom'].includes(value); + } + }, + noCloseBtn: Boolean, + headerClass: { + type: [String, Array, Object], + default: '' + }, + bodyClass: { + type: [String, Array, Object], + default: 'p-4' + }, + footerClass: { + type: [String, Array, Object], + default: '' + }, + dialogClass: [String, Array, Object] + }, + emits: [ + "hideBsOffcanvas", + "hiddenBsOffcanvas", + "hidePreventedBsOffcanvas", + "showBsOffcanvas", + "shownBsOffcanvas" + ], + methods: { + dispose() { + return this.offcanvas?.dispose(); + }, + hide() { + return this.offcanvas?.hide(); + }, + show(relatedTarget) { + return this.offcanvas?.show(relatedTarget); + }, + toggle() { + return this.offcanvas?.toggle(); + }, + popup(body, options, title, footer) { + const BsOffcanvas = this, + slots = {}; + + if (body !== undefined) + slots.default = () => body; + if (title !== undefined) + slots.title = () => title; + if (footer !== undefined) + slots.footer = () => footer; + + let includedPrimevue = false; + if (typeof primevue !== 'undefined') + includedPrimevue = true; + + return new Promise((resolve, reject) => { + const instance = Vue.createApp({ + name: 'OffcanvasTmpApp', + setup() { + return () => + Vue.h(BsOffcanvas, { + class: 'offcanvas-wrapper', + ref: 'offcanvas', + ...options + }, slots); + }, + mounted() { + this.$refs.offcanvas.show(); + }, + beforeUnmount() { + if (this.$refs.offcanvas) + this.$refs.offcanvas.result !== false ? resolve(this.$refs.offcanvas.result) : reject(); + }, + unmounted() { + wrapper.parentElement.removeChild(wrapper); + } + }); + const wrapper = document.createElement('div'); + + if (includedPrimevue) { + instance.use(primevue.config.default, { zIndex: { overlay: 9999 } }); + } + + import('../../plugins/Phrasen.js').then((Phrasen) => { + instance.use(Phrasen.default); + instance.mount(wrapper); + document.body.appendChild(wrapper); + }); + }); + } + }, + mounted() { + if (this.$refs.offcanvas) { + this.offcanvas = new bootstrap.Offcanvas(this.$refs.offcanvas, { + backdrop: this.backdrop, + keyboard: this.keyboard, + scroll: this.scroll + }); + } + }, + template: ` +
{{projektarbeit?.student}}
-{{projektarbeit?.titel}}
+{{getProjektarbeitStudent}}
+{{getProjektarbeitTitel}}
{{projektarbeit?.zweitbegutachter}}
'+val+'
'+val+'
'+val+'
'+val.bezeichnung+' - '+ this.formatDate(val.datum)+'
' + + '