mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 20:29:29 +00:00
Studierendenverwaltung Projektarbeit improvements: tabulator (supposedly) stores column changes, changed some phrases, projektarbeit download button is now shown when Projektbeurteilung extension is not installted, errors are displayed near input fields not in pop up, changed modal layout, Vertrag fields are now just text fields, validation errors are cleared
This commit is contained in:
@@ -168,13 +168,13 @@ class Projektbetreuer extends FHCAPI_Controller
|
||||
$betreuerart_kurzbz = $this->input->post('betreuerart_kurzbz');
|
||||
|
||||
if (!isset($projektarbeit_id) || !is_numeric($projektarbeit_id))
|
||||
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Projektarbeit ID'], self::ERROR_TYPE_GENERAL));
|
||||
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> $this->p->t('projektarbeit', 'projektarbeit').' ID'], self::ERROR_TYPE_GENERAL));
|
||||
|
||||
if (!isset($person_id) || !is_numeric($person_id))
|
||||
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Person ID'], self::ERROR_TYPE_GENERAL));
|
||||
|
||||
if (!isset($betreuerart_kurzbz))
|
||||
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Betreuerart'], self::ERROR_TYPE_GENERAL));
|
||||
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> $this->p->t('projektarbeit', 'betreuerart')], self::ERROR_TYPE_GENERAL));
|
||||
|
||||
if (!$this->ProjektarbeitModel->hasBerechtigungForProjektarbeit($projektarbeit_id))
|
||||
return $this->_outputAuthError([$this->router->method => ['admin:rw', 'assistenz:rw']]);
|
||||
@@ -295,19 +295,19 @@ class Projektbetreuer extends FHCAPI_Controller
|
||||
$this->form_validation->set_data($formData);
|
||||
|
||||
$this->form_validation->set_rules('betreuerart_kurzbz', 'Betreuerart', 'required', [
|
||||
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Betreuerart'])
|
||||
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => $this->p->t('projektarbeit', 'betreuerart')])
|
||||
]);
|
||||
|
||||
$this->form_validation->set_rules('person_id', 'Person', 'required', [
|
||||
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Person ID'])
|
||||
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => $this->p->t('projektarbeit', 'betreuer')])
|
||||
]);
|
||||
|
||||
$this->form_validation->set_rules('stunden', 'Stunden', 'numeric', [
|
||||
'numeric' => $this->p->t('ui', 'error_fieldNotNumeric', ['field' => 'Stunden'])
|
||||
'numeric' => $this->p->t('ui', 'error_fieldNotNumeric', ['field' => $this->p->t('projektarbeit', 'stunden')])
|
||||
]);
|
||||
|
||||
$this->form_validation->set_rules('stundensatz', 'Stundensatz', 'numeric', [
|
||||
'numeric' => $this->p->t('ui', 'error_fieldNotNumeric', ['field' => 'Stundensatz'])
|
||||
'numeric' => $this->p->t('ui', 'error_fieldNotNumeric', ['field' => $this->p->t('projektarbeit', 'stundensatz')])
|
||||
]);
|
||||
|
||||
|
||||
|
||||
@@ -102,6 +102,7 @@ export default {
|
||||
this.formData.note = null;
|
||||
this.formData.final = true;
|
||||
this.formData.anmerkung = null;
|
||||
this.$refs.formDetails.clearValidation();
|
||||
},
|
||||
getFormData(statusNew, studiensemester_kurzbz, additional_lehrveranstaltung_id/*, successCallback*/) {
|
||||
|
||||
|
||||
@@ -175,15 +175,14 @@ export default {
|
||||
frozen: true
|
||||
},
|
||||
],
|
||||
layout: 'fitDataFill',
|
||||
//layout: 'fitDataFill',
|
||||
height: 'auto',
|
||||
minHeight: '200',
|
||||
selectable: 1,
|
||||
index: 'projektarbeit_id',
|
||||
//persistenceMode:"cookie",
|
||||
//~ persistence:{
|
||||
//~ columns: true, //persist column layout
|
||||
//~ },
|
||||
persistence:{
|
||||
columns: true, //persist column layout
|
||||
},
|
||||
persistenceID: 'stv-details-projektarbeit'
|
||||
},
|
||||
tabulatorEvents: [
|
||||
@@ -356,11 +355,11 @@ export default {
|
||||
</template>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<div class="col-5">
|
||||
<projektarbeit-details ref="projektarbeitDetails" :student="student" @projekttyp-changed="setDefaultStunden">
|
||||
</projektarbeit-details>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<div class="col-7">
|
||||
<projektbetreuer ref="projektbetreuer" :config="config"></projektbetreuer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
+19
-8
@@ -84,13 +84,16 @@ export default {
|
||||
frozen: true
|
||||
},
|
||||
],
|
||||
layout: 'fitDataFill',
|
||||
//layout: 'fitDataFill',
|
||||
layoutColumnsOnNewData: false,
|
||||
height: 'auto',
|
||||
minHeight: '100',
|
||||
selectable: true,
|
||||
selectable: 1,
|
||||
index: 'betreuer_id',
|
||||
persistence:{
|
||||
columns: true, //persist column layout
|
||||
},
|
||||
persistenceID: 'stv-details-projektbetreuer'
|
||||
},
|
||||
tabulatorEvents: [
|
||||
@@ -99,6 +102,13 @@ export default {
|
||||
handler: async() => {
|
||||
await this.$p.loadCategory(['global', 'person', 'stv', 'projektarbeit', 'ui']);
|
||||
}
|
||||
},
|
||||
{
|
||||
event: 'rowSelected',
|
||||
handler: row => {
|
||||
let data = row.getData();
|
||||
this.actionEditProjektbetreuer(data.projektarbeit_id, data.person_id, data.betreuerart_kurzbz);
|
||||
}
|
||||
}
|
||||
],
|
||||
formData: {
|
||||
@@ -156,7 +166,7 @@ export default {
|
||||
this.formData = betreuer;
|
||||
|
||||
// set download link
|
||||
if (betreuer.beurteilungDownloadLink) this.beurteilungDownloadLink = betreuer.beurteilungDownloadLink
|
||||
if (betreuer.beurteilungDownloadLink !== null) this.beurteilungDownloadLink = betreuer.beurteilungDownloadLink;
|
||||
|
||||
// set betreuer for autocomplete field
|
||||
this.autocompleteSelectedBetreuer = {
|
||||
@@ -279,15 +289,16 @@ export default {
|
||||
alleBetreuer.push(this.addAutoCompleteBetreuerToFormData(this.formData));
|
||||
}
|
||||
|
||||
return this.$api.call(ApiStvProjektbetreuer.validateProjektbetreuer(alleBetreuer));
|
||||
return this.$refs.formProjektbetreuer.call(ApiStvProjektbetreuer.validateProjektbetreuer(alleBetreuer));
|
||||
},
|
||||
resetForm() {
|
||||
this.formData = this.getDefaultFormData();
|
||||
this.beurteilungDownloadLink = null;
|
||||
if (this.beurteilungDownloadLink !== null) this.beurteilungDownloadLink = '';
|
||||
this.autocompleteSelectedBetreuer = null;
|
||||
this.initialFormData = null;
|
||||
if (this.projekttyp_kurzbz) this.setDefaultStunden(this.projekttyp_kurzbz);
|
||||
this.disableVertragFields(false);
|
||||
this.$refs.formProjektbetreuer.clearValidation();
|
||||
},
|
||||
resetModes() {
|
||||
this.newMode = false;
|
||||
@@ -417,7 +428,7 @@ export default {
|
||||
type="autocomplete"
|
||||
optionLabel="name"
|
||||
v-model="autocompleteSelectedBetreuer"
|
||||
name="betreuer"
|
||||
name="person_id"
|
||||
:suggestions="filteredBetreuer"
|
||||
@complete="searchBetreuer"
|
||||
:min-length="3"
|
||||
@@ -501,13 +512,13 @@ export default {
|
||||
<button class="btn btn-primary" v-show="betreuerFormOpened" @click="confirmProjektbetreuerAfterValidation">
|
||||
{{ $p.t('projektarbeit', 'betreuerBestaetigen') }}
|
||||
</button>
|
||||
<div class = "mt-5">
|
||||
<div class = "mt-5" v-if="beurteilungDownloadLink !== null">
|
||||
<div class="mb-1">
|
||||
<a :href="beurteilungDownloadLink" class="btn btn-primary d-block" :class="{ 'disabled' : !beurteilungDownloadLink || beurteilungDownloadLink == ''}">
|
||||
<a :href="beurteilungDownloadLink" class="btn btn-primary d-block" :class="{ 'disabled' : beurteilungDownloadLink === ''}">
|
||||
{{ $p.t('projektarbeit', 'projektbeurteilungErstellen') }}
|
||||
</a>
|
||||
</div>
|
||||
{{ autocompleteSelectedBetreuer?.person_id && (!beurteilungDownloadLink || beurteilungDownloadLink == '') ? $p.t('projektarbeit', 'projektarbeitNochNichtBeurteilt') : ''}}
|
||||
{{ autocompleteSelectedBetreuer?.person_id && beurteilungDownloadLink === '' ? $p.t('projektarbeit', 'projektarbeitNochNichtBeurteilt') : ''}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -125,36 +125,22 @@ export default{
|
||||
<div class="mb-3">
|
||||
{{ betreuerProjektarbeit?.betreuerart_kurzbz && betreuerProjektarbeit?.vertrag_id == null ? ' – '+$p.t('lehre', 'nochKeinVertrag') : '' }}
|
||||
</div>
|
||||
<div class="row align-items-end mb-3">
|
||||
<form-input
|
||||
:label="$p.t('lehre', 'vertragsstatus')"
|
||||
type="text"
|
||||
readonly
|
||||
v-model="vertragsstatus"
|
||||
:style="{fontWeight: vertragsstatus === this.vertragsstatus_geaendert ? 'bold' : 'normal'}"
|
||||
name="vertragsstatus"
|
||||
/>
|
||||
</div>
|
||||
{{$p.t('lehre', 'vertragurfassung')}}
|
||||
<div class="row mb-3">
|
||||
<form-input
|
||||
:label="$p.t('lehre', 'semesterstunden')"
|
||||
type="text"
|
||||
readonly
|
||||
v-model="data.vertragsstunden"
|
||||
name="vertragsstunden"
|
||||
>
|
||||
</form-input>
|
||||
<div class="col-12">
|
||||
{{ $p.t('lehre', 'vertragsstatus') }}: {{ vertragsstatus }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<form-input
|
||||
:label="$p.t('lehre', 'studiensemester')"
|
||||
type="text"
|
||||
readonly
|
||||
v-model="data.vertragsstunden_studiensemester_kurzbz"
|
||||
name="vertragsstunden_studiensemester_kurzbz"
|
||||
>
|
||||
</form-input>
|
||||
<div class="col-12">
|
||||
{{$p.t('lehre', 'vertragurfassung')}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<div class="col-12">
|
||||
{{ $p.t('lehre', 'semesterstunden') }}: {{ data.vertragsstunden }}
|
||||
<br>
|
||||
<span class="text-capitalize">{{ $p.t('lehre', 'studiensemester') }}</span>: {{ data.vertragsstunden_studiensemester_kurzbz }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3" v-if="data?.vertragsstatus">
|
||||
<div class="col-12">
|
||||
@@ -164,7 +150,7 @@ export default{
|
||||
:disabled="vertragsstatus == vertragsstatus_storniert"
|
||||
@click="cancelVertrag"
|
||||
>
|
||||
{{ $p.t('lehre', 'stornieren') }}
|
||||
{{ $p.t('lehre', 'vertragStornieren') }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -43778,7 +43778,7 @@ and represent the current state of research on the topic. The prescribed citatio
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'lehre',
|
||||
'phrase' => 'stornieren',
|
||||
'phrase' => 'vertragStornieren',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
@@ -43789,7 +43789,7 @@ and represent the current state of research on the topic. The prescribed citatio
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Cancel',
|
||||
'text' => 'Cancel contract',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user