diff --git a/application/config/routes.php b/application/config/routes.php
index de8e6e098..9a3651f24 100644
--- a/application/config/routes.php
+++ b/application/config/routes.php
@@ -65,6 +65,11 @@ $route['Cis/LvPlan/.*'] = 'Cis/LvPlan/index/$1';
$route['Cis/MyLvPlan/.*'] = 'Cis/MyLvPlan/index/$1';
$route['Cis/MyLv/.*'] = 'Cis/MyLv/index/$1';
+$route['Abgabetool/Mitarbeiter'] = 'Cis/Abgabetool/Mitarbeiter';
+$route['Abgabetool/Student'] = 'Cis/Abgabetool/Student';
+$route['Abgabetool/Student/.*'] = 'Cis/Abgabetool/Student/$1';
+$route['Abgabetool/Deadlines'] = 'Cis/Abgabetool/Deadlines';
+
// Studierendenverwaltung List Routes
$route['api/frontend/v1/stv/[sS]tudents/inout'] = 'api/frontend/v1/stv/Students/index';
$route['api/frontend/v1/stv/[sS]tudents/([WS]S[0-9]{4})'] = 'api/frontend/v1/stv/Students/index';
diff --git a/application/controllers/Cis/Abgabetool.php b/application/controllers/Cis/Abgabetool.php
index 269496738..35970b6e9 100644
--- a/application/controllers/Cis/Abgabetool.php
+++ b/application/controllers/Cis/Abgabetool.php
@@ -34,17 +34,27 @@ class Abgabetool extends Auth_Controller
'uid'=>getAuthUID(),
);
- $this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'Abgabetool']);
+ if(defined('CIS4') && CIS4) {
+ $this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'Abgabetool']);
+ } else {
+ $this->load->view('Cis/Abgabetool.php', ['uid' => getAuthUID(), 'route' => 'Abgabetool']);
+ }
}
- public function Student()
+ public function Student($student_uid_prop = '')
{
$viewData = array(
'uid'=>getAuthUID(),
);
- $this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'AbgabetoolStudent']);
+
+
+ if(defined('CIS4') && CIS4) {
+ $this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'AbgabetoolStudent']);
+ } else {
+ $this->load->view('Cis/Abgabetool.php', ['uid' => getAuthUID(), 'route' => 'AbgabetoolStudent', 'student_uid_prop' => $student_uid_prop]);
+ }
}
public function Mitarbeiter()
@@ -54,7 +64,11 @@ class Abgabetool extends Auth_Controller
'uid'=>getAuthUID(),
);
- $this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'AbgabetoolMitarbeiter']);
+ if(defined('CIS4') && CIS4) {
+ $this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'AbgabetoolMitarbeiter']);
+ } else {
+ $this->load->view('Cis/Abgabetool.php', ['uid' => getAuthUID(), 'route' => 'AbgabetoolMitarbeiter']);
+ }
}
public function Deadlines()
@@ -64,7 +78,11 @@ class Abgabetool extends Auth_Controller
'uid'=>getAuthUID(),
);
- $this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'DeadlinesOverview']);
+ if(defined('CIS4') && CIS4) {
+ $this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'DeadlinesOverview']);
+ } else {
+ $this->load->view('Cis/Abgabetool.php', ['uid' => getAuthUID(), 'route' => 'DeadlinesOverview']);
+ }
}
diff --git a/application/controllers/api/frontend/v1/Abgabe.php b/application/controllers/api/frontend/v1/Abgabe.php
index f95655a1d..9be560034 100644
--- a/application/controllers/api/frontend/v1/Abgabe.php
+++ b/application/controllers/api/frontend/v1/Abgabe.php
@@ -109,8 +109,9 @@ class Abgabe extends FHCAPI_Controller
$this->load->model('ressource/Mitarbeiter_model', 'MitarbeiterModel');
$this->load->model('education/Projektarbeit_model', 'ProjektarbeitModel');
- if (!isset($uid) || isEmptyString($uid))
- $this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general');
+ if (!isset($uid) || isEmptyString($uid)) {
+ $uid = getAuthUID();
+ }
$isZugeteilterBetreuer = count($this->ProjektarbeitModel->checkZuordnung($uid, getAuthUID())->retval) > 0;
$this->addMeta('isZugeteilterBetreuer', $isZugeteilterBetreuer);
@@ -779,7 +780,7 @@ class Abgabe extends FHCAPI_Controller
// Mail an Student wenn Qualgate negativ beurteilt wurde
$this->load->model('crm/Student_model', 'StudentModel');
- $result = $this->StudentModel->load($paabgabe->paabgabetyp_kurzbz);
+ $result = $this->StudentModel->load([$student_uid]);
$studentArr = $this->getDataOrTerminateWithError($result);
$student = $studentArr[0];
diff --git a/application/views/Cis/Abgabetool.php b/application/views/Cis/Abgabetool.php
new file mode 100644
index 000000000..1b1994e0a
--- /dev/null
+++ b/application/views/Cis/Abgabetool.php
@@ -0,0 +1,39 @@
+ 'Cis4',
+ 'axios027' => true,
+ 'bootstrap5' => true,
+ 'fontawesome6' => true,
+ 'tabulator5' => true, // TODO: upgrade to 6 when available
+ 'vue3' => true,
+ 'primevue3' => true,
+ 'skipID' => '#fhccontent',
+ 'vuedatepicker11' => true,
+ 'customCSSs' => array(
+ 'public/css/components/verticalsplit.css',
+ 'public/css/components/FilterComponent.css',
+ 'public/css/components/FormUnderline.css',
+ 'public/css/theme/default.css',
+ 'public/css/components/abgabetool/abgabe.css'
+ ),
+ 'customJSs' => array(
+ 'vendor/npm-asset/primevue/accordion/accordion.min.js',
+ 'vendor/npm-asset/primevue/accordiontab/accordiontab.min.js',
+ 'vendor/npm-asset/primevue/checkbox/checkbox.min.js',
+ 'vendor/npm-asset/primevue/inputnumber/inputnumber.min.js',
+ 'vendor/npm-asset/primevue/speeddial/speeddial.min.js',
+ 'vendor/npm-asset/primevue/textarea/textarea.min.js',
+ ),
+ 'customJSModules' => array(
+ 'public/js/apps/Abgabetool/Abgabetool.js',
+ ),
+
+);
+
+$this->load->view('templates/FHC-Header', $includesArray);
+?>
+
uid= student_uid_prop=>
+
+
+load->view('templates/FHC-Footer', $includesArray); ?>
diff --git a/public/css/Cis4/Cis.css b/public/css/Cis4/Cis.css
index 3056d36b6..05a63bb3a 100644
--- a/public/css/Cis4/Cis.css
+++ b/public/css/Cis4/Cis.css
@@ -844,7 +844,7 @@ html {
#cis-main .modal-header{
background-color: var(--fhc-primary);
- color: var(--fhc-light);
+ color: var(--fhc-white-50);
}
#cis-main .modal-header .btn-close{
diff --git a/public/css/components/abgabetool/abgabe.css b/public/css/components/abgabetool/abgabe.css
index c9de223fd..ab91d8d2f 100644
--- a/public/css/components/abgabetool/abgabe.css
+++ b/public/css/components/abgabetool/abgabe.css
@@ -138,3 +138,22 @@
box-shadow: 0 2px 6px rgba(0,0,0,0.12);
}
+#abgabetoolroot .modal-header{
+ background-color: var(--fhc-blue-primary);
+ color: var(--fhc-white-50);
+}
+
+#abgabetoolroot .modal-header .btn-close{
+ filter: invert(1);
+}
+
+#abgabetoolroot .modal-footer {
+ background-color: var(--fhc-white-20);
+
+}
+
+.bordered-modal {
+ border: 1px solid rgba(0, 0, 0, 0.15);
+ border-radius: 0.5rem;
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.25);
+}
diff --git a/public/js/apps/Abgabetool/Abgabetool.js b/public/js/apps/Abgabetool/Abgabetool.js
new file mode 100644
index 000000000..1336276af
--- /dev/null
+++ b/public/js/apps/Abgabetool/Abgabetool.js
@@ -0,0 +1,61 @@
+import PluginsPhrasen from '../../plugins/Phrasen.js';
+import AbgabetoolStudent from "../../components/Cis/Abgabetool/AbgabetoolStudent.js";
+import AbgabetoolMitarbeiter from "../../components/Cis/Abgabetool/AbgabetoolMitarbeiter.js";
+import DeadlineOverview from "../../components/Cis/Abgabetool/DeadlineOverview.js";
+
+const app = Vue.createApp({
+ name: 'AbgabetoolApp',
+ components: {
+ AbgabetoolStudent,
+ AbgabetoolMitarbeiter,
+ DeadlineOverview
+ },
+ data: function() {
+ return {
+ comp: null,
+ uid: null,
+ student_uid: null
+ };
+ },
+ methods: {
+
+ },
+ computed: {
+ viewData() {
+ return { uid: this.uid}
+ },
+ student_uid_computed() {
+ return this.student_uid ?? null
+ }
+ },
+ created() {
+ },
+ mounted() {
+
+ const root = document.getElementById('abgabetoolroot')
+ const route = root.getAttribute("route");
+ this.comp = route
+
+ const uid = root.getAttribute("uid");
+ this.uid = uid
+
+ const student_uid = root.getAttribute("student_uid_prop");
+ this.student_uid = student_uid
+
+ },
+ template: `
+
+
+
+
+
+ `
+});
+app.use(primevue.config.default, {
+ zIndex: {
+ overlay: 9000,
+ tooltip: 8000
+ }
+})
+app.use(PluginsPhrasen);
+app.mount('#abgabetoolroot');
diff --git a/public/js/components/Cis/Abgabetool/AbgabeMitarbeiterDetail.js b/public/js/components/Cis/Abgabetool/AbgabeMitarbeiterDetail.js
index 08fc74e04..024aa998b 100644
--- a/public/js/components/Cis/Abgabetool/AbgabeMitarbeiterDetail.js
+++ b/public/js/components/Cis/Abgabetool/AbgabeMitarbeiterDetail.js
@@ -251,16 +251,7 @@ export const AbgabeMitarbeiterDetail = {
return true
},
- async handleSaveNewAbgabe(termin) {
-
- if(!this.validateTermin(termin)) {
- this.$fhcAlert.alertWarning('invalid termin')
-
- return false
- }
-
- await this.saveTermin(termin)
-
+ handleModalClose() {
// determined inside saveTermin api.then()
if(this.showAutomagicModalPhrase) {
this.$refs.modalContainerCreateNewAbgabe.show()
@@ -280,7 +271,20 @@ export const AbgabeMitarbeiterDetail = {
'abgabedatum': null,
'insertvon': this.viewData?.uid ?? ''
}
+ }
+ },
+ async handleSaveNewAbgabe(termin) {
+
+ if(!this.validateTermin(termin)) {
+ this.$fhcAlert.alertWarning('invalid termin')
+
+ return false
}
+
+ await this.saveTermin(termin)
+
+ this.handleModalClose()
+
},
handleChangeAbgabetyp(termin) {
// if paabgabetype qualgate is selected, fill out kurzbz textfield with bezeichnung of quality gate so users
@@ -321,6 +325,15 @@ export const AbgabeMitarbeiterDetail = {
return 'position: static !important;'
}
},
+ watch: {
+ 'newTermin.bezeichnung'(newVal) {
+ console.log('\'newTermin.bezeichnung\' watcher', newVal)
+
+ if(newVal?.paabgabetyp_kurzbz === 'qualgate1' || newVal?.paabgabetyp_kurzbz === 'qualgate2') {
+ this.newTermin.kurzbz = newVal.bezeichnung
+ }
+ }
+ },
created() {
},
@@ -344,7 +357,7 @@ export const AbgabeMitarbeiterDetail = {
{{$p.t('abgabetool/c4abgabeQualGateNegativAddNewAutomagisch')}}
-
+
@@ -376,24 +389,12 @@ export const AbgabeMitarbeiterDetail = {
-
-
{{$p.t('abgabetool/c4note')}}
-
-
-
-
-
{{$p.t('abgabetool/c4upload_allowed')}}
@@ -405,16 +406,10 @@ export const AbgabeMitarbeiterDetail = {
-
-
{{$p.t('abgabetool/c4notizQualGate')}}
-
-
-
-
{{$p.t('abgabetool/c4abgabekurzbz')}}
-
+
@@ -453,7 +448,7 @@ export const AbgabeMitarbeiterDetail = {
-
{{$p.t('abgabetool/c4fixtermin')}}
+
{{$p.t('abgabetool/c4fixterminv2')}}
-
-
{{$p.t('abgabetool/c4note')}}
-
-
-
-
-
{{$p.t('abgabetool/c4upload_allowed')}}
@@ -515,15 +499,27 @@ export const AbgabeMitarbeiterDetail = {
-
{{$p.t('abgabetool/c4notizQualGate')}}
+
{{$p.t('abgabetool/c4note')}}
-
+
+
+
+
{{$p.t('abgabetool/c4notizQualGatev2')}}
+
+
+
+
+
{{$p.t('abgabetool/c4abgabekurzbz')}}
-
+
diff --git a/public/js/components/Cis/Abgabetool/AbgabeStudentDetail.js b/public/js/components/Cis/Abgabetool/AbgabeStudentDetail.js
index ead8154b0..7898ce5b3 100644
--- a/public/js/components/Cis/Abgabetool/AbgabeStudentDetail.js
+++ b/public/js/components/Cis/Abgabetool/AbgabeStudentDetail.js
@@ -110,7 +110,7 @@ export const AbgabeStudentDetail = {
},
async triggerEndupload() {
- if (!await this.validate(this.enduploadTermin))
+ if (!await this.validate(this.enduploadTermin, true))
{
return false;
}
@@ -192,13 +192,13 @@ export const AbgabeStudentDetail = {
},
handleUploadRes(res, termin) {
if(res.meta.status == "success") {
- this.$fhcAlert.alertSuccess(this.$p.t('abgabetool/c4fileUploadSuccess'))
+ this.$fhcAlert.alertSuccess(this.$p.t('abgabetool/c4fileUploadSuccessv3'))
// update 'abgabedatum' for successful upload -> shows the pdf icon and date once set
termin.abgabedatum = new Date().toISOString().split('T')[0];
} else {
- this.$fhcAlert.alertError(this.$p.t('abgabetool/c4fileUploadError'))
+ this.$fhcAlert.alertError(this.$p.t('abgabetool/c4fileUploadErrorv3'))
}
if(res.meta.signaturInfo) {
@@ -303,7 +303,7 @@ export const AbgabeStudentDetail = {
-
{{$p.t('abgabetool/c4fixtermin')}}
+
{{$p.t('abgabetool/c4fixterminv2')}}
+
+
{{$p.t('abgabetool/c4notizQualGatev2')}}
+
+
+
+
+
{{$p.t('abgabetool/c4abgabekurzbz')}}
-
+
diff --git a/public/js/components/Cis/Abgabetool/AbgabetoolMitarbeiter.js b/public/js/components/Cis/Abgabetool/AbgabetoolMitarbeiter.js
index 0d60234b9..2c2b8fad8 100644
--- a/public/js/components/Cis/Abgabetool/AbgabetoolMitarbeiter.js
+++ b/public/js/components/Cis/Abgabetool/AbgabetoolMitarbeiter.js
@@ -437,7 +437,7 @@ export const AbgabetoolMitarbeiter = {
-
+
diff --git a/public/js/components/Cis/Abgabetool/AbgabetoolStudent.js b/public/js/components/Cis/Abgabetool/AbgabetoolStudent.js
index 9aa9032b7..81af1a422 100644
--- a/public/js/components/Cis/Abgabetool/AbgabetoolStudent.js
+++ b/public/js/components/Cis/Abgabetool/AbgabetoolStudent.js
@@ -72,11 +72,13 @@ export const AbgabetoolStudent = {
termin.allowedToUpload = false
// termin.datum = '2025-10-16'
// TODO: fixtermin logic?
- if(termin.paabgabetyp_kurzbz == 'enda') {
+ if(termin.paabgabetyp_kurzbz == 'end') {
termin.allowedToUpload = !this.isPastDate(termin.datum) && this.checkQualityGates(pa.abgabetermine)
} else if(termin.paabgabetyp_kurzbz == 'qualgate1' || termin.paabgabetyp_kurzbz == 'qualgate2') {
termin.allowedToUpload = termin.upload_allowed
+ } else if(termin.fixtermin) {
+ termin.allowedToUpload = !this.isPastDate(termin.datum)
} else {
termin.allowedToUpload = true
}
diff --git a/public/js/components/Cis/Abgabetool/DeadlineOverview.js b/public/js/components/Cis/Abgabetool/DeadlineOverview.js
index cc202b4b4..a5cc9a43b 100644
--- a/public/js/components/Cis/Abgabetool/DeadlineOverview.js
+++ b/public/js/components/Cis/Abgabetool/DeadlineOverview.js
@@ -33,7 +33,7 @@ export const DeadlineOverview = {
placeholder: this.$p.t('global/noDataAvailable'),
columns: [
{title: Vue.computed(() => this.$p.t('abgabetool/c4zieldatum')), field: 'datum', formatter: this.centeredTextFormatter, widthGrow: 1, tooltip: false},
- {title: Vue.computed(() => this.$p.t('abgabetool/c4fixtermin')), field: 'fixterminstring', formatter: this.centeredTextFormatter, widthGrow: 1, tooltip: false},
+ {title: Vue.computed(() => this.$p.t('abgabetool/c4fixterminv2')), field: 'fixterminstring', formatter: this.centeredTextFormatter, widthGrow: 1, tooltip: false},
{title: Vue.computed(() => this.$p.t('abgabetool/c4abgabetyp')), field: 'typ_bezeichnung', formatter: this.centeredTextFormatter, widthGrow: 1},
{title: Vue.computed(() => this.$p.t('abgabetool/c4abgabekurzbz')), field: 'kurzbz', formatter: this.centeredTextFormatter, widthGrow: 3},
{title: Vue.computed(() => this.$p.t('person/studentIn')), field: 'student', formatter: this.centeredTextFormatter, widthGrow: 2},
diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php
index 3b19bb00a..dd7788265 100644
--- a/system/phrasesupdate.php
+++ b/system/phrasesupdate.php
@@ -33898,46 +33898,6 @@ array(
)
)
),
- array(
- 'app' => 'anwesenheiten',
- 'category' => 'global',
- 'phrase' => 'c4fileUploadSuccess',
- 'insertvon' => 'system',
- 'phrases' => array(
- array(
- 'sprache' => 'German',
- 'text' => 'Datei erfolgreich hochgeladen!',
- 'description' => '',
- 'insertvon' => 'system'
- ),
- array(
- 'sprache' => 'English',
- 'text' => 'File upload successful',
- 'description' => '',
- 'insertvon' => 'system'
- )
- )
- ),
- array(
- 'app' => 'anwesenheiten',
- 'category' => 'global',
- 'phrase' => 'c4fileUploadError',
- 'insertvon' => 'system',
- 'phrases' => array(
- array(
- 'sprache' => 'German',
- 'text' => 'Fehler beim hochladen der Datei!',
- 'description' => '',
- 'insertvon' => 'system'
- ),
- array(
- 'sprache' => 'English',
- 'text' => 'File upload error!',
- 'description' => '',
- 'insertvon' => 'system'
- )
- )
- ),
array(
'app' => 'anwesenheiten',
'category' => 'global',
@@ -42059,18 +42019,18 @@ array(
array(
'app' => 'core',
'category' => 'abgabetool',
- 'phrase' => 'c4fixtermin',
+ 'phrase' => 'c4fixterminv2',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
- 'text' => "Fix",
+ 'text' => "Fixtermin",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
- 'text' => "Fixed",
+ 'text' => "Fixed Deadline",
'description' => '',
'insertvon' => 'system'
)
@@ -42799,7 +42759,7 @@ array(
array(
'app' => 'core',
'category' => 'abgabetool',
- 'phrase' => 'c4notizQualGate',
+ 'phrase' => 'c4notizQualGatev2',
'insertvon' => 'system',
'phrases' => array(
array(
@@ -43116,6 +43076,86 @@ array(
)
)
),
+ array(
+ 'app' => 'core',
+ 'category' => 'abgabetool',
+ 'phrase' => 'warningShortAbstractEn',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => "Ihr englisches Abstract ist sehr kurz, möchten Sie den Endupload trotzdem durchführen?",
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Your english abstract is very short. Would you still like to complete the final upload?',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'abgabetool',
+ 'phrase' => 'warningShortSchlagwoerter',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => "Ihre Schlagwörter sind sehr kurz, möchten Sie den Endupload trotzdem durchführen?",
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Your keywords are very short. Would you still like to complete the final upload?',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'abgabetool',
+ 'phrase' => 'warningShortSchlagwoerterEn',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => "Ihre englischen Schlagwörter sind sehr kurz, möchten Sie den Endupload trotzdem durchführen?",
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Your english keywords are very short. Would you still like to complete the final upload?',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'abgabetool',
+ 'phrase' => 'warningSmallSeitenanzahl',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => "Ihre Seitenanzahl ist gering, möchten Sie den Endupload trotzdem durchführen?",
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Your number of pages is low. Would you still like to complete the final upload?',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
array(
'app' => 'core',
'category' => 'abgabetool',
@@ -43171,6 +43211,46 @@ array(
)
)
),
+ array(
+ 'app' => 'core',
+ 'category' => 'abgabetool',
+ 'phrase' => 'c4fileUploadSuccessv3',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Datei erfolgreich hochgeladen!',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'File upload successful',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'abgabetool',
+ 'phrase' => 'c4fileUploadErrorv3',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Fehler beim hochladen der Datei!',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'File upload error!',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
// ### STUDIENGANG_INFORMATIONEN PHRASEN START
array(
'app' => 'core',