From a357001648ce55372a5c98e94207df3156242849 Mon Sep 17 00:00:00 2001 From: SimonGschnell Date: Wed, 11 Dec 2024 12:34:58 +0100 Subject: [PATCH 1/7] feature(Searchbar/StudentenSuche): adds student to the searchbar options and adds shadow to the searchbar --- application/controllers/api/frontend/v1/Profil.php | 2 +- public/css/components/searchbar/searchbar.css | 1 + public/js/apps/Cis.js | 12 ++++++++++++ public/js/components/searchbar/student.js | 2 +- 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/application/controllers/api/frontend/v1/Profil.php b/application/controllers/api/frontend/v1/Profil.php index a82b3ddfc..40676a460 100644 --- a/application/controllers/api/frontend/v1/Profil.php +++ b/application/controllers/api/frontend/v1/Profil.php @@ -88,7 +88,7 @@ class Profil extends FHCAPI_Controller $res->data = $this->studentProfil(); $res->data->pid = $this->pid; } - + // editing your own profil - true $editAllowed = true; } // UID is availabe when accessing Profil/View/:uid diff --git a/public/css/components/searchbar/searchbar.css b/public/css/components/searchbar/searchbar.css index a4476e7c5..d519eb9b2 100644 --- a/public/css/components/searchbar/searchbar.css +++ b/public/css/components/searchbar/searchbar.css @@ -26,6 +26,7 @@ width: 100%; left: 0; right: 0; + box-shadow: 2px 2px 4px rgba(0, 0, 0, .4); } .searchbar_results_scroller { diff --git a/public/js/apps/Cis.js b/public/js/apps/Cis.js index c9d322e07..6499bd382 100644 --- a/public/js/apps/Cis.js +++ b/public/js/apps/Cis.js @@ -18,6 +18,7 @@ const app = Vue.createApp({ calcheightonly: true, types: [ "mitarbeiter", + "student", "raum", "organisationunit" ], @@ -33,6 +34,17 @@ const app = Vue.createApp({ }, childactions: [] }, + student: { + defaultaction: { + type: "link", + action: function (data) { + return FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + + "/Cis/Profil/View/" + data.uid; + + } + }, + childactions: [] + }, raum: { defaultaction: { type: "link", diff --git a/public/js/components/searchbar/student.js b/public/js/components/searchbar/student.js index 73253237c..29fbc4646 100644 --- a/public/js/components/searchbar/student.js +++ b/public/js/components/searchbar/student.js @@ -16,7 +16,7 @@ export default { + class="rounded" style="max-height: 120px; max-width: 90px;" /> From 85d59f18bec8a6b5f6040ea0e52ecef6499eed6e Mon Sep 17 00:00:00 2001 From: SimonGschnell Date: Wed, 11 Dec 2024 15:30:41 +0100 Subject: [PATCH 2/7] refactor(searchbar/Student): studiengang/verband/email are queried for the display in the searchbar component --- application/libraries/SearchBarLib.php | 10 ++++++++-- public/js/components/searchbar/student.js | 11 +++++++++-- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/application/libraries/SearchBarLib.php b/application/libraries/SearchBarLib.php index 573bd7451..d2fbf8602 100644 --- a/application/libraries/SearchBarLib.php +++ b/application/libraries/SearchBarLib.php @@ -367,12 +367,18 @@ EOSC; SELECT \''.$type.'\' AS type, s.student_uid AS uid, + '. + (defined("DOMAIN")? + 'CONCAT(s.student_uid,\'@'.DOMAIN.'\') AS email,':'') + .' s.matrikelnr, + CONCAT(stg.kurzbzlang,s.semester,s.verband) as verband, + stg.bezeichnung AS studiengang, p.person_id AS person_id, p.vorname || \' \' || p.nachname AS name, - k.kontakt as email , p.foto FROM public.tbl_student s + JOIN public.tbl_studiengang stg USING(studiengang_kz) JOIN public.tbl_benutzer b ON(b.uid = s.student_uid) JOIN public.tbl_person p USING(person_id) LEFT JOIN ( @@ -383,7 +389,7 @@ EOSC; WHERE b.uid ILIKE \'%'.$dbModel->escapeLike($searchstr).'%\' OR p.vorname ILIKE \'%'.$dbModel->escapeLike($searchstr).'%\' OR p.nachname ILIKE \'%'.$dbModel->escapeLike($searchstr).'%\' - GROUP BY type, s.student_uid, s.matrikelnr, p.person_id, name, email, p.foto + GROUP BY type, s.student_uid, s.matrikelnr, p.person_id, name, email, p.foto, s.verband, s.semester, stg.bezeichnung, stg.kurzbzlang '); // If something has been found then return it diff --git a/public/js/components/searchbar/student.js b/public/js/components/searchbar/student.js index 29fbc4646..e44bd6d64 100644 --- a/public/js/components/searchbar/student.js +++ b/public/js/components/searchbar/student.js @@ -38,9 +38,16 @@ export default {
-
Person_id
+
Studiengang
- {{ res.person_id }} + {{ res.studiengang }} +
+
+ +
+
Verband
+
+ {{ res.verband }}
From df8d4de50b7ebffe99ab823d4827d7319c3bf535 Mon Sep 17 00:00:00 2001 From: SimonGschnell Date: Thu, 12 Dec 2024 09:42:38 +0100 Subject: [PATCH 3/7] fix(SearchbarLib/_student): the cis search does not include students that are not aktiv and has a seperate search function for the student search for the Cis and the studentverwaltung --- application/libraries/SearchBarLib.php | 49 ++++++++++++++++++++++---- 1 file changed, 43 insertions(+), 6 deletions(-) diff --git a/application/libraries/SearchBarLib.php b/application/libraries/SearchBarLib.php index d2fbf8602..b26daa8aa 100644 --- a/application/libraries/SearchBarLib.php +++ b/application/libraries/SearchBarLib.php @@ -33,7 +33,7 @@ class SearchBarLib const ERROR_NOT_AUTH = 'ERR005'; // List of allowed types of search - const ALLOWED_TYPES = ['mitarbeiter', 'mitarbeiter_ohne_zuordnung', 'organisationunit', 'raum', 'person', 'student', 'prestudent', 'document', 'cms']; + const ALLOWED_TYPES = ['mitarbeiter', 'mitarbeiter_ohne_zuordnung', 'organisationunit', 'raum', 'person', 'student','studentStv', 'prestudent', 'document', 'cms']; const PHOTO_IMG_URL = '/cis/public/bild.php?src=person&person_id='; @@ -367,10 +367,7 @@ EOSC; SELECT \''.$type.'\' AS type, s.student_uid AS uid, - '. - (defined("DOMAIN")? - 'CONCAT(s.student_uid,\'@'.DOMAIN.'\') AS email,':'') - .' + CONCAT(s.student_uid,\'@'.DOMAIN.'\') AS email, s.matrikelnr, CONCAT(stg.kurzbzlang,s.semester,s.verband) as verband, stg.bezeichnung AS studiengang, @@ -386,7 +383,47 @@ EOSC; FROM public.tbl_kontakt WHERE kontakttyp = \'email\' ) as k USING(person_id) - WHERE b.uid ILIKE \'%'.$dbModel->escapeLike($searchstr).'%\' + WHERE + b.aktiv = TRUE + AND b.uid ILIKE \'%'.$dbModel->escapeLike($searchstr).'%\' + OR p.vorname ILIKE \'%'.$dbModel->escapeLike($searchstr).'%\' + OR p.nachname ILIKE \'%'.$dbModel->escapeLike($searchstr).'%\' + GROUP BY type, s.student_uid, s.matrikelnr, p.person_id, name, email, p.foto, s.verband, s.semester, stg.bezeichnung, stg.kurzbzlang + '); + + // If something has been found then return it + if (hasData($students)) return getData($students); + + // Otherwise return an empty array + return array(); + } + + private function _studentStv($searchstr, $type) + { + $dbModel = new DB_Model(); + + $students = $dbModel->execReadOnlyQuery(' + SELECT + \''.$type.'\' AS type, + s.student_uid AS uid, + CONCAT(s.student_uid,\'@'.DOMAIN.'\') AS email, + s.matrikelnr, + CONCAT(stg.kurzbzlang,s.semester,s.verband) as verband, + stg.bezeichnung AS studiengang, + p.person_id AS person_id, + p.vorname || \' \' || p.nachname AS name, + p.foto + FROM public.tbl_student s + JOIN public.tbl_studiengang stg USING(studiengang_kz) + JOIN public.tbl_benutzer b ON(b.uid = s.student_uid) + JOIN public.tbl_person p USING(person_id) + LEFT JOIN ( + SELECT kontakt, person_id + FROM public.tbl_kontakt + WHERE kontakttyp = \'email\' + ) as k USING(person_id) + WHERE + b.uid ILIKE \'%'.$dbModel->escapeLike($searchstr).'%\' OR p.vorname ILIKE \'%'.$dbModel->escapeLike($searchstr).'%\' OR p.nachname ILIKE \'%'.$dbModel->escapeLike($searchstr).'%\' GROUP BY type, s.student_uid, s.matrikelnr, p.person_id, name, email, p.foto, s.verband, s.semester, stg.bezeichnung, stg.kurzbzlang From 9a1777d1aaea90a5f749f95e10b179bf46c952fc Mon Sep 17 00:00:00 2001 From: SimonGschnell Date: Thu, 12 Dec 2024 15:35:56 +0100 Subject: [PATCH 4/7] fix(_student searchfunction):fixes the sql logic for non active students --- application/libraries/SearchBarLib.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/application/libraries/SearchBarLib.php b/application/libraries/SearchBarLib.php index b26daa8aa..4bc14b9f4 100644 --- a/application/libraries/SearchBarLib.php +++ b/application/libraries/SearchBarLib.php @@ -385,9 +385,9 @@ EOSC; ) as k USING(person_id) WHERE b.aktiv = TRUE - AND b.uid ILIKE \'%'.$dbModel->escapeLike($searchstr).'%\' + AND (b.uid ILIKE \'%'.$dbModel->escapeLike($searchstr).'%\' OR p.vorname ILIKE \'%'.$dbModel->escapeLike($searchstr).'%\' - OR p.nachname ILIKE \'%'.$dbModel->escapeLike($searchstr).'%\' + OR p.nachname ILIKE \'%'.$dbModel->escapeLike($searchstr).'%\') GROUP BY type, s.student_uid, s.matrikelnr, p.person_id, name, email, p.foto, s.verband, s.semester, stg.bezeichnung, stg.kurzbzlang '); From a3840d4c77e55a63ef7db578500c4b556ce56aa8 Mon Sep 17 00:00:00 2001 From: SimonGschnell Date: Fri, 13 Dec 2024 10:47:34 +0100 Subject: [PATCH 5/7] update(Searchbar/Student):shows dummy image if the student has foto_spere true --- application/libraries/SearchBarLib.php | 10 +++++++--- public/js/components/searchbar/student.js | 15 ++++++--------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/application/libraries/SearchBarLib.php b/application/libraries/SearchBarLib.php index 4bc14b9f4..3ebe7c003 100644 --- a/application/libraries/SearchBarLib.php +++ b/application/libraries/SearchBarLib.php @@ -362,7 +362,7 @@ EOSC; private function _student($searchstr, $type) { $dbModel = new DB_Model(); - + $gesperrtes_foto = base64_encode(file_get_contents(DOC_ROOT.'skin/images/profilbild_dummy.jpg')); $students = $dbModel->execReadOnlyQuery(' SELECT \''.$type.'\' AS type, @@ -373,7 +373,11 @@ EOSC; stg.bezeichnung AS studiengang, p.person_id AS person_id, p.vorname || \' \' || p.nachname AS name, - p.foto + CASE + when s.student_uid = \''.getAuthUID().'\' then p.foto + when p.foto_sperre = false then p.foto + else \''.$gesperrtes_foto.'\' + end as foto FROM public.tbl_student s JOIN public.tbl_studiengang stg USING(studiengang_kz) JOIN public.tbl_benutzer b ON(b.uid = s.student_uid) @@ -388,7 +392,7 @@ EOSC; AND (b.uid ILIKE \'%'.$dbModel->escapeLike($searchstr).'%\' OR p.vorname ILIKE \'%'.$dbModel->escapeLike($searchstr).'%\' OR p.nachname ILIKE \'%'.$dbModel->escapeLike($searchstr).'%\') - GROUP BY type, s.student_uid, s.matrikelnr, p.person_id, name, email, p.foto, s.verband, s.semester, stg.bezeichnung, stg.kurzbzlang + GROUP BY type, s.student_uid, s.matrikelnr, p.person_id, name, email, p.foto, s.verband, s.semester, stg.bezeichnung, stg.kurzbzlang '); // If something has been found then return it diff --git a/public/js/components/searchbar/student.js b/public/js/components/searchbar/student.js index e44bd6d64..9a0e8311f 100644 --- a/public/js/components/searchbar/student.js +++ b/public/js/components/searchbar/student.js @@ -15,7 +15,7 @@ export default {
@@ -30,13 +30,6 @@ export default {
-
-
Student_uid
-
- {{ res.uid }} -
-
-
Studiengang
@@ -82,6 +75,10 @@ export default { computed: { mailtourl: function() { return 'mailto:' + this.res.email; - } + }, + studentImage: function () { + if (!this.res.foto) return; + return 'data:image/jpeg;base64,'.concat(this.res.foto); + }, } }; \ No newline at end of file From 5a174e554ad6af88649b54fcd082073453b82e04 Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Fri, 13 Dec 2024 11:25:02 +0100 Subject: [PATCH 6/7] use studentStv in Studentenverwaltung config, add aktiv to student and studentStv result, use studentStv in searchbar component, add searchbar_inaktiv css class, use aktiv to render inactive studentStv results with css class searchbar_inaktiv --- application/libraries/SearchBarLib.php | 17 +++++++++++++---- public/css/components/searchbar/searchbar.css | 4 ++++ public/js/components/Stv/Studentenverwaltung.js | 2 +- public/js/components/searchbar/searchbar.js | 2 +- public/js/components/searchbar/student.js | 11 +++++++++-- 5 files changed, 28 insertions(+), 8 deletions(-) diff --git a/application/libraries/SearchBarLib.php b/application/libraries/SearchBarLib.php index 3ebe7c003..eb309a2d6 100644 --- a/application/libraries/SearchBarLib.php +++ b/application/libraries/SearchBarLib.php @@ -375,9 +375,11 @@ EOSC; p.vorname || \' \' || p.nachname AS name, CASE when s.student_uid = \''.getAuthUID().'\' then p.foto + when p.foto IS NULL then \''.$gesperrtes_foto.'\' when p.foto_sperre = false then p.foto else \''.$gesperrtes_foto.'\' - end as foto + end as foto, + b.aktiv FROM public.tbl_student s JOIN public.tbl_studiengang stg USING(studiengang_kz) JOIN public.tbl_benutzer b ON(b.uid = s.student_uid) @@ -392,7 +394,10 @@ EOSC; AND (b.uid ILIKE \'%'.$dbModel->escapeLike($searchstr).'%\' OR p.vorname ILIKE \'%'.$dbModel->escapeLike($searchstr).'%\' OR p.nachname ILIKE \'%'.$dbModel->escapeLike($searchstr).'%\') - GROUP BY type, s.student_uid, s.matrikelnr, p.person_id, name, email, p.foto, s.verband, s.semester, stg.bezeichnung, stg.kurzbzlang + GROUP BY type, s.student_uid, s.matrikelnr, p.person_id, name, + email, p.foto, s.verband, s.semester, stg.bezeichnung, + stg.kurzbzlang, b.aktiv + ORDER BY b.aktiv DESC, p.nachname ASC, p.vorname ASC '); // If something has been found then return it @@ -416,7 +421,8 @@ EOSC; stg.bezeichnung AS studiengang, p.person_id AS person_id, p.vorname || \' \' || p.nachname AS name, - p.foto + p.foto, + b.aktiv FROM public.tbl_student s JOIN public.tbl_studiengang stg USING(studiengang_kz) JOIN public.tbl_benutzer b ON(b.uid = s.student_uid) @@ -430,7 +436,10 @@ EOSC; b.uid ILIKE \'%'.$dbModel->escapeLike($searchstr).'%\' OR p.vorname ILIKE \'%'.$dbModel->escapeLike($searchstr).'%\' OR p.nachname ILIKE \'%'.$dbModel->escapeLike($searchstr).'%\' - GROUP BY type, s.student_uid, s.matrikelnr, p.person_id, name, email, p.foto, s.verband, s.semester, stg.bezeichnung, stg.kurzbzlang + GROUP BY type, s.student_uid, s.matrikelnr, p.person_id, name, + email, p.foto, s.verband, s.semester, stg.bezeichnung, + stg.kurzbzlang, b.aktiv + ORDER BY b.aktiv DESC, p.nachname ASC, p.vorname ASC '); // If something has been found then return it diff --git a/public/css/components/searchbar/searchbar.css b/public/css/components/searchbar/searchbar.css index d519eb9b2..3250a20c7 100644 --- a/public/css/components/searchbar/searchbar.css +++ b/public/css/components/searchbar/searchbar.css @@ -110,3 +110,7 @@ -moz-user-select: none; /* Firefox */ -ms-user-select: none; /* IE/Edge */ } + +.searchbar_inaktiv { + opacity: .6; +} \ No newline at end of file diff --git a/public/js/components/Stv/Studentenverwaltung.js b/public/js/components/Stv/Studentenverwaltung.js index 7f663c159..8779e4bf1 100644 --- a/public/js/components/Stv/Studentenverwaltung.js +++ b/public/js/components/Stv/Studentenverwaltung.js @@ -70,7 +70,7 @@ export default { cssclass: "position-relative", calcheightonly: true, types: [ - "student", + "studentStv", "prestudent" ], actions: { diff --git a/public/js/components/searchbar/searchbar.js b/public/js/components/searchbar/searchbar.js index a25ada4fe..d6eb0439a 100644 --- a/public/js/components/searchbar/searchbar.js +++ b/public/js/components/searchbar/searchbar.js @@ -52,7 +52,7 @@ export default {
Es wurden keine Ergebnisse gefunden.