mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-10-12 15:04:04 +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]');
|
$this->form_validation->set_rules($field, 'Start KW', 'integer|greater_than[0]|less_than_equal_to[53]');
|
||||||
break;
|
break;
|
||||||
case 'gewicht':
|
case 'gewicht':
|
||||||
$this->form_validation->set_rules($field, 'Gewicht', 'numeric');
|
$this->form_validation->set_rules($field, 'Gewicht', 'numeric|greater_than_equal_to[0]');
|
||||||
break;
|
break;
|
||||||
case 'raumtyp':
|
case 'raumtyp':
|
||||||
$this->form_validation->set_rules($field, 'Raumtyp', 'required|max_length[16]');
|
$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');
|
$this->form_validation->set_rules($field, 'LVNR', 'integer');
|
||||||
break;
|
break;
|
||||||
case 'unr':
|
case 'unr':
|
||||||
$this->form_validation->set_rules($field, 'UNR', 'integer');
|
$this->form_validation->set_rules($field, 'UNR', 'integer|greater_than_equal_to[0]');
|
||||||
break;
|
break;
|
||||||
case 'lehre':
|
case 'lehre':
|
||||||
$this->form_validation->set_rules($field, 'Lehre', 'trim');
|
$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]');
|
$this->form_validation->set_rules($field, 'Planstunden', 'integer|greater_than_equal_to[0]');
|
||||||
break;
|
break;
|
||||||
case 'stundensatz':
|
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;
|
break;
|
||||||
case 'faktor':
|
case 'faktor':
|
||||||
$this->form_validation->set_rules($field, 'Faktor', 'numeric|greater_than_equal_to[0]');
|
$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');
|
$this->form_validation->set_rules($field, 'Bis Melden', 'trim');
|
||||||
break;
|
break;
|
||||||
case 'semesterstunden':
|
case 'semesterstunden':
|
||||||
|
$formData['semesterstunden'] = str_replace(',', '.', $formData['semesterstunden']);
|
||||||
$this->form_validation->set_rules($field, 'Semesterstunden', 'callback__check_semesterstunden');
|
$this->form_validation->set_rules($field, 'Semesterstunden', 'callback__check_semesterstunden');
|
||||||
break;
|
break;
|
||||||
case 'mitarbeiter_uid':
|
case 'mitarbeiter_uid':
|
||||||
@@ -129,7 +131,7 @@ class Lektor extends FHCAPI_Controller
|
|||||||
}
|
}
|
||||||
if (!$this->form_validation->run())
|
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'] === ''))
|
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);
|
$result = $this->_ci->lektorlib->updateLektorFromLehreinheit($lehreinheit_id, $mitarbeiter_uid, $formData);
|
||||||
|
|
||||||
if (isError($result)) $this->terminateWithError(getError($result));
|
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)
|
public function _check_semesterstunden($value)
|
||||||
{
|
{
|
||||||
if ($value === null || $value === '') {
|
if ($value === null || $value === '') {
|
||||||
@@ -171,6 +190,14 @@ class Lektor extends FHCAPI_Controller
|
|||||||
);
|
);
|
||||||
return false;
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,6 +50,11 @@ class Setup extends FHCAPI_Controller
|
|||||||
'component' => APP_ROOT . 'public/js/components/LVVerwaltung/Tabs/Details.js',
|
'component' => APP_ROOT . 'public/js/components/LVVerwaltung/Tabs/Details.js',
|
||||||
'config' => []
|
'config' => []
|
||||||
);
|
);
|
||||||
|
$tabs['gruppen'] = array (
|
||||||
|
'title' => 'Gruppen',
|
||||||
|
'component' => APP_ROOT . 'public/js/components/LVVerwaltung/Tabs/Gruppen.js',
|
||||||
|
'config' => []
|
||||||
|
);
|
||||||
$tabs['lektor'] = array (
|
$tabs['lektor'] = array (
|
||||||
'title' => 'LektorInnenzuteilung',
|
'title' => 'LektorInnenzuteilung',
|
||||||
'component' => APP_ROOT . 'public/js/components/LVVerwaltung/Tabs/Lektor.js',
|
'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 (!$echter_dv && (!$this->_ci->permissionlib->isBerechtigt('admin')))
|
||||||
{
|
{
|
||||||
if (!$this->LehrauftragAufFirma(isset($formData['mitarbeiter_uid']) ? $formData['mitarbeiter_uid'] : $mitarbeiter_uid))
|
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
|
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);
|
$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);
|
$stunden_limit_array = getData($stunden_limit_result);
|
||||||
foreach ($stunden_limit_array as $stunden_limit)
|
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;
|
$benutzer_aktiv = getData($benutzer_result)[0]->aktiv;
|
||||||
|
|
||||||
if (!$benutzer_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(
|
$updatableFields = array(
|
||||||
'semesterstunden',
|
'semesterstunden',
|
||||||
@@ -236,9 +236,9 @@ class LektorLib
|
|||||||
|
|
||||||
if (isError($result)) return $result;
|
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)
|
private function getMaxStunden($mitarbeiter_uid, $studiensemester_kurzbz, $studiengang_kz, $echter_dv)
|
||||||
@@ -280,7 +280,7 @@ class LektorLib
|
|||||||
|
|
||||||
foreach ($stunden_limit_array as $stunden_limit)
|
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);
|
return error($error);
|
||||||
|
|||||||
@@ -28,3 +28,13 @@ textarea[name="anmerkung"] {
|
|||||||
content: '\f073';
|
content: '\f073';
|
||||||
color: #f3c541;
|
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: `
|
template: `
|
||||||
<div>
|
<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">
|
<div class="row mb-3">
|
||||||
<form-input
|
<form-input
|
||||||
:label="$p.t('lehre', 'lehrfach')"
|
:label="$p.t('lehre', 'lehrfach')"
|
||||||
@@ -96,55 +69,15 @@ export default {
|
|||||||
{{ lehrform.bez_kurz }} {{ lehrform.bez }}
|
{{ lehrform.bez_kurz }} {{ lehrform.bez }}
|
||||||
</option>
|
</option>
|
||||||
</form-input>
|
</form-input>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row mb-3">
|
|
||||||
<form-input
|
<form-input
|
||||||
:label="$p.t('global', 'sprache')"
|
:label="$p.t('lehre', 'detailanmerkung')"
|
||||||
type="select"
|
type="textarea"
|
||||||
container-class="col-3"
|
container-class="col-3"
|
||||||
v-model="data.sprache"
|
v-model="formattedAnmerkung"
|
||||||
name="sprache"
|
name="anmerkung"
|
||||||
>
|
id="anmerkung"
|
||||||
<option
|
rows="10"
|
||||||
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"
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -179,30 +112,109 @@ export default {
|
|||||||
{{ raumtyp.raumtyp_kurzbz }} {{ raumtyp.beschreibung }}
|
{{ raumtyp.raumtyp_kurzbz }} {{ raumtyp.beschreibung }}
|
||||||
</option>
|
</option>
|
||||||
</form-input>
|
</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>
|
||||||
|
|
||||||
<div class="row mb-3">
|
<div class="row mb-3">
|
||||||
<form-input
|
<form-input
|
||||||
:label="$p.t('lehre', 'startkw')"
|
:label="$p.t('lehre', 'startkw')"
|
||||||
type="number"
|
type="number"
|
||||||
container-class="col-2"
|
min="0"
|
||||||
|
container-class="col-1"
|
||||||
v-model="data.start_kw"
|
v-model="data.start_kw"
|
||||||
name="start_kw"
|
name="start_kw"
|
||||||
/>
|
/>
|
||||||
<form-input
|
<form-input
|
||||||
:label="$p.t('lehre', 'stundenblockung')"
|
:label="$p.t('lehre', 'stundenblockung')"
|
||||||
type="number"
|
type="number"
|
||||||
container-class="col-2"
|
min="0"
|
||||||
|
container-class="col-1"
|
||||||
v-model="data.stundenblockung"
|
v-model="data.stundenblockung"
|
||||||
name="stundenblockung"
|
name="stundenblockung"
|
||||||
/>
|
/>
|
||||||
<form-input
|
<form-input
|
||||||
:label="$p.t('lehre', 'wochenrhythmus')"
|
:label="$p.t('lehre', 'wochenrhythmus')"
|
||||||
type="number"
|
type="number"
|
||||||
container-class="col-2"
|
min="0"
|
||||||
|
container-class="col-1"
|
||||||
v-model="data.wochenrythmus"
|
v-model="data.wochenrythmus"
|
||||||
name="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>
|
||||||
</div>
|
</div>
|
||||||
`
|
`
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ export default{
|
|||||||
let button = document.createElement('button');
|
let button = document.createElement('button');
|
||||||
container.className = "d-flex gap-1";
|
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.innerHTML = '<i class="fa fa-xmark"></i>';
|
||||||
button.title = this.$p.t('ui', 'loeschen');
|
button.title = this.$p.t('ui', 'loeschen');
|
||||||
button.addEventListener('click', (event) => {
|
button.addEventListener('click', (event) => {
|
||||||
@@ -63,7 +63,7 @@ export default{
|
|||||||
{
|
{
|
||||||
button = document.createElement('button');
|
button = document.createElement('button');
|
||||||
container.className = "d-flex gap-2";
|
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.innerHTML = '<i class="fa fa-calendar-xmark"></i>';
|
||||||
button.title = this.$p.t('lehre', 'auslvplanentfernen');
|
button.title = this.$p.t('lehre', 'auslvplanentfernen');
|
||||||
button.disabled = !cell.getData().verplant;
|
button.disabled = !cell.getData().verplant;
|
||||||
|
|||||||
@@ -88,10 +88,12 @@ export default {
|
|||||||
},
|
},
|
||||||
selectedStudiengang: '',
|
selectedStudiengang: '',
|
||||||
searchbaroptions: {
|
searchbaroptions: {
|
||||||
|
origin: 'lvverwaltung',
|
||||||
cssclass: "position-relative",
|
cssclass: "position-relative",
|
||||||
calcheightonly: true,
|
calcheightonly: true,
|
||||||
types: [
|
types: [
|
||||||
"mitarbeiter"
|
"mitarbeiter",
|
||||||
|
"mitarbeiter_ohne_zuordnung"
|
||||||
],
|
],
|
||||||
actions: {
|
actions: {
|
||||||
employee: {
|
employee: {
|
||||||
|
|||||||
@@ -121,9 +121,9 @@ export default{
|
|||||||
}
|
}
|
||||||
this.$refs.form.call(ApiLektor.update(updatedData))
|
this.$refs.form.call(ApiLektor.update(updatedData))
|
||||||
.then(result => {
|
.then(result => {
|
||||||
let error = result.data?.error;
|
let warning = result.data?.retval?.warning;
|
||||||
if (error)
|
if (warning)
|
||||||
this.$fhcAlert.alertWarning(error)
|
this.$fhcAlert.alertWarning(warning)
|
||||||
this.original = {...this.data};
|
this.original = {...this.data};
|
||||||
|
|
||||||
if (this.changed.mitarbeiter_uid)
|
if (this.changed.mitarbeiter_uid)
|
||||||
@@ -192,6 +192,7 @@ export default{
|
|||||||
container-class="col-3"
|
container-class="col-3"
|
||||||
dropdown
|
dropdown
|
||||||
@complete="searchLektor"
|
@complete="searchLektor"
|
||||||
|
name="lektorautocomplete"
|
||||||
></form-input>
|
></form-input>
|
||||||
|
|
||||||
<form-input
|
<form-input
|
||||||
@@ -207,7 +208,9 @@ export default{
|
|||||||
<div class="row mb-3">
|
<div class="row mb-3">
|
||||||
<form-input
|
<form-input
|
||||||
:label="$p.t('lehre', 'las')"
|
:label="$p.t('lehre', 'las')"
|
||||||
type="text"
|
type="number"
|
||||||
|
min="0"
|
||||||
|
step="0.01"
|
||||||
container-class="col-3"
|
container-class="col-3"
|
||||||
:disabled="data.vertrag?.vertragsstatus_kurzbz === 'akzeptiert'"
|
:disabled="data.vertrag?.vertragsstatus_kurzbz === 'akzeptiert'"
|
||||||
v-model="data.semesterstunden"
|
v-model="data.semesterstunden"
|
||||||
@@ -217,7 +220,9 @@ export default{
|
|||||||
|
|
||||||
<form-input
|
<form-input
|
||||||
:label="$p.t('lehre', 'planstunden')"
|
:label="$p.t('lehre', 'planstunden')"
|
||||||
type="text"
|
type="number"
|
||||||
|
min="0"
|
||||||
|
step="0.01"
|
||||||
container-class="col-3"
|
container-class="col-3"
|
||||||
v-model="data.planstunden"
|
v-model="data.planstunden"
|
||||||
name="planstunden"
|
name="planstunden"
|
||||||
@@ -231,7 +236,9 @@ export default{
|
|||||||
:label="data.default_stundensatz !== null
|
:label="data.default_stundensatz !== null
|
||||||
? $p.t('lehre', 'stundensatz') + ' (' + $p.t('lehre', 'default') + ': ' + data.default_stundensatz + ')'
|
? $p.t('lehre', 'stundensatz') + ' (' + $p.t('lehre', 'default') + ': ' + data.default_stundensatz + ')'
|
||||||
: $p.t('lehre', 'stundensatz')"
|
: $p.t('lehre', 'stundensatz')"
|
||||||
type="text"
|
type="number"
|
||||||
|
min="0"
|
||||||
|
step="0.01"
|
||||||
container-class="col-3"
|
container-class="col-3"
|
||||||
v-model="data.stundensatz"
|
v-model="data.stundensatz"
|
||||||
:disabled="data.vertrag?.vertragsstatus_kurzbz === 'akzeptiert'"
|
:disabled="data.vertrag?.vertragsstatus_kurzbz === 'akzeptiert'"
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ export default{
|
|||||||
button.className = 'btn btn-outline-secondary btn-action';
|
button.className = 'btn btn-outline-secondary btn-action';
|
||||||
button.innerHTML = '<i class="fa fa-calendar-xmark"></i>';
|
button.innerHTML = '<i class="fa fa-calendar-xmark"></i>';
|
||||||
button.disabled = !cell.getData().verplant;
|
button.disabled = !cell.getData().verplant;
|
||||||
button.title = this.$p.t('ui', 'auslvplanentfernen');
|
button.title = this.$p.t('lehre', 'auslvplanentfernen');
|
||||||
button.addEventListener('click', (event) => {
|
button.addEventListener('click', (event) => {
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
this.deleteLVPlan(cell.getData().mitarbeiter_uid, cell.getData().lehreinheit_id)
|
this.deleteLVPlan(cell.getData().mitarbeiter_uid, cell.getData().lehreinheit_id)
|
||||||
|
|||||||
@@ -88,8 +88,14 @@ export default{
|
|||||||
.catch(this.$fhcAlert.handleSystemError);
|
.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 = {
|
let needUpdate = {
|
||||||
vertrag_id: this.data.vertrag.vertrag_id,
|
vertrag_id: this.data.vertrag.vertrag_id,
|
||||||
mitarbeiter_uid: this.mitarbeiter_uid,
|
mitarbeiter_uid: this.mitarbeiter_uid,
|
||||||
@@ -126,6 +132,7 @@ export default{
|
|||||||
type="button"
|
type="button"
|
||||||
class="btn btn-outline-secondary w-100"
|
class="btn btn-outline-secondary w-100"
|
||||||
@click="cancelVertrag"
|
@click="cancelVertrag"
|
||||||
|
:title="$p.t('lehre', 'cancelvertrag')"
|
||||||
>
|
>
|
||||||
<i class="fa-solid fa-ban"></i>
|
<i class="fa-solid fa-ban"></i>
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -670,19 +670,19 @@ export default {
|
|||||||
<slot name="filterzuruecksetzen"></slot>
|
<slot name="filterzuruecksetzen"></slot>
|
||||||
</template>
|
</template>
|
||||||
</core-filter-cmpt>
|
</core-filter-cmpt>
|
||||||
<bs-modal ref="lehreinheitModal" dialogClass="modal-lg">
|
<bs-modal ref="lehreinheitModal" dialogClass="modal-xxl">
|
||||||
<template #title>
|
<template #title>
|
||||||
<p class="fw-bold mt-3">{{$p.t('lehre', 'newlehreinheit')}}</p>
|
<p class="fw-bold mt-3">{{$p.t('lehre', 'newlehreinheit')}}</p>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template v-if="lv_info">
|
<template v-if="lv_info">
|
||||||
<details-form :data="lv_info"/>
|
<details-form :data="lv_info"/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<button type="button" class="btn btn-primary" @click="addNewLehreinheit">{{$p.t('ui', 'speichern')}}</button>
|
<button type="button" class="btn btn-primary" @click="addNewLehreinheit">{{$p.t('ui', 'speichern')}}</button>
|
||||||
</template>
|
</template>
|
||||||
</bs-modal>
|
</bs-modal>
|
||||||
|
|
||||||
`
|
`
|
||||||
};
|
};
|
||||||
@@ -50,7 +50,6 @@ export default {
|
|||||||
:modelValue="lv[0]"
|
:modelValue="lv[0]"
|
||||||
:config="configLVTabs"
|
:config="configLVTabs"
|
||||||
:default="$route.params.tab"
|
:default="$route.params.tab"
|
||||||
style="flex: 1 1 0%; height: 0%"
|
|
||||||
@changed="reload"
|
@changed="reload"
|
||||||
/>
|
/>
|
||||||
</div>
|
</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>
|
<button type="submit" class="btn btn-primary position-absolute top-0 end-0" :disabled="!changedLength">{{$p.t('ui', 'speichern')}}</button>
|
||||||
</div>
|
</div>
|
||||||
<fieldset class="overflow-hidden">
|
<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">
|
<template v-if="data">
|
||||||
<details-form :data="data"/>
|
<details-form :data="data"/>
|
||||||
</template>
|
</template>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</core-form>
|
</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(
|
array(
|
||||||
'app' => 'core',
|
'app' => 'core',
|
||||||
'category' => 'lehre',
|
'category' => 'lehre',
|
||||||
|
|||||||
Reference in New Issue
Block a user