diff --git a/application/controllers/api/frontend/v1/stv/Favorites.php b/application/controllers/api/frontend/v1/stv/Favorites.php
index ca8b62da6..951eb01a4 100644
--- a/application/controllers/api/frontend/v1/stv/Favorites.php
+++ b/application/controllers/api/frontend/v1/stv/Favorites.php
@@ -60,17 +60,6 @@ class Favorites extends FHCAPI_Controller
$favorites = $this->input->post('favorites');
- $removed = [];
- while (strlen($favorites) > 64) {
- $favObj = json_decode($favorites);
- if (!$favObj->list)
- break;
- $removed[] = array_shift($favObj->list);
- $favorites = json_encode($favObj);
- }
- if ($removed)
- $this->addMeta('removed', $removed);
-
$result = $this->VariableModel->setVariable(getAuthUID(), 'stv_favorites', $favorites);
$this->getDataOrTerminateWithError($result);
diff --git a/application/controllers/api/frontend/v1/stv/Kontakt.php b/application/controllers/api/frontend/v1/stv/Kontakt.php
index ecbbbc87c..d246a04d9 100644
--- a/application/controllers/api/frontend/v1/stv/Kontakt.php
+++ b/application/controllers/api/frontend/v1/stv/Kontakt.php
@@ -435,7 +435,10 @@ class Kontakt extends FHCAPI_Controller
$this->FirmaModel->addJoin('public.tbl_firma f', 'ON (f.firma_id = st.firma_id)', 'LEFT');
$this->KontakttypModel->addJoin('public.tbl_kontakttyp kt', 'ON (public.tbl_kontakt.kontakttyp = kt.kontakttyp)');
$result = $this->KontaktModel->loadWhere(
- array('person_id' => $person_id)
+ array(
+ 'person_id' => $person_id,
+ 'public.tbl_kontakt.kontakttyp !=' => 'hidden'
+ )
);
if (isError($result))
@@ -443,20 +446,18 @@ class Kontakt extends FHCAPI_Controller
$this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
}
$this->terminateWithSuccess((getData($result) ?: []));
+
}
public function getKontakttypen()
{
$this->load->model('person/Kontakttyp_model', 'KontakttypModel');
+ $this->KontakttypModel->addOrder('beschreibung', 'ASC');
+ $result = $this->KontakttypModel->loadWhere(array('kontakttyp !=' => 'hidden'));
- $result = $this->KontakttypModel->load();
- if (isError($result)) {
- $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
- }
- else
- {
- $this->terminateWithSuccess(getData($result) ?: []);
- }
+ $data = $this->getDataOrTerminateWithError($result);
+
+ $this->terminateWithSuccess($data);
}
public function loadContact()
diff --git a/application/controllers/api/frontend/v1/stv/Prestudent.php b/application/controllers/api/frontend/v1/stv/Prestudent.php
index 4d0aa5fe1..7dc607d1a 100644
--- a/application/controllers/api/frontend/v1/stv/Prestudent.php
+++ b/application/controllers/api/frontend/v1/stv/Prestudent.php
@@ -138,13 +138,24 @@ class Prestudent extends FHCAPI_Controller
{
$val = $this->input->post($prop, true);
- if ($val !== null || $prop === 'foerderrelevant') {
+ if ($val !== null) {
+ if(in_array($prop, ['dual', 'bismelden', 'foerderrelevant']))
+ {
+ $val = boolval($val);
+ }
+ elseif (
+ $val === ''
+ && in_array($prop, ['zgvnation', 'zgvmanation', 'zgvdoktornation', 'berufstaetigkeit_code', 'ausbildungcode'])
+ )
+ {
+ $val = null;
+ }
$update_prestudent[$prop] = $val;
}
// allowed to be null, but has to be in postparameter
if (
- in_array($prop, ['zgvdatum', 'zgvmadatum', 'zgvdoktordatum', 'zgv_code', 'zgvmas_code', 'zgvdoktor_code'])
+ in_array($prop, ['foerderrelevant', 'zgvdatum', 'zgvmadatum', 'zgvdoktordatum', 'zgv_code', 'zgvmas_code', 'zgvdoktor_code'])
&& !isset($update_prestudent[$prop])
&& array_key_exists($prop, $_POST)
)
diff --git a/application/controllers/api/frontend/v1/stv/Status.php b/application/controllers/api/frontend/v1/stv/Status.php
index 665fb620f..dc48a47ff 100644
--- a/application/controllers/api/frontend/v1/stv/Status.php
+++ b/application/controllers/api/frontend/v1/stv/Status.php
@@ -286,11 +286,11 @@ class Status extends FHCAPI_Controller
]);
$this->form_validation->set_rules('_default', '', [
- ['meldestichtag_not_exceeded', function () use ($datum, $isBerechtigtNoStudstatusCheck) {
+ ['meldestichtag_not_exceeded', function () use ($datum_string, $isBerechtigtNoStudstatusCheck) {
if ($isBerechtigtNoStudstatusCheck)
return true; // Skip if access right says so
- $result = $this->prestudentstatuschecklib->checkIfMeldestichtagErreicht($datum);
+ $result = $this->prestudentstatuschecklib->checkIfMeldestichtagErreicht($datum_string);
return !$this->getDataOrTerminateWithError($result);
}],
@@ -733,8 +733,9 @@ class Status extends FHCAPI_Controller
);
$result = $this->prestudentstatuschecklib->checkIfMeldestichtagErreicht($oldstatus->datum);
+ $isMeldestichtagErreicht = $this->getDataOrTerminateWithError($result);
- if (!$this->getDataOrTerminateWithError($result))
+ if ($isMeldestichtagErreicht)
$this->terminateWithError(
$this->p->t('lehre', 'error_dataVorMeldestichtag'),
self::ERROR_TYPE_GENERAL,
diff --git a/application/controllers/api/frontend/v1/stv/Student.php b/application/controllers/api/frontend/v1/stv/Student.php
index d64bc0d2c..3a383ed2c 100644
--- a/application/controllers/api/frontend/v1/stv/Student.php
+++ b/application/controllers/api/frontend/v1/stv/Student.php
@@ -275,7 +275,17 @@ class Student extends FHCAPI_Controller
$update_person = array();
foreach ($array_allowed_props_person as $prop) {
$val = $this->input->post($prop);
- if ($val !== null) {
+ if ($val === null)
+ {
+ continue;
+ }
+ if($prop == 'foto')
+ {
+ $fotoval = ($val == '') ? null : str_replace('data:image/jpeg;base64,', '', $val);
+ $update_person[$prop] = $fotoval;
+ }
+ else
+ {
$update_person[$prop] = $val;
}
}
diff --git a/application/controllers/jobs/MeldezettelJob.php b/application/controllers/jobs/MeldezettelJob.php
new file mode 100644
index 000000000..329597985
--- /dev/null
+++ b/application/controllers/jobs/MeldezettelJob.php
@@ -0,0 +1,86 @@
+_ci =& get_instance();
+
+ $this->_ci->load->model('crm/Dokumentprestudent_model', 'DokumentprestudentModel');
+ }
+
+ /**
+ * Sets Meldezettel to "accepted" for all students with Meldeadresse.
+ */
+ public function acceptMeldezettel()
+ {
+ $this->logInfo('Start Meldezettel Job');
+
+ $params = array(self::DOKUMENT_KURZBZ);
+
+ $qry = "
+ -- get all prestudents with meldeadresse, but no accepted Meldezettel
+ SELECT
+ DISTINCT prestudent_id
+ FROM
+ public.tbl_adresse
+ JOIN public.tbl_person USING (person_id)
+ JOIN public.tbl_prestudent ps USING (person_id)
+ WHERE
+ typ = 'm'
+ AND NOT EXISTS (
+ SELECT
+ 1
+ FROM
+ public.tbl_dokumentprestudent
+ WHERE
+ prestudent_id = ps.prestudent_id
+ AND dokument_kurzbz = ?
+ )";
+
+ // get all prestudents with Meldeadresse and no accpeted Meldezettel
+ $result = $this->_ci->DokumentprestudentModel->execReadOnlyQuery($qry, $params);
+
+ if (isError($result))
+ {
+ $this->logError(getError($result));
+ }
+
+ $count = 0;
+
+ if (hasData($result))
+ {
+ $prestudents = getData($result);
+
+ foreach ($prestudents as $prestudent)
+ {
+ // set Meldezettel to accepted
+ $result = $this->_ci->DokumentprestudentModel->insert(
+ array(
+ 'prestudent_id' => $prestudent->prestudent_id,
+ 'dokument_kurzbz' => self::DOKUMENT_KURZBZ,
+ 'datum' => date('Y-m-d'),
+ 'insertamum' => strftime('%Y-%m-%d %H:%M'),
+ 'insertvon' => self::INSERT_VON
+ )
+ );
+
+ if (isError($result))
+ $this->logError(getError($result));
+ else
+ $count++;
+ }
+ }
+
+ $this->logInfo('End Meldezettel Job', array('Number of changes ' => $count));
+ }
+}
diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php
index 1fc49c72f..1a4f566e6 100644
--- a/application/controllers/system/infocenter/InfoCenter.php
+++ b/application/controllers/system/infocenter/InfoCenter.php
@@ -362,6 +362,8 @@ class InfoCenter extends Auth_Controller
$data[self::ORIGIN_PAGE] = $origin_page;
$data[self::PREV_FILTER_ID] = $this->input->get(self::PREV_FILTER_ID);
+ $data['studiensemester'] = $this->variablelib->getVar('infocenter_studiensemester');
+
$this->load->view('system/infocenter/infocenterDetails.php', $data);
}
diff --git a/application/core/Notiz_Controller.php b/application/core/Notiz_Controller.php
index c2bb03267..cfc54d5f5 100644
--- a/application/core/Notiz_Controller.php
+++ b/application/core/Notiz_Controller.php
@@ -393,10 +393,10 @@ abstract class Notiz_Controller extends FHCAPI_Controller
foreach ($result as $doc) {
$res = $this->dmslib->removeAll($doc->dms_id);
- if (isError($result))
+ if (isError($res))
{
$this->db->trans_rollback();
- $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
+ $this->terminateWithError(getError($res), self::ERROR_TYPE_GENERAL);
}
}
diff --git a/application/libraries/ProfilLib.php b/application/libraries/ProfilLib.php
index 50b8bc264..6e93a0943 100644
--- a/application/libraries/ProfilLib.php
+++ b/application/libraries/ProfilLib.php
@@ -214,7 +214,7 @@ class ProfilLib{
* @param integer $uid the userID used to get the kontakt information
* @return array all the kontakt information corresponding to a userID
*/
- private function getKontaktInfo($pid)
+ private function getKontaktInfo($pid, $includehidden=false)
{
$this->ci->load->model("person/Kontakt_model","KontaktModel");
$this->ci->KontaktModel->addSelect(['kontakttyp', 'kontakt_id', 'kontakt', 'tbl_kontakt.anmerkung', 'tbl_kontakt.zustellung']);
@@ -222,7 +222,13 @@ class ProfilLib{
$this->ci->KontaktModel->addJoin('public.tbl_firma', 'firma_id', 'LEFT');
$this->ci->KontaktModel->addOrder('kontakttyp, kontakt, tbl_kontakt.updateamum, tbl_kontakt.insertamum');
- $kontakte_res = $this->ci->KontaktModel->loadWhere(['person_id' => $pid]);
+ $params = array('person_id' => $pid);
+ if(!$includehidden)
+ {
+ $params['kontakttyp <>'] = 'hidden';
+ }
+
+ $kontakte_res = $this->ci->KontaktModel->loadWhere($params);
if(isError($kontakte_res)){
return error(getData($kontakte_res));
}
diff --git a/application/libraries/StundenplanLib.php b/application/libraries/StundenplanLib.php
index 6d53a2e2e..7ed64da2c 100644
--- a/application/libraries/StundenplanLib.php
+++ b/application/libraries/StundenplanLib.php
@@ -229,9 +229,10 @@ class StundenplanLib
$this->_ci->load->model('ressource/Stundenplan_model', 'StundenplanModel');
$is_mitarbeiter = getData($this->_ci->MitarbeiterModel->isMitarbeiter(getAuthUID()));
-
- if ($is_mitarbeiter) {
- $reservierungen = $this->_ci->ReservierungModel->getReservierungenMitarbeiter($start_date, $end_date, $ort_kurzbz);
+
+ if ($is_mitarbeiter && empty($ort_kurzbz)) {
+ // request for personal lvplan show only reservations of logged in user
+ $reservierungen = $this->_ci->ReservierungModel->getReservierungenMitarbeiter($start_date, $end_date);
} else {
// querying the reservierungen
$reservierungen = $this->_ci->ReservierungModel->getReservierungen($start_date, $end_date, $ort_kurzbz);
diff --git a/application/models/person/Kontaktverifikation_model.php b/application/models/person/Kontaktverifikation_model.php
new file mode 100644
index 000000000..17bcb1c35
--- /dev/null
+++ b/application/models/person/Kontaktverifikation_model.php
@@ -0,0 +1,42 @@
+dbTable = 'public.tbl_kontakt_verifikation';
+ $this->pk = 'kontakt_verifikation_id';
+ }
+
+ /**
+ * Gets contact verification for a person and a verification code
+ * @param person_id
+ * @param kontakttyp
+ * @param verifikation_code
+ * @param expiration_days number of days after which verifikation code expires
+ * @return object success or error
+ */
+ public function getKontaktVerifikation($person_id, $kontakttyp, $verifikation_code, $expiration_days = 1)
+ {
+ $qry = "
+ SELECT
+ kt.kontakt_id,
+ kv.verifikation_code
+ FROM
+ public.tbl_kontakt_verifikation kv
+ JOIN public.tbl_kontakt kt USING(kontakt_id)
+ WHERE kt.person_id = ?
+ AND kt.kontakttyp = ?
+ AND kv.verifikation_code = ?
+ AND kv.erstelldatum >= NOW() - INTERVAL '".$this->escape($expiration_days)." days'
+ ORDER BY
+ kt.kontakt_id DESC
+ LIMIT 1";
+
+ return $this->execQuery($qry, array($person_id, $kontakttyp, $verifikation_code));
+ }
+}
diff --git a/application/models/person/Person_model.php b/application/models/person/Person_model.php
index d955f6401..233cfc751 100644
--- a/application/models/person/Person_model.php
+++ b/application/models/person/Person_model.php
@@ -316,72 +316,60 @@ class Person_model extends DB_Model
public function checkDuplicate($person_id)
{
- $qry = "SELECT person_id
- FROM public.tbl_prestudent p
- JOIN
- (
- SELECT DISTINCT ON(prestudent_id) *
- FROM public.tbl_prestudentstatus
- WHERE prestudent_id IN
- (
- SELECT prestudent_id
- FROM public.tbl_prestudent
- WHERE person_id IN
- (
- SELECT p2.person_id
- FROM public.tbl_person p
- JOIN public.tbl_person p2
- ON lower(p.vorname) = lower(p2.vorname)
- AND lower(p.nachname) = lower(p2.nachname)
- AND p.gebdatum = p2.gebdatum
- AND p.person_id = ?
- )
- )
- ORDER BY prestudent_id, datum DESC, insertamum DESC
- ) ps USING(prestudent_id)
- JOIN public.tbl_status USING(status_kurzbz)
+ $qry = "
+ WITH person AS (
+ SELECT *
+ FROM public.tbl_person
+ WHERE person_id = ?
+ ),
+ allePersonen AS (
+ SELECT p.person_id
+ FROM public.tbl_person p
+ JOIN person
+ ON lower(p.vorname) = lower(person.vorname)
+ AND lower(p.nachname) = lower(person.nachname)
+ AND p.gebdatum = person.gebdatum
+ ),
+ lastStatus AS (
+ SELECT DISTINCT ON (tbl_prestudentstatus.prestudent_id)
+ tbl_prestudentstatus.prestudent_id,
+ tbl_prestudentstatus.status_kurzbz,
+ tbl_prestudent.studiengang_kz,
+ tbl_prestudent.person_id
+ FROM public.tbl_prestudentstatus
+ JOIN public.tbl_prestudent USING (prestudent_id)
+ WHERE tbl_prestudent.person_id IN (SELECT person_id FROM allePersonen)
+ ORDER BY tbl_prestudentstatus.prestudent_id, tbl_prestudentstatus.datum DESC, tbl_prestudentstatus.insertamum DESC
+ ),
+ interessenten AS (
+ SELECT *
+ FROM lastStatus
WHERE status_kurzbz = 'Interessent'
- AND studiengang_kz IN
- (
- SELECT studiengang_kz
- FROM public.tbl_prestudent p
- JOIN
- (
- SELECT DISTINCT ON(prestudent_id) *
- FROM public.tbl_prestudentstatus
- WHERE prestudent_id IN
- (
- SELECT prestudent_id
- FROM public.tbl_prestudent
- WHERE person_id IN
- (
- SELECT p2.person_id
- FROM public.tbl_person p
- JOIN public.tbl_person p2
- ON lower(p.vorname) = lower(p2.vorname)
- AND lower(p.nachname) = lower(p2.nachname)
- AND p.gebdatum = p2.gebdatum
- AND p.person_id = ?
- )
- )
- ORDER BY prestudent_id, datum DESC, insertamum DESC
- ) ps USING(prestudent_id)
- JOIN public.tbl_status USING(status_kurzbz)
- WHERE status_kurzbz = 'Abbrecher'
- )
-
- UNION
-
+ ),
+ keineInteressenten AS (
+ SELECT *
+ FROM lastStatus
+ WHERE status_kurzbz != 'Interessent'
+ ),
+ doppeltePerson AS (
SELECT p2.person_id
- FROM tbl_person p1
- JOIN tbl_prestudent ps ON p1.person_id = ps.person_id
- INNER JOIN (
- SELECT vorname, nachname, gebdatum, person.person_id
- FROM tbl_person person
- JOIN tbl_prestudent sps ON person.person_id = sps.person_id
- ) p2
- ON (lower(p1.vorname) = lower(p2.vorname) AND lower(p1.nachname) = lower(p2.nachname) AND p1.gebdatum = p2.gebdatum)
- WHERE p1.person_id != p2.person_id AND (p1.person_id = ?)";
+ FROM public.tbl_person p1
+ JOIN public.tbl_prestudent ps1 ON ps1.person_id = p1.person_id
+ JOIN public.tbl_person p2
+ ON lower(p1.vorname) = lower(p2.vorname)
+ AND lower(p1.nachname) = lower(p2.nachname)
+ AND p1.gebdatum = p2.gebdatum
+ WHERE p1.person_id = ?
+ AND p1.person_id <> p2.person_id
+ )
+ SELECT DISTINCT(interessenten.person_id)
+ FROM interessenten
+ JOIN keineInteressenten
+ ON interessenten.studiengang_kz = keineInteressenten.studiengang_kz
+ WHERE interessenten.person_id = ?
+ UNION
+ SELECT DISTINCT person_id
+ FROM doppeltePerson";
return $this->execQuery($qry, array($person_id, $person_id, $person_id));
}
diff --git a/application/models/ressource/Reservierung_model.php b/application/models/ressource/Reservierung_model.php
index 789ff3d9c..0c391ea20 100644
--- a/application/models/ressource/Reservierung_model.php
+++ b/application/models/ressource/Reservierung_model.php
@@ -76,7 +76,7 @@ class Reservierung_model extends DB_Model
*
* @return stdClass
*/
- public function getReservierungenMitarbeiter($start_date, $end_date, $ort_kurzbz = null)
+ public function getReservierungenMitarbeiter($start_date, $end_date)
{
$raum_reservierungen_query = "SELECT res.*, beginn, ende,
@@ -89,7 +89,6 @@ class Reservierung_model extends DB_Model
JOIN lehre.tbl_stunde ON lehre.tbl_stunde.stunde = res.stunde
WHERE res.uid = ? AND datum >= ? AND datum <= ?";
-// $subquery = is_null($ort_kurzbz)? $lvplan_reservierungen_query:$raum_reservierungen_query;
$subquery = $raum_reservierungen_query;
diff --git a/application/views/system/infocenter/anmerkungenZurBewerbung.php b/application/views/system/infocenter/anmerkungenZurBewerbung.php
index ca012ff3e..3ffe5f9a2 100644
--- a/application/views/system/infocenter/anmerkungenZurBewerbung.php
+++ b/application/views/system/infocenter/anmerkungenZurBewerbung.php
@@ -18,6 +18,9 @@
kurzbzlang)) ?: print_r('(' . nl2br($notiz->kurzbzlang) . ') - ') ?>
text) ?>
+
+
+ |
diff --git a/application/views/system/infocenter/infocenterDetails.php b/application/views/system/infocenter/infocenterDetails.php
index 51b913b6c..fb023c5fd 100644
--- a/application/views/system/infocenter/infocenterDetails.php
+++ b/application/views/system/infocenter/infocenterDetails.php
@@ -57,7 +57,7 @@
diff --git a/application/views/system/infocenter/stammdaten.php b/application/views/system/infocenter/stammdaten.php
index f852e9ace..83961dd91 100644
--- a/application/views/system/infocenter/stammdaten.php
+++ b/application/views/system/infocenter/stammdaten.php
@@ -182,7 +182,7 @@
zugangscode)): ?>
diff --git a/include/dokument.class.php b/include/dokument.class.php
index 6dec9a66d..7b1d490fb 100644
--- a/include/dokument.class.php
+++ b/include/dokument.class.php
@@ -888,9 +888,10 @@ class dokument extends basis_db
* Akzeptiert ein bestimmtes Dokument
* @param char $dokument_kurzbz Bezeichner Dokument.
* @param int $person_id Personenkennzeichen.
+ * @param array $studiengang_typen einschränken nach Studiengang Typ.
* @return boolean true wenn akzeptiert bzw geprüft ohne Akzeptieren, false wenn Fehler
*/
- public function akzeptiereDokument($dokument_kurzbz, $person_id)
+ public function akzeptiereDokument($dokument_kurzbz, $person_id, $studiengang_typen = null)
{
$db = new basis_db();
$arrayDoksZuAkzeptieren = array();
@@ -902,7 +903,6 @@ class dokument extends basis_db
tbl_prestudent ps, tbl_studiengang sg
WHERE
ps.studiengang_kz = sg.studiengang_kz
- AND sg.typ = 'm'
AND person_id = ".$this->db_add_param($person_id)."
AND not exists(
SELECT *
@@ -910,6 +910,11 @@ class dokument extends basis_db
where dok.prestudent_id = ps.prestudent_id
and dokument_kurzbz = ".$this->db_add_param($dokument_kurzbz).")";
+ if (isset($studiengang_typen) && is_array($studiengang_typen) && !empty($studiengang_typen))
+ {
+ $qry .= ' AND sg.typ IN ('. $db->db_implode4SQL($studiengang_typen).')';
+ }
+
//gibt ein Array von zu akzeptierenden Dokumenten zurück
if ($db->db_query($qry))
{
@@ -923,11 +928,14 @@ class dokument extends basis_db
}
//für alle prestudent_ids das Dokument akzeptieren
- $qry = "INSERT INTO public.tbl_dokumentprestudent(dokument_kurzbz, prestudent_id) VALUES";
+ $qry = "INSERT INTO public.tbl_dokumentprestudent(dokument_kurzbz, prestudent_id, datum, insertamum) VALUES";
foreach ($arrayDoksZuAkzeptieren as $prestudent_id)
{
- $qry .= "(".$this->db_add_param($dokument_kurzbz). ",". $prestudent_id. ")";
+ $qry .= "(".$this->db_add_param($dokument_kurzbz).
+ ",".$this->db_add_param($prestudent_id, FHC_INTEGER).
+ ",".$this->db_add_param(date('Y-m-d')).
+ ",".$this->db_add_param(strftime('%Y-%m-%d %H:%M')). ")";
if (next($arrayDoksZuAkzeptieren) == true)
{
diff --git a/public/js/apps/Cis.js b/public/js/apps/Cis.js
index 73703b42b..5b76c5721 100644
--- a/public/js/apps/Cis.js
+++ b/public/js/apps/Cis.js
@@ -50,7 +50,7 @@ const app = Vue.createApp({
defaultaction: {
type: "link",
renderif: function(data) {
- if(data.content_id === "N/A"){
+ if(data.content_id === null){
return false;
}
return true;
@@ -79,7 +79,7 @@ const app = Vue.createApp({
icon: "fas fa-info-circle",
type: "link",
renderif: function(data) {
- if(data.content_id === "N/A"){
+ if(data.content_id === null){
return false;
}
return true;
diff --git a/public/js/components/Cis/Cms/Content.js b/public/js/components/Cis/Cms/Content.js
index 470a0fa62..355add08a 100644
--- a/public/js/components/Cis/Cms/Content.js
+++ b/public/js/components/Cis/Cms/Content.js
@@ -2,6 +2,8 @@ import raum_contentmittitel from './Content_types/Raum_contentmittitel.js'
import general from './Content_types/General.js'
import BsConfirm from "../../Bootstrap/Confirm.js";
import news_content from './Content_types/News_content.js';
+import iframe_content from './Content_types/Iframe_content.js';
+
import ApiCms from '../../../api/factory/cms.js';
export default {
@@ -24,42 +26,23 @@ export default {
raum_contentmittitel,
news_content,
general,
+ iframe_content
},
data() {
return {
+ content_type: null,
content: null,
content_id_internal: this.content_id
};
},
methods: {
fetchContent(){
- return this.$api
+ this.$api
.call(ApiCms.content(this.content_id_internal, this.version, this.sprache, this.sichtbar))
.then(res => {
- this.content = res.data.content;
- this.content_type = res.data.type;
-
- document.querySelectorAll("#cms [data-confirm]").forEach((el) => {
- el.addEventListener("click", (evt) => {
- evt.preventDefault();
- BsConfirm.popup(el.dataset.confirm)
- .then(() => {
- Axios.get(el.href)
- .then((res) => {
- // TODO(chris): check for success then show message and/or reload
- location = location;
- })
- .catch((err) => console.error("ERROR:", err));
- })
- .catch(() => {
- });
- });
- });
- document.querySelectorAll("#cms [data-href]").forEach((el) => {
- el.href = el.dataset.href.replace(
- /^ROOT\//,
- FHC_JS_DATA_STORAGE_OBJECT.app_root
- );
+ this.$nextTick(function() {
+ this.content = res.data.content;
+ this.content_type = res.data.type;
});
});
}
@@ -83,6 +66,8 @@ export default {
return "raum_contentmittitel";
case "news":
return "news_content";
+ case "iframe":
+ return "iframe_content";
default:
return "general";
};
@@ -91,8 +76,6 @@ export default {
created() {
this.fetchContent();
},
- mounted() {
- },
template: /*html*/ `
diff --git a/public/js/components/Cis/Cms/Content_types/Iframe_content.js b/public/js/components/Cis/Cms/Content_types/Iframe_content.js
new file mode 100644
index 000000000..568cfaf03
--- /dev/null
+++ b/public/js/components/Cis/Cms/Content_types/Iframe_content.js
@@ -0,0 +1,31 @@
+import { replaceRelativeLegacyLink } from "../../../../helpers/LegacyLinkReplaceHelper.js";
+
+export default {
+ name: "iframe_content",
+ props: {
+ content: { type: String, required: true }
+ },
+ computed: {
+ srcUrl() {
+ const parser = new DOMParser()
+ const doc = parser.parseFromString(`
${this.content}
`, "text/html");
+ const iframe = doc.querySelector("iframe[src]");
+
+ if (!iframe)
+ return "";
+
+ let url = iframe.getAttribute("src") || "";
+ return replaceRelativeLegacyLink(url);
+ }
+ },
+ template: `
+
+
+
Keine URL gefunden.
+
+ `
+};
diff --git a/public/js/components/DetailHeader/DetailHeader.js b/public/js/components/DetailHeader/DetailHeader.js
index 5c1573753..1088e3f63 100644
--- a/public/js/components/DetailHeader/DetailHeader.js
+++ b/public/js/components/DetailHeader/DetailHeader.js
@@ -102,6 +102,13 @@ export default {
redirectToLeitung(){
this.$emit('redirectToLeitung', {
person_id: this.leitungData.person_id});
+ },
+ getFotoSrc(foto) {
+ if(foto === null) {
+ return FHC_JS_DATA_STORAGE_OBJECT.app_root + 'skin/images/profilbild_dummy.jpg';
+ } else {
+ return 'data:image/jpeg;base64,' + foto;
+ }
}
},
template: `
@@ -116,7 +123,7 @@ export default {
diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Details.js b/public/js/components/Stv/Studentenverwaltung/Details/Details.js
index fdb4ec016..5bb673d1a 100644
--- a/public/js/components/Stv/Studentenverwaltung/Details/Details.js
+++ b/public/js/components/Stv/Studentenverwaltung/Details/Details.js
@@ -186,7 +186,7 @@ export default {
@@ -516,4 +516,4 @@ export default {
`
-};
\ No newline at end of file
+};
diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Kontakt/Contact.js b/public/js/components/Stv/Studentenverwaltung/Details/Kontakt/Contact.js
index e429e5933..1ff34dc79 100644
--- a/public/js/components/Stv/Studentenverwaltung/Details/Kontakt/Contact.js
+++ b/public/js/components/Stv/Studentenverwaltung/Details/Kontakt/Contact.js
@@ -300,8 +300,7 @@ export default{
this.$api
.call(ApiStvContact.getTypes())
.then(result => {
- //this.kontakttypen = result.data;
- this.kontakttypen = result.data.filter(item => item.kontakttyp !== 'hidden');
+ this.kontakttypen = result.data;
})
.catch(this.$fhcAlert.handleSystemError);
},
@@ -326,7 +325,7 @@ export default{
v-model="contactData.kontakttyp">
>
-
+
@@ -455,4 +454,4 @@ export default{
>
`
-};
\ No newline at end of file
+};
diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Prestudent.js b/public/js/components/Stv/Studentenverwaltung/Details/Prestudent.js
index 3fa43e624..dc645dadc 100644
--- a/public/js/components/Stv/Studentenverwaltung/Details/Prestudent.js
+++ b/public/js/components/Stv/Studentenverwaltung/Details/Prestudent.js
@@ -318,6 +318,7 @@ export default {
name="zgvnation"
>
+
@@ -380,6 +381,7 @@ export default {
name="zgvmanation"
>
+
@@ -443,6 +445,7 @@ export default {
name="zgvdoktornation"
>
+
@@ -504,6 +507,7 @@ export default {
v-model="data.berufstaetigkeit_code"
name="berufstaetigkeit_code"
>
+
+
diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Status/Modal.js b/public/js/components/Stv/Studentenverwaltung/Details/Status/Modal.js
index edbd3b6ea..8b0252be8 100644
--- a/public/js/components/Stv/Studentenverwaltung/Details/Status/Modal.js
+++ b/public/js/components/Stv/Studentenverwaltung/Details/Status/Modal.js
@@ -205,7 +205,7 @@ export default{
];*/
},
template: `
-
+
{{ $p.t('lehre', statusNew ? 'status_new' : 'status_edit', prestudent) }}
diff --git a/public/js/components/Stv/Studentenverwaltung/Verband.js b/public/js/components/Stv/Studentenverwaltung/Verband.js
index ccd555714..072e0e952 100644
--- a/public/js/components/Stv/Studentenverwaltung/Verband.js
+++ b/public/js/components/Stv/Studentenverwaltung/Verband.js
@@ -112,26 +112,14 @@ export default {
return cp;
},
- async filterFav() {
+ filterFav() {
this.favorites.on = !this.favorites.on;
this.$api
.call(this.endpoint.favorites.set(
JSON.stringify(this.favorites)
- ))
- .then(result => {
- if (result.meta?.removed) {
- this.favorites.list = this.favorites.list
- .filter(fav => !result.meta.removed.includes(fav));
- const items = result.meta.removed.map(
- rem => this.nodes.find(
- node => node.data.link == rem
- ).label
- ).join(',\n');
- this.$fhcAlert.alertWarning(this.$p.t('stv/warn_removed_favs', { items }));
- }
- });
+ ));
},
- async markFav(key) {
+ markFav(key) {
let index = this.favorites.list.indexOf(key.data.link + '');
if (index != -1) {
@@ -143,19 +131,7 @@ export default {
this.$api
.call(this.endpoint.favorites.set(
JSON.stringify(this.favorites)
- ))
- .then(result => {
- if (result.meta?.removed) {
- this.favorites.list = this.favorites.list
- .filter(fav => !result.meta.removed.includes(fav));
- const items = "\n" + result.meta.removed.map(
- rem => this.nodes.find(
- node => node.data.link == rem
- ).label
- ).join(",\n");
- this.$fhcAlert.alertWarning(this.$p.t('stv/warn_removed_favs', { items }));
- }
- });
+ ));
},
unsetFavFocus(e) {
if (e.target.dataset?.linkFavAdd !== undefined) {
diff --git a/public/js/components/searchbar/result/template/action.js b/public/js/components/searchbar/result/template/action.js
index eb4b1db3a..fdcbfaee8 100644
--- a/public/js/components/searchbar/result/template/action.js
+++ b/public/js/components/searchbar/result/template/action.js
@@ -19,10 +19,24 @@ export default {
if (this.action.type === 'function')
this.action.action(this.res);
this.$emit('actionexecuted');
+ },
+ renderif: function() {
+ if(this.action?.renderif === undefined) {
+ return true;
+ }
+
+ return this.action.renderif(this.res);
}
},
template: `
+
{{ $p.t('search/action_default_label') }}
- `
+
+
+
+
+ {{ $p.t('search/action_default_label') }}
+
+ `
};
\ No newline at end of file
diff --git a/public/js/components/searchbar/result/template/actions.js b/public/js/components/searchbar/result/template/actions.js
index 726fef4dd..8bfd08420 100644
--- a/public/js/components/searchbar/result/template/actions.js
+++ b/public/js/components/searchbar/result/template/actions.js
@@ -10,11 +10,20 @@ export default {
res: Object,
actions: Array
},
+ methods: {
+ renderif: function(action) {
+ if(action?.renderif === undefined) {
+ return true;
+ }
+
+ return action.renderif(this.res);
+ }
+ },
template: `
+
{{ action.label }}
+
`
};
\ No newline at end of file
diff --git a/rdf/student.rdf.php b/rdf/student.rdf.php
index 439ded6ec..c0d8bdd5d 100644
--- a/rdf/student.rdf.php
+++ b/rdf/student.rdf.php
@@ -366,7 +366,7 @@ function draw_content($row)
uid)?$row->uid.'@'.DOMAIN:'').']]>
zugangscode.']]>
- zugangscode.'&emailAdresse='.$mail_privat.']]>
+ zugangscode.'&emailAdresse='.$mail_privat.'&keepEmailUnverified=true]]>
bpk.']]>
diff --git a/system/FHComplete-3.3.sql b/system/FHComplete-3.3.sql
index 170066a1e..18c9c2c3d 100644
--- a/system/FHComplete-3.3.sql
+++ b/system/FHComplete-3.3.sql
@@ -9755,7 +9755,7 @@ COMMENT ON TABLE public.tbl_tag IS 'Orders and Company Tags';
CREATE TABLE public.tbl_variable (
name character varying(64) NOT NULL,
uid character varying(32) NOT NULL,
- wert character varying(64)
+ wert text
);
diff --git a/system/dbupdate_3.4.php b/system/dbupdate_3.4.php
index 4b52b04c4..9ee0f8267 100644
--- a/system/dbupdate_3.4.php
+++ b/system/dbupdate_3.4.php
@@ -27,6 +27,7 @@ require_once('dbupdate_3.4/example.php');
require_once('dbupdate_3.4/example2.php');
...
*/
+//require_once('dbupdate_3.4/25003_notenimport_nachpruefung.php');
require_once('dbupdate_3.4/dbupdate_dashboard.php');
require_once('dbupdate_3.4/26173_index_webservicelog.php');
require_once('dbupdate_3.4/24682_reihungstest_zugangscode_fuer_login.php');
@@ -77,8 +78,11 @@ require_once('dbupdate_3.4/55614_perm_verwaltetoe.php');
require_once('dbupdate_3.4/25999_C4_dashboard.php');
require_once('dbupdate_3.4/61730_Dashboard_Anpassungen.php');
require_once('dbupdate_3.4/40128_search.php');
+require_once('dbupdate_3.4/63394_Variablenbeschraenkung.php');
+require_once('dbupdate_3.4/63436_cis4_iframe_component.php');
require_once('dbupdate_3.4/60882_lehrfaecherverteilung_favorites.php');
require_once('dbupdate_3.4/66982_berufsschule.php');
+require_once('dbupdate_3.4/40314_electronic_onboarding_anbindung_ida.php');
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo 'Pruefe Tabellen und Attribute!
';
diff --git a/system/dbupdate_3.4/40314_electronic_onboarding_anbindung_ida.php b/system/dbupdate_3.4/40314_electronic_onboarding_anbindung_ida.php
new file mode 100644
index 000000000..b204d45aa
--- /dev/null
+++ b/system/dbupdate_3.4/40314_electronic_onboarding_anbindung_ida.php
@@ -0,0 +1,78 @@
+db_query("SELECT 1 FROM public.tbl_kontakttyp WHERE kontakttyp='email_unverifiziert'"))
+{
+ if($db->db_num_rows($result)==0)
+ {
+ $qry = "INSERT INTO public.tbl_kontakttyp(kontakttyp, beschreibung, bezeichnung_mehrsprachig) VALUES('email_unverifiziert', 'Unverifizierte E-Mail', '{\"Unverifizierte E-Mail\", \"Unverified email\"}');";
+
+ if(!$db->db_query($qry))
+ echo 'Kontakttyp: '.$db->db_last_error().'
';
+ else
+ echo '
Neuen Kontakttyp E-Mail unverifiziert in public.tbl_kontakttyp hinzugefügt';
+ }
+}
+
+// public.tbl_adressentyp: add type Meldeadresse
+if($result = $db->db_query("SELECT 1 FROM public.tbl_adressentyp WHERE adressentyp_kurzbz='m'"))
+{
+ if($db->db_num_rows($result)==0)
+ {
+ $qry = "INSERT INTO public.tbl_adressentyp(adressentyp_kurzbz, bezeichnung, bezeichnung_mehrsprachig, sort) VALUES('m', 'Meldeadresse', '{\"Meldeadresse\", \"Registered adress\"}', 6);";
+
+ if(!$db->db_query($qry))
+ echo 'Adressentyp: '.$db->db_last_error().'
';
+ else
+ echo '
Neue Adressentyp Meldeadresse in public.tbl_adressentyp hinzugefügt';
+ }
+}
+
+if (!$result = @$db->db_query('SELECT 1 FROM public.tbl_kontakt_verifikation LIMIT 1'))
+{
+ $qry = "CREATE SEQUENCE public.tbl_kontakt_verifikation_kontakt_verifikation_id_seq
+ INCREMENT BY 1
+ NO MAXVALUE
+ NO MINVALUE
+ START WITH 1
+ CACHE 1
+ NO CYCLE;
+
+ CREATE TABLE public.tbl_kontakt_verifikation
+ (
+ kontakt_verifikation_id integer DEFAULT nextval('public.tbl_kontakt_verifikation_kontakt_verifikation_id_seq'::regclass),
+ kontakt_id integer UNIQUE NOT NULL,
+ verifikation_code varchar(32) UNIQUE NOT NULL,
+ erstelldatum timestamp without time zone,
+ verifikation_datum timestamp without time zone,
+ app varchar(32),
+ CONSTRAINT pk_tbl_kontakt_verifikation_id PRIMARY KEY (kontakt_verifikation_id)
+ );
+
+ ALTER TABLE public.tbl_kontakt_verifikation ADD CONSTRAINT fk_tbl_kontakt_verifikation_kontakt_id FOREIGN KEY (kontakt_id)
+ REFERENCES public.tbl_kontakt (kontakt_id)
+ ON DELETE CASCADE ON UPDATE CASCADE;
+
+ ALTER TABLE public.tbl_kontakt_verifikation ADD CONSTRAINT fk_tbl_kontakt_verifikation_app FOREIGN KEY (app)
+ REFERENCES system.tbl_app (app)
+ ON DELETE RESTRICT ON UPDATE CASCADE;
+
+ COMMENT ON TABLE public.tbl_kontakt_verifikation IS 'Contact verification';
+ COMMENT ON COLUMN public.tbl_kontakt_verifikation.kontakt_id IS 'Contact to verify';
+ COMMENT ON COLUMN public.tbl_kontakt_verifikation.verifikation_code IS 'Code generated for verification';
+ COMMENT ON COLUMN public.tbl_kontakt_verifikation.erstelldatum IS 'Time when verification code was generated';
+ COMMENT ON COLUMN public.tbl_kontakt_verifikation.verifikation_datum IS 'Time when contact was verified';
+ COMMENT ON COLUMN public.tbl_kontakt_verifikation.app IS 'App where contact was verified';
+
+ GRANT SELECT, UPDATE, INSERT, DELETE ON public.tbl_kontakt_verifikation TO web;
+ GRANT SELECT, UPDATE, INSERT, DELETE ON public.tbl_kontakt_verifikation TO vilesci;
+ GRANT SELECT, UPDATE ON public.tbl_kontakt_verifikation_kontakt_verifikation_id_seq TO vilesci;
+ GRANT SELECT, UPDATE ON public.tbl_kontakt_verifikation_kontakt_verifikation_id_seq TO web;
+ ";
+
+ if(!$db->db_query($qry))
+ echo 'public.tbl_kontakt_verifikation: '.$db->db_last_error().'
';
+ else
+ echo ' public.tbl_kontakt_verifikation: Tabelle hinzugefuegt
';
+}
diff --git a/system/dbupdate_3.4/63394_Variablenbeschraenkung.php b/system/dbupdate_3.4/63394_Variablenbeschraenkung.php
new file mode 100644
index 000000000..f6a75b5ef
--- /dev/null
+++ b/system/dbupdate_3.4/63394_Variablenbeschraenkung.php
@@ -0,0 +1,28 @@
+db_query("
+ SELECT data_type
+ FROM information_schema.columns
+ WHERE table_schema = 'public'
+ AND table_name = 'tbl_variable'
+ AND column_name = 'wert';
+")) {
+ if ($db->db_num_rows($result) == 1)
+ {
+ $data_type = $db->db_fetch_row($result)[0];
+
+ if (strtolower($data_type) != 'text')
+ {
+ $qry = "ALTER TABLE public.tbl_variable
+ ALTER COLUMN wert
+ TYPE TEXT;";
+
+ if (!$db->db_query($qry))
+ echo 'public.tbl_variable '.$db->db_last_error().'
';
+ else
+ echo 'public.tbl_variable: Change type of "wert" to TEXT
';
+ }
+ }
+}
diff --git a/system/dbupdate_3.4/63436_cis4_iframe_component.php b/system/dbupdate_3.4/63436_cis4_iframe_component.php
new file mode 100644
index 000000000..a5b3bbf7c
--- /dev/null
+++ b/system/dbupdate_3.4/63436_cis4_iframe_component.php
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+
+
+EOD;
+
+$xslt_xhtml= <<
+
+
+
+
+
+
+
+ Keine URL im Inhalt gefunden.
+
+
+
+
+EOD;
+
+$xslt_xhtml_c4= <<
+
+
+
+
+
+
+
+ Keine URL im Inhalt gefunden.
+
+
+
+
+EOD;
+
+
+if ($result = @$db->db_query("SELECT * FROM campus.tbl_template WHERE template_kurzbz='iframe'"))
+{
+ if ($db->db_num_rows($result) == 0)
+ {
+ $sql= <<db_query($sql))
+ {
+ echo 'campus.tbl_template: ' . $db->db_last_error() . '
';
+ }
+ else
+ {
+ echo ' campus.tbl_template: Template "iframe" hinzugefügt.
';
+ }
+
+ }
+}
diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php
index 97b556239..843e8d28c 100644
--- a/system/phrasesupdate.php
+++ b/system/phrasesupdate.php
@@ -30686,6 +30686,26 @@ array(
)
)
),
+ array(
+ 'app' => 'anwesenheiten',
+ 'category' => 'global',
+ 'phrase' => 'jetztStarten',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Jetzt Starten',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Start Now',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
array(
'app' => 'anwesenheiten',
'category' => 'global',
@@ -38420,26 +38440,6 @@ array(
)
)
),
- array(
- 'app' => 'core',
- 'category' => 'stv',
- 'phrase' => 'warn_removed_favs',
- 'insertvon' => 'system',
- 'phrases' => array(
- array(
- 'sprache' => 'German',
- 'text' => 'Zu viele Favoriten! Die folgenden Einträge wurden entfernt: {items}',
- 'description' => '',
- 'insertvon' => 'system'
- ),
- array(
- 'sprache' => 'English',
- 'text' => 'Too many favorites! The following entries were removed: {items}',
- 'description' => '',
- 'insertvon' => 'system'
- )
- )
- ),
array(
'app' => 'core',
'category' => 'stv',
@@ -42556,6 +42556,26 @@ array(
)
)
),
+ array(
+ 'app' => 'core',
+ 'category' => 'abgabetool',
+ 'phrase' => 'c4abgabeStgSpezifischeRichtlinienBeachten',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => "Bitte beachten Sie gegebenenfalls existierende studiengangsspezifische Richtlinien und informieren Sie sich diesbezüglich. Vielen Dank.",
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Please note any existing program-specific guidelines and inform yourself about them. Thank you.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
array(
'app' => 'core',
'category' => 'abgabetool',
@@ -50294,6 +50314,556 @@ and represent the current state of research on the topic. The prescribed citatio
)
)
// FHC-4 Projektarbeiten & Vertraege ENDE
+ //**************************** FHC-Core-ElectronicOnboarding
+ array(
+ 'app' => 'core',
+ 'category' => 'onboarding',
+ 'phrase' => 'emailFehlt',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Email fehlt',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Email is missing',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'onboarding',
+ 'phrase' => 'emailUngueltig',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Email ist ungültig',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'The email is not valid',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'onboarding',
+ 'phrase' => 'emailRegistriert',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Diese Email ist bereits registriert. Bitte verwenden sie eine andere Email oder loggen sie sich mit einer anderen Methode ein.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'The email is already registered. Please choose a different email or use a different login method.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'onboarding',
+ 'phrase' => 'bewerbungZugangEmailBetreff',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Zugang zu Ihrer Bewerbung',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Access to your application',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'onboarding',
+ 'phrase' => 'bewerbungZugangEmailAnredeWeiblich',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Sehr geehrte Frau',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Dear Ms',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'onboarding',
+ 'phrase' => 'bewerbungZugangEmailAnredeMaennlich',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Sehr geehrter Herr',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Dear Mr',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'onboarding',
+ 'phrase' => 'bewerbungZugangEmailAnredeNeutral',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Sehr geehrte/r',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Dear',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'onboarding',
+ 'phrase' => 'bewerbungVerifzieren',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Bewerbung verifizieren',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Verify application',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'onboarding',
+ 'phrase' => 'bewerbungVerifizierungEinleitung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Wenn Ihre Daten stimmen, geben Sie bitte Ihre E-Mail Adresse ein und drücken Sie auf "Bewerbung verifizieren".
+Danach erhalten Sie eine E-Mail mit dem Link zu Ihrer Bewerbung an die angegebene Adresse.
+Dort können Sie Studienrichtungen hinzufügen, Ihre Daten vervollständigen, und sich unverbindlich bewerben.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'If your data is correct, please enter your email and click "Verify application".
+We will then send you a link via e-mail to the address specified. There, you can add personal information or degree programs and submit non-binding applications.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'onboarding',
+ 'phrase' => 'bewerbungVerifizierungKontakthinweis',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Wenn Sie mehr Informationen benötigen, steht Ihnen unsere Studienberatung gerne persönlich, telefonisch, per E-Mail oder WhatsApp zur Verfügung.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Should you require any additional information, please do not hesitate to contact our student counselling team in person, by phone, or via e-mail or WhatsApp.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'onboarding',
+ 'phrase' => 'bewerbungVerifizierungDatenschutzhinweis',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Datenschutz-Hinweis',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Privacy information',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'onboarding',
+ 'phrase' => 'bewerbungVerifizierungDatenschutzhinweisText',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Die uns von Ihnen zum Zwecke der Bewerbung bekanntgegebenen Daten werden von uns ausschließlich zur Abwicklung der Bewerbung auf der Grundlage von vor- bzw vertraglichen Zwecken verarbeitet und mit der unten beschriebenen Ausnahme bei Unklarheiten betreffend die Zugangsvoraussetzungen nicht an Dritte weitergegeben.
+Kommt es zu keinem weiteren Kontakt bzw zu keiner Aufnahme, löschen wir Ihre Daten nach drei Jahren.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'The data communicated to us by you for the purpose of the application will be used by us exclusively for the processing of the application on the basis of pre-contractual or contractual purposes and will not be passed on to third parties with the exception described below in case of uncertainties regarding the entry requirements.
+If there is no further contact or enrolment, your data will be deleted after three years.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'onboarding',
+ 'phrase' => 'bewerbungVerifizierungInformationenDatenschutzGrundverordnung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Informationen zu Ihren Betroffenenrechten finden Sie hier:',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Information on your data subject rights can be found here:',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'onboarding',
+ 'phrase' => 'bewerbungVerifizierungDatenschutzFragen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Bei Fragen stehen wir Ihnen jederzeit unter folgender Mail zur Verfügung: ',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'If you have any questions, please contact us at ',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'onboarding',
+ 'phrase' => 'vorname',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Vorname',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'First name',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'onboarding',
+ 'phrase' => 'nachname',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Nachname',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Last name',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'onboarding',
+ 'phrase' => 'geburtsdatum',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Geburtsdatum',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Birth date',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'onboarding',
+ 'phrase' => 'emailAdresse',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'E-Mail Adresse',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'E-mail address',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'onboarding',
+ 'phrase' => 'emailGesendet',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Die E-Mail mit dem Link zu Ihrer Bewerbung wurde erfolgreich an {0} verschickt.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'The email with the link to your application has been successfully sent to {0}.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'onboarding',
+ 'phrase' => 'emailGesendetHinweis',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'In der Regel erhalten Sie das Mail in wenigen Minuten. Wenn Sie nach 24 Stunden noch kein Mail erhalten haben,
+ kontaktieren Sie bitte unsere {0}Studienberatung{1}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'You should receive an e-mail within a few minutes. If you receive no e-mail within 24 hours please contact
+ our {0}student counselling team{1}.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'onboarding',
+ 'phrase' => 'fehlerBeiRegistrierung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Fehler bei der Registrierung',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Error when registering',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'onboarding',
+ 'phrase' => 'fehlerBeiRegistrierungText',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Es ist ein Fehler bei der Registrierung aufgetreten.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'An error occured during registration.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'onboarding',
+ 'phrase' => 'fehlerBeiRegistrierungNochmalVersuchen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Nochmals versuchen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Try again',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'onboarding',
+ 'phrase' => 'zustimmungDatenuebermittlung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Können in Ausnahmefällen die Zugangsvoraussetzungen von der FH Technikum Wien nicht abschließend abgeklärt werden, erteile ich die Zustimmung, dass die FH Technikum Wien die Dokumente zur Überprüfung an die zuständigen Behörden weiterleiten kann.
+Ich wurde darüber informiert, dass ich nicht verpflichtet bin, der Übermittlung meiner Daten zuzustimmen. Diese Zustimmung ist allerdings notwendig, um die Bewerbung berücksichtigen zu können.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'If in exceptional cases the admission requirements can not be finally clarified by the UAS Technikum Wien, I give my consent that the UAS Technikum Wien can forward the documents to the competent authorities for verification.
+I have been informed that I am under no obligation to consent to the transmission of my data. However, this consent is necessary in order for the application to be considered.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'onboarding',
+ 'phrase' => 'zustimmungDatenschutzerklaerung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Ich habe die Datenschutzerklärung zu Kenntnis genommen.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'I have taken note of the privacy policy.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'onboarding',
+ 'phrase' => 'bitteDatenuebermittlungZustimmen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Sie müssen der Datenübermittlung zustimmen, um Ihre Bewerbung abschicken zu können.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'You have to consent the transmission of your data to send the application.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'onboarding',
+ 'phrase' => 'bitteDatenschutzerklaerungZustimmen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Sie müssen der Datenschutzerklärung zustimmen, um Ihre Bewerbung abschicken zu können.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'You have to consent to the privacy statement to send the application.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ )
);
diff --git a/vilesci/personen/personendetails.php b/vilesci/personen/personendetails.php
index a20e34c5d..684b21712 100644
--- a/vilesci/personen/personendetails.php
+++ b/vilesci/personen/personendetails.php
@@ -153,7 +153,7 @@ echo "| Name: | $person->titelpre $person->nachname $
echo " |
| Geburtsdatum: | ".$datum_obj->formatDatum($person->gebdatum,'d.m.Y')." |
";
echo "| Geschlecht: | ".$person->geschlecht." |
";
echo "| Anmerkung: | ".$db->convert_html_chars($person->anmerkungen)." |
";
-echo "| Zugangscode: | ".(in_array('bewerbung', (explode(';', ACTIVE_ADDONS)))?"".$db->convert_html_chars($person->zugangscode)."":$db->convert_html_chars($person->zugangscode))." |
";
+echo "| Zugangscode: | ".(in_array('bewerbung', (explode(';', ACTIVE_ADDONS)))?"".$db->convert_html_chars($person->zugangscode)."":$db->convert_html_chars($person->zugangscode))." |
";
echo '';
echo '
Statusinformation - FH Ausweis
';