From 84452b712102479600922d96a110f87f9c41ade1 Mon Sep 17 00:00:00 2001 From: Paolo Date: Wed, 22 Jul 2026 14:08:47 +0200 Subject: [PATCH] Improved vilesci GUI for the roles in roles --- include/berechtigung.class.php | 114 +++- .../benutzerberechtigung_autocomplete.php | 27 + vilesci/stammdaten/rollen.php | 611 ++---------------- 3 files changed, 189 insertions(+), 563 deletions(-) diff --git a/include/berechtigung.class.php b/include/berechtigung.class.php index f4c55e576..1a05376ae 100644 --- a/include/berechtigung.class.php +++ b/include/berechtigung.class.php @@ -387,5 +387,117 @@ class berechtigung extends basis_db return false; } } + + /** + * Sucht nach rollen + * @param string $searchItem Suchbegriff + * @return boolean + */ + public function searchRollen($rolle, $searchItem) + { + $this->result=array(); + $qry = 'SELECT * FROM system.tbl_rolle WHERE + ( + LOWER(rolle_kurzbz) LIKE LOWER(\'%'.$this->db_escape(($searchItem)).'%\') + OR + LOWER(beschreibung) LIKE LOWER(\'%'.$this->db_escape(($searchItem)).'%\') + OR + LOWER(lange_beschreibung) LIKE LOWER(\'%'.$this->db_escape(($searchItem)).'%\') + ) AND rolle_kurzbz NOT IN (SELECT basic_rolle_kurzbz FROM system.tbl_rolle_rolle WHERE main_rolle_kurzbz = \''.$this->db_escape(($rolle)).'\')'; + + $qry .= ' ORDER BY rolle_kurzbz'; + + if ($this->db_query($qry)) + { + while ($row = $this->db_fetch_object()) + { + $obj = new stdClass(); + + $obj->rolle_kurzbz = $row->rolle_kurzbz; + $obj->beschreibung = $row->beschreibung; + $obj->lange_beschreibung = $row->lange_beschreibung; + + $this->result[] = $obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Berechtigungen'; + return false; + } + } + + /** + * + */ + public function getRollenRollen($rolle_kurzbz) + { + $qry = 'SELECT r.* + FROM system.tbl_rolle r + JOIN system.tbl_rolle_rolle rr ON (rr.basic_rolle_kurzbz = r.rolle_kurzbz) + WHERE rr.main_rolle_kurzbz = \''.$this->db_escape(($rolle_kurzbz)).'\' + ORDER BY r.rolle_kurzbz'; + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $obj = new stdClass(); + + $obj->rolle_kurzbz = $row->rolle_kurzbz; + $obj->beschreibung = $row->beschreibung; + $obj->lange_beschreibung = $row->lange_beschreibung; + + $this->result[] = $obj; + } + return true; + } + else + { + $this->errormsg = 'Datensatz konnte nicht geladen werden'; + return false; + } + } + + /** + * + */ + public function saveRolleRolle($main_rolle, $basic_rolle, $uid) + { + // Upsert + $qry = 'INSERT INTO system.tbl_rolle_rolle (main_rolle_kurzbz, basic_rolle_kurzbz, insertvon) + VALUES (\''.$this->db_escape(($main_rolle)).'\', \''.$this->db_escape(($basic_rolle)).'\', \''.$this->db_escape(($uid)).'\') + ON CONFLICT (main_rolle_kurzbz, basic_rolle_kurzbz) DO NOTHING'; + if ($this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern: '.$this->db_last_error(); + return false; + } + } + + /** + * + */ + public function deleteRolleRolle($main_rolle_kurzbz, $basic_rolle_kurzbz) + { + $qry = 'DELETE FROM system.tbl_rolle_rolle + WHERE main_rolle_kurzbz = '.$this->db_add_param($main_rolle_kurzbz).' + AND basic_rolle_kurzbz = '.$this->db_add_param($basic_rolle_kurzbz); + + if ($this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg = 'Fehler beim Löschen der Rolle:'.$this->db_last_error(); + return false; + } + } } -?> \ No newline at end of file +?> diff --git a/vilesci/stammdaten/benutzerberechtigung_autocomplete.php b/vilesci/stammdaten/benutzerberechtigung_autocomplete.php index f963da2d9..8bc1188c6 100644 --- a/vilesci/stammdaten/benutzerberechtigung_autocomplete.php +++ b/vilesci/stammdaten/benutzerberechtigung_autocomplete.php @@ -148,4 +148,31 @@ if (isset($_REQUEST['autocomplete']) && $_REQUEST['autocomplete'] == 'kostenstel exit(); } +if (isset($_REQUEST['autocomplete']) && $_REQUEST['autocomplete'] == 'rollen') +{ + $rolle = trim((isset($_REQUEST['rolle']) ? $_REQUEST['rolle'] : '')); + if (is_null($rolle) || $rolle == '') + exit(); + + $search = trim((isset($_REQUEST['term']) ? $_REQUEST['term'] : '')); + if (is_null($search) || $search == '') + exit(); + + $berechtigung = new berechtigung(); + + if ($berechtigung->searchRollen($rolle, $search)) + { + $result_obj = array(); + foreach ($berechtigung->result as $row) + { + $item['rolle_kurzbz'] = html_entity_decode($row->rolle_kurzbz); + $item['beschreibung'] = html_entity_decode($row->beschreibung); + $item['lange_beschreibung'] = html_entity_decode($row->lange_beschreibung); + $result_obj[] = $item; + } + echo json_encode($result_obj); + } + exit(); +} + ?> diff --git a/vilesci/stammdaten/rollen.php b/vilesci/stammdaten/rollen.php index fde7a1285..7e8efa81b 100644 --- a/vilesci/stammdaten/rollen.php +++ b/vilesci/stammdaten/rollen.php @@ -30,18 +30,16 @@ $user = get_uid(); $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($user); -if(!$rechte->isBerechtigt('basis/berechtigung')) +if (!$rechte->isBerechtigt('basis/berechtigung')) die($rechte->errormsg); $rolle_kurzbz = filter_input(INPUT_GET, 'rolle_kurzbz'); $delete = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_BOOLEAN); -$copy = filter_input(INPUT_POST, 'copy'); -$saveRecht = isset($_POST['action']) && $_POST['action'] == 'saveRechtAjax' ? true : false; -$vergleich = filter_input(INPUT_GET, 'vergleich'); +$save = filter_input(INPUT_GET, 'save'); ?> - Rollen Uebersicht + Rollen Rollen Uebersicht @@ -62,27 +60,9 @@ $vergleich = filter_input(INPUT_GET, 'vergleich'); widgetOptions : {filter_saveFilters : true} }); - $("#t2").tablesorter( - { - sortList: [[0,0]], - widgets: ["zebra", "filter", "stickyHeaders"], - headers: {2:{filter:false, sorter:false}}, - widgetOptions : {filter_saveFilters : true} - }); - $("#t3").tablesorter( - { - sortList: [], - widgets: ["zebra"] - }); - $("#t4").tablesorter( - { - sortList: [], - widgets: ["zebra"] - }); $('.resetsaved').click(function() { $(".tablesorter").trigger("filterReset"); - window.location(""); return false; }); $("textarea").keyup(function() @@ -101,7 +81,7 @@ $vergleich = filter_input(INPUT_GET, 'vergleich'); }); $(".rolle_autocomplete").autocomplete({ - source: "benutzerberechtigung_autocomplete.php?autocomplete=rollen", + source: "benutzerberechtigung_autocomplete.php?autocomplete=rollen&rolle=", minLength:2, response: function(event, ui) { @@ -118,90 +98,18 @@ $vergleich = filter_input(INPUT_GET, 'vergleich'); $(this).val(ui.item.rolle_kurzbz); } }); - - $(".copyButton").click(function(event) - { - event.preventDefault(); - $(this).siblings().show(); - $(this).hide(); - }); }); function validateNewData() { if($('#rolle_neu_autocomplete').val() == '') { - alert('Berechtigung darf nicht leer sein') + alert('Rolle darf nicht leer sein') return false; } - else if ($('#art_neu').val() == '') - { - alert('Art darf nicht leer sein') - return false; - } - else if ($('#art_neu').val() != '') - { - var eingabe, c, erlaubt = 'suid', laenge; - eingabe = $('#art_neu').val(); - eingabe = eingabe.toLowerCase(); - laenge = eingabe.length; - for (c = 0; c < laenge; c++) - { - d = eingabe.charAt(c); - if (erlaubt.indexOf(d) == -1) - { - alert ('Erlaubte Werte für Art sind s,u,i,d'); - return false; - } - } - } else return true; } - - function saveRecht(rolle_kurzbz, recht, art) - { - data = { - action: 'saveRechtAjax', - rolle_ajax: rolle_kurzbz, - recht_ajax: recht, - art_ajax: art - }; - - $.ajax({ - url: 'berechtigungrolle.php', - data: data, - type: 'POST', - dataType: 'json', - success: function(data) - { - if(data.status!='ok') - { - //error - console.log('error'); - } - else - { - //location.reload(true); - window.location.reload(true) - // html = ''+recht+''+art+''; - // console.log('#'+rolle_kurzbz+'_'+recht); - // $('#'+rolle_kurzbz+'_'+recht).html(html); - } - }, - error: function(data) - { - //error - console.log('AJAX-Fehler in Error-Methode: ' + data.status + ' - ' + data.error); - - location.reload(true); - }, - stop: function (data) - { - location.reload(true); - } - }); - }