mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-20 00:12:15 +00:00
gruppen in eigenen tab verschoben
styling phrases
This commit is contained in:
@@ -350,7 +350,7 @@ class Lehreinheit extends FHCAPI_Controller
|
||||
$this->form_validation->set_rules($field, 'Start KW', 'integer|greater_than[0]|less_than_equal_to[53]');
|
||||
break;
|
||||
case 'gewicht':
|
||||
$this->form_validation->set_rules($field, 'Gewicht', 'numeric');
|
||||
$this->form_validation->set_rules($field, 'Gewicht', 'numeric|greater_than_equal_to[0]');
|
||||
break;
|
||||
case 'raumtyp':
|
||||
$this->form_validation->set_rules($field, 'Raumtyp', 'required|max_length[16]');
|
||||
@@ -365,7 +365,7 @@ class Lehreinheit extends FHCAPI_Controller
|
||||
$this->form_validation->set_rules($field, 'LVNR', 'integer');
|
||||
break;
|
||||
case 'unr':
|
||||
$this->form_validation->set_rules($field, 'UNR', 'integer');
|
||||
$this->form_validation->set_rules($field, 'UNR', 'integer|greater_than_equal_to[0]');
|
||||
break;
|
||||
case 'lehre':
|
||||
$this->form_validation->set_rules($field, 'Lehre', 'trim');
|
||||
|
||||
@@ -107,7 +107,8 @@ class Lektor extends FHCAPI_Controller
|
||||
$this->form_validation->set_rules($field, 'Planstunden', 'integer|greater_than_equal_to[0]');
|
||||
break;
|
||||
case 'stundensatz':
|
||||
$this->form_validation->set_rules($field, 'Stundensatz', 'numeric|greater_than_equal_to[0]');
|
||||
$formData['stundensatz'] = str_replace(',', '.', $formData['stundensatz']);
|
||||
$this->form_validation->set_rules($field, 'Stundensatz', 'callback__check_stundensatz');
|
||||
break;
|
||||
case 'faktor':
|
||||
$this->form_validation->set_rules($field, 'Faktor', 'numeric|greater_than_equal_to[0]');
|
||||
@@ -119,6 +120,7 @@ class Lektor extends FHCAPI_Controller
|
||||
$this->form_validation->set_rules($field, 'Bis Melden', 'trim');
|
||||
break;
|
||||
case 'semesterstunden':
|
||||
$formData['semesterstunden'] = str_replace(',', '.', $formData['semesterstunden']);
|
||||
$this->form_validation->set_rules($field, 'Semesterstunden', 'callback__check_semesterstunden');
|
||||
break;
|
||||
case 'mitarbeiter_uid':
|
||||
@@ -129,7 +131,7 @@ class Lektor extends FHCAPI_Controller
|
||||
}
|
||||
if (!$this->form_validation->run())
|
||||
{
|
||||
$this->terminateWithError($this->form_validation->error_array());
|
||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
||||
}
|
||||
|
||||
if (isset($formData['semesterstunden']) && (!is_numeric($formData['semesterstunden']) || $formData['semesterstunden'] === ''))
|
||||
@@ -145,9 +147,26 @@ class Lektor extends FHCAPI_Controller
|
||||
$result = $this->_ci->lektorlib->updateLektorFromLehreinheit($lehreinheit_id, $mitarbeiter_uid, $formData);
|
||||
|
||||
if (isError($result)) $this->terminateWithError(getError($result));
|
||||
$this->terminateWithSuccess("Erfolgreich geupdated");
|
||||
$this->terminateWithSuccess($result);
|
||||
}
|
||||
|
||||
public function _check_stundensatz($value)
|
||||
{
|
||||
$value = str_replace(',', '.', $value);
|
||||
|
||||
if (!is_numeric($value))
|
||||
{
|
||||
$this->form_validation->set_message('_check_decimal', 'Das Feld {field} muss eine Zahl sein.');
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($value < 0 || $value >= 10000) {
|
||||
$this->form_validation->set_message('_check_decimal', 'Das Feld {field} muss zwischen 0 und 10000 liegen.');
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
public function _check_semesterstunden($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
@@ -171,6 +190,14 @@ class Lektor extends FHCAPI_Controller
|
||||
);
|
||||
return false;
|
||||
}
|
||||
if ($value > 999.99)
|
||||
{
|
||||
$this->form_validation->set_message(
|
||||
'_check_semesterstunden',
|
||||
'Das Feld {field} darf maximal 999,99 betragen.'
|
||||
);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -50,6 +50,11 @@ class Setup extends FHCAPI_Controller
|
||||
'component' => APP_ROOT . 'public/js/components/LVVerwaltung/Tabs/Details.js',
|
||||
'config' => []
|
||||
);
|
||||
$tabs['gruppen'] = array (
|
||||
'title' => 'Gruppen',
|
||||
'component' => APP_ROOT . 'public/js/components/LVVerwaltung/Tabs/Gruppen.js',
|
||||
'config' => []
|
||||
);
|
||||
$tabs['lektor'] = array (
|
||||
'title' => 'LektorInnenzuteilung',
|
||||
'component' => APP_ROOT . 'public/js/components/LVVerwaltung/Tabs/Lektor.js',
|
||||
|
||||
@@ -176,11 +176,11 @@ class LektorLib
|
||||
if (!$echter_dv && (!$this->_ci->permissionlib->isBerechtigt('admin')))
|
||||
{
|
||||
if (!$this->LehrauftragAufFirma(isset($formData['mitarbeiter_uid']) ? $formData['mitarbeiter_uid'] : $mitarbeiter_uid))
|
||||
return error("ACHTUNG: Die maximal erlaubte Semesterstundenanzahl des Lektors von $summe Stunden ($stundengrenze->stunden) wurde ueberschritten!\n Daten wurden NICHT gespeichert!\n\n");
|
||||
return error("ACHTUNG: Die maximal erlaubte Semesterstundenanzahl des Lektors von $summe Stunden ($stundengrenze->stunden) wurde ueberschritten!\nDaten wurden NICHT gespeichert!\n\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
$warning .= "ACHTUNG: Die maximal erlaubte Semesterstundenanzahl des Lektors von $summe Stunden ($stundengrenze->stunden) wurde ueberschritten!\n Daten wurden gespeichert!\n\n";
|
||||
$warning .= "ACHTUNG: Die maximal erlaubte Semesterstundenanzahl des Lektors von $summe Stunden ($stundengrenze->stunden) wurde ueberschritten!\nDaten wurden gespeichert!\n\n";
|
||||
}
|
||||
|
||||
$stunden_limit_result = $this->getStundenInstitut($mitarbeiter_uid, $lehreinheit->studiensemester_kurzbz, $oe_array);
|
||||
@@ -190,7 +190,7 @@ class LektorLib
|
||||
$stunden_limit_array = getData($stunden_limit_result);
|
||||
foreach ($stunden_limit_array as $stunden_limit)
|
||||
{
|
||||
$warning .= $stunden_limit->summe . ' Stunden' . $stunden_limit->bezeichnung;
|
||||
$warning .= $stunden_limit->summe . ' Stunden ' . $stunden_limit->bezeichnung . "\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -206,7 +206,7 @@ class LektorLib
|
||||
$benutzer_aktiv = getData($benutzer_result)[0]->aktiv;
|
||||
|
||||
if (!$benutzer_aktiv)
|
||||
$warning .= "Achtung: Der/Die Benutzer*in ist inaktiv!\nBitte informieren Sie die Personalbteilung.\n\nDaten wurden gespeichert.\n\n";
|
||||
$warning .= "Achtung: Der/Die Benutzer*in ist inaktiv!\nBitte informieren Sie die Personalbteilung.\nDaten wurden gespeichert.\n\n";
|
||||
|
||||
$updatableFields = array(
|
||||
'semesterstunden',
|
||||
@@ -236,9 +236,9 @@ class LektorLib
|
||||
|
||||
if (isError($result)) return $result;
|
||||
|
||||
if ($warning !== '') return error($warning);
|
||||
if ($warning !== '') return success(['warning' => $warning]);
|
||||
|
||||
return success('Successfully updated Lehreinheit');
|
||||
return success('Erfolgreich geupdated');
|
||||
}
|
||||
|
||||
private function getMaxStunden($mitarbeiter_uid, $studiensemester_kurzbz, $studiengang_kz, $echter_dv)
|
||||
@@ -280,7 +280,7 @@ class LektorLib
|
||||
|
||||
foreach ($stunden_limit_array as $stunden_limit)
|
||||
{
|
||||
$error .= $stunden_limit->summe . ' Stunden' . $stunden_limit->bezeichnung;
|
||||
$error .= $stunden_limit->summe . ' Stunden ' . $stunden_limit->bezeichnung . "\n";
|
||||
}
|
||||
}
|
||||
return error($error);
|
||||
|
||||
@@ -28,3 +28,13 @@ textarea[name="anmerkung"] {
|
||||
content: '\f073';
|
||||
color: #f3c541;
|
||||
}
|
||||
|
||||
|
||||
.modal-dialog.modal-xxl {
|
||||
max-width: 95% !important;
|
||||
}
|
||||
|
||||
.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after
|
||||
{
|
||||
border-color: black;
|
||||
}
|
||||
|
||||
+153
-1
@@ -1 +1,153 @@
|
||||
@import '../../vendor/olifolkerd/tabulator6/dist/css/tabulator_simple.min.css';
|
||||
@import '../../vendor/olifolkerd/tabulator6/dist/css/tabulator_simple.min.css';
|
||||
.tabulator-row {
|
||||
border-bottom: none;
|
||||
}
|
||||
.tabulator-row .tabulator-frozen,
|
||||
.tabulator-row .tabulator-cell {
|
||||
border-bottom: 1px solid #dee2e6;
|
||||
}
|
||||
.tabulator-row.tabulator-row-even {
|
||||
background-color: transparent;
|
||||
}
|
||||
.tabulator-headers .tabulator-frozen,
|
||||
.tabulator-row.tabulator-row-odd .tabulator-frozen,
|
||||
.tabulator-row.tabulator-row-odd .tabulator-cell {
|
||||
background-color: #fff;
|
||||
}
|
||||
.tabulator-row.tabulator-row-even .tabulator-frozen,
|
||||
.tabulator-row.tabulator-row-even .tabulator-cell {
|
||||
background-color: #f2f2f2;
|
||||
}
|
||||
.tabulator-row.tabulator-selectable:hover .tabulator-frozen,
|
||||
.tabulator-row.tabulator-selectable:hover .tabulator-cell {
|
||||
background-color: #ececec;
|
||||
}
|
||||
.tabulator-row.tabulator-selected .tabulator-frozen,
|
||||
.tabulator-row.tabulator-selected .tabulator-cell {
|
||||
background-color: #9abcea;
|
||||
}
|
||||
.tabulator-row.tabulator-selected:hover .tabulator-frozen,
|
||||
.tabulator-row.tabulator-selected:hover .tabulator-cell {
|
||||
background-color: #769bcc;
|
||||
}
|
||||
.tabulator .tabulator-col-resize-handle:last-of-type {
|
||||
z-index: 999999;
|
||||
}
|
||||
|
||||
/* classes for rows that are not selectable in the tabulator, except for rows that are used for calculation */
|
||||
.tabulator-row.tabulator-unselectable:not(.tabulator-calcs) {
|
||||
color: #adb5bd !important;
|
||||
pointer-events: none !important;
|
||||
}
|
||||
|
||||
.tabulator-row.tabulator-unselectable a {
|
||||
pointer-events: auto !important;
|
||||
}
|
||||
|
||||
/* using bootstrap background classes to style the background color of tabulator rows */
|
||||
/* bg-warning */
|
||||
/* odd-rows */
|
||||
.tabulator-headers .tabulator-frozen.bg-warning,
|
||||
.tabulator-row.tabulator-row-odd .tabulator-frozen.bg-warning,
|
||||
.tabulator-row.tabulator-row-odd .tabulator-cell.bg-warning {
|
||||
background-color: #fcf8e3;
|
||||
|
||||
}
|
||||
/* even-rows */
|
||||
.tabulator-headers .tabulator-frozen.bg-warning,
|
||||
.tabulator-row.tabulator-row-even .tabulator-frozen.bg-warning,
|
||||
.tabulator-row.tabulator-row-even .tabulator-cell.bg-warning {
|
||||
background-color: #fcf8e3;
|
||||
|
||||
}
|
||||
|
||||
/* bg-success */
|
||||
/* odd-rows */
|
||||
.tabulator-headers .tabulator-frozen.bg-success,
|
||||
.tabulator-row.tabulator-row-odd .tabulator-frozen.bg-success,
|
||||
.tabulator-row.tabulator-row-odd .tabulator-cell.bg-success {
|
||||
background-color: #dff0d8;
|
||||
|
||||
}
|
||||
/* even-rows */
|
||||
.tabulator-headers .tabulator-frozen.bg-success,
|
||||
.tabulator-row.tabulator-row-even .tabulator-frozen.bg-success,
|
||||
.tabulator-row.tabulator-row-even .tabulator-cell.bg-success {
|
||||
background-color: #dff0d8;
|
||||
|
||||
}
|
||||
|
||||
/* bg-info */
|
||||
/* odd-rows */
|
||||
.tabulator-headers .tabulator-frozen.bg-info,
|
||||
.tabulator-row.tabulator-row-odd .tabulator-frozen.bg-info,
|
||||
.tabulator-row.tabulator-row-odd .tabulator-cell.bg-info {
|
||||
background-color: #d9edf7;
|
||||
|
||||
}
|
||||
/* even-rows */
|
||||
.tabulator-headers .tabulator-frozen.bg-info,
|
||||
.tabulator-row.tabulator-row-even .tabulator-frozen.bg-info,
|
||||
.tabulator-row.tabulator-row-even .tabulator-cell.bg-info {
|
||||
background-color: #d9edf7;
|
||||
|
||||
}
|
||||
|
||||
/* special bootstrap5 styling for tableWidget and their accordion-item ::after content */
|
||||
.accordion-button::after{
|
||||
content:none !important;
|
||||
}
|
||||
|
||||
|
||||
.tabulator {
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.tabulator-initialfontsize .tabulator {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.tabulator-row.tabulator-unselectable .tabulator-cell {
|
||||
pointer-events: all;
|
||||
}
|
||||
|
||||
.tabulator-tooltip {
|
||||
color: #fff;
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
.tabulator-row.tabulator-unselectable:not(.tabulator-calcs) {
|
||||
color: #777 !important;
|
||||
}
|
||||
|
||||
.tabulator-cell .btn {
|
||||
padding: 0 .375rem;
|
||||
font-size: calc(1rem - 2px / 1.5); /* substract border (2 x 1px) modified by the line-height (1.5) */
|
||||
border-radius: .2rem;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
.tabulator-row.tabulator-selectable:focus {
|
||||
box-shadow: 0 0 0 .24rem rgba(13,110,253,.25);
|
||||
z-index: 1;
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
.btn-select-col-selected
|
||||
{
|
||||
background-color: #e6e6e6;
|
||||
}
|
||||
|
||||
.accordion-item-dark, .accordion-item-dark:focus{
|
||||
background-color:#CED4DA !important;
|
||||
border-color:#ADB5BD !important;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make keyboard-focused list items look like the mouse-hovered list items
|
||||
*/
|
||||
.tabulator-edit-list .tabulator-edit-list-item.focused {
|
||||
color: #fff;
|
||||
background: #1d68cd;
|
||||
}
|
||||
|
||||
@@ -38,33 +38,6 @@ export default {
|
||||
},
|
||||
template: `
|
||||
<div>
|
||||
<div class="row align-items-start mb-3">
|
||||
<form-input
|
||||
v-if="showLVID"
|
||||
:label="$p.t('lehre', 'lehrveranstaltung_id')"
|
||||
type="text"
|
||||
container-class="col-3"
|
||||
v-model="data.lehrveranstaltung_id"
|
||||
name="lehrveranstaltung_id"
|
||||
/>
|
||||
<form-input
|
||||
v-if="showGewichtung"
|
||||
:label="$p.t('lehre', 'gewicht')"
|
||||
type="text"
|
||||
container-class="col-3"
|
||||
v-model="data.gewicht"
|
||||
name="gewicht"
|
||||
/>
|
||||
<form-input
|
||||
:label="$p.t('lehre', 'detailanmerkung')"
|
||||
type="textarea"
|
||||
container-class="col-3"
|
||||
v-model="formattedAnmerkung"
|
||||
name="anmerkung"
|
||||
id="anmerkung"
|
||||
rows="4"
|
||||
/>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<form-input
|
||||
:label="$p.t('lehre', 'lehrfach')"
|
||||
@@ -96,55 +69,15 @@ export default {
|
||||
{{ lehrform.bez_kurz }} {{ lehrform.bez }}
|
||||
</option>
|
||||
</form-input>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
|
||||
<form-input
|
||||
:label="$p.t('global', 'sprache')"
|
||||
type="select"
|
||||
:label="$p.t('lehre', 'detailanmerkung')"
|
||||
type="textarea"
|
||||
container-class="col-3"
|
||||
v-model="data.sprache"
|
||||
name="sprache"
|
||||
>
|
||||
<option
|
||||
v-for="sprache in dropdowns.sprachen_array"
|
||||
:key="sprache.sprache"
|
||||
:value="sprache.sprache"
|
||||
>
|
||||
{{ sprache.sprache }}
|
||||
</option>
|
||||
</form-input>
|
||||
<form-input
|
||||
:label="$p.t('lehre', 'unr')"
|
||||
type="text"
|
||||
container-class="col-3"
|
||||
v-model="data.unr"
|
||||
name="unr"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<form-input
|
||||
:label="$p.t('lehre', 'studiensemester')"
|
||||
type="select"
|
||||
container-class="col-3"
|
||||
v-model="data.studiensemester_kurzbz"
|
||||
name="studiensemester_kurzbz"
|
||||
>
|
||||
<option
|
||||
v-for="semester in dropdowns.studiensemester_array"
|
||||
:key="semester.studiensemester_kurzbz"
|
||||
:value="semester.studiensemester_kurzbz"
|
||||
>
|
||||
{{ semester.studiensemester_kurzbz }}
|
||||
</option>
|
||||
</form-input>
|
||||
<form-input
|
||||
:label="$p.t('lehre', 'lehre')"
|
||||
type="checkbox"
|
||||
container-class="col-3"
|
||||
v-model="data.lehre"
|
||||
name="lehre"
|
||||
v-model="formattedAnmerkung"
|
||||
name="anmerkung"
|
||||
id="anmerkung"
|
||||
rows="10"
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -179,30 +112,109 @@ export default {
|
||||
{{ raumtyp.raumtyp_kurzbz }} {{ raumtyp.beschreibung }}
|
||||
</option>
|
||||
</form-input>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row mb-3">
|
||||
<form-input
|
||||
:label="$p.t('global', 'sprache')"
|
||||
type="select"
|
||||
container-class="col-3"
|
||||
v-model="data.sprache"
|
||||
name="sprache"
|
||||
>
|
||||
<option
|
||||
v-for="sprache in dropdowns.sprachen_array"
|
||||
:key="sprache.sprache"
|
||||
:value="sprache.sprache"
|
||||
>
|
||||
{{ sprache.sprache }}
|
||||
</option>
|
||||
</form-input>
|
||||
|
||||
<form-input
|
||||
:label="$p.t('lehre', 'studiensemester')"
|
||||
type="select"
|
||||
container-class="col-3"
|
||||
v-model="data.studiensemester_kurzbz"
|
||||
name="studiensemester_kurzbz"
|
||||
>
|
||||
<option
|
||||
v-for="semester in dropdowns.studiensemester_array"
|
||||
:key="semester.studiensemester_kurzbz"
|
||||
:value="semester.studiensemester_kurzbz"
|
||||
>
|
||||
{{ semester.studiensemester_kurzbz }}
|
||||
</option>
|
||||
</form-input>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<form-input
|
||||
:label="$p.t('lehre', 'startkw')"
|
||||
type="number"
|
||||
container-class="col-2"
|
||||
min="0"
|
||||
container-class="col-1"
|
||||
v-model="data.start_kw"
|
||||
name="start_kw"
|
||||
/>
|
||||
<form-input
|
||||
:label="$p.t('lehre', 'stundenblockung')"
|
||||
type="number"
|
||||
container-class="col-2"
|
||||
min="0"
|
||||
container-class="col-1"
|
||||
v-model="data.stundenblockung"
|
||||
name="stundenblockung"
|
||||
/>
|
||||
<form-input
|
||||
:label="$p.t('lehre', 'wochenrhythmus')"
|
||||
type="number"
|
||||
container-class="col-2"
|
||||
min="0"
|
||||
container-class="col-1"
|
||||
v-model="data.wochenrythmus"
|
||||
name="wochenrythmus"
|
||||
/>
|
||||
|
||||
<div class="col-3 d-flex align-items-end">
|
||||
<form-input
|
||||
:label="$p.t('lehre', 'lehre')"
|
||||
type="checkbox"
|
||||
v-model="data.lehre"
|
||||
name="lehre"
|
||||
/>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<form-input
|
||||
v-if="showLVID"
|
||||
:label="$p.t('lehre', 'lehrveranstaltung_id')"
|
||||
type="text"
|
||||
container-class="col-2"
|
||||
v-model="data.lehrveranstaltung_id"
|
||||
name="lehrveranstaltung_id"
|
||||
/>
|
||||
<form-input
|
||||
:label="$p.t('lehre', 'unr')"
|
||||
type="text"
|
||||
container-class="col-1"
|
||||
v-model="data.unr"
|
||||
name="unr"
|
||||
/>
|
||||
<form-input
|
||||
v-if="showGewichtung"
|
||||
:label="$p.t('lehre', 'gewicht')"
|
||||
type="text"
|
||||
container-class="col-1"
|
||||
v-model="data.gewicht"
|
||||
name="gewicht"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
`
|
||||
|
||||
@@ -50,7 +50,7 @@ export default{
|
||||
let button = document.createElement('button');
|
||||
container.className = "d-flex gap-1";
|
||||
|
||||
button.className = 'btn btn-outline-secondary btn-action';
|
||||
button.className = 'btn btn-outline-secondary';
|
||||
button.innerHTML = '<i class="fa fa-xmark"></i>';
|
||||
button.title = this.$p.t('ui', 'loeschen');
|
||||
button.addEventListener('click', (event) => {
|
||||
@@ -63,7 +63,7 @@ export default{
|
||||
{
|
||||
button = document.createElement('button');
|
||||
container.className = "d-flex gap-2";
|
||||
button.className = 'btn btn-outline-secondary btn-action';
|
||||
button.className = 'btn btn-outline-secondary';
|
||||
button.innerHTML = '<i class="fa fa-calendar-xmark"></i>';
|
||||
button.title = this.$p.t('lehre', 'auslvplanentfernen');
|
||||
button.disabled = !cell.getData().verplant;
|
||||
|
||||
@@ -88,10 +88,12 @@ export default {
|
||||
},
|
||||
selectedStudiengang: '',
|
||||
searchbaroptions: {
|
||||
origin: 'lvverwaltung',
|
||||
cssclass: "position-relative",
|
||||
calcheightonly: true,
|
||||
types: [
|
||||
"mitarbeiter"
|
||||
"mitarbeiter",
|
||||
"mitarbeiter_ohne_zuordnung"
|
||||
],
|
||||
actions: {
|
||||
employee: {
|
||||
|
||||
@@ -121,9 +121,9 @@ export default{
|
||||
}
|
||||
this.$refs.form.call(ApiLektor.update(updatedData))
|
||||
.then(result => {
|
||||
let error = result.data?.error;
|
||||
if (error)
|
||||
this.$fhcAlert.alertWarning(error)
|
||||
let warning = result.data?.retval?.warning;
|
||||
if (warning)
|
||||
this.$fhcAlert.alertWarning(warning)
|
||||
this.original = {...this.data};
|
||||
|
||||
if (this.changed.mitarbeiter_uid)
|
||||
@@ -192,6 +192,7 @@ export default{
|
||||
container-class="col-3"
|
||||
dropdown
|
||||
@complete="searchLektor"
|
||||
name="lektorautocomplete"
|
||||
></form-input>
|
||||
|
||||
<form-input
|
||||
@@ -207,7 +208,9 @@ export default{
|
||||
<div class="row mb-3">
|
||||
<form-input
|
||||
:label="$p.t('lehre', 'las')"
|
||||
type="text"
|
||||
type="number"
|
||||
min="0"
|
||||
step="0.01"
|
||||
container-class="col-3"
|
||||
:disabled="data.vertrag?.vertragsstatus_kurzbz === 'akzeptiert'"
|
||||
v-model="data.semesterstunden"
|
||||
@@ -217,7 +220,9 @@ export default{
|
||||
|
||||
<form-input
|
||||
:label="$p.t('lehre', 'planstunden')"
|
||||
type="text"
|
||||
type="number"
|
||||
min="0"
|
||||
step="0.01"
|
||||
container-class="col-3"
|
||||
v-model="data.planstunden"
|
||||
name="planstunden"
|
||||
@@ -231,7 +236,9 @@ export default{
|
||||
:label="data.default_stundensatz !== null
|
||||
? $p.t('lehre', 'stundensatz') + ' (' + $p.t('lehre', 'default') + ': ' + data.default_stundensatz + ')'
|
||||
: $p.t('lehre', 'stundensatz')"
|
||||
type="text"
|
||||
type="number"
|
||||
min="0"
|
||||
step="0.01"
|
||||
container-class="col-3"
|
||||
v-model="data.stundensatz"
|
||||
:disabled="data.vertrag?.vertragsstatus_kurzbz === 'akzeptiert'"
|
||||
|
||||
@@ -85,7 +85,7 @@ export default{
|
||||
button.className = 'btn btn-outline-secondary btn-action';
|
||||
button.innerHTML = '<i class="fa fa-calendar-xmark"></i>';
|
||||
button.disabled = !cell.getData().verplant;
|
||||
button.title = this.$p.t('ui', 'auslvplanentfernen');
|
||||
button.title = this.$p.t('lehre', 'auslvplanentfernen');
|
||||
button.addEventListener('click', (event) => {
|
||||
event.stopPropagation();
|
||||
this.deleteLVPlan(cell.getData().mitarbeiter_uid, cell.getData().lehreinheit_id)
|
||||
|
||||
@@ -88,8 +88,14 @@ export default{
|
||||
.catch(this.$fhcAlert.handleSystemError);
|
||||
},
|
||||
|
||||
cancelVertrag()
|
||||
async cancelVertrag()
|
||||
{
|
||||
|
||||
if (await this.$fhcAlert.confirm({
|
||||
message: this.$p.t('lehre', 'vertragConfirm'),
|
||||
acceptLabel: this.$p.t('ui', 'ja').charAt(0).toUpperCase() + this.$p.t('ui', 'ja').slice(1),
|
||||
acceptClass: 'btn btn-danger'}) === false)
|
||||
return;
|
||||
let needUpdate = {
|
||||
vertrag_id: this.data.vertrag.vertrag_id,
|
||||
mitarbeiter_uid: this.mitarbeiter_uid,
|
||||
@@ -126,6 +132,7 @@ export default{
|
||||
type="button"
|
||||
class="btn btn-outline-secondary w-100"
|
||||
@click="cancelVertrag"
|
||||
:title="$p.t('lehre', 'cancelvertrag')"
|
||||
>
|
||||
<i class="fa-solid fa-ban"></i>
|
||||
</button>
|
||||
|
||||
@@ -670,19 +670,19 @@ export default {
|
||||
<slot name="filterzuruecksetzen"></slot>
|
||||
</template>
|
||||
</core-filter-cmpt>
|
||||
<bs-modal ref="lehreinheitModal" dialogClass="modal-lg">
|
||||
<template #title>
|
||||
<p class="fw-bold mt-3">{{$p.t('lehre', 'newlehreinheit')}}</p>
|
||||
</template>
|
||||
<bs-modal ref="lehreinheitModal" dialogClass="modal-xxl">
|
||||
<template #title>
|
||||
<p class="fw-bold mt-3">{{$p.t('lehre', 'newlehreinheit')}}</p>
|
||||
</template>
|
||||
|
||||
<template v-if="lv_info">
|
||||
<details-form :data="lv_info"/>
|
||||
</template>
|
||||
<template v-if="lv_info">
|
||||
<details-form :data="lv_info"/>
|
||||
</template>
|
||||
|
||||
<template #footer>
|
||||
<button type="button" class="btn btn-primary" @click="addNewLehreinheit">{{$p.t('ui', 'speichern')}}</button>
|
||||
</template>
|
||||
</bs-modal>
|
||||
<template #footer>
|
||||
<button type="button" class="btn btn-primary" @click="addNewLehreinheit">{{$p.t('ui', 'speichern')}}</button>
|
||||
</template>
|
||||
</bs-modal>
|
||||
|
||||
`
|
||||
};
|
||||
@@ -50,7 +50,6 @@ export default {
|
||||
:modelValue="lv[0]"
|
||||
:config="configLVTabs"
|
||||
:default="$route.params.tab"
|
||||
style="flex: 1 1 0%; height: 0%"
|
||||
@changed="reload"
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -111,23 +111,14 @@ export default {
|
||||
<button type="submit" class="btn btn-primary position-absolute top-0 end-0" :disabled="!changedLength">{{$p.t('ui', 'speichern')}}</button>
|
||||
</div>
|
||||
<fieldset class="overflow-hidden">
|
||||
<legend>{{this.$p.t('lehre', 'lehreinheit')}}</legend>
|
||||
<div class="core-header d-flex flex-column w-100 overflow-auto pb-3 gap-0">
|
||||
<legend>{{ this.$p.t('lehre', 'lehreinheit') }}</legend>
|
||||
<small v-if="data" v-html="data.lehreinheit_id" class="text-muted"></small>
|
||||
</div>
|
||||
<template v-if="data">
|
||||
<details-form :data="data"/>
|
||||
</template>
|
||||
</fieldset>
|
||||
</core-form>
|
||||
<fieldset class="overflow-hidden">
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<legend>{{this.$p.t('lehre', 'gruppen')}}</legend>
|
||||
<gruppen-table ref="gruppen_table" :lehreinheit_id="modelValue.lehreinheit_id"></gruppen-table>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<legend>{{this.$p.t('lehre', 'assignedPersons')}}</legend>
|
||||
<gruppen-direkt-table ref="gruppen_direkt_table" :lehreinheit_id="modelValue.lehreinheit_id"></gruppen-direkt-table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</fieldset>`
|
||||
`
|
||||
};
|
||||
@@ -0,0 +1,39 @@
|
||||
import GruppenTable from '../Details/Gruppen.js';
|
||||
import GruppenDirektTable from '../Details/Direktinskription.js';
|
||||
|
||||
export default {
|
||||
name: "LVTabGruppen",
|
||||
components: {
|
||||
GruppenTable,
|
||||
GruppenDirektTable,
|
||||
},
|
||||
props: {
|
||||
modelValue: Object,
|
||||
config: {
|
||||
type: Object,
|
||||
default: {}
|
||||
},
|
||||
},
|
||||
inject: {
|
||||
dropdowns: {
|
||||
from: 'dropdowns'
|
||||
}
|
||||
},
|
||||
|
||||
template: `
|
||||
|
||||
<fieldset class="overflow-hidden">
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<legend>{{this.$p.t('lehre', 'gruppen')}}</legend>
|
||||
<gruppen-table ref="gruppen_table" :lehreinheit_id="modelValue.lehreinheit_id"></gruppen-table>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<legend>{{this.$p.t('lehre', 'assignedPersons')}}</legend>
|
||||
<gruppen-direkt-table ref="gruppen_direkt_table" :lehreinheit_id="modelValue.lehreinheit_id"></gruppen-direkt-table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</fieldset>
|
||||
`
|
||||
};
|
||||
@@ -2984,6 +2984,46 @@ $phrases = array(
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'lehre',
|
||||
'phrase' => 'cancelvertrag',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Vertrag stornieren',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Cancel Contract',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'lehre',
|
||||
'phrase' => 'vertragConfirm',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Möchten Sie den Vertrag wirklich stornieren?',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Do you really want to cancel the contract?',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'lehre',
|
||||
|
||||
Reference in New Issue
Block a user