| p->t('lehre', 'lektorInnen')); ?> |
@@ -152,6 +172,17 @@ $this->load->view(
+
+
+
-
load->view('templates/FHC-Footer'); ?>
diff --git a/application/views/lehre/anrechnung/reviewAnrechnungDetail.php b/application/views/lehre/anrechnung/reviewAnrechnungDetail.php
index 18c70e5af..13b830731 100644
--- a/application/views/lehre/anrechnung/reviewAnrechnungDetail.php
+++ b/application/views/lehre/anrechnung/reviewAnrechnungDetail.php
@@ -52,7 +52,6 @@ $this->load->view(
);
?>
-
@@ -225,31 +224,29 @@ $this->load->view(
p->t('anrechnung', 'empfehlungNegativQuestion'); ?>
-
- p->t('anrechnung', 'bitteBegruendungAngeben'); ?>
-
- -
+
+ -
p->t('anrechnung', 'empfehlungNegativPruefungNichtMoeglich'); ?>
-
-
+
- -
+
-
p->t('anrechnung', 'empfehlungNegativKenntnisseNichtGleichwertig'); ?>
-
-
+
- - p->t('anrechnung', 'andereBegruendung'); ?>
-
+ rows="2"
+ placeholder="p->t('anrechnung', 'textUebernehmenOderEigenenBegruendungstext'); ?>"
+ required>
@@ -318,6 +315,5 @@ $this->load->view(
-
load->view('templates/FHC-Footer'); ?>
diff --git a/application/views/lehre/anrechnung/reviewAnrechnungUebersicht.php b/application/views/lehre/anrechnung/reviewAnrechnungUebersicht.php
index 54d0b49d1..a7b0e02b9 100644
--- a/application/views/lehre/anrechnung/reviewAnrechnungUebersicht.php
+++ b/application/views/lehre/anrechnung/reviewAnrechnungUebersicht.php
@@ -80,7 +80,6 @@ $this->load->view(
);
?>
-
@@ -127,30 +126,31 @@ $this->load->view(
id="reviewAnrechnungUebersicht-begruendung-panel">
p->t('anrechnung', 'empfehlungenNegativQuestion'); ?>
- p->t('anrechnung', 'bitteBegruendungAngeben'); ?>
-
- -
- p->t('anrechnung', 'empfehlungNegativPruefungNichtMoeglich'); ?>
-
-
-
-
- -
- p->t('anrechnung', 'empfehlungNegativKenntnisseNichtGleichwertig'); ?>
-
-
-
-
- - p->t('anrechnung', 'andereBegruendung'); ?>
-
-
-
+ p->t('anrechnung', 'bitteBegruendungAngeben'); ?>
+
p->t('anrechnung', 'begruendungWirdFuerAlleUebernommen'); ?>
-
+
+
+
+ -
+ p->t('anrechnung', 'empfehlungNegativPruefungNichtMoeglich'); ?>
+
+
+
+
+ -
+ p->t('anrechnung', 'empfehlungNegativKenntnisseNichtGleichwertig'); ?>
+
+
+
+
+
+ rows="2"
+ placeholder="p->t('anrechnung', 'textUebernehmenOderEigenenBegruendungstext'); ?>"
+ required>
@@ -235,7 +235,6 @@ $this->load->view(
-
load->view('templates/FHC-Footer'); ?>
diff --git a/content/fasDBDML.php b/content/fasDBDML.php
index 2c4fcccbc..899f0096c 100644
--- a/content/fasDBDML.php
+++ b/content/fasDBDML.php
@@ -496,7 +496,7 @@ if(!$error)
elseif(isset($_POST['stsem_aktuell']))
{
$stsem = new studiensemester();
- $studiensemester_kurzbz = $stsem->getakt();
+ $studiensemester_kurzbz = $stsem->getNearest();
$variable->name = 'semester_aktuell';
$variable->wert = $studiensemester_kurzbz;
diff --git a/include/lehreinheit.class.php b/include/lehreinheit.class.php
index 7d407cee4..5c4854966 100644
--- a/include/lehreinheit.class.php
+++ b/include/lehreinheit.class.php
@@ -831,6 +831,7 @@ class lehreinheit extends basis_db
}
while($row = $this->db_fetch_object())
{
+ if(!isset($this->lehreinheiten[$row->unr])) $this->lehreinheiten[$row->unr] = new stdClass();
$this->lehreinheiten[$row->unr]->lehreinheit_id[]=$row->lehreinheit_id;
$this->lehreinheiten[$row->unr]->lvnr[]=$row->lvnr;
$this->lehreinheiten[$row->unr]->unr=$row->unr;
diff --git a/include/wochenplan.class.php b/include/wochenplan.class.php
index 0ac59a9ff..f6cc94c3c 100644
--- a/include/wochenplan.class.php
+++ b/include/wochenplan.class.php
@@ -754,8 +754,9 @@ class wochenplan extends basis_db
if ($lehrstunde->grp!=null && $lehrstunde->grp!='0' && $lehrstunde->grp!='')
$lvb.=$lehrstunde->grp;
}
- if (count($lehrstunde->gruppe_kurzbz)>0)
+ if ($lehrstunde->gruppe_kurzbz != '')
$lvb=$lehrstunde->gruppe_kurzbz;
+
$lehrverband[]=$lvb;
// Lehrfach
$lf=$lehrstunde->lehrfach;
@@ -1458,8 +1459,9 @@ class wochenplan extends basis_db
if ($lehrstunde->grp!=null && $lehrstunde->grp!='0' && $lehrstunde->grp!='')
$lvb.=$lehrstunde->grp;
}
- if (count($lehrstunde->gruppe_kurzbz)>0)
+ if ($lehrstunde->gruppe_kurzbz != '')
$lvb=$lehrstunde->gruppe_kurzbz;
+
$lehrverband[]=$lvb;
// Lehrfach
$lf=htmlspecialchars($lehrstunde->lehrfach);
diff --git a/public/js/infocenter/infocenterDetails.js b/public/js/infocenter/infocenterDetails.js
index 7a8849f71..c7d4d326b 100644
--- a/public/js/infocenter/infocenterDetails.js
+++ b/public/js/infocenter/infocenterDetails.js
@@ -543,8 +543,8 @@ var InfocenterDetails = {
var prestudentdata = prestudentresponse.retval;
- var prestudent_id = freigabedata.prestudent_id;
- var statusgrund_id = freigabedata.statusgrund_id;
+ var prestudent_id = parseInt(freigabedata.prestudent_id);
+ var statusgrund_id = parseInt(freigabedata.statusgrund_id);
var rtfreigabe = !$.isNumeric(statusgrund_id);//no Statusgrund - RT Freigabe
var rtFreigegeben = false;
diff --git a/public/js/lehre/anrechnung/approveAnrechnungDetail.js b/public/js/lehre/anrechnung/approveAnrechnungDetail.js
index c5c0519f3..641cc0933 100644
--- a/public/js/lehre/anrechnung/approveAnrechnungDetail.js
+++ b/public/js/lehre/anrechnung/approveAnrechnungDetail.js
@@ -4,8 +4,6 @@ const ANRECHNUNGSTATUS_PROGRESSED_BY_LEKTOR = 'inProgressLektor';
const ANRECHNUNGSTATUS_APPROVED = 'approved';
const ANRECHNUNGSTATUS_REJECTED = 'rejected';
-
-
$(function(){
const genehmigung_panel = $('#approveAnrechnungDetail-genehmigung-panel');
@@ -36,6 +34,8 @@ $(function(){
// Init tooltips
approveAnrechnungDetail.initTooltips();
+ approveAnrechnungDetail.alertIfMaxEctsExceeded();
+
// Ask if Approve Anrechnungen
$("#approveAnrechnungDetail-approve-anrechnung-ask").click(function(){
@@ -91,8 +91,12 @@ $(function(){
approveAnrechnungDetail.formatGenehmigungIsPositiv(
data.retval[0].abgeschlossen_am,
data.retval[0].abgeschlossen_von,
- data.retval[0].status_bezeichnung
+ data.retval[0].status_kurzbz,
+ data.retval[0].status_bezeichnung,
);
+
+ approveAnrechnungDetail.sumUpEcts();
+ approveAnrechnungDetail.alertIfMaxEctsExceeded();
}
},
errorCallback: function (jqXHR, textStatus, errorThrown)
@@ -168,6 +172,7 @@ $(function(){
approveAnrechnungDetail.formatGenehmigungIsNegativ(
data.retval[0].abgeschlossen_am,
data.retval[0].abgeschlossen_von,
+ data.retval[0].status_kurzbz,
data.retval[0].status_bezeichnung,
begruendung
);
@@ -236,6 +241,7 @@ $(function(){
// Get form data
let form_data = $('form').serializeArray();
+ var init_status_kurzbz = $('#approveAnrechnungDetail-status_kurzbz').data('status_kurzbz');
// Prepare data object for ajax call
let data = {
@@ -248,21 +254,24 @@ $(function(){
{
successCallback: function (data, textStatus, jqXHR)
{
- console.log(data);
if (data.error && data.retval != null)
{
- console.log('inside error');
// Print error message
FHC_DialogLib.alertWarning(data.retval);
}
if (!data.error && data.retval != null)
{
- console.log('inside success');
approveAnrechnungDetail.formatGenehmigungIsWithdrawed(
data.retval.status_bezeichnung
);
+ if (init_status_kurzbz == 'approved')
+ {
+ approveAnrechnungDetail.substractEcts(ects, sumEctsSchulisch, sumEctsBeruflich);
+ approveAnrechnungDetail.alertIfMaxEctsExceeded();
+ }
+
FHC_DialogLib.alertSuccess(FHC_PhrasesLib.t("anrechnung", "erfolgreichZurueckgenommen"));
}
@@ -477,12 +486,13 @@ var approveAnrechnungDetail = {
$('#approveAnrechnungDetail-reject-anrechnung-ask').prop('disabled', true);
$('#approveAnrechnungDetail-withdraw-request-recommedation').removeClass('hidden');
},
- formatGenehmigungIsPositiv: function(abgeschlossenAm, abgeschlossenVon, statusBezeichnung){
+ formatGenehmigungIsPositiv: function(abgeschlossenAm, abgeschlossenVon, statusKurzbz, statusBezeichnung){
$('#approveAnrechnungDetail-genehmigungDetail-genehmigungIsNull').addClass('hidden');
$('#approveAnrechnungDetail-genehmigungDetail-genehmigungIsNegativ').addClass('hidden');
$('#approveAnrechnungDetail-genehmigungDetail-genehmigungIsPositiv').removeClass('hidden');
$('#approveAnrechnungDetail-status_kurzbz').text(statusBezeichnung);
$('#approveAnrechnungDetail-status_kurzbz').closest('div').removeClass('alert-warning').addClass('alert-success');
+ $('#approveAnrechnungDetail-status_kurzbz').data('status_kurzbz', statusKurzbz);
$('#approveAnrechnungDetail-abgeschlossenAm').text(abgeschlossenAm);
$('#approveAnrechnungDetail-abgeschlossenVon').text(abgeschlossenVon);
$('#approveAnrechnungDetail-request-recommendation').prop('disabled', true);
@@ -492,12 +502,13 @@ var approveAnrechnungDetail = {
// Show button to withdraw approval
$('#approveAnrechnungDetail-withdraw-anrechnung-approvement').removeClass('hidden');
},
- formatGenehmigungIsNegativ: function(abgeschlossenAm, abgeschlossenVon, statusBezeichnung, begruendung){
+ formatGenehmigungIsNegativ: function(abgeschlossenAm, abgeschlossenVon, statusKurzbz, statusBezeichnung, begruendung){
$('#approveAnrechnungDetail-genehmigungDetail-genehmigungIsNull').addClass('hidden');
$('#approveAnrechnungDetail-genehmigungDetail-genehmigungIsPositiv').addClass('hidden');
$('#approveAnrechnungDetail-genehmigungDetail-genehmigungIsNegativ').removeClass('hidden');
$('#approveAnrechnungDetail-status_kurzbz').text(statusBezeichnung);
$('#approveAnrechnungDetail-status_kurzbz').closest('div').removeClass('alert-warning').addClass('alert-danger');
+ $('#approveAnrechnungDetail-status_kurzbz').data('status_kurzbz', statusKurzbz);
$('#approveAnrechnungDetail-abgeschlossenAm').text(abgeschlossenAm);
$('#approveAnrechnungDetail-abgeschlossenVon').text(abgeschlossenVon);
$('#approveAnrechnungDetail-genehmigungDetail-begruendung').text(begruendung);
@@ -544,5 +555,76 @@ var approveAnrechnungDetail = {
$('#approveAnrechnungDetail-reject-anrechnung-ask').prop('disabled', false);
// Hide button to withdraw approval
$('#approveAnrechnungDetail-withdraw-request-recommedation').addClass('hidden');
+ },
+ sumUpEcts: function(){
+ var ects = parseFloat($('#ects').text());
+ var sumEctsSchulisch = parseFloat($('#sumEctsSchulisch').text());
+ var sumEctsBeruflich = parseFloat($('#sumEctsBeruflich').text());
+ var begruendung_id = $('#begruendung_id').data('begruendung_id');
+
+ if (begruendung_id == 5)
+ {
+ return;
+ }
+
+ if (begruendung_id == 4)
+ {
+ $('#sumEctsBeruflich').text(sumEctsBeruflich + ects);
+ }
+ else
+ {
+ $('#sumEctsSchulisch').text(sumEctsSchulisch + ects);
+ }
+
+ $('#sumEctsTotal').text(sumEctsSchulisch + sumEctsBeruflich + ects);
+
+ },
+ substractEcts: function(ects, sumEctsSchulisch, sumEctsBeruflich){
+ var ects = parseFloat($('#ects').text());
+ var sumEctsSchulisch = parseFloat($('#sumEctsSchulisch').text());
+ var sumEctsBeruflich = parseFloat($('#sumEctsBeruflich').text());
+ var begruendung_id = $('#begruendung_id').data('begruendung_id');
+
+ if (begruendung_id == 5)
+ {
+ return;
+ }
+
+ if (begruendung_id == 4)
+ {
+ $('#sumEctsBeruflich').text(sumEctsBeruflich - ects);
+ }
+ else
+ {
+ $('#sumEctsSchulisch').text(sumEctsSchulisch - ects);
+ }
+
+ $('#sumEctsTotal').text(sumEctsSchulisch + sumEctsBeruflich - ects);
+ },
+ alertIfMaxEctsExceeded: function(){
+ var begruendung_id = $('#begruendung_id').data('begruendung_id');
+ if (begruendung_id == 5)
+ {
+ return;
+ }
+ if(
+ (parseFloat($('#ects').text()) + parseFloat($('#sumEctsSchulisch').text())) > 60 ||
+ (parseFloat($('#ects').text()) + parseFloat($('#sumEctsBeruflich').text())) > 60 ||
+ (parseFloat($('#ects').text()) + parseFloat($('#sumEctsSchulisch').text()) + parseFloat($('#sumEctsBeruflich').text())) > 90
+ )
+ {
+ $('#sumEctsMsg')
+ .html(" ACHTUNG! Bei Anrechnung von LV: Überschreitung der Höchstgrenze für Anrechnungen gem. § 12 Abs. 3 Fachhochschulgesetz")
+ .addClass('bg-danger text-danger')
+ .tooltip({
+ title: FHC_PhrasesLib.t("anrechnung", "anrechnungEctsTooltipTextBeiUeberschreitung"),
+ placement: 'right',
+ html: true
+ });
+ }
+ else
+ {
+ $('#sumEctsMsg').html('').css('border', 'none');
+ }
}
}
\ No newline at end of file
diff --git a/public/js/lehre/anrechnung/approveAnrechnungUebersicht.js b/public/js/lehre/anrechnung/approveAnrechnungUebersicht.js
index fe78217b9..e831856d8 100644
--- a/public/js/lehre/anrechnung/approveAnrechnungUebersicht.js
+++ b/public/js/lehre/anrechnung/approveAnrechnungUebersicht.js
@@ -8,6 +8,12 @@ const ANRECHNUNGSTATUS_APPROVED = 'approved';
const ANRECHNUNGSTATUS_REJECTED = 'rejected';
const COLOR_LIGHTGREY = "#f5f5f5";
+const COLOR_DANGER = '#f2dede';
+
+var tabulator = null; // Set in tableBuilt function.
+
+// Array with accumulated LV ECTS by Prestudent. Used to find out if max ECTS are exceeded.
+var selectedPrestudentWithAccumulatedLvEcts = [];
// -----------------------------------------------------------------------------------------------------------------
// Mutators - setter methods to manipulate table data when entering the tabulator
@@ -52,6 +58,10 @@ function hf_filterTrueFalse(headerValue, rowValue){
// Adds column details
// Sets focus on filterbutton, if table starts with stored filter.
function func_tableBuilt(table) {
+
+ // Store table in global var
+ tabulator = table;
+
table.addColumn(
{
title: "Details",
@@ -66,7 +76,7 @@ function func_tableBuilt(table) {
},
target:"_blank"
}
- }, false, "status" // place column after status
+ }, true // place column on the very left
);
// Set focus on filterbutton
@@ -76,16 +86,74 @@ function func_tableBuilt(table) {
}
}
+/**
+ * Formats column ECTS (LV + Bisher).
+ */
+var format_ectsSumBisherUndNeu = function(cell, formatterParams, onRendered){
+ let row = cell.getRow();
+ let rowData = row.getData();
+
+ let begruendung_id = (rowData.begruendung_id);
+ let ectsSumBisherUndNeuTotal = (rowData.ectsSumSchulisch + rowData.ectsSumBeruflich);
+ let ectsSumBisherUndNeuSchulisch = rowData.ectsSumSchulisch;
+ let ectsSumBisherUndNeuBeruflich = rowData.ectsSumBeruflich;
+
+ // If exists, add accumulated LV ECTS to bisherige ECTS
+ if (selectedPrestudentWithAccumulatedLvEcts.length > 0)
+ {
+ let selectedPrestudent = selectedPrestudentWithAccumulatedLvEcts.find(x => x.prestudent_id === rowData.prestudent_id);
+
+ if (selectedPrestudent != undefined)
+ {
+ ectsSumBisherUndNeuTotal = (rowData.ectsSumSchulisch + rowData.ectsSumBeruflich) + selectedPrestudent.ectsSumAnzurechnendeLvsSchulisch + selectedPrestudent.ectsSumAnzurechnendeLvsBeruflich;
+ ectsSumBisherUndNeuSchulisch = rowData.ectsSumSchulisch + selectedPrestudent.ectsSumAnzurechnendeLvsSchulisch;
+ ectsSumBisherUndNeuBeruflich = rowData.ectsSumBeruflich + selectedPrestudent.ectsSumAnzurechnendeLvsBeruflich;
+ }
+
+ // Color column if maximum ECTS exceeded
+ if (begruendung_id != 5 && row.isSelected())
+ {
+
+ if (
+ (ectsSumBisherUndNeuSchulisch + ectsSumBisherUndNeuBeruflich) > 90 ||
+ ectsSumBisherUndNeuSchulisch > 60 ||
+ ectsSumBisherUndNeuBeruflich > 60
+ )
+ {
+ cell.getElement().style["background-color"] = COLOR_DANGER;
+ }
+ }
+ else
+ {
+ cell.getElement().style.removeProperty('background-color');
+ }
+ }
+
+ // If max ECTS is exceeded, format font color / weight
+ ectsSumBisherUndNeuTotal = (ectsSumBisherUndNeuTotal > 90) ? "" + ectsSumBisherUndNeuTotal + "" : ectsSumBisherUndNeuTotal;
+ ectsSumBisherUndNeuSchulisch = (ectsSumBisherUndNeuSchulisch > 60) ? "" + ectsSumBisherUndNeuSchulisch + "" : ectsSumBisherUndNeuSchulisch;
+ ectsSumBisherUndNeuBeruflich = (ectsSumBisherUndNeuBeruflich > 60) ? "" + ectsSumBisherUndNeuBeruflich + "" : ectsSumBisherUndNeuBeruflich;
+
+ return "T: " + ectsSumBisherUndNeuTotal + " [ S: " + ectsSumBisherUndNeuSchulisch + " | B: " + ectsSumBisherUndNeuBeruflich + " ]";
+}
+
// Formats the rows
function func_rowFormatter(row){
let status_kurzbz = row.getData().status_kurzbz;
- row.getCells().forEach(function(cell){
- if (status_kurzbz != ANRECHNUNGSTATUS_PROGRESSED_BY_STGL)
- {
- row.getElement().style["background-color"] = COLOR_LIGHTGREY; // default
- }
- });
+ // If status is anything else then 'Bearbeitet von STGL-Leitung'
+ if (status_kurzbz != ANRECHNUNGSTATUS_PROGRESSED_BY_STGL)
+ {
+ // Disable new selection of updated rows
+ row.getElement().style["pointerEvents"] = "none";
+
+ // ...but leave url links selectable
+ row.getCell('dokument_bezeichnung').getElement().firstChild.style["pointerEvents"] = "auto";
+ row.getCell('details').getElement().firstChild.style["pointerEvents"] = "auto";
+
+ // Color background grey
+ row.getElement().style["background-color"] = COLOR_LIGHTGREY; // default
+ }
}
// Formats row selectable/unselectable
@@ -99,18 +167,23 @@ function func_selectableCheck(row){
);
}
-// Performes after row was updated
-function func_rowUpdated(row){
- // Refresh row formatters
- row.reformat();
+// Calculate dynamically sum of all LV ECTS by Student and display, when maximum ECTS are exceeded.
+// data = selected data, rows = selected rows
+function func_rowSelectionChanged(data, rows){
- // Deselect and disable new selection of updated rows
- row.deselect();
- row.getElement().style["pointerEvents"] = "none";
+ // Sum up over all anzurechnenden LV-ECTS by Prestudent
+ selectedPrestudentWithAccumulatedLvEcts = approveAnrechnung.getSumLvEctsByPreStudent(data);
- // ...but leave url links selectable
- row.getCell('dokument_bezeichnung').getElement().firstChild.style["pointerEvents"] = "auto";
- row.getCell('details').getElement().firstChild.style["pointerEvents"] = "auto";
+ // Loop through all active rows
+ var rowManager = tabulator.rowManager;
+ for (var i = 0; i < rowManager.activeRows.length; i++) {
+
+ // Reinitialize row -> triggers formatters.
+ rowManager.activeRows[i].reinitialize();
+ }
+
+ // Show number of selected rows.
+ approveAnrechnung.showNumberSelectedRows(rows);
}
// Returns tooltip
@@ -136,11 +209,12 @@ var format_empfehlung_anrechnung = function(cell, formatterParams){
* (Ignore rows that are approved, rejected or in request for recommendation)
*/
function tableWidgetHook_selectAllButton(tableWidgetDiv){
- tableWidgetDiv.find("#tableWidgetTabulator").tabulator('getRows', true)
+ var resultRows = tableWidgetDiv.find("#tableWidgetTabulator").tabulator('getRows', true)
.filter(row =>
row.getData().status_kurzbz == ANRECHNUNGSTATUS_PROGRESSED_BY_STGL
- )
- .forEach((row => row.select()));
+ );
+
+ tableWidgetDiv.find("#tableWidgetTabulator").tabulator('selectRow', resultRows);
}
@@ -275,13 +349,7 @@ $(function(){
e.stopImmediatePropagation();
// Get selected rows data
- let selected_data = $('#tableWidgetTabulator').tabulator('getSelectedData')
- .map(function(data){
- // reduce to necessary fields
- return {
- 'anrechnung_id' : data.anrechnung_id,
- }
- });
+ let selected_data = $('#tableWidgetTabulator').tabulator('getSelectedData');
// Alert and exit if no anrechnung is selected
if (selected_data.length == 0)
@@ -304,19 +372,70 @@ $(function(){
{
successCallback: function (data, textStatus, jqXHR)
{
- if (data.error && data.retval != null)
+ if (FHC_AjaxClient.isError(data))
{
// Print error message
- FHC_DialogLib.alertWarning(data.retval);
+ FHC_DialogLib.alertError(FHC_AjaxClient.getError(data));
}
-
- if (!data.error && data.retval != null)
+ else if (FHC_AjaxClient.hasData(data))
{
- // Update status 'genehmigt'
- $('#tableWidgetTabulator').tabulator('updateData', data.retval);
+ data = FHC_AjaxClient.getData(data);
+
+ var prestudenten = Object.keys(data.prestudenten);
+
+ // Find intersection of selected and in fact updated Anrechnungen (in case server did not approve all).
+ var updatedData = selected_data.filter(x => prestudenten.some(prestudent => x.prestudent_id == prestudent));
+
+ // Sum up over all anzurechnenden LV-ECTS by Prestudent
+ var sumLvEctsByPrestudent = approveAnrechnung.getSumLvEctsByPreStudent(updatedData);
+
+ // Loop through Prestudenten
+ // key = Prestudent, value = Approved Anrechnungen of Prestudent
+ Object.entries(data.prestudenten).forEach(([key, value]) => {
+
+ var rowsToDeselect = [];
+
+ // Get accumulated sum of all LV ECTS
+ var sumLvEcts = sumLvEctsByPrestudent.find(x => x.prestudent_id == key);
+
+ // Get ALL rows of that Prestudent
+ var rows = $('#tableWidgetTabulator').tabulator('searchRows', 'prestudent_id', '=', key);
+
+ // Loop through the rows
+ rows.forEach(row => {
+ var updateData = {};
+
+ // If Anrechnung was approved...
+ if ((value.findIndex(anrechnung_id => row.getData().anrechnung_id == anrechnung_id)) !== -1)
+ {
+ // ...update status
+ updateData.status_kurzbz = data.status_kurzbz;
+ updateData.status_bezeichnung = data.status_bezeichnung;
+
+ // ...and store row to be deselected later on
+ rowsToDeselect.push(row);
+ }
+
+ // Update 'Bisher schulische ECTS' and 'Bisher berufliche ECTS' with the Sum of new approved ECTS
+ updateData.ectsSumSchulisch = row.getData().ectsSumSchulisch + sumLvEcts.ectsSumAnzurechnendeLvsSchulisch,
+ updateData.ectsSumBeruflich = row.getData().ectsSumBeruflich + sumLvEcts.ectsSumAnzurechnendeLvsBeruflich
+
+
+ // Update row
+ row.update(updateData);
+
+ // Reformat row
+ row.reformat();
+
+ })
+
+ // Deselect rows
+ $("#tableWidgetTabulator").tabulator('deselectRow', rowsToDeselect);
+
+ })
// Print success message
- FHC_DialogLib.alertSuccess(FHC_PhrasesLib.t("ui", "anrechnungenWurdenGenehmigt"));
+ FHC_DialogLib.alertSuccess(FHC_PhrasesLib.t("ui", "anrechnungenWurdenGenehmigt"));
}
},
errorCallback: function (jqXHR, textStatus, errorThrown)
@@ -393,16 +512,21 @@ $(function(){
{
successCallback: function (data, textStatus, jqXHR)
{
- if (data.error && data.retval != null)
+ if (FHC_AjaxClient.isError(data))
{
// Print error message
- FHC_DialogLib.alertWarning(data.retval);
+ FHC_DialogLib.alertError(FHC_AjaxClient.getError(data));
}
-
- if (!data.error && data.retval != null)
+ else if (FHC_AjaxClient.hasData(data))
{
+ data = FHC_AjaxClient.getData(data);
+
// Update status 'genehmigt'
- $('#tableWidgetTabulator').tabulator('updateData', data.retval);
+ $('#tableWidgetTabulator').tabulator('updateData', data);
+
+ // Deselect rows
+ var indexesToDeselect = data.map(x => x.anrechnung_id);
+ $("#tableWidgetTabulator").tabulator('deselectRow', indexesToDeselect);
// Print success message
FHC_DialogLib.alertSuccess(FHC_PhrasesLib.t("ui", "anrechnungenWurdenAbgelehnt"));
@@ -457,20 +581,21 @@ $(function(){
{
successCallback: function (data, textStatus, jqXHR)
{
- if (data.error && data.retval != null)
+ if (FHC_AjaxClient.isError(data))
{
// Print error message
- FHC_DialogLib.alertWarning(data.retval);
+ FHC_DialogLib.alertError(FHC_AjaxClient.getError(data));
}
-
- if (!data.error && data.retval != null)
+ else if (FHC_AjaxClient.hasData(data))
{
+ data = FHC_AjaxClient.getData(data);
+
// Print info message, if not all selected recommendations were requested
- if (data.retval.length < selected_data.length){
+ if (data.length < selected_data.length){
FHC_DialogLib.alertInfo(
FHC_PhrasesLib.t(
"ui", "empfehlungWurdeAngefordertAusnahmeWoKeineLektoren",
- [selected_data.length, data.retval.length, selected_data.length - data.retval.length])
+ [selected_data.length, data.length, selected_data.length - data.length])
);
}
else
@@ -481,7 +606,11 @@ $(function(){
}
//Update status 'genehmigt'
- $('#tableWidgetTabulator').tabulator('updateData', data.retval);
+ $('#tableWidgetTabulator').tabulator('updateData', data);
+
+ // Deselect rows
+ var indexesToDeselect = data.map(x => x.anrechnung_id);
+ $("#tableWidgetTabulator").tabulator('deselectRow', indexesToDeselect);
},
errorCallback: function (jqXHR, textStatus, errorThrown)
{
@@ -595,5 +724,47 @@ var approveAnrechnung = {
break;
}
+ },
+ getSumLvEctsByPreStudent(data){
+
+ var result = [];
+
+ // Berechne für jeden Prestudenten die kumulierte Summe aller selektierten LV ECTS
+ data.reduce((prev, curr) => {
+
+ if (!prev[curr.prestudent_id])
+ {
+ prev[curr.prestudent_id] = {
+ prestudent_id: curr.prestudent_id,
+ ectsSumAnzurechnendeLvsSchulisch: 0,
+ ectsSumAnzurechnendeLvsBeruflich: 0
+ };
+
+ result.push(prev[curr.prestudent_id])
+ }
+
+ // Kumulierte Summe aller selektierten LVs, die angerechnet werden sollen, getrennt nach
+ // schulischer und beruflicher Qualifikation.
+ // Ausgenommen ist die universitäre Qualifikation (5), da diese unbegrenzt möglich sind.
+ if (curr.begruendung_id != 5)
+ {
+ if (curr.begruendung_id == 4)
+ {
+ prev[curr.prestudent_id].ectsSumAnzurechnendeLvsBeruflich += curr.ects;
+ }
+ else
+ {
+ prev[curr.prestudent_id].ectsSumAnzurechnendeLvsSchulisch += curr.ects;
+ }
+ }
+
+ return prev;
+
+ }, {});
+
+ return result;
+ },
+ showNumberSelectedRows(rows){
+ $('#number-selected').html("Ausgewählte Zeilen: " + rows.length + "");
}
}
\ No newline at end of file
diff --git a/public/js/lehre/anrechnung/requestAnrechnung.js b/public/js/lehre/anrechnung/requestAnrechnung.js
index b664812dc..dd93394d4 100644
--- a/public/js/lehre/anrechnung/requestAnrechnung.js
+++ b/public/js/lehre/anrechnung/requestAnrechnung.js
@@ -2,9 +2,54 @@ const ANRECHNUNGSTATUS_APPROVED = 'approved';
const ANRECHNUNGSTATUS_REJECTED = 'rejected';
const HERKUNFT_DER_KENNTNISSE_MAX_LENGTH = 125;
+const COLOR_DANGER = '#f2dede';
+
$(function(){
const uploadMaxFilesize = $('#requestAnrechnung-uploadfile').data('maxsize') ; // in byte
+ let status_kurzbz = $('#requestAnrechnung-status_kurzbz').data('status_kurzbz');
+ if (status_kurzbz != ' ' && status_kurzbz != ANRECHNUNGSTATUS_APPROVED)
+ {
+ var ectsLv = parseFloat($('#ects').text());
+ var sumEctsSchulisch = parseFloat($('#sumEctsSchulisch').text());
+ var sumEctsBeruflich = parseFloat($('#sumEctsBeruflich').text());
+ var begruendung_id = $('#requestAnrechnung-form :input[name="begruendung"]:checked').val();
+
+ // If Begründung is 'Hochschulzeugnis', return. They are accepted without limit.
+ if (begruendung_id == 5)
+ {
+ exit;
+ }
+
+ // If max ECTS is ecceeded
+ if (begruendung_id == 4)
+ {
+ if ((sumEctsSchulisch + sumEctsBeruflich + ectsLv) > 90 ||
+ (sumEctsBeruflich + ectsLv) > 60
+ )
+ {
+ // Get ECTS Überschreitungs-message, depending on schulische or berufliche Qualifikation
+ var msgBeiEctsUeberschreitung = requestAnrechnung.getMsgBeiEctsUeberschreitung(begruendung_id, ectsLv, sumEctsSchulisch, sumEctsBeruflich);
+
+ // Add to Checkbox text
+ $('#requestAnrechnung-form :input[name="begruendung"]:checked').closest('label').append(msgBeiEctsUeberschreitung);
+ }
+ }
+ else
+ {
+ if ((sumEctsSchulisch + sumEctsBeruflich + ectsLv) > 90 ||
+ (sumEctsSchulisch + ectsLv) > 60
+ )
+ {
+ // Get ECTS Überschreitungs-message, depending on schulische or berufliche Qualifikation
+ var msgBeiEctsUeberschreitung = requestAnrechnung.getMsgBeiEctsUeberschreitung(begruendung_id, ectsLv, sumEctsSchulisch, sumEctsBeruflich);
+
+ // Add to Checkbox text
+ $('#requestAnrechnung-form :input[name="begruendung"]:checked').closest('label').append(msgBeiEctsUeberschreitung);
+ }
+ }
+ }
+
// Set status alert color
requestAnrechnung.setStatusAlertColor();
@@ -17,12 +62,64 @@ $(function(){
// Init tooltips
requestAnrechnung.initTooltips();
+ // // Alert message, if maximum ECTS exceeded
+ requestAnrechnung.alertIfMaxEctsExceeded();
+
// Set chars counter for textarea 'Herkunft der Kenntnisse'
requestAnrechnung.setCharsCounter();
// If Sperregrund exists: display Sperre panel, hide Status panel and disable all form elements
requestAnrechnung.displaySperreIfHasSperregrund();
+
+ $('#requestAnrechnung-form :input[name="begruendung"]').click(function(e){
+ var ectsLv = parseFloat($('#ects').text());
+ var sumEctsSchulisch = parseFloat($('#sumEctsSchulisch').text());
+ var sumEctsBeruflich = parseFloat($('#sumEctsBeruflich').text());
+ var begruendung_id = $(this).val();
+
+ if ($(this).is(':checked'))
+ {
+ $('#sumEctsMsg').remove();
+
+ // If Begründung is 'Hochschulzeugnis', return. They are accepted without limit.
+ if (begruendung_id == 5)
+ {
+ return;
+ }
+
+ // If max ECTS is ecceeded
+ if (begruendung_id == 4)
+ {
+ if ((sumEctsSchulisch + sumEctsBeruflich + ectsLv) > 90 ||
+ (sumEctsBeruflich + ectsLv) > 60
+ )
+ {
+ // Get ECTS Überschreitungs-message for berufliche Qualifikation
+ var msgBeiEctsUeberschreitung = requestAnrechnung.getMsgBeiEctsUeberschreitung(begruendung_id, ectsLv, sumEctsSchulisch, sumEctsBeruflich);
+
+ // Add to Checkbox text
+ $(this).closest('label').append(msgBeiEctsUeberschreitung);
+ }
+ return;
+ }
+ else
+ {
+ if ((sumEctsSchulisch + sumEctsBeruflich + ectsLv) > 90 ||
+ (sumEctsSchulisch + ectsLv) > 60
+ )
+ {
+ // Get ECTS Überschreitungs-message for schulische Qualifikation
+ var msgBeiEctsUeberschreitung = requestAnrechnung.getMsgBeiEctsUeberschreitung(begruendung_id, ectsLv, sumEctsSchulisch, sumEctsBeruflich);
+
+ // Add to Checkbox text
+ $(this).closest('label').append(msgBeiEctsUeberschreitung);
+ }
+ }
+
+ }
+ })
+
$('#requestAnrechnung-form').submit(function(e){
// Avoid form redirecting automatically
@@ -183,5 +280,57 @@ var requestAnrechnung = {
return true;
}
+ },
+ sumUpEcts: function(begruendung_id, ects, sumEctsSchulisch, sumEctsBeruflich){
+ if (begruendung_id == 5)
+ {
+ return;
+ }
+
+ if (begruendung_id == 4)
+ {
+ $('#sumEctsBeruflich').text(parseFloat(sumEctsBeruflich) + parseFloat(ects));
+ }
+ else
+ {
+ $('#sumEctsSchulisch').text(parseFloat(sumEctsSchulisch) + parseFloat(ects));
+ }
+
+ $('#sumEctsTotal').text(parseFloat(sumEctsSchulisch) + parseFloat(sumEctsBeruflich) + parseFloat(ects));
+
+
+ },
+ alertIfMaxEctsExceeded: function(){
+
+ if(
+ (parseFloat($('#sumEctsSchulisch').text())) > 60 ||
+ (parseFloat($('#sumEctsBeruflich').text())) > 60 ||
+ (parseFloat($('#sumEctsSchulisch').text()) + parseFloat($('#sumEctsBeruflich').text())) > 90
+ )
+ {
+ $('#requestAnrechnung-maxEctsUeberschrittenMsg')
+ .html(" Die Höchstgrenze für Anrechnungen gem. § 12 Abs. 3 Fachhochschulgesetz ist überschritten. ")
+ .addClass('bg-danger text-danger')
+ .tooltip({
+ title: FHC_PhrasesLib.t("anrechnung", "anrechnungEctsTooltipTextBeiUeberschreitung"),
+ placement: 'right',
+ html: true
+ });
+ }
+ },
+ getMsgBeiEctsUeberschreitung: function(begruendung_id, ects, sumEctsSchulisch, sumEctsBeruflich){
+
+ return $('')
+ .html(FHC_PhrasesLib.t("anrechnung", "anrechnungEctsTextBeiUeberschreitung",
+ begruendung_id == 4
+ ? [(sumEctsSchulisch + sumEctsBeruflich + ects), sumEctsSchulisch, (sumEctsBeruflich + ects)] // beruflich
+ : [(sumEctsSchulisch + sumEctsBeruflich + ects), (sumEctsSchulisch + ects), sumEctsBeruflich])) // schulisch
+ .append('')
+ .addClass('bg-danger text-danger')
+ .tooltip({
+ title: FHC_PhrasesLib.t("anrechnung", "anrechnungEctsTooltipTextBeiUeberschreitung"),
+ placement: 'right',
+ html: true
+ });
}
}
\ No newline at end of file
diff --git a/public/js/lehre/anrechnung/reviewAnrechnungUebersicht.js b/public/js/lehre/anrechnung/reviewAnrechnungUebersicht.js
index 2cf7c1623..fd7155fa0 100644
--- a/public/js/lehre/anrechnung/reviewAnrechnungUebersicht.js
+++ b/public/js/lehre/anrechnung/reviewAnrechnungUebersicht.js
@@ -65,7 +65,7 @@ function func_tableBuilt(table) {
},
target:"_blank"
}
- }, false, "status" // place column after status
+ }, true // place column on the very left
);
}
@@ -127,11 +127,12 @@ var format_empfehlung_anrechnung = function(cell, formatterParams){
* (Ignore rows that are approved, rejected or in request for recommendation)
*/
function tableWidgetHook_selectAllButton(tableWidgetDiv){
- tableWidgetDiv.find("#tableWidgetTabulator").tabulator('getRows', true)
+ var resultRows = tableWidgetDiv.find("#tableWidgetTabulator").tabulator('getRows', true)
.filter(row =>
row.getData().status_kurzbz == ANRECHNUNGSTATUS_PROGRESSED_BY_LEKTOR
- )
- .forEach((row => row.select()));
+ );
+
+ tableWidgetDiv.find("#tableWidgetTabulator").tabulator('selectRow', resultRows);
}
diff --git a/public/js/lehre/lehrauftrag/acceptLehrauftrag.js b/public/js/lehre/lehrauftrag/acceptLehrauftrag.js
index a39fe3667..08a0645bc 100644
--- a/public/js/lehre/lehrauftrag/acceptLehrauftrag.js
+++ b/public/js/lehre/lehrauftrag/acceptLehrauftrag.js
@@ -274,12 +274,13 @@ function func_renderComplete(table){
* Select all (filtered) rows and ignore rows that are bestellt and erteilt
*/
function tableWidgetHook_selectAllButton(tableWidgetDiv){
- tableWidgetDiv.find("#tableWidgetTabulator").tabulator('getRows', true)
+ var resultRows = tableWidgetDiv.find("#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()));
+ row.getData().status != 'Geändert'); // AND NOT geändert
+
+ tableWidgetDiv.find("#tableWidgetTabulator").tabulator('selectRow', resultRows);
}
// -----------------------------------------------------------------------------------------------------------------
diff --git a/public/js/lehre/lehrauftrag/approveLehrauftrag.js b/public/js/lehre/lehrauftrag/approveLehrauftrag.js
index cd8816c1e..c16016cf5 100644
--- a/public/js/lehre/lehrauftrag/approveLehrauftrag.js
+++ b/public/js/lehre/lehrauftrag/approveLehrauftrag.js
@@ -319,12 +319,13 @@ function func_rowUpdated(row){
* Select all (filtered) rows that are bestellt
*/
function tableWidgetHook_selectAllButton(tableWidgetDiv){
- tableWidgetDiv.find("#tableWidgetTabulator").tabulator('getRows', true)
+ var resultRows = tableWidgetDiv.find("#tableWidgetTabulator").tabulator('getRows', true)
.filter(row => row.getData().personalnummer >= 0 && // NOT dummies
row.getData().bestellt != null && // AND bestellt
row.getData().erteilt == null && // AND NOT erteilt
- row.getData().status != 'Geändert') // AND NOT geaendert
- .forEach((row => row.select()));
+ row.getData().status != 'Geändert'); // AND NOT geaendert
+
+ tableWidgetDiv.find("#tableWidgetTabulator").tabulator('selectRow', resultRows);
}
// -----------------------------------------------------------------------------------------------------------------
diff --git a/public/js/lehre/lehrauftrag/orderLehrauftrag.js b/public/js/lehre/lehrauftrag/orderLehrauftrag.js
index d6b165b65..06db3ce60 100644
--- a/public/js/lehre/lehrauftrag/orderLehrauftrag.js
+++ b/public/js/lehre/lehrauftrag/orderLehrauftrag.js
@@ -343,7 +343,7 @@ function func_rowUpdated(row){
* Select all (filtered) rows and ignore rows which have status bestellt
*/
function tableWidgetHook_selectAllButton(tableWidgetDiv){
- tableWidgetDiv.find("#tableWidgetTabulator").tabulator('getRows', true)
+ var resultRows = tableWidgetDiv.find("#tableWidgetTabulator").tabulator('getRows', true)
.filter(row => (
row.getData().personalnummer > 0 || // not dummies
row.getData().personalnummer == null) && // include Projektbetreuer
@@ -355,8 +355,9 @@ function tableWidgetHook_selectAllButton(tableWidgetDiv){
(row.getData().bestellt != null && // OR (bestellt
row.getData().status == 'Geändert') // AND geaendert)
)
- )
- .forEach((row => row.select()));
+ );
+
+ tableWidgetDiv.find("#tableWidgetTabulator").tabulator('selectRow', resultRows);
}
// -----------------------------------------------------------------------------------------------------------------
diff --git a/rdf/anrechnung.rdf.php b/rdf/anrechnung.rdf.php
index 14fc1fd1a..8b4858679 100644
--- a/rdf/anrechnung.rdf.php
+++ b/rdf/anrechnung.rdf.php
@@ -32,8 +32,10 @@ if(is_numeric($anrechnung_id))
// Add last Anrechnungstatus
$anrechnungstatus = new Anrechnung();
$anrechnungstatus->getLastAnrechnungstatus($anrechnung_id);
-
- $anrechnung->result[0]->status = $anrechnungstatus->result[0]->bezeichnung_mehrsprachig[DEFAULT_LANGUAGE];
+ if(isset($anrechnungstatus->result[0]))
+ $anrechnung->result[0]->status = $anrechnungstatus->result[0]->bezeichnung_mehrsprachig[DEFAULT_LANGUAGE];
+ else
+ $anrechnung->result[0]->status = '';
}
elseif(is_numeric($prestudent_id))
{
@@ -46,7 +48,10 @@ elseif(is_numeric($prestudent_id))
{
$anrechnungstatus = new Anrechnung();
$status = $anrechnungstatus->getLastAnrechnungstatus($row->anrechnung_id);
- $row->status = $anrechnungstatus->result[0]->bezeichnung_mehrsprachig[DEFAULT_LANGUAGE];
+ if(isset($anrechnungstatus->result[0]))
+ $row->status = $anrechnungstatus->result[0]->bezeichnung_mehrsprachig[DEFAULT_LANGUAGE];
+ else
+ $row->status = '';
}
}
}
diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php
index 6824d350f..f86c6bdf4 100644
--- a/system/dbupdate_3.3.php
+++ b/system/dbupdate_3.3.php
@@ -5169,6 +5169,19 @@ if ($result = @$db->db_query("SELECT 1 FROM lehre.tbl_anrechnung_begruendung WHE
}
}
+// Added Bezeichnung 'Hochschulzeugnis' to Anrechnungbegruendung
+if ($result = @$db->db_query("SELECT 1 FROM lehre.tbl_anrechnung_begruendung WHERE bezeichnung = 'Hochschulzeugnis';"))
+{
+ if ($db->db_num_rows($result) == 0)
+ {
+ $qry = "INSERT INTO lehre.tbl_anrechnung_begruendung (bezeichnung) VALUES('Hochschulzeugnis');";
+ if (!$db->db_query($qry))
+ echo 'lehre.tbl_anrechnung_begruendung '.$db->db_last_error().' ';
+ else
+ echo ' lehre.tbl_anrechnung_begruendung: Added bezeichnung "Hochschulzeugnis" ';
+ }
+}
+
// Add permission to apply for Anrechnung
if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'student/anrechnung_beantragen';"))
{
@@ -5668,6 +5681,46 @@ if($result = $db->db_query("SELECT 1 FROM system.tbl_app WHERE app='dvuh'"))
}
}
+if($result = $db->db_query("SELECT 1 FROM system.tbl_app WHERE app = 'international' "))
+{
+ if($db->db_num_rows($result)==0)
+ {
+ $qry = "INSERT INTO system.tbl_app(app) VALUES('international');";
+
+ if(!$db->db_query($qry))
+ echo 'App: '.$db->db_last_error().' ';
+ else
+ echo ' Neue App international in system.tbl_app hinzugefügt';
+ }
+}
+
+
+// Add DMS category "international_nachweis"
+if ($result = @$db->db_query("SELECT 1 FROM campus.tbl_dms_kategorie WHERE kategorie_kurzbz = 'international_nachweis';"))
+{
+ if ($db->db_num_rows($result) == 0)
+ {
+ $qry = "INSERT INTO campus.tbl_dms_kategorie (
+ kategorie_kurzbz,
+ bezeichnung,
+ beschreibung,
+ parent_kategorie_kurzbz,
+ oe_kurzbz,
+ berechtigung_kurzbz
+ ) VALUES(
+ 'international_nachweis',
+ 'International Nachweis',
+ 'Nachweis der Internationalisierungsmaßnahmen',
+ 'fas',
+ 'etw',
+ NULL
+ );";
+ if (!$db->db_query($qry))
+ echo 'campus.tbl_dms_kategorie '.$db->db_last_error().' ';
+ else
+ echo ' campus.tbl_dms_kategorie: Added category "international_nachweis"! ';
+ }
+}
// Add table issue_status
if(!$result = @$db->db_query("SELECT 1 FROM system.tbl_issue_status LIMIT 1;"))
{
@@ -6259,6 +6312,175 @@ if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berecht
}
}
+// Neue Funktion get_ects_summe_schulisch
+if(!@$db->db_query("SELECT public.get_ects_summe_schulisch('', 0, 0)"))
+{
+ $qry = 'CREATE FUNCTION public.get_ects_summe_schulisch(character varying, integer, integer) RETURNS numeric
+ LANGUAGE plpgsql
+ AS $_$
+ DECLARE var_student_uid ALIAS FOR $1;
+ DECLARE var_prestudent_id ALIAS FOR $2;
+ DECLARE var_studiengang_kz ALIAS FOR $3;
+ DECLARE var_einstiegsausbildungssemester integer;
+ DECLARE var_einstiegsstudiensemester_kurzbz varchar(32);
+ DECLARE var_einstiegsorgform_kurzbz varchar(32);
+ DECLARE rec_quereinstiegs_studiensemester RECORD;
+ DECLARE sum_quereinstiegs_ects numeric(4, 1) := 0;
+ DECLARE sum_schulische_ects numeric(4, 1) := 0;
+
+
+ BEGIN
+
+ -- IF STUDENT IS QUEREINSTEIGER, GET ECTS SUMME OF ANGERECHNETE SEMESTER
+ -- Get Einstiegssemester
+ SELECT INTO var_einstiegsausbildungssemester , var_einstiegsstudiensemester_kurzbz, var_einstiegsorgform_kurzbz ausbildungssemester, studiensemester_kurzbz, orgform_kurzbz from public.tbl_prestudentstatus
+ WHERE prestudent_id = var_prestudent_id
+ AND status_kurzbz = \'Student\'
+ ORDER BY datum, insertamum, ext_id
+ LIMIT 1;
+
+ -- If Einstiegssemester > 1 (= Quereinsteiger)
+ IF (var_einstiegsausbildungssemester > 1) THEN
+ -- ...get all Quereinstiegssemester
+ FOR rec_quereinstiegs_studiensemester IN SELECT studiensemester_kurzbz FROM public.tbl_studiensemester
+ WHERE ende <= (select start from public.tbl_studiensemester WHERE studiensemester_kurzbz = var_einstiegsstudiensemester_kurzbz )
+ ORDER BY start DESC
+ LIMIT (var_einstiegsausbildungssemester -1)
+ -- ...loop the Quereinstiegssemester
+ LOOP
+ -- ...and sum up ECTS of each Quereinstiegssemester
+ sum_quereinstiegs_ects = sum_quereinstiegs_ects + (SELECT
+ SUM(tbl_lehrveranstaltung.ects)
+ FROM
+ lehre.tbl_studienplan
+ JOIN lehre.tbl_studienplan_lehrveranstaltung USING (studienplan_id)
+ JOIN lehre.tbl_lehrveranstaltung USING (lehrveranstaltung_id)
+ WHERE
+ tbl_studienplan.studienplan_id = (
+ SELECT
+ studienplan_id
+ FROM
+ lehre.tbl_studienordnung
+ JOIN lehre.tbl_studienplan USING (studienordnung_id)
+ JOIN lehre.tbl_studienplan_semester USING (studienplan_id)
+ WHERE tbl_studienordnung.studiengang_kz = var_studiengang_kz
+ AND tbl_studienplan_semester.semester = var_einstiegsausbildungssemester - 1
+ AND tbl_studienplan_semester.studiensemester_kurzbz = rec_quereinstiegs_studiensemester.studiensemester_kurzbz
+ AND tbl_studienplan.orgform_kurzbz = var_einstiegsorgform_kurzbz
+
+ LIMIT 1
+ )
+ AND tbl_studienplan_lehrveranstaltung.semester = var_einstiegsausbildungssemester
+ AND studienplan_lehrveranstaltung_id_parent IS NULL -- auf Modulebene
+ AND tbl_studienplan_lehrveranstaltung.export = TRUE);
+
+ var_einstiegsausbildungssemester = var_einstiegsausbildungssemester - 1;
+ END LOOP;
+ END IF;
+
+
+ -- GET ECTS SUMME OF ALLE BISHER ANGERECHNETEN LEHRVERANSTALTUNGEN. ANRECHNUNGSGRUND: SCHULISCH.
+ SELECT INTO sum_schulische_ects COALESCE(SUM(ects), 0) FROM (
+ SELECT
+ lehrveranstaltung_id, studiensemester_kurzbz, ects
+ FROM
+ lehre.tbl_zeugnisnote
+ LEFT JOIN lehre.tbl_anrechnung USING(lehrveranstaltung_id, studiensemester_kurzbz)
+ JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
+ JOIN public.tbl_student USING(student_uid)
+ WHERE
+ tbl_zeugnisnote.note = 6
+ AND student_uid = var_student_uid
+ AND lehre.tbl_anrechnung.prestudent_id IN (tbl_student.prestudent_id, NULL)
+ AND begruendung_id != 5 -- universitäre ECTS nicht mitrechnen
+ AND begruendung_id != 4 -- berufliche ECTS nicht mitrechnen
+ AND (anrechnung_id IS NULL OR (anrechnung_id IS NOT NULL AND genehmigt_von IS NOT NULL )) -- Anrechnungen aus Zeit vor Anrechnungstool ODER digitale Anrechnungen mit Noteneintrag UND Genehmigung (wichtig, um zurückgenommene Genehmigungen, die in der Notentabelle noch als angerechnet eingetragen sind, rauszufiltern)
+
+ UNION
+
+ SELECT
+ lehrveranstaltung_id, studiensemester_kurzbz, ects
+ FROM
+ lehre.tbl_anrechnung
+ JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
+ JOIN public.tbl_student USING(prestudent_id)
+ WHERE
+ genehmigt_von IS NOT NULL
+ AND student_uid = var_student_uid
+ AND begruendung_id != 5 -- universitäre ECTS nicht mitrechnen
+ AND begruendung_id != 4 -- berufliche ECTS nicht mitrechnen
+ ) lvsangerechnet;
+
+ -- BUILD ECTS SUMME OF QUEREINSTIEGSSEMESTER- + ANGERECHNETEN LVs-ECTS
+ -- Summe aller bisher schulisch begründet angerechneten LVs + der Quereinstiegssemester
+ sum_schulische_ects = sum_schulische_ects + sum_quereinstiegs_ects;
+
+ RETURN sum_schulische_ects ;
+
+ END;
+ $_$;
+
+ ALTER FUNCTION public.get_ects_summe_schulisch(character varying, integer, integer) OWNER TO fhcomplete;';
+
+ if(!$db->db_query($qry))
+ echo 'public.get_ects_summe_schulisch(student_uid, prestudent_id, studiengang_kz): '.$db->db_last_error().' ';
+ else
+ echo ' Funktion public.get_ects_summe_schulisch(student_uid, prestudent_id, studiengang_kz) hinzugefügt';
+}
+
+// Neue Funktion get_ects_summe_beruflich
+if(!@$db->db_query("SELECT public.get_ects_summe_beruflich('')"))
+{
+ $qry = 'CREATE FUNCTION public.get_ects_summe_beruflich(character varying) RETURNS numeric
+ LANGUAGE plpgsql
+ AS $_$
+ DECLARE var_student_uid ALIAS FOR $1;
+ DECLARE sum_berufliche_ects numeric(4, 1) := 0;
+
+ BEGIN
+
+ SELECT INTO sum_berufliche_ects COALESCE(SUM(ects), 0) FROM (
+ SELECT
+ lehrveranstaltung_id, studiensemester_kurzbz, ects
+ FROM
+ lehre.tbl_zeugnisnote
+ LEFT JOIN lehre.tbl_anrechnung USING(lehrveranstaltung_id, studiensemester_kurzbz)
+ JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
+ JOIN public.tbl_student USING(student_uid)
+ WHERE
+ tbl_zeugnisnote.note = 6
+ AND student_uid = var_student_uid
+ AND lehre.tbl_anrechnung.prestudent_id IN (tbl_student.prestudent_id, NULL)
+ AND begruendung_id = 4 -- beruflich
+ AND (anrechnung_id IS NULL OR (anrechnung_id IS NOT NULL AND genehmigt_von IS NOT NULL )) -- Anrechnungen aus Zeit vor Anrechnungstool ODER digitale Anrechnungen mit Noteneintrag UND Genehmigung (wichtig, um zurückgenommene Genehmigungen, die in der Notentabelle noch als angerechnet eingetragen sind, rauszufiltern)
+
+ UNION
+
+ SELECT
+ lehrveranstaltung_id, studiensemester_kurzbz, ects
+ FROM
+ lehre.tbl_anrechnung
+ JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
+ JOIN public.tbl_student USING(prestudent_id)
+ WHERE
+ genehmigt_von is not null
+ AND student_uid = var_student_uid
+ AND begruendung_id = 4 -- beruflich
+ ) lvsangerechnet;
+
+ RETURN sum_berufliche_ects;
+
+ END;
+ $_$;
+
+ ALTER FUNCTION public.get_ects_summe_beruflich(character varying) OWNER TO fhcomplete;';
+
+ if(!$db->db_query($qry))
+ echo 'public.get_ects_summe_beruflich(student_uid): '.$db->db_last_error().' ';
+ else
+ echo ' Funktion public.get_ects_summe_beruflich(student_uid) hinzugefügt';
+}
+
// Grant SELECT to bis.tbl_gsprogramm for web-user
if($result = @$db->db_query("SELECT * FROM information_schema.role_table_grants WHERE table_name='tbl_gsprogramm' AND table_schema='bis' AND grantee='web' AND privilege_type in ('SELECT')"))
{
diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php
index ca59997fa..2f62e4138 100644
--- a/system/phrasesupdate.php
+++ b/system/phrasesupdate.php
@@ -10557,18 +10557,38 @@ Any unusual occurrences
'phrases' => array(
array(
'sprache' => 'German',
- 'text' => 'eines Zeugnisses (vgl. § 4 Abs. 5 Satzung „Studienrechtliche Bestimmungen / Prüfungsordnung)',
+ 'text' => 'eines Zeugnisses (vgl. § 4 Abs. 8 Satzung „Studienrechtliche Bestimmungen / Prüfungsordnung)',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
- 'text' => 'a certificate (see § 4 para. 5, Statute on Studies Act Provisions / Examination Regulations of the UASTW)',
+ 'text' => 'a certificate (see § 4 para. 8, Statute on Studies Act Provisions / Examination Regulations of the UASTW)',
'description' => '',
'insertvon' => 'system'
)
)
),
+ array(
+ 'app' => 'core',
+ 'category' => 'anrechnung',
+ 'phrase' => 'antragStellenWegenHochschulzeugnis',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'eines Hochschulzeugnisses (vgl. § 4 Abs. 8 Satzung „Studienrechtliche Bestimmungen / Prüfungsordnung)',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'a university certificate (see § 4 para. 8, Statute on Studies Act Provisions / Examination Regulations of the UASTW)',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
array(
'app' => 'core',
'category' => 'anrechnung',
@@ -10577,18 +10597,118 @@ Any unusual occurrences
'phrases' => array(
array(
'sprache' => 'German',
- 'text' => 'der nachgewiesenen beruflichen Praxis ((vgl. § 4 Abs. 6 Satzung „Studienrechtliche Bestimmungen / Prüfungsordnung)',
+ 'text' => 'der nachgewiesenen beruflichen Praxis (vgl. § 4 Abs. 9 Satzung „Studienrechtliche Bestimmungen / Prüfungsordnung)',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
- 'text' => 'professional practice (see § 4 para. 6, Statute on Studies Act Provisions / Examination Regulations of the UASTW)',
+ 'text' => 'professional practice (see § 4 para. 9, Statute on Studies Act Provisions / Examination Regulations of the UASTW)',
'description' => '',
'insertvon' => 'system'
)
)
),
+ array(
+ 'app' => 'core',
+ 'category' => 'anrechnung',
+ 'phrase' => 'bisherAngerechneteEcts',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Bisher angerechnete ECTS',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'All previous recognized ECTS',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'anrechnung',
+ 'phrase' => 'anrechnungEctsTooltipText',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Anzeige der Summe der bisher angerechneten ECTS. Für Quereinsteiger in ein höheres Semester werden die ECTS der angerechneten Semester berücksichtigt.
Seit Oktober 2021 gelten Höchstgrenzen für Anrechnungen: max. 60 ECTS für schulische Zeugnisse (anrechenbar sind nur BHS- und AHS-Zeugnisse!) max. 60 ECTS für berufliche Qualifikationen max. 90 ECTS INSGESAMT für schulische und berufliche Qualifikationen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Sum of previous recognized ECTS. Lateral Entries are considered with ECTS of the recognized semester.
Maximum ECTS limits are applied since Octobre 2021:
max. 60 ECTS school qualification (BHS and AHS only) max. 60 ECTS professional qualification max. 90 ECTS OVERALL for school and professional qualification',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'anrechnung',
+ 'phrase' => 'anrechnungEctsTooltipTextBeiUeberschreitung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Seit Oktober 2021 gelten Höchstgrenzen für Anrechnungen: max. 60 ECTS für schulische Zeugnisse (anrechenbar sind nur BHS- und AHS-Zeugnisse!) max. 60 ECTS für berufliche Qualifikationen max. 90 ECTS INSGESAMT für schulische Zeugnisse und berufliche Qualifikationen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Maximum ECTS limits are applied since Octobre 2021: max. 60 ECTS school qualification (BHS and AHS only) max. 60 ECTS professional qualification max. 90 ECTS OVERALL for school and professional qualification',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'anrechnung',
+ 'phrase' => 'anrechnungEctsTextBeiUeberschreitung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => ' Die Höchstgrenze für Anrechnungen gem. § 12 Abs. 3 Fachhochschulgesetz wird überschritten. Bisherige ECTS + ECTS dieser LV: Total: {0} [ Schulisch: {1} | Beruflich: {2} ] ',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => ' Exceedance of maximum limit for exemption (see § 12 para. 3, Regulations of the UASTW). Former ECTS + ECTS of this course: Total: {0} [ School qualification: {1} | Professional qualification: {2} ] ',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'anrechnung',
+ 'phrase' => 'textUebernehmenOderEigenenBegruendungstext',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Begründungstext aus Liste übernehmen oder eigene Begründung angeben',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Copy reason from list above or write your own reason',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
array(
'app' => 'core',
'category' => 'anrechnung',
@@ -11609,6 +11729,26 @@ Any unusual occurrences
)
)
),
+ array(
+ 'app' => 'core',
+ 'category' => 'anrechnung',
+ 'phrase' => 'genehmigungNegativEctsHoechstgrenzeUeberschritten',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Anrechnung wird nicht genehmigt aufgrund einer Überschreitung der Höchstgrenzen für Anrechnungen gem. § 12 Abs. 3 Fachhochschulgesetz.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Recognition and exemption is rejected because of exceedance of maximum limit for exemption (see § 12 para. 3, Regulations of the UASTW).',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
array(
'app' => 'core',
'category' => 'anrechnung',
@@ -12114,18 +12254,15 @@ Any unusual occurrences
'phrases' => array(
array(
'sprache' => 'German',
- 'text' => "Beantragung aufgrund nachgewiesener beruflicher Praxis
- Soll die Anrechnung auf der Grundlage der beruflichen Praxis erfolgen, laden Sie bitte eine detaillierte
- Tätigkeitsbeschreibung hoch. Dies kann durch betriebliche Ausbildungsnachweise und / oder Nachweise von
- einschlägigen beruflichen Tätigkeiten mit Zeitangaben (z. B. durch ein qualifiziertes Arbeitszeugnis
- oder durch Bestätigungen des Arbeitgebers) erfolgen.",
+ 'text' => "Beantragung aufgrund beruflicher Praxis
+ Bitte erstellen Sie eine detaillierte Tätigkeitsbeschreibung. Dafür steht im CIS ein Formular zur Verfügung, das in ein PDF-Dokument umzuwandeln und gemeinsam mit dem Lebenslauf hochzuladen ist.",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Application for recognition based on professional practice
- If the exemption is to be based on professional practice, please upload a detailed job description. This can be done through proof of company training and / or proof of relevant occupational activities with time information (e.g. through a qualified job reference or through confirmation from the employer).",
+ Please supply a detailed job description. Therefore a formular is provided in CIS, that should be converted as pdf file and supplied together with your CV.",
'description' => '',
'insertvon' => 'system'
)
@@ -12263,7 +12400,7 @@ array(
Wirtschaftsinformatik
Bei Anrechnungen von beruflicher Praxis
- Bitte geben Sie Unternehmen, Position und Funktion sowie Dauer der Beschäftigung an.",
+ Bitte erstellen Sie eine detaillierte Tätigkeitsbeschreibung. Dafür steht im CIS ein Formular zur Verfügung, das in ein PDF-Dokument umzuwandeln und gemeinsam mit dem Lebenslauf hochzuladen ist.",
'description' => '',
'insertvon' => 'system'
),
@@ -12273,7 +12410,7 @@ array(
Please indicate where you acquired the knowledge: type of (university) school, location, subject area. Example school: HTL Mödling, vehicle technology; Example university: Vienna University of Technology, Bachelor of Business Informatics
If professional practice is to be recognized
- Please state company, position and function as well as length of employment.",
+ Please supply a detailed job description. Therefore a formular is provided on CIS, that should be converted as pdf file and supplied together with the CV.",
'description' => '',
'insertvon' => 'system'
)
@@ -12414,10 +12551,8 @@ array(
Zeitlicher Umfang der Lehrveranstaltung (z. B. SWS, ECTS, Unterrichtsstunden…)
- Beantragung aufgrund nachgewiesener beruflicher Praxis
- Es wird eine detaillierte Tätigkeitsbeschreibung benötigt. Dies kann durch betriebliche Ausbildungsnachweise und / oder Nachweise von
- einschlägigen beruflichen Tätigkeiten mit Zeitangaben (z. B. durch ein qualifiziertes Arbeitszeugnis
- oder durch Bestätigungen des Arbeitgebers) erfolgen.
+ Beantragung aufgrund beruflicher Praxis
+ Es wird eine detaillierte Tätigkeitsbeschreibung benötigt. Dafür steht im CIS ein Formular zur Verfügung, das in ein PDF-Dokument umzuwandeln und gemeinsam mit dem Lebenslauf hochzuladen ist.
Falls diese Informationen nicht enthalten sind, kann der Antrag nicht geprüft werden und er wird abgelehnt.",
'description' => '',
'insertvon' => 'system'
@@ -12434,7 +12569,7 @@ array(
Application for recognition based on professional practice
- If the exemption is to be based on professional practice, an upload of a detailed job description is required. This can be done through proof of company training and / or proof of relevant occupational activities with time information (e.g. through a qualified job reference or through confirmation from the employer).
+ If the exemption is to be based on professional practice, an upload of a detailed job description is required. Therefore a formular is provided in CIS, that should be converted as pdf file and supplied together with the CV.
If this information is not included, the application can not be checked adequately and it might need to be rejected.',
'description' => '',
'insertvon' => 'system'
@@ -15041,13 +15176,13 @@ array(
'phrases' => array(
array(
'sprache' => 'German',
- 'text' => "Im Rahmen des KVP (Kontinuierlicher Verbesserungsprozess) können Sie hier wichtige Fehler und/oder Verbesserungen einmelden. Diese können sich auf technische, inhaltliche, medien-didaktische oder test- und prüfungsrelevante Aspekte beziehen. Eine mögliche Umsetzung Ihrer Einmeldungen für das folgende Studienjahr wird im KVP geprüft und priorisiert, und ggf. im Anschluss vom Teamlead im Quellkurs entsprechend eingearbeitet.",
+ 'text' => "Im Rahmen der Weiterentwicklung von Lehrveranstaltungen können Sie hier wichtige Ideen für die Weiterentwicklung und/oder Verbesserungen einmelden. Diese können sich auf technische, inhaltliche, medien-didaktische oder test- und prüfungsrelevante Aspekte beziehen. Eine mögliche Umsetzung Ihrer Einmeldungen für das folgende Studienjahr wird im Weiteren Ablauf geprüft und priorisiert, und ggf. im Anschluss vom Teamlead im Quellkurs entsprechend eingearbeitet.",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
- 'text' => "Im Rahmen des KVP (Kontinuierlicher Verbesserungsprozess) können Sie hier wichtige Fehler und/oder Verbesserungen einmelden. Diese können sich auf technische, inhaltliche, medien-didaktische oder test- und prüfungsrelevante Aspekte beziehen. Eine mögliche Umsetzung Ihrer Einmeldungen für das folgende Studienjahr wird im KVP geprüft und priorisiert, und ggf. im Anschluss vom Teamlead im Quellkurs entsprechend eingearbeitet.",
+ 'text' => "Im Rahmen der Weiterentwicklung von Lehrveranstaltungen können Sie hier wichtige Ideen für die Weiterentwicklung und/oder Verbesserungen einmelden. Diese können sich auf technische, inhaltliche, medien-didaktische oder test- und prüfungsrelevante Aspekte beziehen. Eine mögliche Umsetzung Ihrer Einmeldungen für das folgende Studienjahr wird im Weiteren Ablauf geprüft und priorisiert, und ggf. im Anschluss vom Teamlead im Quellkurs entsprechend eingearbeitet.",
'description' => '',
'insertvon' => 'system'
)
@@ -15972,7 +16107,657 @@ array(
'insertvon' => 'system'
)
)
- )
+ ),
+ array(
+ 'app' => 'international',
+ 'category' => 'international',
+ 'phrase' => 'studiensemesterGeplant',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Studiensemester geplant',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Semester planned',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'international',
+ 'category' => 'international',
+ 'phrase' => 'bestaetigungHochladen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Bestätigung hochladen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Upload confirmation',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'international',
+ 'category' => 'international',
+ 'phrase' => 'massnahmeLoeschen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Maßnahme löschen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Delete measure',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'international',
+ 'category' => 'international',
+ 'phrase' => 'massnahmen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Maßnahmen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Measures',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'international',
+ 'category' => 'international',
+ 'phrase' => 'internationalskills',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'International skills',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'International skills',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'international',
+ 'category' => 'international',
+ 'phrase' => 'massnahmen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Internationalisierungsmaßnahmen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Internationalization measures',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'international',
+ 'category' => 'international',
+ 'phrase' => 'internationalbeschreibung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Ab dem Studienjahr 2022/23 ist der Erwerb von internationalen und interkulturellen Kompetenzen Teil des Curriculums.
+ Auf der Grundlage der vorliegenden Maßnahmen absolvieren Sie im Laufe ihres Studiums Internationalisierungsaktivitäten, die mit unterschiedlichen ECTS-Punkten hinterlegt sind.
+ In Summe müssen 5 ECTS erworben werden, die im 6. Semester wirksam werden.
+ Das Modul „International skills“ wird mit der Beurteilung „Mit Erfolg teilgenommen“ abgeschlossen.
+ Bitte wählen Sie die für Sie in Frage kommenden Maßnahmen aus und planen Sie das entsprechende Semester.
+ Sobald die 5 ECTS erreicht wurden, überprüft der Studiengang die von Ihnen hochgeladenen Dokumente.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Starting with the study year 2022/23, the acquisition of international and intercultural competencies is part of the curriculum.
+ On the basis of the measures at-hand, you will complete internationalization activities during the course of your studies, which are assigned different ECTS credits.
+ In total, 5 ECTS must be acquired, which become effective in the 6th semester.
+ The module “International skills” is completed with the assessment "Successfully participated".
+ Please select the measures that apply to you and schedule the appropriate semester.
+ Once the 5 ECTS have been achieved, the degree program will review the documents you have uploaded.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'international',
+ 'category' => 'international',
+ 'phrase' => 'nurBachelor',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Nur für Bachelorstudiengänge.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Only for bachelor programmes.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'international',
+ 'category' => 'international',
+ 'phrase' => 'bezeichnung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Bezeichnung Deutsch',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'title german',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'international',
+ 'category' => 'international',
+ 'phrase' => 'bezeichnungeng',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Bezeichnung Englisch',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'title english',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'international',
+ 'category' => 'international',
+ 'phrase' => 'beschreibung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Beschreibung Deutsch',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'description german',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'international',
+ 'category' => 'international',
+ 'phrase' => 'beschreibungeng',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Beschreibung Englisch',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'description english',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'international',
+ 'category' => 'international',
+ 'phrase' => 'massnahmeBearbeiten',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Massnahme bearbeiten',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Edit measure',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'international',
+ 'category' => 'international',
+ 'phrase' => 'massnahmeLoeschenConfirm',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Wollen Sie die ausgewählte Maßnahme wirklich löschen?',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Do you really want to delete the measure?',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'international',
+ 'category' => 'international',
+ 'phrase' => 'fileLoeschenConfirm',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Wollen Sie die ausgewählte Bestätigung wirklich löschen?',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Do you really want to delete the confirmation?',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'international',
+ 'category' => 'international',
+ 'phrase' => 'planAblehnen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Wollen Sie die ausgewählte Maßnahme wirklich löschen?',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Do you really want to delete the measure?',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'international',
+ 'category' => 'international',
+ 'phrase' => 'entbestaetigenConfirm',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Wollen Sie die Bestätigung wirklich widerrufen?',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Do you really want to cancel the confirmation?',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'international',
+ 'category' => 'international',
+ 'phrase' => 'entakzeptierenConfirm',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Wollen Sie die Planbestätigung wirklich widerrufen?',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Do you really want to cancel the plan confirmation?',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'international',
+ 'category' => 'international',
+ 'phrase' => 'allegeplanten',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Alle geplanten',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'All planned',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'international',
+ 'category' => 'international',
+ 'phrase' => 'alleMassnahmenJetzt',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Alle Maßnahmen anzeigen die im jetzigen Studiensemester geplant sind',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Show all measures that are planned for the current study semester',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'international',
+ 'category' => 'international',
+ 'phrase' => 'alleStudierendeJetzt',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Alle Studierende anzeigen aus dem jetzigen Studiensemester',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Show all students from the current study semester',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'international',
+ 'category' => 'international',
+ 'phrase' => 'lastSemester',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Alle Studierende anzeigen aus dem letzten Semester',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Show all students from the last semester"',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'international',
+ 'category' => 'international',
+ 'phrase' => 'meinMassnahmeplan',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Mein Maßnahmenplan',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'My action plan',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'international',
+ 'category' => 'international',
+ 'phrase' => 'ectsBestaetigt',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'ECTS bestätigt',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'ECTS confirmed',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'international',
+ 'category' => 'international',
+ 'phrase' => 'ectsMassnahme',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'ECTS - Maßnahme',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'ECTS - Measures',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'international',
+ 'category' => 'international',
+ 'phrase' => 'geplanteMassnahmen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Maßnahmen - geplant',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Measures - planned',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'international',
+ 'category' => 'international',
+ 'phrase' => 'akzpetierteMassnahmen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Plan - akzeptiert',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Plan - accepted',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'international',
+ 'category' => 'international',
+ 'phrase' => 'durchgefuehrteMassnahmen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Maßnahmen - durchgeführt',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Measures - performed',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'international',
+ 'category' => 'international',
+ 'phrase' => 'bestaetigteMassnahmen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'ECTS - bestätigt',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'ECTS - confirmed',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'international',
+ 'category' => 'international',
+ 'phrase' => 'abgelehnteMassnahmen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Plan - abgelehnt',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Plan - declined',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'international',
+ 'category' => 'international',
+ 'phrase' => 'planAkzeptieren',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Plan akzeptieren',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Accept plan',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'international',
+ 'category' => 'international',
+ 'phrase' => 'bestaetigungAkzeptieren',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Bestätigung akzeptieren',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Accept confirmation',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
);
|