mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-23 09:52:22 +00:00
postStudentProjektarbeitZusatzdaten in detail view for Betreuer/Assistenz;
This commit is contained in:
@@ -41,9 +41,8 @@ class Abgabe extends FHCAPI_Controller
|
||||
'getNoten' => self::PERM_LOGGED,
|
||||
'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')
|
||||
// 'notifyStudentMail' => self::PERM_LOGGED,
|
||||
// 'notifyBetreuerMail' => self::PERM_LOGGED
|
||||
'getStudentProjektarbeitAbgabeFile' => array('basis/abgabe_student:rw', 'basis/abgabe_lektor:rw', 'basis/abgabe_assistenz:rw'),
|
||||
'postStudentProjektarbeitZusatzdaten' => array('basis/abgabe_lektor:rw', 'basis/abgabe_assistenz:rw')
|
||||
]);
|
||||
|
||||
$this->load->library('PhrasesLib');
|
||||
@@ -254,7 +253,7 @@ class Abgabe extends FHCAPI_Controller
|
||||
|| !isset($paabgabetyp_kurzbz) || isEmptyString($paabgabetyp_kurzbz)
|
||||
|| !isset($abstract) || !isset($abstract_en) // endupload zusatzdaten can be empty but should never be null
|
||||
|| !isset($schlagwoerter) || !isset($schlagwoerter_en)
|
||||
|| !isset($seitenanzahl))
|
||||
|| !isset($seitenanzahl) || !isset($sprache))
|
||||
$this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general');
|
||||
|
||||
if ((isset($_FILES) and isset($_FILES['file']) and ! $_FILES['file']['error'])) {
|
||||
@@ -985,6 +984,50 @@ class Abgabe extends FHCAPI_Controller
|
||||
}
|
||||
}
|
||||
|
||||
public function postStudentProjektarbeitZusatzdaten(){
|
||||
$projektarbeit_id = $_POST['projektarbeit_id'];
|
||||
|
||||
$sprache = $_POST['sprache'];
|
||||
$abstract = $_POST['abstract'];
|
||||
$abstract_en = $_POST['abstract_en'];
|
||||
$schlagwoerter = $_POST['schlagwoerter'];
|
||||
$schlagwoerter_en = $_POST['schlagwoerter_en'];
|
||||
$seitenanzahl = $_POST['seitenanzahl'];
|
||||
|
||||
|
||||
if (!isset($projektarbeit_id) || isEmptyString($projektarbeit_id)
|
||||
|| !isset($abstract) || !isset($abstract_en) // endupload zusatzdaten can be empty but should never be null
|
||||
|| !isset($schlagwoerter) || !isset($schlagwoerter_en)
|
||||
|| !isset($seitenanzahl) || !isset($sprache)) {
|
||||
$this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general');
|
||||
}
|
||||
|
||||
$this->load->model('education/Projektarbeit_model', 'ProjektarbeitModel');
|
||||
|
||||
$result = $this->ProjektarbeitModel->load($projektarbeit_id);
|
||||
$projektarbeitArr = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
if(count($projektarbeitArr) > 0) {
|
||||
$projektarbeit = $projektarbeitArr[0];
|
||||
} else {
|
||||
$this->terminateWithError($this->p->t('global','projektarbeitNichtGefunden'), 'general');
|
||||
}
|
||||
|
||||
// update projektarbeit cols
|
||||
$this->ProjektarbeitModel->updateProjektarbeit($projektarbeit_id,$sprache,$abstract,$abstract_en
|
||||
,$schlagwoerter, $schlagwoerter_en, $seitenanzahl);
|
||||
|
||||
$this->logLib->logInfoDB(array('zusatzdatenEditMitarbeiter', array(
|
||||
'updatevon' => getAuthUID(),
|
||||
'updateamum' => date('Y-m-d H:i:s')
|
||||
), getAuthUID(), getAuthPersonId(), array($projektarbeit_id,$sprache,$abstract,$abstract_en
|
||||
,$schlagwoerter, $schlagwoerter_en, $seitenanzahl)));
|
||||
|
||||
$result = $this->ProjektarbeitModel->load($projektarbeit_id);
|
||||
|
||||
$this->terminateWithSuccess($result);
|
||||
}
|
||||
|
||||
private function checkAbgabeSignatur($abgabe, $projektarbeit) {
|
||||
if($abgabe->paabgabetyp_kurzbz != 'end') {
|
||||
return;
|
||||
|
||||
@@ -108,5 +108,13 @@ export default {
|
||||
method: 'get',
|
||||
url: '/api/frontend/v1/Abgabe/getStudiengaenge'
|
||||
};
|
||||
},
|
||||
postStudentProjektarbeitZusatzdaten(formData) {
|
||||
return {
|
||||
method: 'post',
|
||||
url: '/api/frontend/v1/Abgabe/postStudentProjektarbeitZusatzdaten',
|
||||
params: formData,
|
||||
config: {Headers: { "Content-Type": "multipart/form-data" }}
|
||||
};
|
||||
}
|
||||
};
|
||||
@@ -64,7 +64,16 @@ export const AbgabeMitarbeiterDetail = {
|
||||
icon: "fa fa-eye",
|
||||
command: this.openStudentPage
|
||||
}],
|
||||
newTermin: null
|
||||
newTermin: null,
|
||||
form: Vue.reactive({
|
||||
sprache: '',
|
||||
abstract: '',
|
||||
abstract_en: '',
|
||||
schlagwoerter: '',
|
||||
schlagwoerter_en: '',
|
||||
kontrollschlagwoerter: '',
|
||||
seitenanzahl: 1,
|
||||
})
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
@@ -89,6 +98,7 @@ export const AbgabeMitarbeiterDetail = {
|
||||
...res.data[0]
|
||||
}
|
||||
if(newTerminRes.note) newTerminRes.note = noteOpt
|
||||
newTerminRes.invertedFixtermin = !newTerminRes.fixtermin
|
||||
const existingTerminRes = res.data[1]
|
||||
|
||||
const abgabeOpt = this.abgabeTypeOptions.find(opt => opt.paabgabetyp_kurzbz == newTerminRes.paabgabetyp_kurzbz)
|
||||
@@ -148,6 +158,104 @@ export const AbgabeMitarbeiterDetail = {
|
||||
}
|
||||
})
|
||||
},
|
||||
openZusatzdatenModal() {
|
||||
this.$refs.modalContainerZusatzdaten.show()
|
||||
},
|
||||
async saveZusatzdaten(){
|
||||
if (!await this.validateZusatzdaten())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const pa = this.projektarbeit
|
||||
|
||||
// post endabgabe
|
||||
const formData = new FormData();
|
||||
formData.append('projektarbeit_id', this.projektarbeit.projektarbeit_id);
|
||||
|
||||
formData.append('sprache', this.form['sprache'].sprache)
|
||||
formData.append('abstract', this.form['abstract'])
|
||||
formData.append('abstract_en', this.form['abstract_en'])
|
||||
formData.append('schlagwoerter', this.form['schlagwoerter'])
|
||||
formData.append('schlagwoerter_en', this.form['schlagwoerter_en'])
|
||||
formData.append('seitenanzahl', this.form['seitenanzahl'])
|
||||
|
||||
this.loading = true
|
||||
this.$api.call(ApiAbgabe.postStudentProjektarbeitZusatzdaten(formData))
|
||||
.then(res => {
|
||||
if(res.meta.status == 'success') {
|
||||
this.$fhcAlert.alertSuccess(this.$p.t('ui/gespeichert'))
|
||||
if(!data?.retval?.[0]) return
|
||||
const paRes = data.retval[0]
|
||||
pa.seitenanzahl = paRes.seitenanzahl ?? 1
|
||||
pa.kontrollschlagwoerter = paRes.kontrollschlagwoerter ?? ''
|
||||
pa.schlagwoerter = paRes.schlagwoerter ?? ''
|
||||
pa.sprache = paRes.sprache ?? ''
|
||||
pa.schlagwoerter_en = paRes.schlagwoerter_en ?? ''
|
||||
pa.abstract = paRes.abstract ?? ''
|
||||
pa.abstract_en = paRes.abstract_en ?? ''
|
||||
}
|
||||
|
||||
}).finally(()=> {
|
||||
this.loading = false
|
||||
})
|
||||
|
||||
this.$refs.modalContainerZusatzdaten.hide()
|
||||
},
|
||||
async validateZusatzdaten() {
|
||||
// check these input fields for length of entry
|
||||
if(this.form['abstract'].length < 100 && await this.$fhcAlert.confirm({
|
||||
message: this.$p.t('abgabetool/warningShortAbstract'),
|
||||
acceptLabel: this.$capitalize(this.$p.t('abgabetool/c4AcceptAndProceed')),
|
||||
acceptClass: 'btn btn-danger',
|
||||
rejectLabel: this.$capitalize(this.$p.t('abgabetool/c4Cancel')),
|
||||
rejectClass: 'btn btn-outline-secondary'
|
||||
}) === false) {
|
||||
return false
|
||||
}
|
||||
|
||||
if(this.form['abstract_en'].length < 100 && await this.$fhcAlert.confirm({
|
||||
message: this.$capitalize(this.$p.t('abgabetool/warningShortAbstractEn')),
|
||||
acceptLabel: this.$capitalize(this.$p.t('abgabetool/c4AcceptAndProceed')),
|
||||
acceptClass: 'btn btn-danger',
|
||||
rejectLabel: this.$capitalize(this.$p.t('abgabetool/c4Cancel')),
|
||||
rejectClass: 'btn btn-outline-secondary'
|
||||
}) === false) {
|
||||
return false
|
||||
}
|
||||
|
||||
if(this.form['schlagwoerter'].length < 50 && await this.$fhcAlert.confirm({
|
||||
message: this.$capitalize(this.$p.t('abgabetool/warningShortSchlagwoerter')),
|
||||
acceptLabel: this.$capitalize(this.$p.t('abgabetool/c4AcceptAndProceed')),
|
||||
acceptClass: 'btn btn-danger',
|
||||
rejectLabel: this.$capitalize(this.$p.t('abgabetool/c4Cancel')),
|
||||
rejectClass: 'btn btn-outline-secondary'
|
||||
}) === false) {
|
||||
return false
|
||||
}
|
||||
|
||||
if(this.form['schlagwoerter_en'].length < 50 && await this.$fhcAlert.confirm({
|
||||
message: this.$capitalize(this.$p.t('abgabetool/warningShortSchlagwoerterEn')),
|
||||
acceptLabel: this.$capitalize(this.$p.t('abgabetool/c4AcceptAndProceed')),
|
||||
acceptClass: 'btn btn-danger',
|
||||
rejectLabel: this.$capitalize(this.$p.t('abgabetool/c4Cancel')),
|
||||
rejectClass: 'btn btn-outline-secondary'
|
||||
}) === false) {
|
||||
return false
|
||||
}
|
||||
|
||||
if(this.form['seitenanzahl'] <= 5 && await this.$fhcAlert.confirm({
|
||||
message: this.$capitalize(this.$p.t('abgabetool/warningSmallSeitenanzahl')),
|
||||
acceptLabel: this.$capitalize(this.$p.t('abgabetool/c4AcceptAndProceed')),
|
||||
acceptClass: 'btn btn-danger',
|
||||
rejectLabel: this.$capitalize(this.$p.t('abgabetool/c4Cancel')),
|
||||
rejectClass: 'btn btn-outline-secondary'
|
||||
}) === false) {
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
},
|
||||
async handleDeleteTermin(termin){
|
||||
if(await this.$fhcAlert.confirm({
|
||||
message: this.$p.t('abgabetool/c4confirm_delete'),
|
||||
@@ -466,7 +574,17 @@ export const AbgabeMitarbeiterDetail = {
|
||||
// set invertedFixtermin field for UI/UX purposes -> avoid double negation in text
|
||||
|
||||
newVal?.abgabetermine?.forEach(termin => termin.invertedFixtermin = !termin.fixtermin)
|
||||
}
|
||||
|
||||
// default select german if projektarbeit sprache was null
|
||||
this.form.sprache = newVal.sprache ? this.allActiveLanguages.find(lang => lang.sprache == newVal.sprache) : this.allActiveLanguages.find(lang => lang.sprache == 'German')
|
||||
this.form.abstract = newVal.abstract ?? ''
|
||||
this.form.abstract_en = newVal.abstract_en ?? ''
|
||||
this.form.schlagwoerter = newVal.schlagwoerter ?? ''
|
||||
this.form.schlagwoerter_en = newVal.schlagwoerter_en ?? ''
|
||||
this.form.kontrollschlagwoerter = newVal.kontrollschlagwoerter ?? ''
|
||||
this.form.seitenanzahl = newVal.seitenanzahl ?? 1
|
||||
|
||||
},
|
||||
},
|
||||
created() {
|
||||
|
||||
@@ -475,7 +593,7 @@ export const AbgabeMitarbeiterDetail = {
|
||||
|
||||
},
|
||||
template: `
|
||||
<bs-modal
|
||||
<bs-modal
|
||||
id="innerModalNewAbgabe"
|
||||
ref="modalContainerCreateNewAbgabe"
|
||||
class="bootstrap-prompt"
|
||||
@@ -492,7 +610,7 @@ export const AbgabeMitarbeiterDetail = {
|
||||
<div v-if="showAutomagicModalPhrase" class="text-center"><p>{{$p.t('abgabetool/c4abgabeQualGateNegativAddNewAutomagisch')}}</p></div>
|
||||
<div v-if="newTermin">
|
||||
<div v-if="assistenzMode" class="row">
|
||||
<div class="col-4 col-md-3 fw-bold">{{$p.t('abgabetool/c4fixterminv4')}}</div>
|
||||
<div class="col-4 col-md-3 fw-bold align-content-center">{{$p.t('abgabetool/c4fixterminv4')}}</div>
|
||||
<div class="col-8 col-md-9">
|
||||
<Checkbox
|
||||
v-model="newTermin.invertedFixtermin"
|
||||
@@ -503,7 +621,7 @@ export const AbgabeMitarbeiterDetail = {
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mt-2">
|
||||
<div class="col-4 col-md-3 fw-bold">{{ $capitalize( $p.t('abgabetool/c4zieldatum') )}}</div>
|
||||
<div class="col-4 col-md-3 fw-bold align-content-center">{{ $capitalize( $p.t('abgabetool/c4zieldatum') )}}</div>
|
||||
<div class="col-8 col-md-9">
|
||||
<VueDatePicker
|
||||
v-model="newTermin.datum"
|
||||
@@ -516,7 +634,7 @@ export const AbgabeMitarbeiterDetail = {
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mt-2">
|
||||
<div class="col-4 col-md-3 fw-bold">{{ $capitalize( $p.t('abgabetool/c4abgabetypv2') )}}</div>
|
||||
<div class="col-4 col-md-3 fw-bold align-content-center">{{ $capitalize( $p.t('abgabetool/c4abgabetyp') )}}</div>
|
||||
<div class="col-8 col-md-9">
|
||||
<Dropdown
|
||||
:style="{'width': '100%'}"
|
||||
@@ -528,7 +646,7 @@ export const AbgabeMitarbeiterDetail = {
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mt-2">
|
||||
<div class="col-4 col-md-3 fw-bold">{{ $capitalize( $p.t('abgabetool/c4upload_allowed') )}}</div>
|
||||
<div class="col-4 col-md-3 fw-bold align-content-center">{{ $capitalize( $p.t('abgabetool/c4upload_allowed') )}}</div>
|
||||
<div class="col-8 col-md-9">
|
||||
<Checkbox
|
||||
v-model="newTermin.upload_allowed"
|
||||
@@ -539,7 +657,7 @@ export const AbgabeMitarbeiterDetail = {
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mt-2">
|
||||
<div class="col-4 col-md-3 fw-bold">{{ $capitalize( $p.t('abgabetool/c4abgabekurzbz') )}}</div>
|
||||
<div class="col-4 col-md-3 fw-bold align-content-center">{{ $capitalize( $p.t('abgabetool/c4abgabekurzbz') )}}</div>
|
||||
<div class="col-8 col-md-9">
|
||||
<Textarea style="margin-bottom: 4px;" v-model="newTermin.kurzbz" rows="1" class="w-100"></Textarea>
|
||||
</div>
|
||||
@@ -552,18 +670,6 @@ export const AbgabeMitarbeiterDetail = {
|
||||
</bs-modal>
|
||||
|
||||
<div v-if="projektarbeit">
|
||||
<!-- <div id="speedDialWrapper" :style="getSpeedDialWrapperStyle">-->
|
||||
<!-- <SpeedDial-->
|
||||
<!-- :style="getSpeedDialStyle"-->
|
||||
<!-- :model="speedDialItems" -->
|
||||
<!-- direction="up"-->
|
||||
<!-- :radius="80"-->
|
||||
<!-- type="linear"-->
|
||||
<!-- buttonClass="p-button-rounded p-button-lg p-button-primary"-->
|
||||
<!-- :tooltipOptions="{ position: 'left' }"-->
|
||||
<!-- />-->
|
||||
<!-- </div>-->
|
||||
|
||||
<h5>{{$capitalize( $p.t('abgabetool/c4abgabeMitarbeiterbereich') )}}</h5>
|
||||
|
||||
<div class="row">
|
||||
@@ -573,7 +679,6 @@ export const AbgabeMitarbeiterDetail = {
|
||||
<p v-if="projektarbeit?.zweitbegutachter"> {{projektarbeit?.zweitbegutachter}}</p>
|
||||
</div>
|
||||
<div class="col-6 d-flex justify-content-end align-items-start">
|
||||
<!-- <div id="speedDialWrapper" :style="getSpeedDialWrapperStyle">-->
|
||||
<SpeedDial
|
||||
:model="speedDialItems"
|
||||
direction="left"
|
||||
@@ -583,12 +688,9 @@ export const AbgabeMitarbeiterDetail = {
|
||||
:tooltipOptions="{ position: 'down' }"
|
||||
>
|
||||
<template #icon>
|
||||
|
||||
<i class="fa-solid fa-bars"></i>
|
||||
|
||||
</template>
|
||||
</SpeedDial>
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" style="margin-bottom: 12px;">
|
||||
@@ -597,6 +699,13 @@ export const AbgabeMitarbeiterDetail = {
|
||||
<i class="fa-solid fa-plus"></i>
|
||||
{{$capitalize( $p.t('abgabetool/c4newAbgabetermin') )}}
|
||||
</button>
|
||||
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<button type="button" class="btn btn-primary ml-4" @click="openZusatzdatenModal">
|
||||
<i class="fa-solid fa-pen-to-square"></i>
|
||||
{{$capitalize( $p.t('abgabetool/c4ZusatzdatenBearbeiten') )}}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<Accordion :multiple="true" :activeIndex="getActiveIndexTabArray">
|
||||
@@ -626,7 +735,7 @@ export const AbgabeMitarbeiterDetail = {
|
||||
</div>
|
||||
</template>
|
||||
<div class="row mt-2" v-if="assistenzMode">
|
||||
<div class="col-12 col-md-3 fw-bold">{{$capitalize( $p.t('abgabetool/c4fixterminv4') )}}</div>
|
||||
<div class="col-12 col-md-3 fw-bold align-content-center">{{$capitalize( $p.t('abgabetool/c4fixterminv4') )}}</div>
|
||||
<div class="col-12 col-md-9">
|
||||
<Checkbox
|
||||
v-model="termin.invertedFixtermin"
|
||||
@@ -637,7 +746,7 @@ export const AbgabeMitarbeiterDetail = {
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mt-2">
|
||||
<div class="col-12 col-md-3 fw-bold">{{$capitalize( $p.t('abgabetool/c4zieldatum') )}}</div>
|
||||
<div class="col-12 col-md-3 fw-bold align-content-center">{{$capitalize( $p.t('abgabetool/c4zieldatum') )}}</div>
|
||||
<div class="col-12 col-md-9">
|
||||
<VueDatePicker
|
||||
v-model="termin.datum"
|
||||
@@ -651,7 +760,7 @@ export const AbgabeMitarbeiterDetail = {
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mt-2">
|
||||
<div class="col-12 col-md-3 fw-bold">{{$capitalize( $p.t('abgabetool/c4abgabetyp') )}}</div>
|
||||
<div class="col-12 col-md-3 fw-bold align-content-center">{{$capitalize( $p.t('abgabetool/c4abgabetyp') )}}</div>
|
||||
<div class="col-12 col-md-9">
|
||||
<Dropdown
|
||||
:style="{'width': '100%'}"
|
||||
@@ -666,7 +775,7 @@ export const AbgabeMitarbeiterDetail = {
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mt-2" v-if="termin.bezeichnung?.paabgabetyp_kurzbz === 'qualgate1' || termin.bezeichnung?.paabgabetyp_kurzbz === 'qualgate2'">
|
||||
<div class="col-12 col-md-3 fw-bold">{{$capitalize( $p.t('abgabetool/c4upload_allowed') )}}</div>
|
||||
<div class="col-12 col-md-3 fw-bold align-content-center">{{$capitalize( $p.t('abgabetool/c4upload_allowed') )}}</div>
|
||||
<div class="col-12 col-md-9">
|
||||
<Checkbox
|
||||
v-model="termin.upload_allowed"
|
||||
@@ -677,7 +786,7 @@ export const AbgabeMitarbeiterDetail = {
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mt-2" v-if="termin.bezeichnung?.benotbar">
|
||||
<div class="col-12 col-md-3 fw-bold">{{$capitalize( $p.t('abgabetool/c4note') )}}</div>
|
||||
<div class="col-12 col-md-3 fw-bold align-content-center">{{$capitalize( $p.t('abgabetool/c4note') )}}</div>
|
||||
<div class="col-12 col-md-9">
|
||||
<Dropdown
|
||||
:style="{'width': '100%'}"
|
||||
@@ -688,20 +797,20 @@ export const AbgabeMitarbeiterDetail = {
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mt-2" v-if="termin.bezeichnung?.benotbar">
|
||||
<div class="col-12 col-md-3 fw-bold">{{$capitalize( $p.t('abgabetool/c4notizQualGatev2') )}}</div>
|
||||
<div class="col-12 col-md-3 fw-bold align-content-center">{{$capitalize( $p.t('abgabetool/c4notizQualGatev2') )}}</div>
|
||||
<div class="col-12 col-md-9">
|
||||
<Textarea style="margin-bottom: 4px;" v-model="termin.beurteilungsnotiz" rows="1" class="w-100" :disabled="!termin.allowedToSave"></Textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mt-2">
|
||||
<div class="col-12 col-md-3 fw-bold">{{$capitalize( $p.t('abgabetool/c4abgabekurzbz') )}}</div>
|
||||
<div class="col-12 col-md-3 fw-bold align-content-center">{{$capitalize( $p.t('abgabetool/c4abgabekurzbz') )}}</div>
|
||||
<div class="col-12 col-md-9">
|
||||
<Textarea style="margin-bottom: 4px;" v-model="termin.kurzbz" class="w-100" rows="1" :disabled="!termin.allowedToSave"></Textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mt-2">
|
||||
<div class="col-12 col-md-3 fw-bold">{{$capitalize( $p.t('abgabetool/c4abgabedatum') )}}</div>
|
||||
<div class="col-12 col-md-3 fw-bold align-content-center">{{$capitalize( $p.t('abgabetool/c4abgabedatum') )}}</div>
|
||||
<div class="col-12 col-md-9">
|
||||
<template v-if="termin?.abgabedatum">
|
||||
<div class="row">
|
||||
@@ -737,7 +846,7 @@ export const AbgabeMitarbeiterDetail = {
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mt-2">
|
||||
<div class="col-12 col-md-3 fw-bold">
|
||||
<div class="col-12 col-md-3 fw-bold align-content-center">
|
||||
{{ $capitalize( $p.t('abgabetool/c4actions') )}}
|
||||
</div>
|
||||
<div class="col-12 col-md-9">
|
||||
@@ -777,6 +886,92 @@ export const AbgabeMitarbeiterDetail = {
|
||||
<h5>{{ $capitalize( $p.t('abgabetool/c4keineAbgabetermineGefunden') )}}</h5>
|
||||
</div>
|
||||
|
||||
<bs-modal
|
||||
ref="modalContainerZusatzdaten"
|
||||
class="bootstrap-prompt"
|
||||
dialogClass="bordered-modal modal-lg">
|
||||
<template v-slot:title>
|
||||
<div>
|
||||
{{$capitalize( $p.t('abgabetool/c4enduploadZusatzdaten') )}}
|
||||
</div>
|
||||
<div class="row mb-3 align-items-start">
|
||||
|
||||
<p class="ml-4 mr-4">Student UID: {{ projektarbeit?.student_uid}}</p>
|
||||
|
||||
</div>
|
||||
<div class="row mb-3 align-items-start">
|
||||
|
||||
<p class="ml-4 mr-4">{{$capitalize( $p.t('abgabetool/c4titel') )}}: {{ projektarbeit?.titel }}</p>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
<template v-slot:default>
|
||||
<div class="row mb-3 align-items-start">
|
||||
<div class="row">{{$capitalize( $p.t('abgabetool/c4Sprache') )}}</div>
|
||||
<div class="row">
|
||||
<Dropdown
|
||||
:style="{'width': '100%'}"
|
||||
v-model="form.sprache"
|
||||
:options="allActiveLanguages"
|
||||
:optionLabel="getOptionLabelSprache">
|
||||
</Dropdown>
|
||||
</div>
|
||||
</div>
|
||||
<!-- lektor fills these out-->
|
||||
<!-- <div class="row mb-3 align-items-start">-->
|
||||
<!-- <div class="row">Kontrollierte Schlagwörter</div>-->
|
||||
<!-- <div class="row">-->
|
||||
<!-- <Textarea v-model="form.kontrollschlagwoerter"></Textarea>-->
|
||||
<!-- </div>-->
|
||||
<!-- -->
|
||||
<!-- -->
|
||||
<!-- </div>-->
|
||||
<div class="row mb-3 align-items-start">
|
||||
<div class="row">{{$capitalize( $p.t('abgabetool/c4schlagwoerterGer') )}}</div>
|
||||
<div class="row">
|
||||
<Textarea v-model="form.schlagwoerter" class="w-100"></Textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3 align-items-start">
|
||||
<div class="row">{{$capitalize( $p.t('abgabetool/c4schlagwoerterEng') )}}</div>
|
||||
<div class="row">
|
||||
<Textarea v-model="form.schlagwoerter_en" class="w-100"></Textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3 align-items-start">
|
||||
<div class="row">{{$capitalize( $p.t('abgabetool/c4abstractGer') )}}</div>
|
||||
<div class="row">
|
||||
<Textarea v-model="form.abstract" rows="10" maxlength="5000" class="w-100"></Textarea>
|
||||
<p>{{ form.abstract?.length ? form.abstract.length : 0 }} / 5000 characters</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3 align-items-start">
|
||||
<div class="row">{{$capitalize( $p.t('abgabetool/c4abstractEng') )}}</div>
|
||||
<div class="row">
|
||||
<Textarea v-model="form.abstract_en" rows="10" maxlength="5000" class="w-100"></Textarea>
|
||||
<p>{{ form.abstract_en?.length ? form.abstract_en.length : 0 }} / 5000 characters</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3 align-items-start">
|
||||
<div class="row">{{$capitalize( $p.t('abgabetool/c4seitenanzahl') )}}</div>
|
||||
<div class="row">
|
||||
<InputNumber
|
||||
v-model="form.seitenanzahl"
|
||||
inputId="seitenanzahlInput" :min="1" :max="100000">
|
||||
</InputNumber>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
<template v-slot:footer>
|
||||
<button class="btn btn-primary" @click="saveZusatzdaten">{{ $capitalize( $p.t('abgabetool/c4save') )}}</button>
|
||||
</template>
|
||||
</bs-modal>
|
||||
|
||||
</div>
|
||||
`,
|
||||
};
|
||||
|
||||
@@ -412,15 +412,15 @@ export const AbgabeStudentDetail = {
|
||||
<template #content>
|
||||
<div class="col-auto">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-3 fw-bold">{{ $capitalize($p.t('abgabetool/c4abgabeZeitstatus')) }}</div>
|
||||
<div class="col-12 col-md-3 fw-bold align-content-center">{{ $capitalize($p.t('abgabetool/c4abgabeZeitstatus')) }}</div>
|
||||
<div class="col-12 col-md-9">{{$p.t('abgabetool/c4tooltip' + $capitalize(termin?.dateStyle) )}}</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-3 fw-bold">{{ $capitalize($p.t('abgabetool/c4fixterminv4')) }}</div>
|
||||
<div class="col-12 col-md-3 fw-bold align-content-center">{{ $capitalize($p.t('abgabetool/c4fixterminv4')) }}</div>
|
||||
<div class="col-12 col-md-9">{{!termin?.fixtermin}}</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-3 fw-bold">{{ $capitalize($p.t('abgabetool/c4fileUploaded')) }}</div>
|
||||
<div class="col-12 col-md-3 fw-bold align-content-center">{{ $capitalize($p.t('abgabetool/c4fileUploaded')) }}</div>
|
||||
<div class="col-12 col-md-9">{{termin?.abgabedatum !== null}}</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -431,7 +431,7 @@ export const AbgabeStudentDetail = {
|
||||
</div>
|
||||
|
||||
<div class="row mt-2">
|
||||
<div class="col-12 col-md-3 fw-bold">{{$capitalize( $p.t('abgabetool/c4zieldatum') )}}</div>
|
||||
<div class="col-12 col-md-3 fw-bold align-content-center">{{$capitalize( $p.t('abgabetool/c4zieldatum') )}}</div>
|
||||
<div class="col-12 col-md-9">
|
||||
<VueDatePicker
|
||||
v-model="termin.datum"
|
||||
@@ -446,14 +446,14 @@ export const AbgabeStudentDetail = {
|
||||
</div>
|
||||
|
||||
<div class="row mt-2">
|
||||
<div class="col-12 col-md-3 fw-bold">{{$capitalize( $p.t('abgabetool/c4abgabetypv2') )}}</div>
|
||||
<div class="col-12 col-md-3 fw-bold align-content-center">{{$capitalize( $p.t('abgabetool/c4abgabetyp') )}}</div>
|
||||
<div class="col-12 col-md-9">
|
||||
{{ termin.bezeichnung }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mt-2" v-if="termin.note">
|
||||
<div class="col-12 col-md-3 fw-bold">{{$capitalize( $p.t('abgabetool/c4note') )}}</div>
|
||||
<div class="col-12 col-md-3 fw-bold align-content-center">{{$capitalize( $p.t('abgabetool/c4note') )}}</div>
|
||||
<div class="col-12 col-md-9">
|
||||
<div class="col-1 d-flex justify-content-start align-items-start">
|
||||
{{ getTerminNoteBezeichnung(termin) }}
|
||||
@@ -462,21 +462,21 @@ export const AbgabeStudentDetail = {
|
||||
</div>
|
||||
|
||||
<div class="row mt-2" v-if="termin.paabgabetyp_kurzbz === 'qualgate1' || termin.paabgabetyp_kurzbz === 'qualgate2'">
|
||||
<div class="col-12 col-md-3 fw-bold">{{$capitalize( $p.t('abgabetool/c4notizQualGatev2') )}}</div>
|
||||
<div class="col-12 col-md-3 fw-bold align-content-center">{{$capitalize( $p.t('abgabetool/c4notizQualGatev2') )}}</div>
|
||||
<div class="col-12 col-md-9">
|
||||
<Textarea style="margin-bottom: 4px;" v-model="termin.beurteilungsnotiz" rows="1" class="w-100" disabled></Textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="termin.kurzbz && termin.kurzbz.length > 0" class="row mt-2">
|
||||
<div class="col-12 col-md-3 fw-bold">{{$capitalize( $p.t('abgabetool/c4abgabekurzbz') )}}</div>
|
||||
<div class="col-12 col-md-3 fw-bold align-content-center">{{$capitalize( $p.t('abgabetool/c4abgabekurzbz') )}}</div>
|
||||
<div class="col-12 col-md-9">
|
||||
<Textarea style="margin-bottom: 4px;" v-model="termin.kurzbz" rows="1" class="w-100" :disabled="true"></Textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mt-2">
|
||||
<div class="col-12 col-md-3 fw-bold">{{$capitalize( $p.t('abgabetool/c4abgabedatum') )}}</div>
|
||||
<div class="col-12 col-md-3 fw-bold align-content-center">{{$capitalize( $p.t('abgabetool/c4abgabedatum') )}}</div>
|
||||
<div class="col-12 col-md-9">
|
||||
<template v-if="termin?.abgabedatum">
|
||||
<div class="row">
|
||||
@@ -508,7 +508,7 @@ export const AbgabeStudentDetail = {
|
||||
</div>
|
||||
|
||||
<div class="row mt-2" v-if="termin.upload_allowed">
|
||||
<div class="col-12 col-md-3 fw-bold">{{$capitalize( $p.t('abgabetool/c4fileupload') )}}</div>
|
||||
<div class="col-12 col-md-3 fw-bold align-content-center">{{$capitalize( $p.t('abgabetool/c4fileupload') )}}</div>
|
||||
<div class="col-12 col-md-9">
|
||||
<div class="row" v-if="termin?.allowedToUpload">
|
||||
<div class="col-12 col-sm-6 mb-2">
|
||||
|
||||
@@ -665,7 +665,7 @@ export const AbgabetoolAssistenz = {
|
||||
|
||||
const mappedData = this.mapProjekteToTableData(this.projektarbeiten)
|
||||
|
||||
this.$refs.abgabeTable.tabulator.clearData()
|
||||
// this.$refs.abgabeTable.tabulator.clearData()
|
||||
this.$refs.abgabeTable.tabulator.setColumns(this.abgabeTableOptions.columns)
|
||||
this.$refs.abgabeTable.tabulator.setData(mappedData);
|
||||
},
|
||||
@@ -832,7 +832,7 @@ export const AbgabetoolAssistenz = {
|
||||
{{$capitalize($p.t('abgabetool/c4zieldatum'))}}
|
||||
</div>
|
||||
<div class="col-3 d-flex justify-content-center align-items-center">
|
||||
{{$p.t('abgabetool/c4abgabetypv2')}}
|
||||
{{$p.t('abgabetool/c4abgabetyp')}}
|
||||
</div>
|
||||
<div class="col-5 d-flex justify-content-center align-items-center">
|
||||
{{$p.t('abgabetool/c4abgabekurzbz')}}
|
||||
|
||||
@@ -87,7 +87,7 @@ export const AbgabetoolMitarbeiter = {
|
||||
},
|
||||
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4details'))), field: 'details', formatter: this.detailFormatter, widthGrow: 1, tooltip: false},
|
||||
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4personenkennzeichen'))), headerFilter: true, field: 'pkz', formatter: this.pkzTextFormatter, widthGrow: 1, tooltip: false},
|
||||
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4kontakt'))), field: 'mail', formatter: this.mailFormatter, widthGrow: 1, tooltip: false},
|
||||
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4kontakt'))), field: 'mail', formatter: this.mailFormatter, widthGrow: 1, tooltip: false, visible: false},
|
||||
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4vorname'))), field: 'vorname', headerFilter: true, formatter: this.centeredTextFormatter,widthGrow: 1},
|
||||
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4nachname'))), field: 'nachname', headerFilter: true, formatter: this.centeredTextFormatter, widthGrow: 1},
|
||||
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4projekttyp'))), field: 'projekttyp_kurzbz', formatter: this.centeredTextFormatter, widthGrow: 1},
|
||||
@@ -215,27 +215,12 @@ export const AbgabetoolMitarbeiter = {
|
||||
pa.abgabetermine = res.data[0].retval
|
||||
pa.isCurrent = res.data[1]
|
||||
|
||||
// pa.abgabetermine.push({ // new abgatermin row
|
||||
//
|
||||
// 'paabgabe_id': -1,
|
||||
// 'projektarbeit_id': pa.projektarbeit_id,
|
||||
// 'fixtermin': false,
|
||||
// 'kurzbz': '',
|
||||
// 'datum': new Date().toISOString().split('T')[0],
|
||||
// 'note': this.allowedNotenOptions.find(opt => opt.note == 9),
|
||||
// 'upload_allowed': false,
|
||||
// 'paabgabetyp_kurzbz': '',
|
||||
// 'bezeichnung': '',
|
||||
// 'abgabedatum': null,
|
||||
// 'insertvon': this.viewData?.uid ?? ''
|
||||
//
|
||||
// })
|
||||
|
||||
pa.abgabetermine.forEach(termin => {
|
||||
termin.note = this.allowedNotenOptions.find(opt => opt.note == termin.note)
|
||||
termin.file = []
|
||||
|
||||
// lektoren are only allowed to edit their own deadline entries
|
||||
// TODO: cis old
|
||||
termin.allowedToSave = termin.insertvon == this.viewData?.uid && pa.betreuerart_kurzbz != 'Zweitbegutachter'
|
||||
|
||||
// lektoren are not allowed to delete deadlines with existing submissions
|
||||
@@ -417,7 +402,7 @@ export const AbgabetoolMitarbeiter = {
|
||||
{{$p.t('abgabetool/c4zieldatum')}}
|
||||
</div>
|
||||
<div class="col-3 d-flex justify-content-center align-items-center">
|
||||
{{$p.t('abgabetool/c4abgabetypv2')}}
|
||||
{{$p.t('abgabetool/c4abgabetyp')}}
|
||||
</div>
|
||||
<div class="col-6 d-flex justify-content-center align-items-center">
|
||||
{{$p.t('abgabetool/c4abgabekurzbz')}}
|
||||
|
||||
@@ -36,7 +36,7 @@ export const DeadlineOverview = {
|
||||
columns: [
|
||||
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4zieldatum'))), field: 'datum', formatter: this.centeredTextFormatter, widthGrow: 1, tooltip: false},
|
||||
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4fixterminv4'))), field: 'fixterminstring', formatter: this.centeredTextFormatter, widthGrow: 1, tooltip: false},
|
||||
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4abgabetypv2'))), field: 'typ_bezeichnung', formatter: this.centeredTextFormatter, widthGrow: 1},
|
||||
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4abgabetyp'))), field: 'typ_bezeichnung', formatter: this.centeredTextFormatter, widthGrow: 1},
|
||||
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4abgabekurzbz'))), field: 'kurzbz', formatter: this.centeredTextFormatter, widthGrow: 3},
|
||||
{title: Vue.computed(() => this.$capitalize(this.$p.t('person/studentIn'))), field: 'student', formatter: this.centeredTextFormatter, widthGrow: 2},
|
||||
{title: Vue.computed(() => this.$capitalize(this.$p.t('abgabetool/c4stg'))), field: 'stg', formatter: this.centeredTextFormatter,widthGrow: 1},
|
||||
|
||||
@@ -42845,13 +42845,13 @@ array(
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Alle anzeigen",
|
||||
'text' => "Alle betreuten Projektarbeiten anzeigen",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Show All',
|
||||
'text' => 'Show all supervised project work',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
@@ -42865,13 +42865,13 @@ array(
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Deadlines anzeigen",
|
||||
'text' => "Deadline Übersicht anzeigen ",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Show Deadlines',
|
||||
'text' => 'Show Deadline Overview',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
@@ -43329,6 +43329,26 @@ array(
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'abgabetool',
|
||||
'phrase' => 'c4ZusatzdatenBearbeiten',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Zusatzdaten bearbeiten",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Edit additional Data',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'abgabetool',
|
||||
|
||||
Reference in New Issue
Block a user