Merge branch 'master' into feature-63468/Studierendenverwaltung_Neuanlage_von_Interessenten_ueberarbeiten

This commit is contained in:
Alexei Karpenko
2025-10-06 16:54:41 +02:00
36 changed files with 1129 additions and 196 deletions
@@ -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);
@@ -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()
@@ -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)
)
@@ -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,
@@ -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;
}
}
@@ -0,0 +1,86 @@
<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
class MeldezettelJob extends JOB_Controller
{
const INSERT_VON = 'meldezetteljob';
const DOKUMENT_KURZBZ = 'Meldezet';
private $_ci; // Code igniter instance
public function __construct()
{
parent::__construct();
$this->_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));
}
}
@@ -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);
}
+2 -2
View File
@@ -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);
}
}
+8 -2
View File
@@ -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));
}
+4 -3
View File
@@ -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);
@@ -0,0 +1,42 @@
<?php
class Kontaktverifikation_model extends DB_Model
{
/**
* Constructor
*/
public function __construct()
{
parent::__construct();
$this->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));
}
}
+52 -64
View File
@@ -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));
}
@@ -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;
@@ -18,6 +18,9 @@
<?php (!isset($notiz->kurzbzlang)) ?: print_r('(' . nl2br($notiz->kurzbzlang) . ') - ') ?>
<?php echo nl2br($notiz->text) ?>
</td>
<td>
<a href="mailto:<?php echo htmlspecialchars($notiz->email)?>?body=<?php echo rawurlencode($notiz->text);; ?>"><i class="fa fa-envelope"></i></a>
</td>
</tr>
<?php endforeach; ?>
</tbody>
@@ -57,7 +57,7 @@
<div class="row<?php if ($lockedbyother) echo ' alert-danger' ?>">
<div class="col-lg-8">
<h3 class="page-header">
Infocenter Details: <?php echo $stammdaten->vorname.' '.$stammdaten->nachname ?>
Infocenter Details: <a target="_blank" title="Studentenverwaltung" href="<?php echo site_url('/Studentenverwaltung/' . $studiensemester . '/person/' . $stammdaten->person_id) ?>"><?php echo $stammdaten->vorname.' '.$stammdaten->nachname ?> <i class="fa fa-external-link" style="font-size:small"></i></a>
</h3>
</div>
<div class="col-lg-4">
@@ -182,7 +182,7 @@
</div>
<?php if (isset($stammdaten->zugangscode)): ?>
<div class="col-xs-6 text-right">
<a href="<?php echo CIS_ROOT.'addons/bewerbung/cis/registration.php?code='.html_escape($stammdaten->zugangscode).'&emailAdresse='.$lastMailAdress ?>"
<a href="<?php echo CIS_ROOT.'addons/bewerbung/cis/registration.php?code='.html_escape($stammdaten->zugangscode).'&emailAdresse='.$lastMailAdress.'&keepEmailUnverified=true' ?>"
target='_blank'><i class="glyphicon glyphicon-new-window"></i>&nbsp;<?php echo $this->p->t('infocenter','zugangBewerbung') ?></a>
</div>
<?php endif; ?>
+12 -4
View File
@@ -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)
{
+2 -2
View File
@@ -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;
+10 -27
View File
@@ -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*/ `
<!-- div that contains the content -->
<div id="fhc-cms-content" v-if="content">
@@ -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(`<div>${this.content}</div>`, "text/html");
const iframe = doc.querySelector("iframe[src]");
if (!iframe)
return "";
let url = iframe.getAttribute("src") || "";
return replaceRelativeLegacyLink(url);
}
},
template: `
<div class="w-100">
<iframe
v-if="srcUrl"
:src="srcUrl"
style="width:100%; height:90vh; border:0; display:block;"
></iframe>
<div v-else class="alert alert-warning">Keine URL gefunden.</div>
</div>
`
};
@@ -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 {
<img
class="d-block h-100 rounded"
alt="Profilbild"
:src="'data:image/jpeg;base64,' + person.foto"
:src="getFotoSrc(person.foto)"
/>
<template v-if="person.foto_sperre">
@@ -186,7 +186,7 @@ export default {
<label>{{$p.t('global', 'zugangscode')}}</label>
<div class="align-self-center">
<span class="form-text">
<a :href="cisRoot + 'addons/bewerbung/cis/registration.php?code=' + data.zugangscode + '&emailAdresse=' + data.email_privat" target="_blank">{{data.zugangscode}}</a>
<a :href="cisRoot + 'addons/bewerbung/cis/registration.php?code=' + data.zugangscode + '&emailAdresse=' + data.email_privat + '&keepEmailUnverified=true'" target="_blank">{{data.zugangscode}}</a>
</span>
</div>
</div>
@@ -516,4 +516,4 @@ export default {
</div>
</fieldset>
</core-form>`
};
};
@@ -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">
>
<option value="">keine Auswahl</option>
<option v-for="typ in kontakttypen" :key="typ.kontakttyp_kurzbz" :value="typ.kontakttyp" >{{typ.beschreibung}}</option>
<option v-for="typ in kontakttypen" :key="typ.kontakttyp" :value="typ.kontakttyp">{{typ.beschreibung}}</option>
</form-input>
</div>
@@ -455,4 +454,4 @@ export default{
>
</core-filter-cmpt>
</div>`
};
};
@@ -318,6 +318,7 @@ export default {
name="zgvnation"
>
<!-- TODO(chris): gesperrte nationen können nicht ausgewählt werden! Um das zu realisieren müsste man ein pseudo select machen -->
<option value="">&nbsp;</option>
<option v-for="nation in lists.nations" :key="nation.nation_code" :value="nation.nation_code" :disabled="nation.sperre">{{nation.kurztext}}</option>
</form-input>
</div>
@@ -380,6 +381,7 @@ export default {
name="zgvmanation"
>
<!-- TODO(chris): gesperrte nationen können nicht ausgewählt werden! Um das zu realisieren müsste man ein pseudo select machen -->
<option value="">&nbsp;</option>
<option v-for="nation in lists.nations" :key="nation.nation_code" :value="nation.nation_code" :disabled="nation.sperre">{{nation.kurztext}}</option>
</form-input>
</div>
@@ -443,6 +445,7 @@ export default {
name="zgvdoktornation"
>
<!-- TODO(chris): gesperrte nationen können nicht ausgewählt werden! Um das zu realisieren müsste man ein pseudo select machen -->
<option value="">&nbsp;</option>
<option v-for="nation in lists.nations" :key="nation.nation_code" :value="nation.nation_code" :disabled="nation.sperre">{{nation.kurztext}}</option>
</form-input>
</div>
@@ -504,6 +507,7 @@ export default {
v-model="data.berufstaetigkeit_code"
name="berufstaetigkeit_code"
>
<option value="">&nbsp;</option>
<option v-for="beruf in listBerufe" :key="beruf.berufstaetigkeit_code" :value="beruf.berufstaetigkeit_code">{{beruf.berufstaetigkeit_bez}} </option>
</form-input>
<form-input
@@ -514,6 +518,7 @@ export default {
v-model="data.ausbildungcode"
name="ausbildungcode"
>
<option value="">&nbsp;</option>
<option v-for="ausbld in listAusbildung" :key="ausbld.ausbildungcode" :value="ausbld.ausbildungcode">{{ausbld.ausbildungbez}} </option>
</form-input>
</div>
@@ -205,7 +205,7 @@ export default{
];*/
},
template: `
<bs-modal class="stv-status-modal" ref="modal">
<bs-modal class="stv-status-modal" ref="modal" dialog-class="modal-dialog-scrollable">
<template #title>
{{ $p.t('lehre', statusNew ? 'status_new' : 'status_edit', prestudent) }}
</template>
@@ -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) {
@@ -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: `
<template v-if="this.renderif()">
<a class="searchbar-result-template-action" :href="actionHref" @click="actionFunc">
<slot>{{ $p.t('search/action_default_label') }}</slot>
</a>`
</a>
</template>
<template v-else>
<div class="searchbar-result-template-action">
<slot>{{ $p.t('search/action_default_label') }}</slot>
</div>
</template>`
};
@@ -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: `
<div v-if="actions.length" class="searchbar-result-template-actions">
<template v-for="(action, index) in actions" :key="action.label">
<result-action
v-for="(action, index) in actions"
:key="action.label"
v-if="this.renderif(action)"
:res="res"
:action="action"
class="btn btn-primary btn-sm"
@@ -23,5 +32,6 @@ export default {
<i v-if="action.icon" :class="action.icon"></i>
<span class="p-2">{{ action.label }}</span>
</result-action>
</template>
</div>`
};
+1 -1
View File
@@ -366,7 +366,7 @@ function draw_content($row)
<STUDENT:mail_privat><![CDATA['.$mail_privat.']]></STUDENT:mail_privat>
<STUDENT:mail_intern><![CDATA['.(isset($row->uid)?$row->uid.'@'.DOMAIN:'').']]></STUDENT:mail_intern>
<STUDENT:zugangscode><![CDATA['.$row->zugangscode.']]></STUDENT:zugangscode>
<STUDENT:link_bewerbungstool><![CDATA['.CIS_ROOT.'addons/bewerbung/cis/registration.php?code='.$row->zugangscode.'&emailAdresse='.$mail_privat.']]></STUDENT:link_bewerbungstool>
<STUDENT:link_bewerbungstool><![CDATA['.CIS_ROOT.'addons/bewerbung/cis/registration.php?code='.$row->zugangscode.'&emailAdresse='.$mail_privat.'&keepEmailUnverified=true]]></STUDENT:link_bewerbungstool>
<STUDENT:bpk><![CDATA['.$row->bpk.']]></STUDENT:bpk>
<STUDENT:aktiv><![CDATA['.$aktiv.']]></STUDENT:aktiv>
+1 -1
View File
@@ -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
);
+4
View File
@@ -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 '<H2>Pruefe Tabellen und Attribute!</H2>';
@@ -0,0 +1,78 @@
<?php
if (! defined('DB_NAME')) exit('No direct script access allowed');
// public.tbl_kontakttyp: add type email unverified
if($result = $db->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 '<strong>Kontakttyp: '.$db->db_last_error().'</strong><br>';
else
echo '<br>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 '<strong>Adressentyp: '.$db->db_last_error().'</strong><br>';
else
echo '<br>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 '<strong>public.tbl_kontakt_verifikation: '.$db->db_last_error().'</strong><br>';
else
echo ' public.tbl_kontakt_verifikation: Tabelle hinzugefuegt<br>';
}
@@ -0,0 +1,28 @@
<?php
if (!defined('DB_NAME')) exit('No direct script access allowed');
// Change type of wert in public.tbl_variable
if ($result = @$db->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 '<strong>public.tbl_variable '.$db->db_last_error().'</strong><br>';
else
echo 'public.tbl_variable: Change type of "wert" to TEXT<br>';
}
}
}
@@ -0,0 +1,81 @@
<?php
$xsd= <<<EOD
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="content">
<xs:complexType>
<xs:sequence>
<xs:element name="url" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
EOD;
$xslt_xhtml= <<<EOD
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="UTF-8"/>
<xsl:template match="content">
<xsl:choose>
<xsl:when test="string(url)">
<iframe
src="{url}"
frameborder="0"
style="width:100%; height:90vh; border:0; display:block;"
>
</iframe>
</xsl:when>
<xsl:otherwise>
<div class="alert alert-warning">Keine URL im Inhalt gefunden.</div>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
EOD;
$xslt_xhtml_c4= <<<EOD
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="UTF-8"/>
<xsl:template match="content">
<xsl:choose>
<xsl:when test="string(url)">
<iframe
src="{url}"
frameborder="0"
style="width:100%; height:90vh; border:0; display:block;"
>
</iframe>
</xsl:when>
<xsl:otherwise>
<div class="alert alert-warning">Keine URL im Inhalt gefunden.</div>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
EOD;
if ($result = @$db->db_query("SELECT * FROM campus.tbl_template WHERE template_kurzbz='iframe'"))
{
if ($db->db_num_rows($result) == 0)
{
$sql= <<<EOD
INSERT INTO campus.tbl_template
(template_kurzbz, bezeichnung, xsd, xslt_xhtml, xslfo_pdf, xslt_xhtml_c4)
VALUES
('iframe','iFrame Content ', '{$xsd}', '{$xslt_xhtml}' , NULL, '{$xslt_xhtml_c4}');
EOD;
if (!$db->db_query($sql))
{
echo '<strong>campus.tbl_template: ' . $db->db_last_error() . '</strong><br>';
}
else
{
echo ' campus.tbl_template: Template "iframe" hinzugefügt.<br>';
}
}
}
+590 -20
View File
@@ -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 <a href="{0}" target="_blank">Studienberatung</a> 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 <a href="{0}" target="_blank">student counselling team</a> 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 <b>24 Stunden</b> 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 <b>24 hours</b> 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.<br>
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.<br>
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'
)
)
)
);
+1 -1
View File
@@ -153,7 +153,7 @@ echo "<tr><td align='right'>Name:</td><td> $person->titelpre $person->nachname $
echo "<tr><td align='right'>Geburtsdatum:</td><td> ".$datum_obj->formatDatum($person->gebdatum,'d.m.Y')."</td></tr>";
echo "<tr><td align='right'>Geschlecht:</td><td> ".$person->geschlecht."</td></tr>";
echo "<tr valign='top'><td align='right'>Anmerkung:</td><td width='800px'> ".$db->convert_html_chars($person->anmerkungen)."</td></tr>";
echo "<tr valign='top'><td align='right'>Zugangscode:</td><td width='800px'>".(in_array('bewerbung', (explode(';', ACTIVE_ADDONS)))?"<a href='".CIS_ROOT."addons/bewerbung/cis/registration.php?code=".$db->convert_html_chars($person->zugangscode)."&emailAdresse=".$email."' target='_blank'>".$db->convert_html_chars($person->zugangscode)."</a>":$db->convert_html_chars($person->zugangscode))."</td></tr>";
echo "<tr valign='top'><td align='right'>Zugangscode:</td><td width='800px'>".(in_array('bewerbung', (explode(';', ACTIVE_ADDONS)))?"<a href='".CIS_ROOT."addons/bewerbung/cis/registration.php?code=".$db->convert_html_chars($person->zugangscode)."&emailAdresse=".$email."&keepEmailUnverified=true' target='_blank'>".$db->convert_html_chars($person->zugangscode)."</a>":$db->convert_html_chars($person->zugangscode))."</td></tr>";
echo '</table>';
echo '<br><a href="../fhausweis/search.php?person_id='.$person->person_id.'">Statusinformation - FH Ausweis</a><br>';