mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-10-12 06:54:04 +00:00
Compare commits
7
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4058ecebdf | ||
|
|
5c0cbcd234 | ||
|
|
aa68181a3b | ||
|
|
cad122bef6 | ||
|
|
0c4d102850 | ||
|
|
2e15f2c5ab | ||
|
|
3034615455 |
@@ -26,6 +26,10 @@ $config['person'] = [
|
||||
'comparison' => 'similar',
|
||||
'field' => 'nachname'
|
||||
],
|
||||
'wahlname' => [
|
||||
'comparison' => 'similar',
|
||||
'field' => 'wahlname'
|
||||
],
|
||||
'name' => [
|
||||
'comparison' => 'similar',
|
||||
'field' => "(vorname || ' ' || nachname)"
|
||||
@@ -68,7 +72,7 @@ $config['person'] = [
|
||||
'resultfields' => [
|
||||
"ARRAY( SELECT uid FROM public.tbl_benutzer WHERE person_id = p.person_id ) AS uids",
|
||||
"p.person_id",
|
||||
"(p.vorname || ' ' || p.nachname) AS name",
|
||||
"CASE WHEN p.wahlname IS NOT NULL THEN (p.wahlname || ' ' || p.nachname) ELSE (p.vorname || ' ' || p.nachname) END AS name",
|
||||
"ARRAY( SELECT kontakt FROM public.tbl_kontakt WHERE kontakttyp = 'email' AND person_id=p.person_id ) AS email",
|
||||
"CASE
|
||||
WHEN p.foto IS NOT NULL THEN 'data:image/jpeg' || CONVERT_FROM(DECODE('3b','hex'), 'UTF8') || 'base64,' || p.foto
|
||||
@@ -117,6 +121,20 @@ $config['student'] = [
|
||||
]
|
||||
]
|
||||
],
|
||||
'wahlname' => [
|
||||
'comparison' => 'similar',
|
||||
'field' => 'wahlname',
|
||||
'join' => [
|
||||
[
|
||||
'table' => "public.tbl_prestudent",
|
||||
'using' => "prestudent_id"
|
||||
],
|
||||
[
|
||||
'table' => "public.tbl_person",
|
||||
'using' => "person_id"
|
||||
]
|
||||
]
|
||||
],
|
||||
'name' => [
|
||||
'comparison' => 'similar',
|
||||
'field' => "(vorname || ' ' || nachname)",
|
||||
@@ -196,7 +214,7 @@ $config['student'] = [
|
||||
"s.student_uid AS uid",
|
||||
"s.matrikelnr",
|
||||
"p.person_id",
|
||||
"(p.vorname || ' ' || p.nachname) AS name",
|
||||
"CASE WHEN p.wahlname IS NOT NULL THEN (p.wahlname || ' ' || p.nachname) ELSE (p.vorname || ' ' || p.nachname) END AS name",
|
||||
"(s.student_uid || '@" . DOMAIN . "') || ARRAY( SELECT kontakt FROM public.tbl_kontakt WHERE kontakttyp = 'email' AND person_id=p.person_id ) AS email",
|
||||
"CASE
|
||||
WHEN p.foto IS NOT NULL THEN 'data:image/jpeg' || CONVERT_FROM(DECODE('3b','hex'), 'UTF8') || 'base64,' || p.foto
|
||||
@@ -257,6 +275,14 @@ $config['prestudent'] = [
|
||||
'using' => "person_id"
|
||||
]
|
||||
],
|
||||
'wahlname' => [
|
||||
'comparison' => 'similar',
|
||||
'field' => 'wahlname',
|
||||
'join' => [
|
||||
'table' => "public.tbl_person",
|
||||
'using' => "person_id"
|
||||
]
|
||||
],
|
||||
'name' => [
|
||||
'comparison' => 'similar',
|
||||
'field' => "(vorname || ' ' || nachname)",
|
||||
@@ -314,7 +340,7 @@ $config['prestudent'] = [
|
||||
"s.matrikelnr",
|
||||
"p.person_id",
|
||||
"b.uid",
|
||||
"(p.vorname || ' ' || p.nachname) AS name",
|
||||
"CASE WHEN p.wahlname IS NOT NULL THEN (p.wahlname || ' ' || p.nachname) ELSE (p.vorname || ' ' || p.nachname) END AS name",
|
||||
"(b.uid || '@" . DOMAIN . "') || ARRAY( SELECT kontakt FROM public.tbl_kontakt WHERE kontakttyp = 'email' AND person_id=p.person_id ) AS email",
|
||||
"CASE
|
||||
WHEN p.foto IS NOT NULL THEN 'data:image/jpeg' || CONVERT_FROM(DECODE('3b','hex'), 'UTF8') || 'base64,' || p.foto
|
||||
@@ -390,6 +416,20 @@ $config['employee'] = [
|
||||
]
|
||||
]
|
||||
],
|
||||
'wahlname' => [
|
||||
'comparison' => 'similar',
|
||||
'field' => "wahlname",
|
||||
'join' => [
|
||||
[
|
||||
'table' => "public.tbl_benutzer",
|
||||
'on' => "uid = mitarbeiter_uid"
|
||||
],
|
||||
[
|
||||
'table' => "public.tbl_person",
|
||||
'using' => "person_id"
|
||||
]
|
||||
]
|
||||
],
|
||||
'name' => [
|
||||
'comparison' => 'similar',
|
||||
'field' => "(vorname || ' ' || nachname)",
|
||||
@@ -472,7 +512,7 @@ $config['employee'] = [
|
||||
'resultfields' => [
|
||||
"b.uid",
|
||||
"p.person_id",
|
||||
"(p.vorname || ' ' || p.nachname) AS name",
|
||||
"CASE WHEN p.wahlname IS NOT NULL THEN (p.wahlname || ' ' || p.nachname) ELSE (p.vorname || ' ' || p.nachname) END AS name",
|
||||
"ARRAY(
|
||||
SELECT
|
||||
'[' || ot.bezeichnung || '] ' || o.bezeichnung AS bezeichnung
|
||||
|
||||
@@ -25,7 +25,7 @@ $config['student']['resultfields'] = [
|
||||
"s.matrikelnr AS personenkennzeichen",
|
||||
"p.person_id",
|
||||
"p.matr_nr AS matrikelnummer",
|
||||
"(p.vorname || ' ' || p.nachname) AS name",
|
||||
"CASE WHEN p.wahlname IS NOT NULL THEN (p.wahlname || ' ' || p.nachname) ELSE (p.vorname || ' ' || p.nachname) END AS name",
|
||||
"ARRAY[s.student_uid || '@' || '" . DOMAIN . "'] AS email",
|
||||
"CASE
|
||||
WHEN (p.foto_sperre = false AND p.foto IS NOT NULL) THEN 'data:image/jpeg' || CONVERT_FROM(DECODE('3b','hex'), 'UTF8') || 'base64,' || p.foto
|
||||
|
||||
@@ -50,6 +50,7 @@ class Cis4FhcApi extends FHCAPI_Controller
|
||||
$viewData = array(
|
||||
'uid' => getAuthUID(),
|
||||
'name' => $personData->vorname,
|
||||
'wahlname' => $personData->wahlname,
|
||||
'person_id' => $personData->person_id,
|
||||
'timezone' => $this->config->item('timezone'),
|
||||
);
|
||||
|
||||
@@ -62,6 +62,7 @@ class OtherLvPlan extends FHCAPI_Controller
|
||||
"foto" => $profileData->data->foto,
|
||||
"vorname" => $profileData->data->vorname,
|
||||
"nachname" => $profileData->data->nachname,
|
||||
"wahlname" => $profileData->data->wahlname,
|
||||
"titel" => $profileData->data->titel,
|
||||
"postnomen" => $profileData->data->postnomen,
|
||||
],
|
||||
|
||||
@@ -574,6 +574,19 @@ class Kontakt extends FHCAPI_Controller
|
||||
$person_id = $this->input->post('person_id');
|
||||
$standort_id = $this->input->post('standort_id');
|
||||
|
||||
//check person_id: allow editing only of persons who are no mitarbeiter
|
||||
if($person_id)
|
||||
{
|
||||
$this->load->model('person/Benutzer_model', 'BenutzerModel');
|
||||
$this->BenutzerModel->addJoin('public.tbl_mitarbeiter ma', 'ON (ma.mitarbeiter_uid = public.tbl_benutzer.uid)');
|
||||
|
||||
$result = $this->BenutzerModel->loadWhere([
|
||||
'person_id' => $person_id
|
||||
]);
|
||||
if(hasData($result))
|
||||
return $this->terminateWithError($this->p->t('ui', 'editingMitarbeiterPVonly'), self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
|
||||
$result = $this->KontaktModel->update(
|
||||
[
|
||||
'kontakt_id' => $kontakt_id
|
||||
|
||||
@@ -329,7 +329,7 @@ class ProfilLib{
|
||||
private function getPersonInfo($uid, $geburtsInfo = null)
|
||||
{
|
||||
$this->ci->load->model("person/Benutzer_model","BenutzerModel");
|
||||
$selectClause = ["foto", "foto_sperre", "anrede", "titelpost as postnomen", "titelpre as titel", "vorname", "nachname"];
|
||||
$selectClause = ["foto", "foto_sperre", "anrede", "titelpost as postnomen", "titelpre as titel", "vorname", "nachname", "wahlname"];
|
||||
/** @param integer $geburtsInfo */
|
||||
if ($geburtsInfo) {
|
||||
array_push($selectClause, "gebort");
|
||||
|
||||
@@ -245,7 +245,7 @@ class Person_model extends DB_Model
|
||||
*/
|
||||
public function getByUid($uid)
|
||||
{
|
||||
$this->addSelect('vorname, nachname, gebdatum, person_id, bpk, matr_nr, foto');
|
||||
$this->addSelect('vorname, nachname, wahlname, gebdatum, person_id, bpk, matr_nr, foto');
|
||||
$this->addJoin('tbl_benutzer', 'person_id');
|
||||
|
||||
return $this->loadWhere(array('uid' => $uid));
|
||||
|
||||
@@ -179,7 +179,8 @@ echo ' <title>' . $p->t('mailverteiler/personenImVerteiler') . '</title>
|
||||
<body id="inhalt">';
|
||||
|
||||
$qry = "SELECT
|
||||
uid, vorname, nachname, geschlecht, fixangestellt
|
||||
uid, vorname, nachname, wahlname, geschlecht, fixangestellt,
|
||||
CASE WHEN wahlname IS NOT NULL THEN wahlname ELSE vorname END AS orderVorname
|
||||
FROM
|
||||
campus.vw_benutzer
|
||||
JOIN
|
||||
@@ -202,7 +203,7 @@ $qry = "SELECT
|
||||
}
|
||||
|
||||
$qry .= " ORDER BY
|
||||
nachname, vorname";
|
||||
nachname, orderVorname";
|
||||
|
||||
echo '<p>'.$p->t('mailverteiler/anleitungstextMailPersInGroup').'<p>';
|
||||
echo '<a class="buttongreen" href="#" onclick="SendMail()" id="mailSendButton">' . $p->t('mailverteiler/mailAnAlleSenden') . '</a>';
|
||||
@@ -236,7 +237,7 @@ if ($result = $db->db_query($qry))
|
||||
echo '<tr>';
|
||||
echo ' <td style="text-align: center"><input type="checkbox" class="chkbox" id="checkbox_'.$row->uid.'" name="checkbox['.$row->uid.']"></td>';
|
||||
echo ' <td>'.$row->nachname.'</td>';
|
||||
echo ' <td>'.$row->vorname.'</td>';
|
||||
echo ' <td>'. ($row->wahlname ? $row->wahlname : $row->vorname) .'</td>';
|
||||
echo ' <td>'.strtoupper($row->geschlecht).'</td>';
|
||||
echo ' <td>'.($row->fixangestellt != '' ? ($row->fixangestellt == 't' ? 'Ja' : 'Nein') :'-').'</td>';
|
||||
echo ' <td class="clm_email"><a href="mailto:'.$row->uid.'@' . DOMAIN . '" class="Item">'.$row->uid .'@' . DOMAIN . '</a></td>';
|
||||
|
||||
@@ -256,7 +256,9 @@ echo '
|
||||
'.$p->t('global/anrede').': '.$user->anrede.'<br>
|
||||
'.$p->t('global/titel').': '.$user->titelpre.' <br>';
|
||||
|
||||
if (!$ansicht)
|
||||
if ($user->wahlname)
|
||||
echo $p->t('global/vorname').': '.$user->wahlname.' <br>';
|
||||
else if (!$ansicht)
|
||||
echo $p->t('global/vorname').': '.$user->vorname.' '.$user->vornamen.'<br>';
|
||||
else
|
||||
echo $p->t('global/vorname').': '.$user->vorname.' <br>';
|
||||
|
||||
@@ -162,7 +162,8 @@ if (!isset($_GET['kz']))
|
||||
if (isset($_GET['all']))
|
||||
{
|
||||
$qry = "SELECT
|
||||
vorname, nachname, uid, geschlecht
|
||||
vorname, nachname, wahlname, uid, geschlecht,
|
||||
CASE WHEN wahlname IS NOT NULL THEN wahlname ELSE vorname END AS orderVorname
|
||||
FROM
|
||||
campus.vw_student
|
||||
WHERE
|
||||
@@ -170,12 +171,13 @@ if (isset($_GET['all']))
|
||||
AND studiengang_kz=".$db->db_add_param($_GET['kz'])."
|
||||
AND semester<10
|
||||
AND semester>0
|
||||
ORDER BY nachname, vorname";
|
||||
ORDER BY nachname, orderVorname";
|
||||
}
|
||||
else
|
||||
{
|
||||
$qry = "SELECT
|
||||
vorname, nachname, uid, geschlecht
|
||||
vorname, nachname, wahlname, uid, geschlecht,
|
||||
CASE WHEN wahlname IS NOT NULL THEN wahlname ELSE vorname END AS orderVorname
|
||||
FROM
|
||||
campus.vw_student
|
||||
WHERE
|
||||
@@ -191,7 +193,7 @@ else
|
||||
if (isset($_GET['grp']))
|
||||
$qry.=" AND gruppe=".$db->db_add_param($_GET['grp']);
|
||||
|
||||
$qry.= ' ORDER BY nachname, vorname';
|
||||
$qry.= ' ORDER BY nachname, orderVorname';
|
||||
}
|
||||
echo '<p>'.$p->t('mailverteiler/anleitungstextMailPersInGroup').'<p>';
|
||||
echo '<a class="buttongreen" href="#" onclick="SendMail()" id="mailSendButton">' . $p->t('mailverteiler/mailAnAlleSenden') . '</a>';
|
||||
@@ -223,7 +225,7 @@ if ($result = $db->db_query($qry))
|
||||
echo "<tr>";
|
||||
echo ' <td style="text-align: center"><input type="checkbox" class="chkbox" id="checkbox_'.$row->uid.'" name="checkbox['.$row->uid.']"></td>';
|
||||
echo " <td>$row->nachname</td>";
|
||||
echo " <td>$row->vorname</td>";
|
||||
echo " <td>" . ($row->wahlname ? $row->wahlname : $row->vorname) . "</td>";
|
||||
echo ' <td>'.strtoupper($row->geschlecht).'</td>';
|
||||
echo ' <td class="clm_email"><a href="mailto:'.$row->uid.'@' . DOMAIN . '" class="Item">'.$row->uid .'@' . DOMAIN . '</a></td>';
|
||||
echo "</tr>";
|
||||
|
||||
@@ -180,7 +180,7 @@ function searchPerson($searchItems)
|
||||
echo '<td>',$row->anrede,'</td>';
|
||||
|
||||
if ($row->wahlname)
|
||||
echo '<td>',$row->wahlname, ' ' ,$row->vorname, '</td>';
|
||||
echo '<td>',$row->wahlname,'</td>';
|
||||
else
|
||||
echo '<td>',$row->vorname, '</td>';
|
||||
|
||||
|
||||
@@ -103,6 +103,13 @@ export default {
|
||||
keyboard: this.keyboard
|
||||
});
|
||||
},
|
||||
//to avoid pagelocks if more than one instance
|
||||
beforeUnmount() {
|
||||
if (this.modal) {
|
||||
this.modal.dispose();
|
||||
this.modal = null;
|
||||
}
|
||||
},
|
||||
popup(body, options, title, footer) {
|
||||
const BsModal = this,
|
||||
slots = {};
|
||||
|
||||
@@ -213,7 +213,7 @@ export default {
|
||||
this.isOtherPersonStudent = !!viewData?.user_data?.is_student;
|
||||
let fullNameWithTitleFragments = [
|
||||
viewData?.user_data?.titel,
|
||||
viewData?.user_data?.vorname,
|
||||
viewData?.user_data?.wahlname ?? viewData?.user_data?.vorname,
|
||||
viewData?.user_data?.nachname,
|
||||
viewData?.user_data?.postnomen,
|
||||
];
|
||||
|
||||
@@ -274,7 +274,7 @@ export default {
|
||||
}
|
||||
|
||||
return {
|
||||
Vorname: this.data.vorname,
|
||||
Vorname: this.data.wahlname ?? this.data.vorname,
|
||||
Nachname: this.data.nachname,
|
||||
Username: this.data.username,
|
||||
Anrede: this.data.anrede,
|
||||
|
||||
@@ -160,7 +160,7 @@ export default {
|
||||
}
|
||||
|
||||
return {
|
||||
Vorname: this.data.vorname,
|
||||
Vorname: this.data.wahlname ?? this.data.vorname,
|
||||
Nachname: this.data.nachname,
|
||||
Username: this.data.username,
|
||||
Anrede: this.data.anrede,
|
||||
|
||||
@@ -204,7 +204,7 @@ export default {
|
||||
}
|
||||
|
||||
return {
|
||||
Vorname: this.data.vorname,
|
||||
Vorname: this.data.wahlname ?? this.data.vorname,
|
||||
Nachname: this.data.nachname,
|
||||
Username: this.data.username,
|
||||
Anrede: this.data.anrede,
|
||||
|
||||
@@ -33,7 +33,7 @@ export default {
|
||||
}
|
||||
|
||||
return {
|
||||
Vorname: this.data.vorname,
|
||||
Vorname: this.data.wahlname ?? this.data.vorname,
|
||||
Nachname: this.data.nachname,
|
||||
Username: this.data.username,
|
||||
Anrede: this.data.anrede,
|
||||
|
||||
@@ -184,7 +184,7 @@ export default {
|
||||
let viewDataResult = await this.$api.call(ApiDashboard.getViewData());
|
||||
const viewData = viewDataResult.data;
|
||||
this.timezone = viewData?.timezone;
|
||||
this.userFirstName = viewData?.name;
|
||||
this.userFirstName = viewData?.wahlname ?? viewData?.name;
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
|
||||
@@ -263,7 +263,7 @@ export default {
|
||||
this.$refs[modalRef].hide();
|
||||
},
|
||||
reload() {
|
||||
this.$refs.table.reloadTable();
|
||||
this.$refs.table?.reloadTable();
|
||||
},
|
||||
searchFirma(event) {
|
||||
if (this.abortController.firmen) {
|
||||
|
||||
+15
-2
@@ -30,6 +30,9 @@ export default {
|
||||
computed: {
|
||||
betreuerFormOpened() {
|
||||
return this.newMode || this.editMode;
|
||||
},
|
||||
isMitarbeiter(){
|
||||
return this.autocompleteSelectedBetreuer?.name?.includes('Mitarbeiter') ?? false;
|
||||
}
|
||||
},
|
||||
props: {
|
||||
@@ -430,6 +433,11 @@ export default {
|
||||
},
|
||||
actionKontaktdatenBearbeiten() {
|
||||
if (!this.autocompleteSelectedBetreuer) return;
|
||||
if (this.isMitarbeiter)
|
||||
{
|
||||
this.$fhcAlert.alertError(this.$p.t('ui', 'editingMitarbeiterPVonly'));
|
||||
return;
|
||||
}
|
||||
this.$refs.kontaktdatenModal.show();
|
||||
},
|
||||
// stuff to do after new person has been saved
|
||||
@@ -494,7 +502,12 @@ export default {
|
||||
<button class="btn btn-outline-secondary" @click="actionNewPerson">{{ $p.t('projektarbeit', 'neuePersonAnlegen') }}</button>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<button class="btn btn-outline-secondary float-end" @click="actionKontaktdatenBearbeiten">{{ $p.t('projektarbeit', 'kontaktdatenBearbeiten') }}</button>
|
||||
<button
|
||||
class="btn btn-outline-secondary float-end"
|
||||
@click="actionKontaktdatenBearbeiten"
|
||||
>
|
||||
{{ $p.t('projektarbeit', 'kontaktdatenBearbeiten') }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -605,7 +618,7 @@ export default {
|
||||
</contact>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</bs-modal>
|
||||
|
||||
`
|
||||
}
|
||||
|
||||
@@ -50474,7 +50474,7 @@ array(
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Wahlname',
|
||||
'text' => 'Wahlvorname',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
@@ -61477,7 +61477,7 @@ I have been informed that I am under no obligation to consent to the transmissio
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'tabulator',
|
||||
@@ -62751,8 +62751,28 @@ I have been informed that I am under no obligation to consent to the transmissio
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
)
|
||||
),
|
||||
// ### Infocenter Onboarding END
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'ui',
|
||||
'phrase' => 'editingMitarbeiterPVonly',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Kontaktdaten von Mitarbeiter*innen dürfen nur in der Personalverwaltung editiert werden.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Employee contact details may only be edited in the personnel administration system.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user