diff --git a/application/config/routes.php b/application/config/routes.php
index da3a45f03..b4ce2ed4a 100644
--- a/application/config/routes.php
+++ b/application/config/routes.php
@@ -75,16 +75,16 @@ $route['api/frontend/v1/stv/[sS]tudents/([WS]S[0-9]{4})/inout/outgoing'] = 'api/
$route['api/frontend/v1/stv/[sS]tudents/([WS]S[0-9]{4})/inout/gemeinsamestudien'] = 'api/frontend/v1/stv/Students/getGemeinsamestudien';
// (studiengang_kz)/prestudent[/(studiensemester_kurzbz)[/(filter)[/(otherfilter)]]]
-$route['api/frontend/v1/stv/[sS]tudents/(:num)/prestudent'] = 'api/frontend/v1/stv/Students/getPrestudents/$1';
-$route['api/frontend/v1/stv/[sS]tudents/(:num)/prestudent/([WS]S[0-9]{4})'] = 'api/frontend/v1/stv/Students/getPrestudents/$1/$2';
-$route['api/frontend/v1/stv/[sS]tudents/(:num)/prestudent/([WS]S[0-9]{4})/(:any)'] = 'api/frontend/v1/stv/Students/getPrestudents/$1/$2/$3';
-$route['api/frontend/v1/stv/[sS]tudents/(:num)/prestudent/([WS]S[0-9]{4})/(:any)/(:any)'] = 'api/frontend/v1/stv/Students/getPrestudents/$1/$2/$4';
+$route['api/frontend/v1/stv/[sS]tudents/(-?[0-9]+)/prestudent'] = 'api/frontend/v1/stv/Students/getPrestudents/$1';
+$route['api/frontend/v1/stv/[sS]tudents/(-?[0-9]+)/prestudent/([WS]S[0-9]{4})'] = 'api/frontend/v1/stv/Students/getPrestudents/$1/$2';
+$route['api/frontend/v1/stv/[sS]tudents/(-?[0-9]+)/prestudent/([WS]S[0-9]{4})/(:any)'] = 'api/frontend/v1/stv/Students/getPrestudents/$1/$2/$3';
+$route['api/frontend/v1/stv/[sS]tudents/(-?[0-9]+)/prestudent/([WS]S[0-9]{4})/(:any)/(:any)'] = 'api/frontend/v1/stv/Students/getPrestudents/$1/$2/$4';
// (studiengang_kz)/(orgform)/prestudent[/(studiensemester_kurzbz)[/(filter)[/(otherfilter)]]]
-$route['api/frontend/v1/stv/[sS]tudents/(:num)/([A-Z]{2,3})/prestudent'] = 'api/frontend/v1/stv/Students/getPrestudentsOrgform/$1/$2';
-$route['api/frontend/v1/stv/[sS]tudents/(:num)/([A-Z]{2,3})/prestudent/([WS]S[0-9]{4})'] = 'api/frontend/v1/stv/Students/getPrestudentsOrgform/$1/$2/$3';
-$route['api/frontend/v1/stv/[sS]tudents/(:num)/([A-Z]{2,3})/prestudent/([WS]S[0-9]{4})/(:any)'] = 'api/frontend/v1/stv/Students/getPrestudentsOrgform/$1/$2/$3/$4';
-$route['api/frontend/v1/stv/[sS]tudents/(:num)/([A-Z]{2,3})/prestudent/([WS]S[0-9]{4})/(:any)/(:any)'] = 'api/frontend/v1/stv/Students/getPrestudentsOrgform/$1/$2/$3/$5';
+$route['api/frontend/v1/stv/[sS]tudents/(-?[0-9]+)/([A-Z]{2,3})/prestudent'] = 'api/frontend/v1/stv/Students/getPrestudentsOrgform/$1/$2';
+$route['api/frontend/v1/stv/[sS]tudents/(-?[0-9]+)/([A-Z]{2,3})/prestudent/([WS]S[0-9]{4})'] = 'api/frontend/v1/stv/Students/getPrestudentsOrgform/$1/$2/$3';
+$route['api/frontend/v1/stv/[sS]tudents/(-?[0-9]+)/([A-Z]{2,3})/prestudent/([WS]S[0-9]{4})/(:any)'] = 'api/frontend/v1/stv/Students/getPrestudentsOrgform/$1/$2/$3/$4';
+$route['api/frontend/v1/stv/[sS]tudents/(-?[0-9]+)/([A-Z]{2,3})/prestudent/([WS]S[0-9]{4})/(:any)/(:any)'] = 'api/frontend/v1/stv/Students/getPrestudentsOrgform/$1/$2/$3/$5';
// (studiensemester_kurzbz)/(studiengang_kz)/(semester)/grp/(gruppe)
$route['api/frontend/v1/stv/[sS]tudents/([WS]S[0-9]{4})/(-?[0-9]+)/(:num)/grp/(:any)'] = 'api/frontend/v1/stv/Students/getStudentsSpezialgruppe/$1/$2/$3/$4';
@@ -111,23 +111,26 @@ $route['api/frontend/v1/stv/[sS]tudents/([WS]S[0-9]{4})/prestudent/(:num)'] = 'a
// // (studiensemester_kurzbz)/person/(person_id)
$route['api/frontend/v1/stv/[sS]tudents/([WS]S[0-9]{4})/person/(:num)'] = 'api/frontend/v1/stv/Students/getPerson/$1/$2';
-// load routes from extensions
-$subdir = 'application/config/extensions';
-$dirlist = scandir($subdir);
+// load routes from extensions, also look for environment-specific configs
+$subdirs = ['application/config/extensions', 'application/config/' . ENVIRONMENT . '/extensions'];
-if ($dirlist)
+foreach($subdirs as $subdir)
{
- $files = array_diff($dirlist, array('.','..'));
-
- foreach ($files as &$item)
+ $dirlist = scandir($subdir);
+ if ($dirlist)
{
- if (is_dir($subdir . DIRECTORY_SEPARATOR . $item))
- {
- $routes_file = $subdir . DIRECTORY_SEPARATOR . $item . DIRECTORY_SEPARATOR . 'routes.php';
+ $files = array_diff($dirlist, array('.','..'));
- if (file_exists($routes_file))
+ foreach ($files as &$item)
+ {
+ if (is_dir($subdir . DIRECTORY_SEPARATOR . $item))
{
- require($routes_file);
+ $routes_file = $subdir . DIRECTORY_SEPARATOR . $item . DIRECTORY_SEPARATOR . 'routes.php';
+
+ if (file_exists($routes_file))
+ {
+ require($routes_file);
+ }
}
}
}
diff --git a/application/controllers/api/frontend/v1/messages/Messages.php b/application/controllers/api/frontend/v1/messages/Messages.php
index dbc11735a..fa6748f6a 100644
--- a/application/controllers/api/frontend/v1/messages/Messages.php
+++ b/application/controllers/api/frontend/v1/messages/Messages.php
@@ -418,6 +418,10 @@ class Messages extends FHCAPI_Controller
}
$data = $this->getDataOrTerminateWithError($result);
+ if (count($data) < 1)
+ {
+ $this->terminateWithError('Error: Messages API no person_id found.');
+ }
$person = current($data);
return $person->person_id;
@@ -432,8 +436,12 @@ class Messages extends FHCAPI_Controller
);
$data = $this->getDataOrTerminateWithError($result);
+ if (count($data) < 1)
+ {
+ $this->terminateWithError('Error: Messages API no prestudent_id found.');
+ }
$student = current($data);
- // $this->terminateWithError($student->prestudent_id, self::ERROR_TYPE_GENERAL);
+
return $student->prestudent_id;
}
diff --git a/application/controllers/api/frontend/v1/stv/Student.php b/application/controllers/api/frontend/v1/stv/Student.php
index 21b07b755..4309e88a4 100644
--- a/application/controllers/api/frontend/v1/stv/Student.php
+++ b/application/controllers/api/frontend/v1/stv/Student.php
@@ -694,7 +694,7 @@ class Student extends FHCAPI_Controller
return $result;
}*/
- $this->terminateWithSuccess(true);
+ return success(true);
}
public function requiredIfNotPersonId($value)
@@ -710,4 +710,9 @@ class Student extends FHCAPI_Controller
return true;
return !!$value;
}
+
+ public function isValidDate($value)
+ {
+ return isValidDate($value);
+ }
}
diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php
index 57aca0876..1fc49c72f 100644
--- a/application/controllers/system/infocenter/InfoCenter.php
+++ b/application/controllers/system/infocenter/InfoCenter.php
@@ -1275,7 +1275,6 @@ class InfoCenter extends Auth_Controller
'nachname' => $this->input->post('nachname'),
'titelpost' => isEmptyString($this->input->post('titelpost')) ? null : $this->input->post('titelpost'),
'gebdatum' => isEmptyString($this->input->post('gebdatum')) ? null : date("Y-m-d", strtotime($this->input->post('gebdatum'))),
- 'svnr' => isEmptyString($this->input->post('svnr')) ? null : $this->input->post('svnr'),
'staatsbuergerschaft' => isEmptyString($this->input->post('buergerschaft')) ? null : $this->input->post('buergerschaft'),
'geschlecht' => $this->input->post('geschlecht'),
'geburtsnation' => isEmptyString($this->input->post('gebnation')) ? null : $this->input->post('gebnation'),
@@ -1816,7 +1815,7 @@ class InfoCenter extends Auth_Controller
}
/**
- * Loads all necessary Person data: Stammdaten (name, svnr, contact, ...), Dokumente, Logs and Notizen
+ * Loads all necessary Person data: Stammdaten (name, contact, ...), Dokumente, Logs and Notizen
* @param $person_id
* @return array
*/
diff --git a/application/libraries/PhrasesLib.php b/application/libraries/PhrasesLib.php
index ecd8094d6..647bf7074 100644
--- a/application/libraries/PhrasesLib.php
+++ b/application/libraries/PhrasesLib.php
@@ -122,6 +122,7 @@ class PhrasesLib
$tmpText = substr($tmpText, 0, strlen($tmpText) - 4);
}
}
+ $tmpText = str_replace(['', ''], '', $tmpText);
$result->retval[$i]->text = $tmpText;
}
diff --git a/application/views/system/infocenter/stammdaten.php b/application/views/system/infocenter/stammdaten.php
index f143c9c03..f852e9ace 100644
--- a/application/views/system/infocenter/stammdaten.php
+++ b/application/views/system/infocenter/stammdaten.php
@@ -32,12 +32,6 @@
| p->t('person','staatsbuergerschaft')) ?> |
diff --git a/cis/private/profile/zeitsperre_resturlaub.php b/cis/private/profile/zeitsperre_resturlaub.php
index ffd179401..1b6546d41 100644
--- a/cis/private/profile/zeitsperre_resturlaub.php
+++ b/cis/private/profile/zeitsperre_resturlaub.php
@@ -285,15 +285,16 @@ function showHideBezeichnungDropDown()
if (dd.options[dd.selectedIndex].value == 'DienstV')
{
var str = '';
sp.innerHTML = str;
diff --git a/content/student/studentoverlay.js.php b/content/student/studentoverlay.js.php
index d2030f493..d8cb1fc56 100644
--- a/content/student/studentoverlay.js.php
+++ b/content/student/studentoverlay.js.php
@@ -3553,6 +3553,15 @@ function StudentZeugnisDokumentArchivieren()
xml = 'abschlussdokument_lehrgaenge.xml.php';
break;
+ case 'microcredentialzertifikat_1':
+ case 'microcredentialzertifikat_2':
+ case 'microcredentialzertifikat_3':
+ case 'microcredential_1':
+ case 'microcredential_2':
+ case 'microcredential_3':
+ xml = 'microcredential.xml.php';
+ break;
+
default:
alert('Das Archivieren fuer diesen Dokumenttyp wird derzeit nicht unterstuetzt');
return
@@ -4783,7 +4792,7 @@ function StudentNotenMoveFromAntrag()
var uid = document.getElementById('student-detail-textbox-uid').value;
req.add('student_uid', uid);
-
+
var txt = "?";
for(var q in req.parms) {
txt = txt+'&'+req.parms[q].name+'='+encodeURIComponent(req.parms[q].value);
diff --git a/include/tw/cis_menu_lv.inc.php b/include/tw/cis_menu_lv.inc.php
index 73a347dc3..29ba54724 100644
--- a/include/tw/cis_menu_lv.inc.php
+++ b/include/tw/cis_menu_lv.inc.php
@@ -244,10 +244,10 @@ function checkZeilenUmbruch()
if(defined('CIS_LEHRVERANSTALTUNG_ANWESENHEIT_ANZEIGEN') && CIS_LEHRVERANSTALTUNG_ANWESENHEIT_ANZEIGEN && $angemeldet
&& (!defined('CIS_LEHRVERANSTALTUNG_ANWESENHEIT_ANZEIGEN_STG') || in_array($lv->studiengang_kz, unserialize(CIS_LEHRVERANSTALTUNG_ANWESENHEIT_ANZEIGEN_STG)))
&& (!defined('CIS_LEHRVERANSTALTUNG_ANWESENHEIT_ANZEIGEN_LVA') || in_array($lv->lehrveranstaltung_id, unserialize(CIS_LEHRVERANSTALTUNG_ANWESENHEIT_ANZEIGEN_LVA)))
- && ($rechte->isBerechtigt('extension/anw_ent_admin')
- || $rechte->isBerechtigt('extension/anwesenheit_lektor')
- || $rechte->isBerechtigt('extension/anwesenheit_student')
- || $rechte->isBerechtigt('extension/anwesenheit_admin')))
+ && ($rechte->isBerechtigt('extension/anw_r_ent_assistenz')
+ || $rechte->isBerechtigt('extension/anw_r_lektor')
+ || $rechte->isBerechtigt('extension/anw_r_student')
+ || $rechte->isBerechtigt('extension/anw_r_full_assistenz')))
{
$link='';
$text='';
diff --git a/public/js/components/Bootstrap/Modal.js b/public/js/components/Bootstrap/Modal.js
index af81e469f..a84d9d8d7 100644
--- a/public/js/components/Bootstrap/Modal.js
+++ b/public/js/components/Bootstrap/Modal.js
@@ -3,7 +3,8 @@
export default {
name: 'BootstrapModal',
data: () => ({
- modal: null
+ modal: null,
+ fullscreen: false
}),
props: {
backdrop: {
@@ -34,6 +35,10 @@ export default {
footerClass: {
type: [String,Array,Object],
default: ''
+ },
+ allowFullscreenExpand: {
+ type: Boolean,
+ default: false
}
},
emits: [
@@ -58,6 +63,9 @@ export default {
},
toggle() {
return this.modal.toggle();
+ },
+ toggleFullscreen() {
+ this.fullscreen = !this.fullscreen
}
},
mounted() {
@@ -122,13 +130,18 @@ export default {
});
});
},
- template: `
-
+ template: `
+
diff --git a/public/js/components/Calendar/Mode/Day.js b/public/js/components/Calendar/Mode/Day.js
index 68ca1fa89..e9764b495 100644
--- a/public/js/components/Calendar/Mode/Day.js
+++ b/public/js/components/Calendar/Mode/Day.js
@@ -44,11 +44,16 @@ export default {
},
watch: {
currentDate() {
- this.rangeOffset = this.currentDate.startOf('day').diff(this.focusDate.startOf('day'), 'days').days;
- if (this.rangeOffset) {
- this.$refs.view.$refs.grid.disableAutoScroll();
+ if (this.currentDate.locale != this.focusDate.locale) {
+ this.focusDate = this.currentDate;
this.$emit('update:range', this.range);
- this.$refs.slider.slidePages(this.rangeOffset).then(this.updatePage);
+ } else {
+ this.rangeOffset = this.currentDate.startOf('day').diff(this.focusDate.startOf('day'), 'days').days;
+ if (this.rangeOffset) {
+ this.$refs.view.$refs.grid.disableAutoScroll();
+ this.$emit('update:range', this.range);
+ this.$refs.slider.slidePages(this.rangeOffset).then(this.updatePage);
+ }
}
}
},
diff --git a/public/js/components/Calendar/Mode/List.js b/public/js/components/Calendar/Mode/List.js
index 97990a5a3..76acfc610 100644
--- a/public/js/components/Calendar/Mode/List.js
+++ b/public/js/components/Calendar/Mode/List.js
@@ -47,10 +47,15 @@ export default {
},
watch: {
currentDate() {
- this.rangeOffset = this.currentDate.startOf('day').diff(this.focusDate.startOf('day'), 'days').days;
- if (this.rangeOffset) {
+ if (this.currentDate.locale != this.focusDate.locale) {
+ this.focusDate = this.currentDate;
this.$emit('update:range', this.range);
- this.$refs.slider.slidePages(this.rangeOffset).then(this.updatePage);
+ } else {
+ this.rangeOffset = this.currentDate.startOf('day').diff(this.focusDate.startOf('day'), 'days').days;
+ if (this.rangeOffset) {
+ this.$emit('update:range', this.range);
+ this.$refs.slider.slidePages(this.rangeOffset).then(this.updatePage);
+ }
}
}
},
diff --git a/public/js/components/Form/Input.js b/public/js/components/Form/Input.js
index c85272aab..81b47d504 100644
--- a/public/js/components/Form/Input.js
+++ b/public/js/components/Form/Input.js
@@ -3,6 +3,7 @@ import FhcFragment from "../Fragment.js";
let _uuid = {};
export default {
+ name: "FormInput",
inheritAttrs: false,
components: {
FhcFragment
@@ -220,7 +221,7 @@ export default {
if (this.tag == 'VueDatePicker' && !this._.components.VueDatePicker) {
this._.components.VueDatePicker = Vue.defineAsyncComponent(() => import("../vueDatepicker.js.php"));
} else if (this.tag == 'PvAutocomplete' && !this._.components.PvAutocomplete) {
- this._.components.PvAutocomplete = Vue.defineAsyncComponent(() => import(FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + "/public/js/components/primevue/autocomplete/autocomplete.esm.min.js"));
+ this._.components.PvAutocomplete = primevue.autocomplete;
} else if (this.tag == 'UploadImage' && !this._.components.UploadImage) {
this._.components.UploadImage = Vue.defineAsyncComponent(() => import("./Upload/Image.js"));
} else if (this.tag == 'UploadDms' && !this._.components.UploadDms) {
diff --git a/public/js/components/Stv/Studentenverwaltung/List/New.js b/public/js/components/Stv/Studentenverwaltung/List/New.js
index dc78aedb6..8de217e00 100644
--- a/public/js/components/Stv/Studentenverwaltung/List/New.js
+++ b/public/js/components/Stv/Studentenverwaltung/List/New.js
@@ -193,7 +193,7 @@ export default {
// TODO(chris): move to fhcapi.factory
this.$refs.form
- .send('api/frontend/v1/stv/student/add', data)
+ .post('api/frontend/v1/stv/student/add', data)
.then(result => {
this.$fhcAlert.alertSuccess('Gespeichert');
this.$refs.modal.hide();
@@ -213,7 +213,7 @@ export default {
},
template: `
-
+
InteressentIn anlegen
diff --git a/public/js/infocenter/stammdaten.js b/public/js/infocenter/stammdaten.js
index c7600f677..8e34996cd 100644
--- a/public/js/infocenter/stammdaten.js
+++ b/public/js/infocenter/stammdaten.js
@@ -44,7 +44,6 @@ $(document).ready(function ()
"nachname" : $('#nachname_input').val(),
"titelpost" : $('#titelpost_input').val(),
"gebdatum" : $('#gebdatum_input').val(),
- "svnr" : $('#svnr_input').val(),
"buergerschaft" : $('#buergerschaft').val(),
"geschlecht" : $('#geschlecht').val(),
"gebnation" : $('#gebnation').val(),
diff --git a/system/dbupdate_3.4/39911_tabulator_in_contentmittitel.php b/system/dbupdate_3.4/39911_tabulator_in_contentmittitel.php
index b743648ed..73ad7e319 100644
--- a/system/dbupdate_3.4/39911_tabulator_in_contentmittitel.php
+++ b/system/dbupdate_3.4/39911_tabulator_in_contentmittitel.php
@@ -1,5 +1,6 @@
@@ -8,27 +9,56 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-
-
+
+
+
+
+
+
+
+
+
diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php
index 23eb39a21..dd23a1c4a 100644
--- a/system/phrasesupdate.php
+++ b/system/phrasesupdate.php
@@ -30281,7 +30281,6 @@ array(
)
)
),
-
//ProfilUpdate Phrasen ende
array(
@@ -30627,6 +30626,46 @@ array(
)
)
),
+ array(
+ 'app' => 'anwesenheiten',
+ 'category' => 'global',
+ 'phrase' => 'entschuldigtLegendeBlau',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Student ist am gewählten Datum bestätigt entschuldigt.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Student is confirmed excused on the selected date.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'anwesenheiten',
+ 'category' => 'global',
+ 'phrase' => 'entschuldigtLegendeTuerkis',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Student hat eine offene Entschuldigung am gewählten Datum.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Student has an open excuse on the selected date.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
array(
'app' => 'anwesenheiten',
'category' => 'global',
@@ -30887,6 +30926,26 @@ array(
)
)
),
+ array(
+ 'app' => 'anwesenheiten',
+ 'category' => 'global',
+ 'phrase' => 'kontrolleOhneQR',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Anwesenheiten ohne QR-Code einfügen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Insert attendances without QR-Code',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
array(
'app' => 'anwesenheiten',
'category' => 'global',
@@ -30947,6 +31006,46 @@ array(
)
)
),
+ array(
+ 'app' => 'anwesenheiten',
+ 'category' => 'global',
+ 'phrase' => 'kontrolle',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Anwesenheitskontrolle',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'attendance check',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'anwesenheiten',
+ 'category' => 'global',
+ 'phrase' => 'offen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Offen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Open',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
array(
'app' => 'anwesenheiten',
'category' => 'global',
@@ -31010,18 +31109,58 @@ array(
array(
'app' => 'anwesenheiten',
'category' => 'global',
- 'phrase' => 'entschuldigungAutoEmailBetreff',
+ 'phrase' => 'entFullEmailBetreff',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
- 'text' => 'Entschuldigung zur Befreiung der Anwesenheitspflicht: Neues Dokument wurde hochgeladen.',
+ 'text' => 'Neue Entschuldigung zur Befreiung der Anwesenheitspflicht: Neues Dokument wurde hochgeladen.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
- 'text' => 'Excuse note for digital attendances - a new document has been uploaded.',
+ 'text' => 'New Excuse note for digital attendances - a new document has been uploaded.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'anwesenheiten',
+ 'category' => 'global',
+ 'phrase' => 'entNewEmailBetreff',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Neue Entschuldigung zur Befreiung der Anwesenheitspflicht: Dokument wird nachgereicht.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'New Excuse note for digital attendances - Document will be submitted later',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'anwesenheiten',
+ 'category' => 'global',
+ 'phrase' => 'entEditEmailBetreff',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Entschuldigung zur Befreiung der Anwesenheitspflicht: Dokument wurde eingereicht.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Excuse note for digital attendances - Document has been submitted',
'description' => '',
'insertvon' => 'system'
)
@@ -32310,18 +32449,78 @@ array(
array(
'app' => 'anwesenheiten',
'category' => 'global',
- 'phrase' => 'studentConfig',
+ 'phrase' => 'errorCodeTooOld',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
- 'text' => 'Studenten auswählen.',
+ 'text' => 'Der Zugangscode ist zeitlich abgelaufen.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
- 'text' => 'Configure student profile.',
+ 'text' => 'The access code has expired.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'anwesenheiten',
+ 'category' => 'global',
+ 'phrase' => 'profil',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Profil',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'profile',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'anwesenheiten',
+ 'category' => 'global',
+ 'phrase' => 'admin',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Entschuldigungsmanagement',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'excuse note management',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'anwesenheiten',
+ 'category' => 'global',
+ 'phrase' => 'allowed',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Aktuell prüfbar',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'allowed to test',
'description' => '',
'insertvon' => 'system'
)
@@ -32367,6 +32566,26 @@ array(
)
)
),
+ array(
+ 'app' => 'anwesenheiten',
+ 'category' => 'global',
+ 'phrase' => 'termineV2',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Unterricht laut LV-Plan',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Lesson as per Timetable',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
array(
'app' => 'anwesenheiten',
'category' => 'global',
@@ -32375,7 +32594,7 @@ array(
'phrases' => array(
array(
'sprache' => 'German',
- 'text' => 'Termine laut Stundenplan',
+ 'text' => 'Unterricht laut LV-Plan',
'description' => '',
'insertvon' => 'system'
),
@@ -32470,18 +32689,18 @@ array(
array(
'app' => 'anwesenheiten',
'category' => 'global',
- 'phrase' => 'noStudentsFound',
+ 'phrase' => 'noStudentsFoundV2',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
- 'text' => 'Keine zugeteilten Studenten gefunden!',
+ 'text' => 'Keine zugeteilten Studenten für Mitarbeiter {0} in dem gewählten LV-Teil {1} gefunden!',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
- 'text' => 'No assigned students found!',
+ 'text' => 'No assigned students for employee {0} in the selected teaching unit {1} found!',
'description' => '',
'insertvon' => 'system'
)
@@ -32490,7 +32709,7 @@ array(
array(
'app' => 'anwesenheiten',
'category' => 'global',
- 'phrase' => 'kontrolldatum',
+ 'phrase' => 'kontrolldatumV2',
'insertvon' => 'system',
'phrases' => array(
array(
@@ -32501,7 +32720,27 @@ array(
),
array(
'sprache' => 'English',
- 'text' => 'Attendance Check Date',
+ 'text' => 'Check Date',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'anwesenheiten',
+ 'category' => 'global',
+ 'phrase' => 'kontrollen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Kontrollen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Attendance Checks',
'description' => '',
'insertvon' => 'system'
)
@@ -32810,12 +33049,12 @@ array(
array(
'app' => 'anwesenheiten',
'category' => 'global',
- 'phrase' => 'zeitNichtAusStundenplanBeginn',
+ 'phrase' => 'zeitNichtAusStundenplanBeginnV2',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
- 'text' => 'Unterrichtbeginn entspricht keinem Unterrichtstermin laut Stundenplan.',
+ 'text' => 'Unterrichtbeginn entspricht keinem Unterrichtstermin laut LV-Plan.',
'description' => '',
'insertvon' => 'system'
),
@@ -32830,12 +33069,12 @@ array(
array(
'app' => 'anwesenheiten',
'category' => 'global',
- 'phrase' => 'zeitNichtAusStundenplanEnde',
+ 'phrase' => 'zeitNichtAusStundenplanEndeV2',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
- 'text' => 'Unterrichtende entspricht keinem Unterrichtstermin laut Stundenplan.',
+ 'text' => 'Unterrichtende entspricht keinem Unterrichtstermin laut LV-Plan.',
'description' => '',
'insertvon' => 'system'
),
@@ -32850,12 +33089,12 @@ array(
array(
'app' => 'anwesenheiten',
'category' => 'global',
- 'phrase' => 'datumNichtAusStundenplan',
+ 'phrase' => 'datumNichtAusStundenplanV2',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
- 'text' => 'Datum entspricht keinem Stundenplan Termin.',
+ 'text' => 'Datum entspricht keinem LV-Plan Termin.',
'description' => '',
'insertvon' => 'system'
),
@@ -32867,6 +33106,66 @@ array(
)
)
),
+ array(
+ 'app' => 'anwesenheiten',
+ 'category' => 'global',
+ 'phrase' => 'kontrolleTimeOverlap',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Kontrollzeiten überlappen mit Kontrolle von {0} bis {1}.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Times overlap with attendance check from {0} to {1}.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'anwesenheiten',
+ 'category' => 'global',
+ 'phrase' => 'keineKontrollenAnDatumFallback',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Keine Kontrollen an {0} gefunden, es werden alle Kontrollen angezeigt.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'No attendance checks found on {0}, all attendance checks are being shown.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'anwesenheiten',
+ 'category' => 'global',
+ 'phrase' => 'noLePreselectTermineTooOld',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Keine intelligente LV-Teil Vorauswahl möglich, da sämtliche Termine außerhalb des erlaubten Kontrollzeitraums liegen. Bitte wählen Sie sorgfältig den gewünschten LV-Teil aus.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'No intelligent pre-selection of teaching unit is possible, as all dates fall outside the permitted control period. Please carefully select the desired teaching unit.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
array(
'app' => 'anwesenheiten',
'category' => 'global',
@@ -32922,22 +33221,18 @@ array(
array(
'app' => 'anwesenheiten',
'category' => 'global',
- 'phrase' => 'tooltipAssistenz',
+ 'phrase' => 'tooltipAssistenzV2',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
- 'text' => 'Im Entschuldigungsmanagement können Sie als Studiengangsassistenz beziehungsweise als Administrator die von Studenten hochgeladenen Entschuldigungsdokumente überprüfen und den Status entsprechend vergeben.
-
- Bitte beachten Sie dass nur Entschuldigungen INNERHALB des angegebenen Zeitraumes angezeigt werden. Sollten Sie nach einer lang wirken Entschuldigung suchen, müssen Sie die Zeitspanne entsprechend weit setzen.',
+ 'text' => 'Im Entschuldigungsmanagement können Sie als Studiengangsassistenz beziehungsweise als Administrator die von Studenten hochgeladenen Entschuldigungsdokumente überprüfen und den Status entsprechend vergeben.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
- 'text' => 'In the excuse management, you as a course assistant or administrator can check the excuse documents uploaded by students and assign the status accordingly.
-
- Please note that only excuses WITHIN the specified time period are displayed. If you are looking for a long-lasting excuse, you must set the time period accordingly.',
+ 'text' => 'In the excuse management, you as a course assistant or administrator can check the excuse documents uploaded by students and assign the status accordingly.',
'description' => '',
'insertvon' => 'system'
)
@@ -32970,16 +33265,16 @@ array(
array(
'app' => 'anwesenheiten',
'category' => 'global',
- 'phrase' => 'tooltipLektorStartKontrolle',
+ 'phrase' => 'tooltipLektorStartKontrolleV4',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
- 'text' => 'Um eine Anwesenheitskontrolle für Ihre ausgewählte Unterrichtsgruppe durchzuführen, wählen Sie bitte einen Termin aus dem Stundenplan aus oder geben händisch die gewünschte Gültigkeitkeitsdauer der Kontrolle an.
+ 'text' => 'Um eine Anwesenheitskontrolle für Ihre ausgewählte Unterrichtsgruppe durchzuführen, wählen Sie bitte einen Termin aus dem LV-Plan aus oder geben händisch die gewünschte Gültigkeitkeitsdauer der Kontrolle an.
- Die Gültigkeitsdauer bestimmt die Gewichtung der Anwesenheit in Relation zum Gesamtausmaß, sie können diese aber nach eigenem Ermessen anpassen und müssen sich nicht streng an die Termine im Stundenplan halten.
+ Die Gültigkeitsdauer bestimmt die Gewichtung der Anwesenheit in Relation zum Gesamtausmaß, sie können diese aber nach eigenem Ermessen anpassen und müssen sich nicht streng an die Termine im LV-Plan halten.
- Sie können pro Datum und Unterrichtsgruppe eine Anwesenheitskontrolle pro Tag eröffnen, welche jedoch beliebig oft aufgerufen und von Studenten eingecheckt werden kann. Es gelten dabei ihre zuletzt eingetragenen Zeiten. Ein Student muss nur einmal am Tag pro Gruppe einchecken um als anwesend registriert zu sein, egal wie oft Sie die Kontrolle starten.',
+ Sie können pro Datum und Unterrichtsgruppe mehrere Anwesenheitskontrollen am Tag durchführen, solange sich diese nicht in Ihren Zeiten überschneiden und eine Mindestlänge von {0} Minuten beträgt.',
'description' => '',
'insertvon' => 'system'
),
@@ -32989,7 +33284,7 @@ array(
The validity period determines the weighting of attendance in relation to the overall extent, but you can adjust this at your own discretion and do not have to stick strictly to the dates in the timetable.
- You can open one attendance check per day for each date and class group, which can be called up and checked in by students as often as you like. The times they last entered apply. A student only has to check in once a day per group to be registered as present, regardless of how often you start the check.',
+ You can conduct multiple attendance checks per day per date and lesson group, as long as they do not overlap in your times and are at least {0} minutes long.',
'description' => '',
'insertvon' => 'system'
)
@@ -33083,6 +33378,26 @@ array(
)
)
),
+ array(
+ 'app' => 'anwesenheiten',
+ 'category' => 'global',
+ 'phrase' => 'studentenInLVTeil',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Studenten in LV-Teil',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Students in teaching unit',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
array(
'app' => 'anwesenheiten',
'category' => 'global',
@@ -33103,6 +33418,26 @@ array(
)
)
),
+ array(
+ 'app' => 'anwesenheiten',
+ 'category' => 'global',
+ 'phrase' => 'file',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Dokument',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Document',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
array(
'app' => 'anwesenheiten',
'category' => 'global',
@@ -33206,12 +33541,12 @@ array(
array(
'app' => 'anwesenheiten',
'category' => 'global',
- 'phrase' => 'termineAusStundenplan',
+ 'phrase' => 'termineAusStundenplanV2',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
- 'text' => 'Unterricht Termine laut Stundenplan',
+ 'text' => 'Unterricht Termine laut LV-Plan',
'description' => '',
'insertvon' => 'system'
),
@@ -33226,12 +33561,12 @@ array(
array(
'app' => 'anwesenheiten',
'category' => 'global',
- 'phrase' => 'tooltipUnterrichtZeitCustom',
+ 'phrase' => 'tooltipUnterrichtZeitCustomV2',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
- 'text' => 'Unterrichtszeiten werden aus dem Stundenplan geladen, überschreiben Sie diese nur falls Ihre tatsächliche Unterrichtszeiten davon abweichen!',
+ 'text' => 'Unterrichtszeiten werden aus dem LV-Plan geladen, überschreiben Sie diese nur falls Ihre tatsächliche Unterrichtszeiten davon abweichen!',
'description' => '',
'insertvon' => 'system'
),
@@ -33246,12 +33581,12 @@ array(
array(
'app' => 'anwesenheiten',
'category' => 'global',
- 'phrase' => 'tooltipUnterrichtDatumCustom',
+ 'phrase' => 'tooltipUnterrichtDatumCustomV2',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
- 'text' => 'Unterrichtsdaten werden aus dem Stundenplan geladen, überschreiben Sie dieses nur falls Ihr tatsächliches Unterrichtsdatum abweicht!',
+ 'text' => 'Unterrichtsdaten werden aus dem LV-Plan geladen, überschreiben Sie dieses nur falls Ihr tatsächliches Unterrichtsdatum abweicht!',
'description' => '',
'insertvon' => 'system'
),
@@ -33363,6 +33698,158 @@ array(
)
)
),
+ array(
+ 'app' => 'anwesenheiten',
+ 'category' => 'global',
+ 'phrase' => 'kontrolleDatumOutOfRange',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Datum liegt außerhalb der erlaubten Kontrollspanne!',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Date is outside the permitted control range!',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'anwesenheiten',
+ 'category' => 'global',
+ 'phrase' => 'alertBetreuungSelected',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Der ausgewählte LV-Teil hat die Lehrform Betreuung! Bitte überprüfen sie die korrekte Auswahl des LV-Teils um fehlerhafte Kontrollen zu vermeiden!',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'The selected course component is taught in a supervised format! Please check that you have selected the correct course component to avoid incorrect assessments!',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'anwesenheiten',
+ 'category' => 'global',
+ 'phrase' => 'editEntschuldigung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Entschuldigung bearbeiten',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Edit Excuse note',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'anwesenheiten',
+ 'category' => 'global',
+ 'phrase' => 'anwUserEntry',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Anwesenheitseintrag',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Attendance Entry',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'anwesenheiten',
+ 'category' => 'global',
+ 'phrase' => 'highlightsettings',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Datumsmarkierung',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Date Highlighting',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'anwesenheiten',
+ 'category' => 'global',
+ 'phrase' => 'editAnwKontrolle',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Anwesenheitskontrolle bearbeiten',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Edit Attendance Checks',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'anwesenheiten',
+ 'category' => 'global',
+ 'phrase' => 'tooltipAnwTimeline',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Die "Digitale Anwesenheiten Timeline" ist ein experimentelles feature, welches eine zeitliche Visualisierung von Entschuldigungszeiträumen und Kontrollzeiträumen im Kontext eines Studenten anzeigt.
+
+ Wenn Sie auf eine aufgelistete Entschuldigung oder Kontrolle klicken, versucht die Timeline diese zu finden, falls diese im angegebenen Zeitraum liegt, welcher standardmäßig das gesamte aktuelle Jahr beträgt. Sie können diese Grenzen manuell anpassen.
+
+ Wenn man innerhalb der Timeline scrollt, ändert sich der visuelle Abstand zwischen einzelnen Tagen.
+
+ Bei Klick auf eine gerenderte Datumsreichweite in der Timeline, listet sich oben rechts eine Liste von zugehörigen Attributen auf, welche Administratoren und Entwicklern in Fehlerfällen helfen sollen den Zustand der digitalen Amwesenheiten im Kontext eines Studierenden nachzuvollziehen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'The "Digital Attendance Timeline" is an experimental feature that displays a temporal visualization of excuse periods and check-in periods in the context of a student.
+
+ When you click on a listed excuse or check-in period, the timeline attempts to find it if it falls within the specified period, which by default is the entire current year. You can adjust these boundaries manually.
+
+ Scrolling within the timeline changes the visual spacing between individual days.
+
+ Clicking on a rendered date range in the timeline displays a list of associated attributes in the upper right corner. These attributes are intended to help administrators and developers understand the status of digital attendance in the context of a student in case of errors.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
//
// DIGITALE ANWESENHEITEN PHRASEN END
//
diff --git a/system/xsl/Anwesenheitsliste.xsl b/system/xsl/Anwesenheitsliste.xsl
index 55e72900c..fc9dede58 100644
--- a/system/xsl/Anwesenheitsliste.xsl
+++ b/system/xsl/Anwesenheitsliste.xsl
@@ -309,7 +309,8 @@ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
(nz) ... nicht zugelassen
(ma) ... MitarbeiterIn
(a.o.) ... Außerordentliche/r HörerIn
- (d.d.) ... Double Degree Program
+ (d.d.i) ... Double Degree Incoming Program
+ (d.d.o) ... Double Degree Outgoing Program
|