try to force using phrasen system throughout the whole Anrechnungen - WIP; fixed fontawesome bug by upgrading to v6; fixed tabulator persistence across multiple pages definitions, Filter.js and TableWidget.js by switching from columns: true to columns: ["width", "visible"], since they otherwhise might not get persisted; WIP working out the implications/solutions for multiaccount students applying for anrechnungen to an lv from a different study program of theirs;

This commit is contained in:
Johann Hoffmann
2026-10-02 17:34:20 +02:00
parent 36064afbba
commit 352d7b10d7
25 changed files with 622 additions and 84 deletions
@@ -116,7 +116,7 @@ class reviewAnrechnungDetail extends Auth_Controller
if(isEmptyArray($data))
{
return $this->outputJsonError('Fehler beim Übertragen der Daten.');
return $this->outputJsonError($this->p->t('anrechnung', 'fehlerDatenuebertragung'));
}
// Get lectors person data
@@ -173,7 +173,7 @@ class reviewAnrechnungDetail extends Auth_Controller
if(isEmptyArray($data))
{
return $this->outputJsonError('Fehler beim Übertragen der Daten.');
return $this->outputJsonError($this->p->t('anrechnung', 'fehlerDatenuebertragung'));
}
// Get lectors person data
@@ -91,7 +91,7 @@ class reviewAnrechnungUebersicht extends Auth_Controller
if(isEmptyArray($data))
{
return $this->outputJsonError('Fehler beim Übertragen der Daten.');
return $this->outputJsonError($this->p->t('anrechnung', 'fehlerDatenuebertragung'));
}
foreach ($data as $item)
@@ -140,7 +140,7 @@ class reviewAnrechnungUebersicht extends Auth_Controller
if(isEmptyArray($data))
{
return $this->outputJsonError('Fehler beim Übertragen der Daten.');
return $this->outputJsonError($this->p->t('anrechnung', 'fehlerDatenuebertragung'));
}
foreach ($data as $item)
@@ -19,12 +19,14 @@ $includesArray = array(
'anrechnungszeitraumHinzufuegen',
'anrechnungszeitraumSpeichern',
'anrechnungszeitraumStart',
'anrechnungszeitraumEnde'
'anrechnungszeitraumEnde',
'anrechnungszeitraumBearbeiten'
),
'ui' => array(
'aktion',
'geloescht',
'gespeichert',
'systemfehler',
'frageSicherLoeschen',
'spaltenEinstellen'
),
@@ -113,7 +115,7 @@ if (defined("CIS4")) {
<input type="hidden" id="defaultStudiensemester_kurzbz"
value="<?php echo $studiensemester_kurzbz ?>">
<div class="col-xs-4">
<label for="studiensemester" class="small">Studiensemester</label>
<label for="studiensemester" class="small"><?php echo ucfirst($this->p->t('lehre', 'studiensemester')); ?></label>
<?php
echo $this->widgetlib->widget(
'Studiensemester_widget',
@@ -128,11 +130,11 @@ if (defined("CIS4")) {
?>
</div>
<div class="col-xs-4">
<label for="azrStart" class="small">Anr.-Zeitraum Start</label>
<label for="azrStart" class="small"><?php echo $this->p->t('anrechnung', 'anrechnungszeitraumStart'); ?></label>
<input type="date" id="azrStart" value="" class="form-control" required>
</div>
<div class="col-xs-4">
<label for="azrEnde" class="small">Anr.-Zeitraum Ende</label>
<label for="azrEnde" class="small"><?php echo $this->p->t('anrechnung', 'anrechnungszeitraumEnde'); ?></label>
<input type="date" id="azrEnde" value="" class="form-control" required>
</div>
</div>
@@ -7,7 +7,7 @@ $includesArray = array(
'jqueryui1' => true,
'bootstrap5' => true,
'cis' => true,
'fontawesome4' => true,
'fontawesome6' => true,
'ajaxlib' => true,
'dialoglib' => true,
'phrases' => array(
@@ -47,7 +47,9 @@ $includesArray = array(
'erfolgreichZurueckgenommen',
'empfehlungPositivConfirmed',
'empfehlungNegativConfirmed',
'anrechnungEctsTooltipTextBeiUeberschreitung'
'anrechnungEctsTooltipTextBeiUeberschreitung',
'hoechstgrenzeUeberschritten',
'browserNichtUnterstuetzt'
)
),
'customCSSs' => array(
@@ -161,12 +163,12 @@ if (defined("CIS4")) {
</span>
</th>
<td>
Total: <span
<?php echo $this->p->t('anrechnung', 'totalEcts'); ?>: <span
id="sumEctsTotal"><?php echo number_format($antragData->sumEctsSchulisch + $antragData->sumEctsBeruflich, 1) ?></span>
[Schulisch: <span id="sumEctsSchulisch"
[<?php echo $this->p->t('anrechnung', 'schulisch'); ?>: <span id="sumEctsSchulisch"
value="<?php echo $antragData->sumEctsSchulisch ?>"><?php echo $antragData->sumEctsSchulisch ?></span>
/
Beruflich: <span id="sumEctsBeruflich"
<?php echo $this->p->t('anrechnung', 'beruflich'); ?>: <span id="sumEctsBeruflich"
value="<?php echo $antragData->sumEctsBeruflich ?>"><?php echo $antragData->sumEctsBeruflich ?></span>
]
<div class="p-1 align-items-center" id="sumEctsMsg"></div>
@@ -498,7 +500,7 @@ if (defined("CIS4")) {
<div class="col-4">
<!-- -Statusleiste -->
<div class="mb-5 alert text-center">
Status: <b><span class="text-uppercase" id="approveAnrechnungDetail-status_kurzbz"
<?php echo $this->p->t('global', 'status'); ?>: <b><span class="text-uppercase" id="approveAnrechnungDetail-status_kurzbz"
data-status_kurzbz="<?php echo $anrechnungData->status_kurzbz ?>">
<?php echo $anrechnungData->status; ?>
</span></b>
@@ -5,7 +5,7 @@ $includesArray = array(
'jquery3' => true,
'jqueryui1' => true,
'bootstrap5' => true,
'fontawesome4' => true,
'fontawesome6' => true,
'tabulator5' => true,
'tabulator5JQuery' => true,
'ajaxlib' => true,
@@ -15,7 +15,9 @@ $includesArray = array(
'phrases' => array(
'global' => array(
'begruendung',
'zgv'
'zgv',
'details',
'status'
),
'anrechnung' => array(
'nachweisdokumente',
@@ -23,7 +25,9 @@ $includesArray = array(
'empfehlungsanfrageAn',
'empfehlungsanfrageAm',
'confirmTextAntragHatBereitsEmpfehlung',
'herkunft'
'herkunft',
'ectsSummeKurz',
'browserNichtUnterstuetzt'
),
'ui' => array(
'anzeigen',
@@ -227,17 +231,17 @@ if (defined("CIS4")) {
<button id="show-inProgressLektor" class="btn btn-outline-secondary btn-clearfilter" type="button"
data-bs-toggle="tooltip" data-bs-placement="left"
title="<?php echo $this->p->t('ui', 'alleInBearbeitungLektor'); ?>"><i
class='fa fa-clock-o'></i>
class='fa-regular fa-clock'></i>
</button>
<button id="show-recommended" class="btn btn-outline-secondary btn-clearfilter" type="button"
data-bs-toggle="tooltip" data-bs-placement="left"
title="<?php echo $this->p->t('ui', 'nurEmpfohleneAnzeigen'); ?>"><i
class='fa fa-thumbs-o-up'></i>
class='fa-regular fa-thumbs-up'></i>
</button>
<button id="show-not-recommended" class="btn btn-outline-secondary btn-clearfilter" type="button"
data-bs-toggle="tooltip" data-bs-placement="left"
title="<?php echo $this->p->t('ui', 'nurNichtEmpfohleneAnzeigen'); ?>"><i
class='fa fa-thumbs-o-down'></i>
class='fa-regular fa-thumbs-down'></i>
</button>
<button id="show-approved" class="btn btn-outline-secondary btn-clearfilter" type="button"
data-bs-toggle="tooltip" data-bs-placement="left"
@@ -6,6 +6,9 @@ $STUDIENSEMESTER = $studiensemester_selected;
$STUDIENGAENGE_ENTITLED = implode(', ', $studiengaenge_entitled); // alle STG mit Lese- und Schreibberechtigung
$ORGANISATIONSEINHEITEN_SCHREIBBERECHTIGT = "'" . implode('\',\'', $oes_schreibberechtigt) . "'"; // alle OE nur mit Schreibberechtigung; singlequote für jeden string notwendig
$LANGUAGE_INDEX = getUserLanguage() == 'German' ? '1' : '2';
// English names only if the Studiengang or LV has one
$STG_BEZEICHNUNG = getUserLanguage() == 'German' ? 'stg.bezeichnung' : 'COALESCE(NULLIF(stg.english, \'\'), stg.bezeichnung)';
$LV_BEZEICHNUNG = getUserLanguage() == 'German' ? 'lv.bezeichnung' : 'COALESCE(NULLIF(lv.bezeichnung_english, \'\'), lv.bezeichnung)';
$query = '
WITH anrechnungen AS
@@ -21,7 +24,7 @@ $query = '
END "schreibberechtigt",
anrechnung.studiensemester_kurzbz,
stg.studiengang_kz,
stg.bezeichnung AS stg_bezeichnung,
' . $STG_BEZEICHNUNG . ' AS stg_bezeichnung,
lv.orgform_kurzbz,
(SELECT ausbildungssemester
FROM public.tbl_prestudentstatus press
@@ -31,12 +34,12 @@ $query = '
ORDER BY press.datum DESC
LIMIT 1
),
lv.bezeichnung AS lv_bezeichnung,
' . $LV_BEZEICHNUNG . ' AS lv_bezeichnung,
lv.ects::numeric(4,1),
get_ects_summe_schulisch(student.student_uid, anrechnung.prestudent_id, stg.studiengang_kz) AS ectsSumSchulisch,
get_ects_summe_beruflich(student.student_uid) AS ectsSumBeruflich,
(person.nachname || \' \' || person.vorname) AS "student",
begruendung.bezeichnung AS "begruendung",
COALESCE(begruendung.bezeichnung_mehrsprachig[' . $LANGUAGE_INDEX . '], begruendung.bezeichnung) AS "begruendung",
dmsversion.name AS "dokument_bezeichnung",
anrechnung.anmerkung_student,
(SELECT COALESCE(
@@ -178,17 +181,17 @@ $filterWidgetArray = array(
'lehrveranstaltung_id',
'begruendung_id',
'dms_id',
'Schreibberechtigt',
$this->p->t('anrechnung', 'schreibberechtigt'),
'studiensemester_kurzbz',
'studiengang_kz',
ucfirst($this->p->t('lehre', 'studiengang')),
ucfirst($this->p->t('lehre', 'organisationsform')),
'Semester',
$this->p->t('lehre', 'semester'),
ucfirst($this->p->t('lehre', 'lehrveranstaltung')),
'ECTS (LV)',
'ECTS (LV + Bisher)',
'ECTS (Bisher schulisch)',
'ECTS (Bisher beruflich',
$this->p->t('anrechnung', 'ectsLv'),
$this->p->t('anrechnung', 'ectsLvUndBisher'),
$this->p->t('anrechnung', 'ectsBisherSchulisch'),
$this->p->t('anrechnung', 'ectsBisherBeruflich'),
ucfirst($this->p->t('global', 'begruendung')),
ucfirst($this->p->t('person', 'studentIn')),
ucfirst($this->p->t('anrechnung', 'nachweisdokumente')),
@@ -197,7 +200,7 @@ $filterWidgetArray = array(
ucfirst($this->p->t('anrechnung', 'antragdatum')),
ucfirst($this->p->t('anrechnung', 'empfehlung')),
'status_kurzbz',
'Status',
$this->p->t('global', 'status'),
'PrestudentID',
ucfirst($this->p->t('anrechnung', 'empfehlungsanfrageAm')),
ucfirst($this->p->t('anrechnung', 'empfehlungsanfrageAn'))
@@ -5,7 +5,7 @@ $includesArray = array(
'jquery3' => true,
'jqueryui1' => true,
'bootstrap5' => true,
'fontawesome4' => true,
'fontawesome6' => true,
'ajaxlib' => true,
'dialoglib' => true,
'tabulator5' => true,
@@ -20,7 +20,9 @@ $includesArray = array(
'antragBearbeiten'
),
'ui' => array(
'hochladen'
'hochladen',
'errorDokumentZuGross',
'systemfehler'
),
'lehre' => array(
'studiensemester',
@@ -3,13 +3,15 @@
$STUDIENSEMESTER = $studiensemester_selected;
$STUDIENGAENGE_ENTITLED = implode(', ', $studiengaenge_entitled);
$LANGUAGE_INDEX = getUserLanguage() == 'German' ? '1' : '2';
// English name only if the Studiengang has one
$STG_BEZEICHNUNG = getUserLanguage() == 'German' ? 'stg.bezeichnung' : 'COALESCE(NULLIF(stg.english, \'\'), stg.bezeichnung)';
$query = '
SELECT pst.prestudent_id,
person.person_id,
pststatus.studienplan_id,
stg.studiengang_kz,
stg.bezeichnung AS "stg_bezeichnung",
' . $STG_BEZEICHNUNG . ' AS "stg_bezeichnung",
ausbildungssemester,
nachname,
vorname,
@@ -47,7 +49,7 @@ $filterWidgetArray = array(
'studienplan_id',
'studiengang_kz',
ucfirst($this->p->t('lehre', 'studiengang')),
'Semester',
$this->p->t('lehre', 'semester'),
ucfirst($this->p->t('person', 'nachname')),
ucfirst($this->p->t('person', 'vorname')),
ucfirst($this->p->t('global', 'zgv'))
@@ -7,7 +7,7 @@ $includesArray = array(
'jqueryui1' => true,
'bootstrap5' => true,
'cis' => true,
'fontawesome4' => true,
'fontawesome6' => true,
'ajaxlib' => true,
'dialoglib' => true,
'phrases' => array(
@@ -39,7 +39,8 @@ $includesArray = array(
),
'anrechnung' => array(
'empfehlungPositivConfirmed',
'empfehlungNegativConfirmed'
'empfehlungNegativConfirmed',
'browserNichtUnterstuetzt'
)
),
'customCSSs' => array(
@@ -380,7 +381,7 @@ if (defined("CIS4")) {
<div class="col-4 ">
<div class="mb-5 alert text-center">
Status:
<?php echo $this->p->t('global', 'status'); ?>:
<b><span class="text-uppercase" id="reviewAnrechnungDetail-status_kurzbz"
data-status_kurzbz="<?php echo $anrechnungData->status_kurzbz ?>">
<?php echo $anrechnungData->status; ?>
@@ -5,7 +5,7 @@ $includesArray = array(
'jquery3' => true,
'jqueryui1' => true,
'bootstrap5' => true,
'fontawesome4' => true,
'fontawesome6' => true,
'tabulator5' => true,
'tabulator5JQuery' => true,
'cis' => true,
@@ -15,12 +15,15 @@ $includesArray = array(
'phrases' => array(
'global' => array(
'begruendung',
'zgv'
'zgv',
'details',
'status'
),
'anrechnung' => array(
'nachweisdokumente',
'empfehlung',
'herkunft'
'herkunft',
'browserNichtUnterstuetzt'
),
'ui' => array(
'anzeigen',
@@ -216,12 +219,12 @@ if (defined("CIS4")) {
<button id="show-recommended" class="btn btn-outline-secondary btn-clearfilter" type="button"
data-bs-toggle="tooltip" data-bs-placement="left" data-bs-html="true"
title="<?php echo $this->p->t('ui', 'nurEmpfohleneAnzeigen'); ?>"><i
class='fa fa-thumbs-o-up'></i>
class='fa-regular fa-thumbs-up'></i>
</button>
<button id="show-not-recommended" class="btn btn-outline-secondary btn-clearfilter"
type="button" data-bs-toggle="tooltip" data-bs-placement="left" data-bs-html="true"
title="<?php echo $this->p->t('ui', 'nurNichtEmpfohleneAnzeigen'); ?>"><i
class='fa fa-thumbs-o-down'></i>
class='fa-regular fa-thumbs-down'></i>
</button>
<button id="show-approved" class="btn btn-outline-secondary btn-clearfilter" type="button"
data-bs-toggle="tooltip" data-bs-placement="left" data-bs-html="true"
@@ -2,6 +2,9 @@
$STUDIENSEMESTER = $studiensemester_selected;
$LEKTOR_UID = getAuthUID();
$LANGUAGE_INDEX = getUserLanguage() == 'German' ? '1' : '2';
// English names only if the Studiengang or LV has one
$STG_BEZEICHNUNG = getUserLanguage() == 'German' ? 'stg.bezeichnung' : 'COALESCE(NULLIF(stg.english, \'\'), stg.bezeichnung)';
$LV_BEZEICHNUNG = getUserLanguage() == 'German' ? 'lv.bezeichnung' : 'COALESCE(NULLIF(lv.bezeichnung_english, \'\'), lv.bezeichnung)';
$query = '
WITH anrechnungen AS
@@ -13,11 +16,11 @@ $query = '
anrechnung.dms_id,
anrechnung.studiensemester_kurzbz,
stg.studiengang_kz,
stg.bezeichnung AS "stg_bezeichnung",
lv.bezeichnung AS "lv_bezeichnung",
' . $STG_BEZEICHNUNG . ' AS "stg_bezeichnung",
' . $LV_BEZEICHNUNG . ' AS "lv_bezeichnung",
lv.ects,
(person.nachname || \' \' || person.vorname) AS "student",
begruendung.bezeichnung AS "begruendung",
COALESCE(begruendung.bezeichnung_mehrsprachig[' . $LANGUAGE_INDEX . '], begruendung.bezeichnung) AS "begruendung",
dmsversion.name AS "dokument_bezeichnung",
anrechnung.anmerkung_student,
(SELECT COALESCE(
@@ -129,7 +132,7 @@ $filterWidgetArray = array(
'requiredPermissions' => 'lehre/anrechnung_empfehlen',
'datasetRepresentation' => 'tabulator',
'columnsAliases' => array(
'Empfehlungsberechtigt',
$this->p->t('anrechnung', 'empfehlungsberechtigt'),
'anrechnung_id',
'lehrveranstaltung_id',
'begruendung_id',
@@ -138,7 +141,7 @@ $filterWidgetArray = array(
'studiengang_kz',
ucfirst($this->p->t('lehre', 'studiengang')),
ucfirst($this->p->t('lehre', 'lehrveranstaltung')),
'ECTS',
$this->p->t('lehre', 'ects'),
ucfirst($this->p->t('person', 'studentIn')),
ucfirst($this->p->t('global', 'begruendung')),
ucfirst($this->p->t('anrechnung', 'nachweisdokumente')),
@@ -147,7 +150,7 @@ $filterWidgetArray = array(
ucfirst($this->p->t('anrechnung', 'antragdatum')),
ucfirst($this->p->t('anrechnung', 'empfehlung')),
'status_kurzbz',
'Status'
$this->p->t('global', 'status')
),
'datasetRepOptions' => '{
height: func_height(this),
+3
View File
@@ -313,6 +313,9 @@ class TableWidget extends Widget
// If session is NOT empty -> a table was already loaded
if ($session != null)
{
// Aliases from the current request, otherwise the headers keep the language of the first load
$this->tablewidgetlib->setSessionElement(TableWidgetLib::SESSION_COLUMNS_ALIASES, $this->_columnsAliases);
// Get SESSION_DATASET_RELOAD from the session
$sessionReloadDataset = $this->tablewidgetlib->getSessionElement(TableWidgetLib::SESSION_DATASET_RELOAD);
+1 -1
View File
@@ -585,7 +585,7 @@ var FHC_TableWidget = {
let defaultPersistence = {
sort: true,
columns: true,
columns: ["width", "visible"],
filter: false,
headerFilter: false,
group: false,
@@ -236,7 +236,7 @@ export default {
selectableRows: 1,
index: 'projektarbeit_id',
persistence:{
columns: true, //persist column layout
columns: ["width", "visible"], //persist column layout
},
persistenceID: 'stv-details-projektarbeit-20260217'
}
@@ -124,7 +124,7 @@ export default {
selectableRows: 1,
index: 'betreuer_id',
persistence:{
columns: true, //persist column layout
columns: ["width", "visible"], //persist column layout
},
persistenceID: 'stv-details-projektbetreuer-20260217'
},
+1 -1
View File
@@ -135,7 +135,7 @@ export default {
persistence: {
sort: true,
page: true,
columns: true,
columns: ["width", "visible"],
filter: false //to avoids js errors
},
persistenceID: 'core-contracts-2026050501',
+2 -1
View File
@@ -136,7 +136,8 @@ export const CoreFilterCmpt = {
selectedData: [],
persistence: {
sort: true,
columns: true,
// Not true: that also stores the title, and the stored title hides a translated header
columns: ["width", "visible"],
filter: false,
headerFilter: false,
group: false,
@@ -9,7 +9,7 @@ function func_tableBuilt(table) {
table.tabulator(
"addColumn",
{
title: "Aktion",
title: FHC_PhrasesLib.t("ui", "aktion"),
align: "center",
width: 150,
formatter: addActionButtons,
@@ -193,7 +193,7 @@ var adminAnrechnung = {
var anrechnungstart = row.getData().anrechnungstart;
var anrechnungende = row.getData().anrechnungende;
$(".modal-header #azrModalLabel").text("Anrechnungszeitraum bearbeiten");
$(".modal-header #azrModalLabel").text(FHC_PhrasesLib.t("anrechnung", "anrechnungszeitraumBearbeiten"));
$(".modal-body #anrechnungszeitraum_id").val(anrechnungszeitraum_id);
$(".modal-body #studiensemester").val(studiensemester_kurzbz).change();
@@ -55,7 +55,7 @@ function hf_filterTrueFalse(headerValue, rowValue) {
return rowValue == "false";
}
if ((headerValue = "-")) {
if (headerValue === "-") {
return rowValue == null;
}
}
@@ -73,13 +73,13 @@ function func_tableBuilt(table) {
table.tabulator(
"addColumn",
{
title: "Details",
title: FHC_PhrasesLib.t("global", "details"),
field: "details",
hozAlign: "center",
width: 100,
formatter: "link",
formatterParams: {
label: "Details",
label: FHC_PhrasesLib.t("global", "details"),
url: function (cell) {
return (
BASE_URL +
@@ -173,15 +173,11 @@ var format_ectsSumBisherUndNeu = function (cell, formatterParams, onRendered) {
"</u></b></span>"
: ectsSumBisherUndNeuBeruflich;
return (
"T: " +
ectsSumBisherUndNeuTotal +
" [ S: " +
ectsSumBisherUndNeuSchulisch +
" | B: " +
ectsSumBisherUndNeuBeruflich +
" ]"
);
return FHC_PhrasesLib.t("anrechnung", "ectsSummeKurz", [
ectsSumBisherUndNeuTotal,
ectsSumBisherUndNeuSchulisch,
ectsSumBisherUndNeuBeruflich,
]);
};
// Formats row selectable/unselectable
@@ -244,7 +240,7 @@ function func_tooltips(e, cell, onRendered) {
//onRendered - onRendered callback registration function
// Return tooltip if row is unselectable
if (!func_selectableCheck(cell.getRow())) {
return FHC_PhrasesLib.t("ui", "nichtSelektierbarAufgrundVon") + "Status";
return FHC_PhrasesLib.t("ui", "nichtSelektierbarAufgrundVon") + FHC_PhrasesLib.t("global", "status");
}
}
@@ -317,7 +313,7 @@ $(function () {
var canPromise = !!window.Promise;
if (!canPromise) {
alert(
"Diese Seite kann mit ihrem Browser nicht angezeigt werden. Bitte verwenden Sie Firefox, Chrome oder Edge um die Seite anzuzeigen"
FHC_PhrasesLib.t("anrechnung", "browserNichtUnterstuetzt")
);
window.location.href = "about:blank";
return;
@@ -850,7 +846,7 @@ var approveAnrechnung = {
},
showNumberSelectedRows(rows) {
$("#number-selected").html(
"Ausgewählte Zeilen: <strong>" + rows.length + "</strong>"
FHC_PhrasesLib.t("ui", "ausgewaehlteZeilen") + ": <strong>" + rows.length + "</strong>"
);
},
};
@@ -170,7 +170,11 @@ var createAnrechnung = {
// Append Lehrveranstaltungen
for (let lv of lehrveranstaltungen){
$('#select-lehrveranstaltung').append('<option value="'+ lv.lehrveranstaltung_id +'">'+ lv.bezeichnung +'</option>');
// English name only if the LV has one
let bezeichnung = FHC_JS_DATA_STORAGE_OBJECT.user_language != 'German' && lv.bezeichnung_english
? lv.bezeichnung_english
: lv.bezeichnung;
$('#select-lehrveranstaltung').append('<option value="'+ lv.lehrveranstaltung_id +'">'+ bezeichnung +'</option>');
}
}
},
@@ -16,7 +16,7 @@ $(function(){
var canPromise = !! window.Promise;
if(!canPromise)
{
alert("Diese Seite kann mit ihrem Browser nicht angezeigt werden. Bitte verwenden Sie Firefox, Chrome oder Edge um die Seite anzuzeigen");
alert(FHC_PhrasesLib.t("anrechnung", "browserNichtUnterstuetzt"));
window.location.href='about:blank';
return;
}
@@ -48,7 +48,7 @@ function hf_filterTrueFalse(headerValue, rowValue) {
return rowValue == "false";
}
if ((headerValue = "-")) {
if (headerValue === "-") {
return rowValue == null;
}
}
@@ -63,13 +63,13 @@ function func_tableBuilt(table) {
table.tabulator(
"addColumn",
{
title: "Details",
title: FHC_PhrasesLib.t("global", "details"),
field: "details",
align: "center",
width: 100,
formatter: "link",
formatterParams: {
label: "Details",
label: FHC_PhrasesLib.t("global", "details"),
url: function (cell) {
return (
BASE_URL +
@@ -122,7 +122,7 @@ function func_tooltips(e, cell, onRendered) {
// Return tooltip if row is unselectable
if (!func_selectableCheck(cell.getRow())) {
return FHC_PhrasesLib.t("ui", "nichtSelektierbarAufgrundVon") + "Status";
return FHC_PhrasesLib.t("ui", "nichtSelektierbarAufgrundVon") + FHC_PhrasesLib.t("global", "status");
}
}
@@ -175,7 +175,7 @@ $(function () {
var canPromise = !!window.Promise;
if (!canPromise) {
alert(
"Diese Seite kann mit ihrem Browser nicht angezeigt werden. Bitte verwenden Sie Firefox, Chrome oder Edge um die Seite anzuzeigen"
FHC_PhrasesLib.t("anrechnung", "browserNichtUnterstuetzt")
);
window.location.href = "about:blank";
return;
+2 -1
View File
@@ -104,6 +104,7 @@ require_once('dbupdate_3.4/77080_tabulator_presets_table.php');
require_once('dbupdate_3.4/78292_gehaltsanpassungtyp.php');
require_once('dbupdate_3.4/54225_reihungstest_ablauf_fuer_quereinsteiger.php');
require_once('dbupdate_3.4/77757_widgets_berechtigungen.php');
require_once('dbupdate_3.4/83598_anrechnung_begruendung_mehrsprachig.php');
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '<H2>Pruefe Tabellen und Attribute!</H2>';
@@ -263,7 +264,7 @@ $tabellen=array(
"lehre.tbl_anrechnung" => array("anrechnung_id","prestudent_id","lehrveranstaltung_id","begruendung_id","lehrveranstaltung_id_kompatibel","genehmigt_von","insertamum","insertvon","updateamum","updatevon","ext_id", "dms_id", "studiensemester_kurzbz", "anmerkung_student", "empfehlung_anrechnung", "begruendung_ects", "begruendung_lvinhalt"),
"lehre.tbl_anrechnungstatus" => array("status_kurzbz", "bezeichnung_mehrsprachig"),
"lehre.tbl_anrechnung_anrechnungstatus" => array("anrechnungstatus_id", "anrechnung_id", "status_kurzbz", "datum", "insertamum", "insertvon"),
"lehre.tbl_anrechnung_begruendung" => array("begruendung_id","bezeichnung"),
"lehre.tbl_anrechnung_begruendung" => array("begruendung_id","bezeichnung","bezeichnung_mehrsprachig"),
"lehre.tbl_anrechnungszeitraum" => array("anrechnungszeitraum_id","studiensemester_kurzbz","anrechnungstart","anrechnungende", "insertamum", "insertvon"),
"lehre.tbl_betreuerart" => array("betreuerart_kurzbz","beschreibung","aktiv"),
"lehre.tbl_ferien" => array("bezeichnung","studiengang_kz","vondatum","bisdatum"),
@@ -0,0 +1,31 @@
<?php
if (! defined('DB_NAME')) exit('No direct script access allowed');
// Add multilingual name to Anrechnung Begruendung (German, English)
if ($result = $db->db_query("SELECT 1 FROM information_schema.columns WHERE table_schema = 'lehre' AND table_name = 'tbl_anrechnung_begruendung' AND column_name = 'bezeichnung_mehrsprachig'"))
{
if ($db->db_num_rows($result) == 0)
{
// Unknown names keep the German name as English name
$qry = "
ALTER TABLE lehre.tbl_anrechnung_begruendung ADD COLUMN bezeichnung_mehrsprachig character varying(128)[];
UPDATE lehre.tbl_anrechnung_begruendung SET bezeichnung_mehrsprachig = ARRAY[
bezeichnung,
CASE bezeichnung
WHEN 'externes Zeugnis' THEN 'external certificate'
WHEN 'kompatible Lehrveranstaltung' THEN 'compatible course'
WHEN 'Prüfung' THEN 'examination'
WHEN 'berufliche Praxis' THEN 'professional practice'
WHEN 'Hochschulzeugnis' THEN 'university certificate'
ELSE bezeichnung
END
];
";
if (!$db->db_query($qry))
echo '<strong>lehre.tbl_anrechnung_begruendung: ' . $db->db_last_error() . '</strong><br>';
else
echo '<br>lehre.tbl_anrechnung_begruendung: Spalte bezeichnung_mehrsprachig hinzugefuegt';
}
}
+486 -6
View File
@@ -13216,7 +13216,7 @@ Any unusual occurrences
),
array(
'sprache' => 'English',
'text' => 'Sum of previous recognized ECTS. Lateral Entries are considered with ECTS of the recognized semester.<br><br>Maximum ECTS limits are applied since Octobre 2021:<br><br>max. 60 ECTS school qualification (BHS and AHS only)<br>max. 60 ECTS professional qualification<br>max. 90 ECTS OVERALL for school and professional qualification',
'text' => 'Sum of previous recognized ECTS. Lateral Entries are considered with ECTS of the recognized semester.<br><br>Maximum ECTS limits are applied since October 2021:<br><br>max. 60 ECTS school qualification (BHS and AHS only)<br>max. 60 ECTS professional qualification<br>max. 90 ECTS OVERALL for school and professional qualification',
'description' => '',
'insertvon' => 'system'
)
@@ -13236,7 +13236,7 @@ Any unusual occurrences
),
array(
'sprache' => 'English',
'text' => 'Maximum ECTS limits are applied since Octobre 2021:<br>max. 60 ECTS school qualification (BHS and AHS only)<br>max. 60 ECTS professional qualification<br>max. 90 ECTS OVERALL for school and professional qualification',
'text' => 'Maximum ECTS limits are applied since October 2021:<br>max. 60 ECTS school qualification (BHS and AHS only)<br>max. 60 ECTS professional qualification<br>max. 90 ECTS OVERALL for school and professional qualification',
'description' => '',
'insertvon' => 'system'
)
@@ -13250,13 +13250,493 @@ Any unusual occurrences
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Die Höchstgrenze für Anrechnungen gem. § 12 Abs. 3 Fachhochschulgesetz wird überschritten.<span class="fw-bold">Bisherige ECTS + ECTS dieser LV: Total: {0} [ Schulisch: {1} | Beruflich: {2} ]</span>',
'text' => '<span class="d-block">Die Höchstgrenze für Anrechnungen gem. § 12 Abs. 3 Fachhochschulgesetz wird überschritten.</span><span class="fw-bold">Bisherige ECTS + ECTS dieser LV: Total: {0} [ Schulisch: {1} | Beruflich: {2} ]</span>',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => '<br>Exceedance of maximum limit for exemption (see § 12 para. 3, Regulations of the UASTW).<br><b>Former ECTS + ECTS of this course: Total: {0} [ School qualification: {1} | Professional qualification: {2} ]</b> ',
'text' => '<span class="d-block">Exceedance of maximum limit for exemption (see § 12 para. 3, Regulations of the UASTW).</span><span class="fw-bold">Former ECTS + ECTS of this course: Total: {0} [ School qualification: {1} | Professional qualification: {2} ]</span>',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
'phrase' => 'hoechstgrenzeUeberschritten',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Die Höchstgrenze für Anrechnungen gem. § 12 Abs. 3 Fachhochschulgesetz ist überschritten.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'The maximum limit for exemption (see § 12 para. 3, Regulations of the UASTW) is exceeded.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
'phrase' => 'totalEcts',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Total ECTS',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Total ECTS',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
'phrase' => 'schulisch',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Schulisch',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'School qualification',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
'phrase' => 'beruflich',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Beruflich',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Professional qualification',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
'phrase' => 'browserNichtUnterstuetzt',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Diese Seite kann mit ihrem Browser nicht angezeigt werden. Bitte verwenden Sie Firefox, Chrome oder Edge um die Seite anzuzeigen',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'This page cannot be displayed in your browser. Please use Firefox, Chrome or Edge to display the page',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
'phrase' => 'ectsSummeKurz',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'T: {0} [ S: {1} | B: {2} ]',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'T: {0} [ S: {1} | P: {2} ]',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
'phrase' => 'schreibberechtigt',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Schreibberechtigt',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Write access',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
'phrase' => 'empfehlungsberechtigt',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Empfehlungsberechtigt',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Entitled to recommend',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
'phrase' => 'ectsLv',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'ECTS (LV)',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'ECTS (course)',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
'phrase' => 'ectsLvUndBisher',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'ECTS (LV + Bisher)',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'ECTS (course + previous)',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
'phrase' => 'ectsBisherSchulisch',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'ECTS (Bisher schulisch)',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'ECTS (previous school qualification)',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
'phrase' => 'ectsBisherBeruflich',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'ECTS (Bisher beruflich)',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'ECTS (previous professional qualification)',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
'phrase' => 'anrechnungszeitraumBearbeiten',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Anrechnungszeitraum bearbeiten',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Edit application period',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
'phrase' => 'fehlerDatenuebertragung',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Fehler beim Übertragen der Daten.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Error while transferring the data.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
'phrase' => 'keineAnrechnungenGenehmigt',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Es wurden keine Anrechnungen genehmigt.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'No applications have been approved.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
'phrase' => 'keineAnrechnungenAbgelehnt',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Es wurden keine Anrechnungen abgelehnt.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'No applications have been rejected.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
'phrase' => 'empfehlungNichtAngefordert',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Empfehlung wurde nicht angefordert.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Recommendation has not been requested.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
'phrase' => 'keineEmpfehlungenAngefordert',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Es wurden keine Empfehlungen angefordert.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'No recommendations have been requested.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
'phrase' => 'lvHatKeineLektoren',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Der LV sind keine LektorInnen zugeteilt.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'No lecturers are assigned to the course.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
'phrase' => 'lvsOhneLektoren',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Bei {0} LV sind keine LektorInnen zugeteilt.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'No lecturers are assigned to {0} courses.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
'phrase' => 'keineEmpfehlungZumZuruecknehmen',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Es gibt keine Empfehlungsanforderung zum Zurücknehmen.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'There is no request for recommendation to withdraw.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
'phrase' => 'antragNichtZurueckgenommen',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Der Antrag konnte nicht zurückgenommen werden.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'The application could not be withdrawn.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
'phrase' => 'lvNichtImStudienplan',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Diese Lehrveranstaltung ist nicht Teil Ihres Studienplans. Wenn Sie mehrere Studiengänge studieren, melden Sie sich mit dem Account des passenden Studiengangs an. Sonst wenden Sie sich an Ihre Studiengangsassistenz.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'This course is not part of your study plan. If you study more than one degree program, log in with the account of the matching degree program. Otherwise, contact your degree program assistant.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
'phrase' => 'lvNichtZugeteilt',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Die Lehrveranstaltung ist diesem Account nicht zugeteilt.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'The course is not assigned to this account.',
'description' => '',
'insertvon' => 'system'
)
@@ -14848,7 +15328,7 @@ Any unusual occurrences
),
array(
'sprache' => 'English',
'text' => 'Set appplication period',
'text' => 'Set application period',
'description' => '',
'insertvon' => 'system'
)
@@ -14868,7 +15348,7 @@ Any unusual occurrences
),
array(
'sprache' => 'English',
'text' => 'Add appplication period',
'text' => 'Add application period',
'description' => '',
'insertvon' => 'system'
)