diff --git a/application/controllers/lehre/lehrauftrag/Lehrauftrag.php b/application/controllers/lehre/lehrauftrag/Lehrauftrag.php
index 9ff6d59b5..db20b6897 100644
--- a/application/controllers/lehre/lehrauftrag/Lehrauftrag.php
+++ b/application/controllers/lehre/lehrauftrag/Lehrauftrag.php
@@ -229,12 +229,6 @@ class Lehrauftrag extends Auth_Controller
{
$this->outputJsonSuccess($json);
}
-
- // Send email to Mitarbeiter
- // if(!$this->_sendMail($new_lehrvertrag_data_arr)) // TODO: slows down Bestell-process -> better chronjob?
- {
- // return error information // TODO: implement after decision regarding communication process
- }
}
// -----------------------------------------------------------------------------------------------------------------
@@ -329,41 +323,4 @@ class Lehrauftrag extends Auth_Controller
return $unique_new_lehrvertrag_data_arr;
}
-
- private function validateGetPost($lehrauftrag){
- $lehreinheit_id = (isset($lehrauftrag['lehreinheit_id']) && is_numeric($lehrauftrag['lehreinheit_id'])) ? $lehrauftrag['lehreinheit_id'] : null;
- $lehrveranstaltung_id = (isset($lehrauftrag['lehrveranstaltung_id']) && is_numeric($lehrauftrag['lehrveranstaltung_id'])) ? $lehrauftrag['lehrveranstaltung_id'] : null;
- $person_id = (isset($lehrauftrag['person_id']) && is_numeric($lehrauftrag['person_id'])) ? $lehrauftrag['person_id'] : null;
- $mitarbeiter_uid = (isset($lehrauftrag['mitarbeiter_uid']) && is_string($lehrauftrag['mitarbeiter_uid'])) ? $lehrauftrag['mitarbeiter_uid'] : null;
- $vertrag_id = (isset($lehrauftrag['vertrag_id']) && is_numeric($lehrauftrag['vertrag_id'])) ? $lehrauftrag['vertrag_id'] : null;
- $projektarbeit_id = (isset($lehrauftrag['projektarbeit_id']) && is_numeric($lehrauftrag['projektarbeit_id'])) ? $lehrauftrag['projektarbeit_id'] : null;
- $stunden = (isset($lehrauftrag['stunden']) && is_numeric($lehrauftrag['stunden'])) ? $lehrauftrag['stunden'] : null;
- $betrag = (isset($lehrauftrag['betrag']) && is_numeric($lehrauftrag['betrag'])) ? $lehrauftrag['betrag'] : null;
- $studiensemester_kurzbz = (isset($lehrauftrag['studiensemester_kurzbz']) && is_string($lehrauftrag['studiensemester_kurzbz'])) ? $lehrauftrag['betrag'] : null;
-
- return array(
- $lehreinheit_id,
- $lehrveranstaltung_id,
- $person_id,
- $mitarbeiter_uid,
- $vertrag_id,
- $projektarbeit_id,
- $stunden,
- $betrag,
- $studiensemester_kurzbz
- );
-
-// LIST IS TO BE SET ABOVE!!!:
-// list(
-// $lehreinheit_id,
-// $lehrveranstaltung_id,
-// $person_id,
-// $mitarbeiter_uid,
-// $vertrag_id,
-// $projektarbeit_id,
-// $stunden,
-// $betrag,
-// $studiensemester_kurzbz
-// ) = $this->_validateGetPost($lehrauftrag);
- }
}
diff --git a/application/views/lehre/lehrauftrag/acceptLehrauftrag.php b/application/views/lehre/lehrauftrag/acceptLehrauftrag.php
index 49c1e2ea1..14ebacecb 100644
--- a/application/views/lehre/lehrauftrag/acceptLehrauftrag.php
+++ b/application/views/lehre/lehrauftrag/acceptLehrauftrag.php
@@ -93,6 +93,18 @@ $this->load->view(
+
+
Ansicht
+
+
Spaltenbreite verändern
+
+ Um die Spaltenbreite zu verändern, fährt man im Spaltenkopf langsam mit dem Mauszeiger auf
+ den rechten Rand der entprechenden Spalte.
+ Sobald sich der Mauszeiger in einen Doppelpfeil verwandelt, wird die Maustaste geklickt und
+ mit gedrückter Maustaste die Spalte nach rechts erweitert oder nach links verkleinert.
+
+
+
@@ -120,7 +132,7 @@ $this->load->view(
-
+
load->view('lehre/lehrauftrag/acceptLehrauftragData.php'); ?>
@@ -133,11 +145,24 @@ $this->load->view(
@@ -149,7 +174,28 @@ $this->load->view(
+
+
+
+
+
+
+ p->t('global', 'stornierteLehrauftraege')); ?>:
+
+
+
+
+
+
+
+
+ load->view('lehre/lehrauftrag/cancelledLehrauftragData.php'); ?>
+
+
+
+
+
diff --git a/application/views/lehre/lehrauftrag/acceptLehrauftragData.php b/application/views/lehre/lehrauftrag/acceptLehrauftragData.php
index 2a2e348dd..27a348ae7 100644
--- a/application/views/lehre/lehrauftrag/acceptLehrauftragData.php
+++ b/application/views/lehre/lehrauftrag/acceptLehrauftragData.php
@@ -15,11 +15,11 @@ SELECT
studiensemester_kurzbz,
studiengang_kz,
stg_typ_kurzbz,
+ semester,
orgform_kurzbz,
person_id,
typ,
auftrag,
- semester,
lv_oe_kurzbz,
gruppe,
stunden,
@@ -305,11 +305,11 @@ $filterWidgetArray = array(
'Studiensemester',
'Studiengang-KZ',
'Studiengang',
+ 'Semester',
'OrgForm',
'Person-ID',
'Typ',
'LV- / Projektbezeichnung',
- 'Semester',
'Organisationseinheit',
'Gruppe',
'Stunden',
@@ -330,6 +330,7 @@ $filterWidgetArray = array(
layout: "fitColumns", // fit columns to width of table
responsiveLayout: "hide", // hide columns that dont fit on the table
movableColumns: true, // allows changing column
+ placeholder: func_placeholder(),
headerFilterPlaceholder: " ",
index: "row_index", // assign specific column as unique id (important for row indexing)
selectable: true, // allow row selection
@@ -366,11 +367,11 @@ $filterWidgetArray = array(
studiensemester_kurzbz: {visible: false},
studiengang_kz: {visible: false},
stg_typ_kurzbz: {headerFilter:"input", width: "5%"},
+ semester: {headerFilter:"input"},
orgform_kurzbz: {headerFilter:"input"},
person_id: {visible: false},
typ: {headerFilter:"input", width: "7%"},
auftrag: {headerFilter:"input", width: "15%"},
- semester: {headerFilter:"input"},
lv_oe_kurzbz: {headerFilter:"input", width: "8%"},
gruppe: {headerFilter:"input", width: "5%"},
stunden: {align:"right", formatter: form_formatNulltoStringNumber, formatterParams:{precision:1},
diff --git a/application/views/lehre/lehrauftrag/approveLehrauftrag.php b/application/views/lehre/lehrauftrag/approveLehrauftrag.php
index 71c1840c6..f36ae7dc7 100644
--- a/application/views/lehre/lehrauftrag/approveLehrauftrag.php
+++ b/application/views/lehre/lehrauftrag/approveLehrauftrag.php
@@ -133,6 +133,18 @@ $this->load->view(
+ Ansicht
+
+
Spaltenbreite verändern
+
+ Um die Spaltenbreite zu verändern, fährt man im Spaltenkopf langsam mit dem Mauszeiger auf
+ den rechten Rand der entprechenden Spalte.
+ Sobald sich der Mauszeiger in einen Doppelpfeil verwandelt, wird die Maustaste geklickt und
+ mit gedrückter Maustaste die Spalte nach rechts erweitert oder nach links verkleinert.
+
+
+
+
diff --git a/application/views/lehre/lehrauftrag/approveLehrauftragData.php b/application/views/lehre/lehrauftrag/approveLehrauftragData.php
index 43eb2aa13..fbc30db1c 100644
--- a/application/views/lehre/lehrauftrag/approveLehrauftragData.php
+++ b/application/views/lehre/lehrauftrag/approveLehrauftragData.php
@@ -16,11 +16,11 @@ SELECT
studiensemester_kurzbz,
studiengang_kz,
stg_typ_kurzbz,
+ semester,
orgform_kurzbz,
person_id,
typ,
auftrag,
- semester,
lv_oe_kurzbz,
gruppe,
lektor,
@@ -147,7 +147,7 @@ FROM
WHEN oe.organisationseinheittyp_kurzbz = \'Department\' THEN (\'DEP \' || oe.bezeichnung)
ELSE (oe.organisationseinheittyp_kurzbz || \' \' || oe.bezeichnung)
END AS "lv_oe_kurzbz",
- (person.vorname || \' \' || person.nachname) AS "lektor",
+ (person.nachname || \' \' || person.vorname) AS "lektor",
TRUNC(lema.semesterstunden, 1) AS "stunden",
TRUNC((lema.semesterstunden * lema.stundensatz), 2) AS "betrag",
vertrag_id,
@@ -267,7 +267,7 @@ FROM
ELSE (oe.organisationseinheittyp_kurzbz ||
\' \' || oe.bezeichnung)
END AS "lv_oe_kurzbz",
- (vorname || \' \' || nachname) AS "lektor",
+ (nachname || \' \' || vorname) AS "lektor",
TRUNC(pb.stunden, 1) AS "stunden",
TRUNC((pb.stunden * pb.stundensatz), 2) AS "betrag",
vertrag_id,
@@ -315,11 +315,11 @@ $filterWidgetArray = array(
'Studiensemester',
'Studiengang-KZ',
'Studiengang',
+ 'Semester',
'OrgForm',
'Person-ID',
'Typ',
'LV- / Projektbezeichnung',
- 'Semester',
'Organisationseinheit',
'Gruppe',
'Lektor',
@@ -341,6 +341,7 @@ $filterWidgetArray = array(
layout: "fitColumns", // fit columns to width of table
responsiveLayout: "hide", // hide columns that dont fit on the table
movableColumns: true, // allows changing column
+ placeholder: func_placeholder(),
headerFilterPlaceholder: " ",
groupBy:"lehrveranstaltung_id",
groupToggleElement:"header", //toggle group on click anywhere in the group header
@@ -386,14 +387,14 @@ $filterWidgetArray = array(
studiensemester_kurzbz: {headerFilter:"input"},
studiengang_kz: {visible: false},
stg_typ_kurzbz: {headerFilter:"input", width: "5%"},
+ semester: {headerFilter:"input"},
orgform_kurzbz: {headerFilter:"input"},
person_id: {visible: false},
typ: {headerFilter:"input"},
auftrag: {headerFilter:"input", width:"20%"},
- semester: {headerFilter:"input"},
lv_oe_kurzbz: {headerFilter:"input"},
gruppe: {headerFilter:"input"},
- lektor: {headerFilter:"input"},
+ lektor: {headerFilter:"input", widthGrow: 3},
stunden: {align:"right", formatter: form_formatNulltoStringNumber, formatterParams:{precision:1},
headerFilter:"input", headerFilterFunc: hf_filterStringnumberWithOperator,
bottomCalc:"sum", bottomCalcParams:{precision:1}},
diff --git a/application/views/lehre/lehrauftrag/cancelledLehrauftragData.php b/application/views/lehre/lehrauftrag/cancelledLehrauftragData.php
new file mode 100644
index 000000000..04d314636
--- /dev/null
+++ b/application/views/lehre/lehrauftrag/cancelledLehrauftragData.php
@@ -0,0 +1,105 @@
+ $query,
+ 'tableUniqueId' => 'cancelledLehrauftrag',
+ 'requiredPermissions' => 'lehre/lehrauftrag_akzeptieren',
+ 'datasetRepresentation' => 'tabulator',
+ 'reloadDataset' => true, // reload query on page refresh
+ 'columnsAliases' => array( // TODO: use phrasen
+ 'Status',
+ 'Studiensemester',
+ 'Typ',
+ 'LV- / Projektbezeichnung',
+ 'Stunden',
+ 'Betrag',
+ 'Storniert am'
+ ),
+ 'datasetRepOptions' => '{
+ layout: "fitColumns", // fit columns to width of table
+ responsiveLayout: "hide", // hide columns that dont fit on the table
+ movableColumns: true, // allows changing column
+ placeholder: func_placeholder(),
+ rowFormatter:function(row){
+ func_rowFormatter(row);
+ },
+ selectableCheck: function(row){
+ return func_selectableCheck(row);
+ },
+ renderComplete:function(){
+ func_renderComplete(this);
+ },
+ tableBuilt: function(){
+ func_tableBuilt(this);
+ }
+ }', // tabulator properties
+ 'datasetRepFieldsDefs' => '{
+ vertrag_id: {visible: false},
+ vertragsstunden_studiensemester_kurzbz: {visible: false},
+ vertragstyp_kurzbz: {widthGrow: 2},
+ bezeichnung: {widthGrow: 2},
+ vertragsstunden: {
+ align:"right", formatter: form_formatNulltoStringNumber, formatterParams:{precision:1},
+ bottomCalc:"sum", bottomCalcParams:{precision:1}
+ },
+ betrag: {
+ align:"right", formatter: form_formatNulltoStringNumber,
+ bottomCalc:"sum", bottomCalcParams:{precision:2}, bottomCalcFormatter:"money", bottomCalcFormatterParams:{decimal: ",", thousand: ".", symbol:"€"}
+ },
+ storniert: {align:"center", mutator: mut_formatStringDate, tooltip: storniert_tooltip},
+ storniert_von: {visible: false},
+ letzterStatus_vorStorniert: {visible: false}
+ }', // col properties
+);
+
+echo $this->widgetlib->widget('TableWidget', $tableWidgetArray);
+
+?>
diff --git a/application/views/lehre/lehrauftrag/orderLehrauftrag.php b/application/views/lehre/lehrauftrag/orderLehrauftrag.php
index 8938a305c..b04aa7985 100644
--- a/application/views/lehre/lehrauftrag/orderLehrauftrag.php
+++ b/application/views/lehre/lehrauftrag/orderLehrauftrag.php
@@ -135,6 +135,18 @@ $this->load->view(
+ Ansicht
+
+
Spaltenbreite verändern
+
+ Um die Spaltenbreite zu verändern, fährt man im Spaltenkopf langsam mit dem Mauszeiger auf
+ den rechten Rand der entprechenden Spalte.
+ Sobald sich der Mauszeiger in einen Doppelpfeil verwandelt, wird die Maustaste geklickt und
+ mit gedrückter Maustaste die Spalte nach rechts erweitert oder nach links verkleinert.
+
+
+
+
diff --git a/application/views/lehre/lehrauftrag/orderLehrauftragData.php b/application/views/lehre/lehrauftrag/orderLehrauftragData.php
index 76c6c14b3..b2fa3ac2f 100644
--- a/application/views/lehre/lehrauftrag/orderLehrauftragData.php
+++ b/application/views/lehre/lehrauftrag/orderLehrauftragData.php
@@ -16,6 +16,7 @@ SELECT
studiensemester_kurzbz,
studiengang_kz,
stg_typ_kurzbz,
+ semester,
/* get valid STPL(s), to which the lehrveranstaltung is assigned to (can be more) */
/* therefore join over lv, studiensemester and semester */
(
@@ -50,7 +51,6 @@ SELECT
person_id,
typ,
auftrag,
- semester,
lv_oe_kurzbz,
gruppe,
lektor,
@@ -178,7 +178,7 @@ FROM
WHEN oe.organisationseinheittyp_kurzbz = \'Department\' THEN (\'DEP \' || oe.bezeichnung)
ELSE (oe.organisationseinheittyp_kurzbz || \' \' || oe.bezeichnung)
END AS "lv_oe_kurzbz",
- (person.vorname || \' \' || person.nachname) AS "lektor",
+ (person.nachname || \' \' || person.vorname) AS "lektor",
TRUNC(lema.semesterstunden, 1) AS "stunden",
lema.stundensatz,
TRUNC((lema.semesterstunden * lema.stundensatz), 2) AS "betrag",
@@ -299,7 +299,7 @@ FROM
ELSE (oe.organisationseinheittyp_kurzbz ||
\' \' || oe.bezeichnung)
END AS "lv_oe_kurzbz",
- (vorname || \' \' || nachname) AS "lektor",
+ (nachname || \' \' || vorname) AS "lektor",
TRUNC(pb.stunden, 1) AS "stunden",
pb.stundensatz,
TRUNC((pb.stunden * pb.stundensatz), 2) AS "betrag",
@@ -347,12 +347,12 @@ $filterWidgetArray = array(
'Studiensemester',
'Studiengang-KZ',
'Studiengang',
+ 'Semester',
'Studienplan',
'OrgForm',
'Person-ID',
'Typ',
'LV- / Projektbezeichnung',
- 'Semester',
'Organisationseinheit',
'Gruppe',
'Lektor',
@@ -375,6 +375,7 @@ $filterWidgetArray = array(
layout:"fitColumns", // fit columns to width of table
responsiveLayout:"hide", // hide columns that dont fit on the table
movableColumns: true, // allows changing column
+ placeholder: func_placeholder(),
headerFilterPlaceholder: " ",
groupBy:"lehrveranstaltung_id",
groupToggleElement:"header", //toggle group on click anywhere in the group header
@@ -421,15 +422,15 @@ $filterWidgetArray = array(
studiensemester_kurzbz: {headerFilter:"input"},
studiengang_kz: {visible: false},
stg_typ_kurzbz: {headerFilter:"input", width: "5%"},
+ semester: {headerFilter:"input"},
studienplan_bezeichnung: {headerFilter:"input", width: "7%"},
orgform_kurzbz: {headerFilter:"input"},
person_id: {visible: false},
typ: {headerFilter:"input"},
auftrag: {headerFilter:"input", width:"15%"},
- semester: {headerFilter:"input"},
lv_oe_kurzbz: {headerFilter:"input"},
gruppe: {headerFilter:"input"},
- lektor: {headerFilter:"input"},
+ lektor: {headerFilter:"input", widthGrow: 3},
stunden: {align:"right", formatter: form_formatNulltoStringNumber, formatterParams:{precision:1},
headerFilter:"input", headerFilterFunc: hf_filterStringnumberWithOperator,
bottomCalc:"sum", bottomCalcParams:{precision:1}},
diff --git a/public/js/lehre/lehrauftrag/acceptLehrauftrag.js b/public/js/lehre/lehrauftrag/acceptLehrauftrag.js
index ea96a8c7c..03c72e2f2 100644
--- a/public/js/lehre/lehrauftrag/acceptLehrauftrag.js
+++ b/public/js/lehre/lehrauftrag/acceptLehrauftrag.js
@@ -17,7 +17,7 @@ const COLOR_LIGHTGREY = "#f5f5f5";
const ICON_LEHRAUFTRAG_ORDERED = '
';
const ICON_LEHRAUFTRAG_APPROVED = '
';
const ICON_LEHRAUFTRAG_CHANGED = '
';
-
+const ICON_LEHRAUFTRAG_CANCELLED = '
';
// -----------------------------------------------------------------------------------------------------------------
// Mutators - setter methods to manipulate table data when entering the tabulator
@@ -26,11 +26,11 @@ const ICON_LEHRAUFTRAG_CHANGED = '
, >=, !=, ==, compare values with that operator
- var operator = '';
- if (headerValue.match(/([<=>!]{1,2})/g)) {
- var operator_arr = headerValue.match(/([<=>!]{1,2})/g);
- operator = operator_arr[0];
+ // If string starts with <, <=, >, >=, !=, ==, compare values with that operator
+ var operator = '';
+ if (headerValue.match(/([<=>!]{1,2})/g)) {
+ var operator_arr = headerValue.match(/([<=>!]{1,2})/g);
+ operator = operator_arr[0];
- headerValue = headerValue
- .replace(operator, '')
- .trim()
- ;
+ headerValue = headerValue
+ .replace(operator, '')
+ .trim()
+ ;
- // return if value comparison is true
- return eval(rowValue + operator + headerValue);
- }
+ // return if value comparison is true
+ return eval(rowValue + operator + headerValue);
+ }
- // If just a stringnumber, return if exact match found
- return parseFloat(rowValue) == headerValue;
+ // If just a stringnumber, return if exact match found
+ return parseFloat(rowValue) == headerValue;
}
// -----------------------------------------------------------------------------------------------------------------
// Tabulator table format functions
// -----------------------------------------------------------------------------------------------------------------
+// Displays text when table is empty
+function func_placeholder()
+{
+ return "Keine Daten vorhanden.
";
+}
+
// Formats the rows
function func_rowFormatter(row){
- var bestellt = row.getData().bestellt;
- var erteilt = row.getData().erteilt;
- var akzeptiert = row.getData().akzeptiert;
+ var bestellt = row.getData().bestellt;
+ var erteilt = row.getData().erteilt;
+ var akzeptiert = row.getData().akzeptiert;
- var stunden = parseFloat(row.getData().stunden);
- var vertrag_stunden = parseFloat(row.getData().vertrag_stunden);
+ var stunden = parseFloat(row.getData().stunden);
+ var vertrag_stunden = parseFloat(row.getData().vertrag_stunden);
- var betrag = parseFloat(row.getData().betrag);
- var vertrag_betrag = parseFloat(row.getData().vertrag_betrag);
+ var betrag = parseFloat(row.getData().betrag);
+ var vertrag_betrag = parseFloat(row.getData().vertrag_betrag);
- if (isNaN(betrag))
- {
- betrag = 0;
- }
+ if (isNaN(betrag))
+ {
+ betrag = 0;
+ }
- /*
- Formats the color of the rows depending on their status
- - orange: geaendert
- - default: bestellte und erteilte (= zu akzeptierende)
- - green: akzeptierte
- - grey: all other (marks unselectable)
- */
- row.getCells().forEach(function(cell){
- if (bestellt != null && (betrag != vertrag_betrag) ||
- bestellt != null && stunden != vertrag_stunden)
- {
- cell.getElement().classList.add('bg-warning'); // geaenderte
- }
- else if(bestellt != null && erteilt != null && akzeptiert == null)
- {
- return; // bestellte + erteilte
- }
- else if(bestellt != null && erteilt != null && akzeptiert != null)
- {
- cell.getElement().classList.add('bg-success') // akzeptierte
- }
- else
- {
- row.getElement().style["background-color"] = COLOR_LIGHTGREY; // default
- }
- });
+ /*
+ Formats the color of the rows depending on their status
+ - orange: geaendert
+ - default: bestellte und erteilte (= zu akzeptierende)
+ - green: akzeptierte
+ - grey: all other (marks unselectable)
+ */
+ row.getCells().forEach(function(cell){
+ if (bestellt != null && (betrag != vertrag_betrag) ||
+ bestellt != null && stunden != vertrag_stunden)
+ {
+ cell.getElement().classList.add('bg-warning'); // geaenderte
+ }
+ else if(bestellt != null && erteilt != null && akzeptiert == null)
+ {
+ return; // bestellte + erteilte
+ }
+ else if(bestellt != null && erteilt != null && akzeptiert != null)
+ {
+ cell.getElement().classList.add('bg-success') // akzeptierte
+ }
+ else
+ {
+ row.getElement().style["background-color"] = COLOR_LIGHTGREY; // default
+ }
+ });
}
// Formats row selectable/unselectable
function func_selectableCheck(row){
- var stunden = parseFloat(row.getData().stunden);
- var vertrag_stunden = parseFloat(row.getData().vertrag_stunden);
+ var stunden = parseFloat(row.getData().stunden);
+ var vertrag_stunden = parseFloat(row.getData().vertrag_stunden);
- var betrag = parseFloat(row.getData().betrag);
- var vertrag_betrag = parseFloat(row.getData().vertrag_betrag);
+ var betrag = parseFloat(row.getData().betrag);
+ var vertrag_betrag = parseFloat(row.getData().vertrag_betrag);
- if (isNaN(betrag))
- {
- betrag = 0;
- }
+ var is_storniert = row.getData().storniert != undefined;
- // only allow to select bestellte && erteilte && nicht geaenderte Lehraufträge
- return row.getData().bestellt != null && // bestellt
- row.getData().erteilt != null && // AND erteilt
- row.getData().akzeptiert == null && // AND nicht akzeptiert
- betrag == vertrag_betrag &&
- stunden == vertrag_stunden; // OR nicht geaenderte
+ if (isNaN(betrag))
+ {
+ betrag = 0;
+ }
+
+ // only allow to select bestellte && erteilte && nicht geaenderte Lehraufträge
+ return row.getData().bestellt != null && // bestellt
+ row.getData().erteilt != null && // AND erteilt
+ row.getData().akzeptiert == null && // AND nicht akzeptiert
+ betrag == vertrag_betrag &&
+ stunden == vertrag_stunden && // AND nicht geaendert
+ !is_storniert; // AND nicht storniert
}
// Adds column status
function func_tableBuilt(table) {
- // Add status column to table
- table.addColumn(
- {
- title: "",
- field: "status",
- width:40,
- align:"center",
- downloadTitle: 'Status',
- formatter: status_formatter,
- tooltip: status_tooltip
- }, true
- );
+ // Add status column to table
+ table.addColumn(
+ {
+ title: "",
+ field: "status",
+ width:40,
+ align:"center",
+ downloadTitle: 'Status',
+ formatter: status_formatter,
+ tooltip: status_tooltip
+ }, true
+ );
}
// Sets status values into column status
function func_renderStarted(table){
- // Set literally status to each row - this enables sorting by status despite using icons
- table.getRows().forEach(function(row){
- var bestellt = row.getData().bestellt;
- var erteilt = row.getData().erteilt;
- var akzeptiert = row.getData().akzeptiert;
+ // Set literally status to each row - this enables sorting by status despite using icons
+ table.getRows().forEach(function(row){
+ var bestellt = row.getData().bestellt;
+ var erteilt = row.getData().erteilt;
+ var akzeptiert = row.getData().akzeptiert;
- var stunden = parseFloat(row.getData().stunden);
- var vertrag_stunden = parseFloat(row.getData().vertrag_stunden);
+ var stunden = parseFloat(row.getData().stunden);
+ var vertrag_stunden = parseFloat(row.getData().vertrag_stunden);
- var betrag = parseFloat(row.getData().betrag);
- var vertrag_betrag = parseFloat(row.getData().vertrag_betrag);
+ var betrag = parseFloat(row.getData().betrag);
+ var vertrag_betrag = parseFloat(row.getData().vertrag_betrag);
- if (isNaN(betrag))
- {
- betrag = 0;
- }
+ if (isNaN(betrag))
+ {
+ betrag = 0;
+ }
- if ((bestellt != null && betrag != vertrag_betrag) ||
- (bestellt != null && stunden != vertrag_stunden))
- {
- row.getData().status = 'Geändert'; // geaendert
- }
- else if (bestellt == null && erteilt == null && akzeptiert == null)
- {
- row.getData().status = 'Neu'; // neu
- }
- else if (bestellt != null && erteilt == null && akzeptiert == null)
- {
- row.getData().status = 'Bestellt'; // bestellt
- }
- else if (bestellt != null && erteilt != null && akzeptiert == null)
- {
- row.getData().status = 'Erteilt'; // erteilt
- }
- else if (bestellt != null && erteilt != null && akzeptiert != null)
- {
- row.getData().status = 'Akzeptiert'; // akzeptiert
- }
- else
- {
- row.getData().status = null; // default
- }
- });
+ if ((bestellt != null && betrag != vertrag_betrag) ||
+ (bestellt != null && stunden != vertrag_stunden))
+ {
+ row.getData().status = 'Geändert'; // geaendert
+ }
+ else if (bestellt == null && erteilt == null && akzeptiert == null)
+ {
+ row.getData().status = 'Neu'; // neu
+ }
+ else if (bestellt != null && erteilt == null && akzeptiert == null)
+ {
+ row.getData().status = 'Bestellt'; // bestellt
+ }
+ else if (bestellt != null && erteilt != null && akzeptiert == null)
+ {
+ row.getData().status = 'Erteilt'; // erteilt
+ }
+ else if (bestellt != null && erteilt != null && akzeptiert != null)
+ {
+ row.getData().status = 'Akzeptiert'; // akzeptiert
+ }
+ else
+ {
+ row.getData().status = null; // default
+ }
+ });
}
// Performes after row was updated
function func_rowUpdated(row){
- // Refresh status icon and row color
- row.reformat(); // retriggers cell formatters and rowFormatter callback
+ // Refresh status icon and row color
+ row.reformat(); // retriggers cell formatters and rowFormatter callback
- // Deselect and disable new selection of updated rows
- row.deselect();
- row.getElement().style["pointerEvents"] = "none";
+ // Deselect and disable new selection of updated rows
+ row.deselect();
+ row.getElement().style["pointerEvents"] = "none";
}
// Hide betrag, if lector has inkludierte Lehre
function func_renderComplete(table){
- // Check if the lectors actual Verwendung has inkludierte Lehre
- FHC_AjaxClient.ajaxCallGet(
- FHC_JS_DATA_STORAGE_OBJECT.called_path + "/checkInkludierteLehre",
- null,
- {
- successCallback: function (data, textStatus, jqXHR)
- {
- // If lector has inkludierte Lehre, hide the column betrag
- if (data.retval)
- {
- table.hideColumn("betrag");
- }
- },
- errorCallback: function (jqXHR, textStatus, errorThrown)
- {
- FHC_DialogLib.alertError("Systemfehler
Bitte kontaktieren Sie Ihren Administrator.");
- }
- }
- );
+ // Check if the lectors actual Verwendung has inkludierte Lehre
+ FHC_AjaxClient.ajaxCallGet(
+ FHC_JS_DATA_STORAGE_OBJECT.called_path + "/checkInkludierteLehre",
+ null,
+ {
+ successCallback: function (data, textStatus, jqXHR)
+ {
+ // If lector has inkludierte Lehre, hide the column betrag
+ if (data.retval)
+ {
+ table.hideColumn("betrag");
+ }
+ },
+ errorCallback: function (jqXHR, textStatus, errorThrown)
+ {
+ FHC_DialogLib.alertError("Systemfehler
Bitte kontaktieren Sie Ihren Administrator.");
+ }
+ }
+ );
}
// Tabulator footer element
@@ -251,32 +260,32 @@ function func_renderComplete(table){
// Adds a footer with buttons select all / deselect all / download
function func_footerElement(){
- var footer_html = '';
- footer_html += '
';
+ var footer_html = '
';
+ footer_html += '
';
- footer_html += '
';
+ footer_html += '
';
- footer_html += '
';
+ footer_html += '
';
- footer_html += '
';
- footer_html += '
';
+ footer_html += '
';
+ footer_html += '
';
- return footer_html;
+ return footer_html;
}
// Performs download CSV
function footer_downloadCSV(){
- $('#tableWidgetTabulator').tabulator("download", "csv", "data.csv", {bom:true}); // BOM for correct UTF-8 char output
+ $('#tableWidgetTabulator').tabulator("download", "csv", "data.csv", {bom:true}); // BOM for correct UTF-8 char output
}
/*
@@ -284,12 +293,12 @@ function footer_downloadCSV(){
* Select all (filtered) rows and ignore rows that are bestellt and erteilt
*/
function footer_selectAll(){
- $('#tableWidgetTabulator').tabulator('getRows', true)
- .filter(row => row.getData().bestellt != null && // bestellt
- row.getData().erteilt != null && // AND erteilt
- row.getData().akzeptiert == null && // AND NOT akzeptiert
- row.getData().status != 'Geändert') // AND NOT geändert
- .forEach((row => row.select()));
+ $('#tableWidgetTabulator').tabulator('getRows', true)
+ .filter(row => row.getData().bestellt != null && // bestellt
+ row.getData().erteilt != null && // AND erteilt
+ row.getData().akzeptiert == null && // AND NOT akzeptiert
+ row.getData().status != 'Geändert') // AND NOT geändert
+ .forEach((row => row.select()));
}
/*
@@ -297,12 +306,12 @@ function footer_selectAll(){
* Deselect all (filtered) rows
*/
function footer_deselectAll(){
- $('#tableWidgetTabulator').tabulator('deselectRow');
+ $('#tableWidgetTabulator').tabulator('deselectRow');
}
// Displays number of selected rows on row selection change
function func_rowSelectionChanged(data, rows){
- $('#number-selected').html("Für Annehmen ausgewählt: " + rows.length + "");
+ $('#number-selected').html("Für Annehmen ausgewählt: " + rows.length + "");
}
// -----------------------------------------------------------------------------------------------------------------
@@ -311,253 +320,285 @@ function func_rowSelectionChanged(data, rows){
// Generates status icons
status_formatter = function(cell, formatterParams, onRendered){
- var bestellt = cell.getRow().getData().bestellt;
- var erteilt = cell.getRow().getData().erteilt;
- var akzeptiert = cell.getRow().getData().akzeptiert;
+ var bestellt = cell.getRow().getData().bestellt;
+ var erteilt = cell.getRow().getData().erteilt;
+ var akzeptiert = cell.getRow().getData().akzeptiert;
+ var is_storniert = cell.getRow().getData().storniert != undefined;
- var stunden = parseFloat(cell.getRow().getData().stunden);
- var vertrag_stunden = parseFloat(cell.getRow().getData().vertrag_stunden);
+ var stunden = parseFloat(cell.getRow().getData().stunden);
+ var vertrag_stunden = parseFloat(cell.getRow().getData().vertrag_stunden);
- var betrag = parseFloat(cell.getRow().getData().betrag);
- var vertrag_betrag = parseFloat(cell.getRow().getData().vertrag_betrag);
+ var betrag = parseFloat(cell.getRow().getData().betrag);
+ var vertrag_betrag = parseFloat(cell.getRow().getData().vertrag_betrag);
- if (isNaN(betrag))
- {
- betrag = 0;
- }
+ if (isNaN(betrag))
+ {
+ betrag = 0;
+ }
- // commented icons would be so nice to have with fontawsome 5.11...
- if (bestellt != null && isNaN(vertrag_betrag))
- {
- return ""; // kein Vertrag
- }
- else if (bestellt != null && (betrag != vertrag_betrag) ||
- bestellt != null && stunden != vertrag_stunden)
- {
- return ICON_LEHRAUFTRAG_CHANGED; // geaendert
- // return "";
- }
- else if (bestellt == null && erteilt == null && akzeptiert == null)
- {
- return ""; // neu
- }
- else if (bestellt != null && erteilt == null && akzeptiert == null)
- {
- return ICON_LEHRAUFTRAG_ORDERED; // bestellt
- // return "";
- }
- else if (bestellt != null && erteilt != null && akzeptiert == null)
- {
- return ICON_LEHRAUFTRAG_APPROVED; // erteilt
- // return "";
- }
- else if (bestellt != null && erteilt != null && akzeptiert != null)
- {
- return ""; // akzeptiert
- // return "";
- }
- else
- {
- return ""; // default
- }
+ // commented icons would be so nice to have with fontawsome 5.11...
+ if (bestellt != null && isNaN(vertrag_betrag))
+ {
+ return ""; // kein Vertrag
+ }
+ else if (bestellt != null && (betrag != vertrag_betrag) ||
+ bestellt != null && stunden != vertrag_stunden)
+ {
+ return ICON_LEHRAUFTRAG_CHANGED; // geaendert
+ // return "";
+ }
+ else if (bestellt == null && erteilt == null && akzeptiert == null && !is_storniert)
+ {
+ return ""; // neu
+ }
+ else if (bestellt != null && erteilt == null && akzeptiert == null)
+ {
+ return ICON_LEHRAUFTRAG_ORDERED; // bestellt
+ // return "";
+ }
+ else if (bestellt != null && erteilt != null && akzeptiert == null)
+ {
+ return ICON_LEHRAUFTRAG_APPROVED; // erteilt
+ // return "";
+ }
+ else if (bestellt != null && erteilt != null && akzeptiert != null)
+ {
+ return ""; // akzeptiert
+ // return "";
+ }
+ else if (is_storniert)
+ {
+ return ICON_LEHRAUFTRAG_CANCELLED; // storniert
+ }
+ else
+ {
+ return ""; // default
+ }
};
// Generates status tooltip
status_tooltip = function(cell){
- var bestellt = cell.getRow().getData().bestellt;
- var erteilt = cell.getRow().getData().erteilt;
- var akzeptiert = cell.getRow().getData().akzeptiert;
+ var bestellt = cell.getRow().getData().bestellt;
+ var erteilt = cell.getRow().getData().erteilt;
+ var akzeptiert = cell.getRow().getData().akzeptiert;
+ var is_storniert = cell.getRow().getData().storniert != undefined;
+ var letzterStatus_vorStorniert = cell.getRow().getData().letzterStatus_vorStorniert;
- var stunden = parseFloat(cell.getRow().getData().stunden);
- var vertrag_stunden = parseFloat(cell.getRow().getData().vertrag_stunden);
- var betrag = parseFloat(cell.getRow().getData().betrag);
- var vertrag_betrag = parseFloat(cell.getRow().getData().vertrag_betrag);
+ var stunden = parseFloat(cell.getRow().getData().stunden);
+ var vertrag_stunden = parseFloat(cell.getRow().getData().vertrag_stunden);
- if (isNaN(betrag))
- {
- betrag = 0;
- }
+ var betrag = parseFloat(cell.getRow().getData().betrag);
+ var vertrag_betrag = parseFloat(cell.getRow().getData().vertrag_betrag);
- var text = 'Lehrauftrag in Bearbeitung. ';
+ if (isNaN(betrag))
+ {
+ betrag = 0;
+ }
- if (bestellt != null && erteilt == null && akzeptiert == null
- && (betrag != vertrag_betrag || stunden != vertrag_stunden)) // geaendert (when never erteilt before)
- {
- text += 'Wartet auf Erteilung.';
- return text;
- }
- else if (bestellt != null && erteilt != null && akzeptiert == null
- && (betrag != vertrag_betrag || stunden != vertrag_stunden)) // geaendert (when has been erteilt once)
- {
- text += 'Wartet auf erneute Erteilung.';
- return text;
- }
- else if (bestellt != null && erteilt == null && akzeptiert == null) // bestellt
- {
- return 'Letzter Status: Bestellt. Wartet auf Erteilung.';
- }
- else if (bestellt != null && erteilt != null && akzeptiert == null) // erteilt
- {
- return 'Letzter Status: Erteilt. Wartet auf Annahme durch Lektor.';
- }
- else if (bestellt != null && erteilt != null && akzeptiert != null) // akzeptiert
- {
- return 'Letzter Status: Angenommen. Vertrag wurde beidseitig abgeschlossen.';
- }
+ if (letzterStatus_vorStorniert != undefined && letzterStatus_vorStorniert == 'akzeptiert')
+ {
+ letzterStatus_vorStorniert = 'angenommen';
+ }
+
+ var text = 'Lehrauftrag in Bearbeitung. ';
+
+ if (bestellt != null && erteilt == null && akzeptiert == null
+ && (betrag != vertrag_betrag || stunden != vertrag_stunden)) // geaendert (when never erteilt before)
+ {
+ text += 'Wartet auf Erteilung.';
+ return text;
+ }
+ else if (bestellt != null && erteilt != null && akzeptiert == null
+ && (betrag != vertrag_betrag || stunden != vertrag_stunden)) // geaendert (when has been erteilt once)
+ {
+ text += 'Wartet auf erneute Erteilung.';
+ return text;
+ }
+ else if (bestellt != null && erteilt == null && akzeptiert == null) // bestellt
+ {
+ return 'Letzter Status: Bestellt. Wartet auf Erteilung.';
+ }
+ else if (bestellt != null && erteilt != null && akzeptiert == null) // erteilt
+ {
+ return 'Letzter Status: Erteilt. Wartet auf Annahme durch Lektor.';
+ }
+ else if (bestellt != null && erteilt != null && akzeptiert != null) // akzeptiert
+ {
+ return 'Letzter Status: Angenommen. Vertrag wurde beidseitig abgeschlossen.';
+ }
+ else if (is_storniert)
+ {
+ return 'Dieser Vertrag wurde storniert. Letzter Status vor Stornierung war: '
+ + letzterStatus_vorStorniert; // storniert
+ }
}
// Generates bestellt tooltip
bestellt_tooltip = function(cell){
- if (cell.getRow().getData().bestellt_von != null)
- {
- return 'Bestellt von: ' + cell.getRow().getData().bestellt_von;
- }
+ if (cell.getRow().getData().bestellt_von != null)
+ {
+ return 'Bestellt von: ' + cell.getRow().getData().bestellt_von;
+ }
}
// Generates erteilt tooltip
erteilt_tooltip = function(cell){
- if (cell.getRow().getData().erteilt_von != null) {
- return 'Erteilt von: ' + cell.getRow().getData().erteilt_von;
- }
+ if (cell.getRow().getData().erteilt_von != null) {
+ return 'Erteilt von: ' + cell.getRow().getData().erteilt_von;
+ }
}
// Generates akzeptiert tooltip
akzeptiert_tooltip = function(cell){
- if (cell.getRow().getData().akzeptiert_von != null) {
- return 'Angenommen von: ' + cell.getRow().getData().akzeptiert_von;
- }
+ if (cell.getRow().getData().akzeptiert_von != null) {
+ return 'Angenommen von: ' + cell.getRow().getData().akzeptiert_von;
+ }
+}
+
+// Generates storniert tooltip
+storniert_tooltip = function(cell){
+ if (cell.getRow().getData().storniert_von != null) {
+ return 'Storniert von: ' + cell.getRow().getData().storniert_von;
+ }
}
$(function() {
+ // Show all rows
+ $("#show-all").click(function(){
+ $('#tableWidgetTabulator').tabulator('clearFilter');
+ });
- // Show all rows
- $("#show-all").click(function(){
- $('#tableWidgetTabulator').tabulator('clearFilter');
- });
+ // Show only rows with ordered lehrauftraege
+ $("#show-ordered").click(function(){
+ $('#tableWidgetTabulator').tabulator('setFilter',
+ [
+ {field: 'bestellt', type: '!=', value: null},
+ {field: 'erteilt', type: '=', value: null},
+ {field: 'akzeptiert', type: '=', value: null}
+ ]
+ );
+ });
- // Show only rows with ordered lehrauftraege
- $("#show-ordered").click(function(){
- $('#tableWidgetTabulator').tabulator('setFilter',
- [
- {field: 'bestellt', type: '!=', value: null},
- {field: 'erteilt', type: '=', value: null},
- {field: 'akzeptiert', type: '=', value: null}
- ]
- );
- });
+ // Show only rows with erteilte lehrauftraege
+ $("#show-approved").click(function(){
+ $('#tableWidgetTabulator').tabulator('setFilter', [
+ {field: 'bestellt', type: '!=', value: null}, // filter when is bestellt
+ {field: 'erteilt', type: '!=', value: null}, // and is erteilt
+ {field: 'akzeptiert', type: '=', value: null} // and is not akzeptiert
+ ]
+ );
+ });
- // Show only rows with erteilte lehrauftraege
- $("#show-approved").click(function(){
- $('#tableWidgetTabulator').tabulator('setFilter', [
- {field: 'bestellt', type: '!=', value: null}, // filter when is bestellt
- {field: 'erteilt', type: '!=', value: null}, // and is erteilt
- {field: 'akzeptiert', type: '=', value: null} // and is not akzeptiert
- ]
- );
- });
+ // Show only rows with akzeptierte lehrauftraege
+ $("#show-accepted").click(function(){
+ $('#tableWidgetTabulator').tabulator('setFilter',
+ [
+ {field: 'bestellt', type: '!=', value: null},
+ {field: 'erteilt', type: '!=', value: null},
+ {field: 'akzeptiert', type: '!=', value: null}
+ ]
+ );
+ });
- // Show only rows with akzeptierte lehrauftraege
- $("#show-accepted").click(function(){
- $('#tableWidgetTabulator').tabulator('setFilter',
- [
- {field: 'bestellt', type: '!=', value: null},
- {field: 'erteilt', type: '!=', value: null},
- {field: 'akzeptiert', type: '!=', value: null}
- ]
- );
- });
+ // Set png-icons into filter-buttons
+ $(".btn-lehrauftrag").each(function(){
+ switch(this.id) {
+ case 'show-ordered':
+ this.innerHTML = ICON_LEHRAUFTRAG_ORDERED;
+ break;
+ case 'show-approved':
+ this.innerHTML = ICON_LEHRAUFTRAG_APPROVED;
+ break;
+ case 'show-cancelled':
+ this.innerHTML = ICON_LEHRAUFTRAG_CANCELLED;
+ break;
+ }
+ });
- // Set png-icons into filter-buttons
- $(".btn-lehrauftrag").each(function(){
- switch(this.id) {
- case 'show-ordered':
- this.innerHTML = ICON_LEHRAUFTRAG_ORDERED;
- break;
- case 'show-approved':
- this.innerHTML = ICON_LEHRAUFTRAG_APPROVED;
- break;
- }
- });
+ // De/activate and un/focus on clicked button
+ $(".btn-lehrauftrag").click(function() {
- // De/activate and un/focus on clicked button
- $(".btn-lehrauftrag").click(function() {
+ // De/activate and un/focus on clicked button
+ $(".btn-lehrauftrag").removeClass('focus').removeClass('active');
+ $(this).addClass('focus').addClass('active');
+ });
- // De/activate and un/focus on clicked button
- $(".btn-lehrauftrag").removeClass('focus').removeClass('active');
- $(this).addClass('focus').addClass('active');
- });
+ // Redraw table stornierte lehrauftraege on button click
+ $('#collapseCancelledLehrauftraege').on('shown.bs.collapse', function () {
+ $('[tableuniqueid = cancelledLehrauftrag] #tableWidgetTabulator').tabulator('redraw', true);
+ });
- // Approve Lehrauftraege
- $("#accept-lehrauftraege").click(function(){
+ // Approve Lehrauftraege
+ $("#accept-lehrauftraege").click(function(){
- // Get selected rows data
- var selected_data = $('#tableWidgetTabulator').tabulator('getSelectedData')
- .map(function(data){
- // reduce to necessary fields
- return {
- 'row_index' : data.row_index,
- 'vertrag_id' : data.vertrag_id
- }
- });
+ // Get selected rows data
+ var selected_data = $('#tableWidgetTabulator').tabulator('getSelectedData')
+ .map(function(data){
+ // reduce to necessary fields
+ return {
+ 'row_index' : data.row_index,
+ 'vertrag_id' : data.vertrag_id
+ }
+ });
- // Alert and exit if no lehraufgang is selected
- if (selected_data.length == 0)
- {
- FHC_DialogLib.alertInfo('Bitte wählen Sie erst zumindest einen Lehrauftrag');
+ // Alert and exit if no lehraufgang is selected
+ if (selected_data.length == 0)
+ {
+ FHC_DialogLib.alertInfo('Bitte wählen Sie erst zumindest einen Lehrauftrag');
- // Emtpy password field
- $("#password").val('');
+ // Emtpy password field
+ $("#password").val('');
- return;
- }
+ return;
+ }
- // Get password for verification
- var password = $("#password").val();
- if (password == '')
- {
- FHC_DialogLib.alertInfo('Bitte verifizieren Sie sich mit Ihrem Login Passwort.');
+ // Get password for verification
+ var password = $("#password").val();
+ if (password == '')
+ {
+ FHC_DialogLib.alertInfo('Bitte verifizieren Sie sich mit Ihrem Login Passwort.');
- // Focus on password field
- $("#password").focus();
+ // Focus on password field
+ $("#password").focus();
- return;
- }
+ return;
+ }
- // Prepare data object for ajax call
- var data = {
- 'password': password,
- 'selected_data': selected_data
- };
+ // Prepare data object for ajax call
+ var data = {
+ 'password': password,
+ 'selected_data': selected_data
+ };
- FHC_AjaxClient.ajaxCallPost(
- FHC_JS_DATA_STORAGE_OBJECT.called_path + "/acceptLehrauftrag",
- data,
- {
- successCallback: function (data, textStatus, jqXHR)
- {
- if (data.error)
- {
- // Password not verified
- FHC_DialogLib.alertWarning(data.retval);
- }
- if (!data.error && data.retval != null)
- {
- // Update status 'Erteilt'
- $('#tableWidgetTabulator').tabulator('updateData', data.retval);
- FHC_DialogLib.alertSuccess(data.retval.length + " Lehraufträge wurden akzeptiert.");
- }
- },
- errorCallback: function (jqXHR, textStatus, errorThrown)
- {
- FHC_DialogLib.alertError("Systemfehler
Bitte kontaktieren Sie Ihren Administrator.");
- }
- }
- );
+ FHC_AjaxClient.ajaxCallPost(
+ FHC_JS_DATA_STORAGE_OBJECT.called_path + "/acceptLehrauftrag",
+ data,
+ {
+ successCallback: function (data, textStatus, jqXHR)
+ {
+ if (data.error)
+ {
+ // Password not verified
+ FHC_DialogLib.alertWarning(data.retval);
+ }
+ if (!data.error && data.retval != null)
+ {
+ // Update status 'Erteilt'
+ $('#tableWidgetTabulator').tabulator('updateData', data.retval);
+ FHC_DialogLib.alertSuccess(data.retval.length + " Lehraufträge wurden akzeptiert.");
+ }
+ },
+ errorCallback: function (jqXHR, textStatus, errorThrown)
+ {
+ FHC_DialogLib.alertError("Systemfehler
Bitte kontaktieren Sie Ihren Administrator.");
+ }
+ }
+ );
- // Empty password field
- $("#password").val('');
+ // Empty password field
+ $("#password").val('');
- });
+ });
});
diff --git a/public/js/lehre/lehrauftrag/approveLehrauftrag.js b/public/js/lehre/lehrauftrag/approveLehrauftrag.js
index da3697adf..94e6af473 100644
--- a/public/js/lehre/lehrauftrag/approveLehrauftrag.js
+++ b/public/js/lehre/lehrauftrag/approveLehrauftrag.js
@@ -94,6 +94,13 @@ function func_initialFilter(){
// -----------------------------------------------------------------------------------------------------------------
// Tabulator table format functions
// -----------------------------------------------------------------------------------------------------------------
+
+// Displays text when table is empty
+function func_placeholder()
+{
+ return "Keine Daten vorhanden.
";
+}
+
// Formats the group header
function func_groupHeader(data){
return data[0].lv_bezeichnung + " " + ' ( LV-ID: ' + data[0].lehrveranstaltung_id + ' )'; // change name to lehrveranstaltung;
diff --git a/public/js/lehre/lehrauftrag/orderLehrauftrag.js b/public/js/lehre/lehrauftrag/orderLehrauftrag.js
index d27da0e4e..4e58272e5 100644
--- a/public/js/lehre/lehrauftrag/orderLehrauftrag.js
+++ b/public/js/lehre/lehrauftrag/orderLehrauftrag.js
@@ -99,6 +99,13 @@ function func_dataLoaded(data, table){
// -----------------------------------------------------------------------------------------------------------------
// Tabulator table format functions
// -----------------------------------------------------------------------------------------------------------------
+
+// Displays text when table is empty
+function func_placeholder()
+{
+ return "Keine Daten vorhanden.
";
+}
+
// Formats the group header
function func_groupHeader(data) {
return data[0].lv_bezeichnung + " " + ' ( LV-ID: ' + data[0].lehrveranstaltung_id + ' )'; // change name to lehrveranstaltung;
diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php
index e68011401..4dbfbebe0 100644
--- a/system/phrasesupdate.php
+++ b/system/phrasesupdate.php
@@ -4094,7 +4094,27 @@ When on hold, the date is only a reminder.',
'insertvon' => 'system'
)
)
- )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'global',
+ 'phrase' => 'stornierteLehrauftraege',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Stornierte Lehraufträge',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Cancelled lectureships',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ )
);