diff --git a/application/controllers/api/frontend/v1/stv/Dokumente.php b/application/controllers/api/frontend/v1/stv/Dokumente.php
index 2923f7204..eca3d02ad 100644
--- a/application/controllers/api/frontend/v1/stv/Dokumente.php
+++ b/application/controllers/api/frontend/v1/stv/Dokumente.php
@@ -24,6 +24,7 @@ class Dokumente extends FHCAPI_Controller
// Load Libraries
$this->load->library('VariableLib', ['uid' => getAuthUID()]);
$this->load->library('form_validation');
+ $this->load->library('DmsLib', array('who' => getAuthUID()));
// Load language phrases
$this->loadPhrases([
@@ -417,26 +418,35 @@ class Dokumente extends FHCAPI_Controller
$result = $this->AkteModel->load($akte_id);
-
if (!hasData($result)) $this->terminateWithError('Akte not found');
-
$data = getData($result)[0];
- header('Content-Description: File Transfer');
- header('Content-Type: '. $data->mimetype);
- header('Content-Disposition: attachment; filename="'.$data->titel.'"');
- header('Expires: 0');
- header('Cache-Control: must-revalidate');
- header('Pragma: public');
- if (isset($data->inhalt) && !empty($data->inhalt)) {
- $decodedContent = base64_decode($data->inhalt, true);
+ $mimetype = $data->mimetype;
+ $filecontentbase64 = $data->inhalt;
+ $filename = $data->titel;
- if ($decodedContent === false) {
- die('Error: Base64-Dekodierung failed.');
- }
- echo $decodedContent;
+ if(intval($data->dms_id) > 0)
+ {
+ $dmsdokres = $this->dmslib->read($data->dms_id);
+ if (!hasData($dmsdokres)) $this->terminateWithError('DMS File not found');
+ $dmsdok = getData($dmsdokres)[0];
+
+ $mimetype = $dmsdok->mimetype;
+ $filecontentbase64 = $dmsdok->file_content;
+ $filename = $dmsdok->name;
}
- die();
+
+ $filecontent = '';
+
+ if (!empty($filecontentbase64)) {
+ $filecontent = base64_decode($filecontentbase64, true);
+
+ if ($filecontent === false) {
+ $this->terminateWithError('Base64-Dekodierung failed.');
+ }
+ }
+
+ $this->terminateWithFileOutput($mimetype, $filecontent, $filename);
}
private function _getMissingDocuments($studiengang_kz, $prestudent_id)
diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Dokumente/List/Accepted.js b/public/js/components/Stv/Studentenverwaltung/Details/Dokumente/List/Accepted.js
index 60456225d..eea3c3b48 100644
--- a/public/js/components/Stv/Studentenverwaltung/Details/Dokumente/List/Accepted.js
+++ b/public/js/components/Stv/Studentenverwaltung/Details/Dokumente/List/Accepted.js
@@ -101,13 +101,13 @@ export default {
container.className = "d-flex gap-2";
if(cell.getData().vorhanden){
- let button = document.createElement('button');
+ let button = document.createElement('a');
button.className = 'btn btn-outline-secondary btn-action';
button.innerHTML = '';
button.title = this.$p.t('ui', 'downloadDok');
- button.addEventListener('click', (event) =>
- this.actionDownloadFile(cell.getData().akte_id)
- );
+ button.href = this.actionDownloadFile(cell.getData().akte_id);
+ button.role = 'button';
+ button.target = '_blank';
container.append(button);
button = document.createElement('button');
@@ -205,11 +205,10 @@ export default {
},
methods: {
actionDownloadFile(akte_id){
- window.open(
- FHC_JS_DATA_STORAGE_OBJECT.app_root
- + FHC_JS_DATA_STORAGE_OBJECT.ci_router + '/api/frontend/v1/stv/dokumente/download?akte_id=' + encodeURIComponent(akte_id),
- '_blank'
- );
+ return FHC_JS_DATA_STORAGE_OBJECT.app_root
+ + FHC_JS_DATA_STORAGE_OBJECT.ci_router
+ + '/api/frontend/v1/stv/dokumente/download?akte_id='
+ + encodeURIComponent(akte_id);
},
actionUploadFile(dokument_kurzbz){
this.$refs.modalUpload.open(this.prestudent_id, dokument_kurzbz);
diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Dokumente/List/Unaccepted.js b/public/js/components/Stv/Studentenverwaltung/Details/Dokumente/List/Unaccepted.js
index 68f2b2100..3ca9bc136 100644
--- a/public/js/components/Stv/Studentenverwaltung/Details/Dokumente/List/Unaccepted.js
+++ b/public/js/components/Stv/Studentenverwaltung/Details/Dokumente/List/Unaccepted.js
@@ -118,13 +118,13 @@ export default {
container.className = "d-flex gap-2";
if(cell.getData().akte_id){
- let button = document.createElement('button');
+ let button = document.createElement('a');
button.className = 'btn btn-outline-secondary btn-action';
button.innerHTML = '';
button.title = this.$p.t('ui', 'downloadDok');
- button.addEventListener('click', (event) =>
- this.actionDownloadFile(cell.getData().akte_id)
- );
+ button.href = this.actionDownloadFile(cell.getData().akte_id);
+ button.role = 'button';
+ button.target = '_blank';
container.append(button);
button = document.createElement('button');
@@ -213,11 +213,10 @@ export default {
},
methods: {
actionDownloadFile(akte_id){
- window.open(
- FHC_JS_DATA_STORAGE_OBJECT.app_root
- + FHC_JS_DATA_STORAGE_OBJECT.ci_router + '/api/frontend/v1/stv/dokumente/download?akte_id=' + encodeURIComponent(akte_id),
- '_blank'
- );
+ return FHC_JS_DATA_STORAGE_OBJECT.app_root
+ + FHC_JS_DATA_STORAGE_OBJECT.ci_router
+ + '/api/frontend/v1/stv/dokumente/download?akte_id='
+ + encodeURIComponent(akte_id);
},
actionUploadFile(dokument_kurzbz){
this.$refs.modalUpload.open(this.prestudent_id, dokument_kurzbz);