From 5bc57767d143d539aa71557ee102f2cf2a3c4fe4 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Fri, 10 Jun 2022 22:01:48 +0200 Subject: [PATCH] Gruppenadministration: - added delete functionality - Benutzer per group are retrieved via javascript and refreshed when group added/delted - moved gruppenadministration files to person folder from organisation - handle error when benutzer was already assigned to a group --- .../Gruppenadministration.php | 67 ++++++++++++- .../gruppenadministration/benutzergruppe.php | 11 ++- .../gruppenadministration.php | 2 +- .../gruppenadministrationData.php | 2 +- .../benutzergruppe.js | 93 +++++++++++++++++-- 5 files changed, 155 insertions(+), 20 deletions(-) rename application/controllers/{organisation => person}/Gruppenadministration.php (72%) rename application/views/{organisation => person}/gruppenadministration/benutzergruppe.php (89%) rename application/views/{organisation => person}/gruppenadministration/gruppenadministration.php (90%) rename application/views/{organisation => person}/gruppenadministration/gruppenadministrationData.php (96%) rename public/js/{organisation => person}/benutzergruppe.js (54%) diff --git a/application/controllers/organisation/Gruppenadministration.php b/application/controllers/person/Gruppenadministration.php similarity index 72% rename from application/controllers/organisation/Gruppenadministration.php rename to application/controllers/person/Gruppenadministration.php index 342e93a67..f614a4b02 100644 --- a/application/controllers/organisation/Gruppenadministration.php +++ b/application/controllers/person/Gruppenadministration.php @@ -18,8 +18,10 @@ class Gruppenadministration extends Auth_Controller array( 'index' => 'admin:r', 'showBenutzergruppe' => 'admin:r', + 'getBenutzer' => 'admin:r', 'getAllBenutzer' => 'admin:r', 'addBenutzer' => 'admin:rw', + 'removeBenutzer' => 'admin:rw' ) ); @@ -53,7 +55,7 @@ class Gruppenadministration extends Auth_Controller //$this->_setNavigationMenuIndex(); // define the navigation menu for this page $this->load->view( - 'organisation/gruppenadministration/gruppenadministration.php', + 'person/gruppenadministration/gruppenadministration.php', array('uid' => $this->_uid) ); } @@ -79,11 +81,27 @@ class Gruppenadministration extends Auth_Controller $benutzer = hasData($benutzerRes) ? getData($benutzerRes) : array(); $this->load->view( - 'organisation/gruppenadministration/benutzergruppe.php', + 'person/gruppenadministration/benutzergruppe.php', array('gruppe_kurzbz' => $gruppe_kurzbz, 'benutzer' => $benutzer) ); } + /** + * Gets Benutzer assigned to a Gruppe + */ + public function getBenutzer() + { + $gruppe_kurzbz = $this->input->get('gruppe_kurzbz'); + + $this->BenutzergruppeModel->addSelect('uid, vorname, nachname'); + $this->BenutzergruppeModel->addJoin('public.tbl_benutzer', 'uid'); + $this->BenutzergruppeModel->addJoin('public.tbl_person', 'person_id'); + $benutzerRes = $this->BenutzergruppeModel->loadWhere(array('gruppe_kurzbz' => $gruppe_kurzbz)); + + $this->outputJson($benutzerRes); + } + + /** * Gets all Benutzer for assignment to Gruppe */ @@ -109,6 +127,25 @@ class Gruppenadministration extends Auth_Controller $result = error('Uid missing'); else { + $benutzerExistsRes = $this->BenutzergruppeModel->loadWhere( + array( + 'uid' => $uid, + 'gruppe_kurzbz' => $gruppe_kurzbz + ) + ); + + if (isError($benutzerExistsRes)) + { + $this->outputJsonError(getError($benutzerExistsRes)); + return; + } + + if (hasData($benutzerExistsRes)) + { + $this->outputJsonError(getError($this->p->t('gruppenadministration', 'benutzerZugewiesen'))); + return; + } + $result = $this->BenutzergruppeModel->insert( array( 'uid' => $uid, @@ -121,6 +158,26 @@ class Gruppenadministration extends Auth_Controller $this->outputJson($result); } + public function removeBenutzer() + { + $uid = $this->input->post('uid'); + $gruppe_kurzbz = $this->input->post('gruppe_kurzbz'); + + if (isEmptyString($uid)) + $result = error('Uid missing'); + else + { + $result = $this->BenutzergruppeModel->delete( + array( + 'uid' => $uid, + 'gruppe_kurzbz' => $gruppe_kurzbz + ) + ); + } + + $this->outputJson($result); + } + // ----------------------------------------------------------------------------------------------------------------- // Private methods @@ -129,9 +186,9 @@ class Gruppenadministration extends Auth_Controller */ private function _setNavigationMenuShowDetails() { - $this->load->library('NavigationLib', array('navigation_page' => 'organisation/Gruppenadministration/showBenutzergruppe')); + $this->load->library('NavigationLib', array('navigation_page' => 'person/Gruppenadministration/showBenutzergruppe')); - $link = site_url('organisation/Gruppenadministration'); + $link = site_url('person/Gruppenadministration'); $this->navigationlib->setSessionMenu( array( @@ -156,7 +213,7 @@ class Gruppenadministration extends Auth_Controller */ // private function _setNavigationMenuIndex() // { - // $this->load->library('NavigationLib', array('navigation_page' => 'organisation/Gruppenadministration/index')); + // $this->load->library('NavigationLib', array('navigation_page' => 'person/gruppenadministration/index')); // // $link = site_url(); // diff --git a/application/views/organisation/gruppenadministration/benutzergruppe.php b/application/views/person/gruppenadministration/benutzergruppe.php similarity index 89% rename from application/views/organisation/gruppenadministration/benutzergruppe.php rename to application/views/person/gruppenadministration/benutzergruppe.php index be7e02fc6..e5eb9c84d 100644 --- a/application/views/organisation/gruppenadministration/benutzergruppe.php +++ b/application/views/person/gruppenadministration/benutzergruppe.php @@ -14,10 +14,10 @@ 'filterwidget' => true, 'navigationwidget' => true, 'phrases' => array( - 'ui' => array('bitteEintragWaehlen') + 'ui' ), 'customCSSs' => 'public/css/sbadmin2/tablesort_bootstrap.css', - 'customJSs' => array('public/js/bootstrapper.js', 'public/js/tablesort/tablesort.js', 'public/js/organisation/benutzergruppe.js') + 'customJSs' => array('public/js/bootstrapper.js', 'public/js/tablesort/tablesort.js', 'public/js/person/benutzergruppe.js') ) ); ?> @@ -46,6 +46,7 @@ @@ -63,18 +64,18 @@ p->t('ui', 'loeschen')); ?> - + diff --git a/application/views/organisation/gruppenadministration/gruppenadministration.php b/application/views/person/gruppenadministration/gruppenadministration.php similarity index 90% rename from application/views/organisation/gruppenadministration/gruppenadministration.php rename to application/views/person/gruppenadministration/gruppenadministration.php index 889894835..86442af1d 100644 --- a/application/views/organisation/gruppenadministration/gruppenadministration.php +++ b/application/views/person/gruppenadministration/gruppenadministration.php @@ -36,7 +36,7 @@
- load->view('organisation/gruppenadministration/gruppenadministrationData.php'); ?> + load->view('person/gruppenadministration/gruppenadministrationData.php'); ?>
diff --git a/application/views/organisation/gruppenadministration/gruppenadministrationData.php b/application/views/person/gruppenadministration/gruppenadministrationData.php similarity index 96% rename from application/views/organisation/gruppenadministration/gruppenadministrationData.php rename to application/views/person/gruppenadministration/gruppenadministrationData.php index 7e9e467a5..2a9193cb9 100644 --- a/application/views/organisation/gruppenadministration/gruppenadministrationData.php +++ b/application/views/person/gruppenadministration/gruppenadministrationData.php @@ -24,7 +24,7 @@ /* NOTE: Dont use $this here for PHP Version compatibility */ $datasetRaw->{'Teilnehmer'} = sprintf( ''.$this->p->t('gruppenadministration', 'zuweisenlöschen').'', - site_url('organisation/Gruppenadministration/showBenutzergruppe'), + site_url('person/Gruppenadministration/showBenutzergruppe'), $datasetRaw->{'gruppe_kurzbz'}, 'index', (isset($_GET['fhc_controller_id'])?$_GET['fhc_controller_id']:'') diff --git a/public/js/organisation/benutzergruppe.js b/public/js/person/benutzergruppe.js similarity index 54% rename from public/js/organisation/benutzergruppe.js rename to public/js/person/benutzergruppe.js index c7bdd3580..1dd01131a 100644 --- a/public/js/organisation/benutzergruppe.js +++ b/public/js/person/benutzergruppe.js @@ -3,10 +3,66 @@ */ var Benutzergruppe = { + getBenutzer: function(gruppe_kurzbz) + { + FHC_AjaxClient.ajaxCallGet( + 'person/gruppenadministration/getBenutzer', + { + gruppe_kurzbz: gruppe_kurzbz + }, + { + successCallback: function(data, textStatus, jqXHR) { + if (FHC_AjaxClient.hasData(data)) + { + // save loaded data + let benutzerData = FHC_AjaxClient.getData(data); + + console.log(benutzerData); + + let benutzerTable = $("#benutzer-table tbody"); + + benutzerTable.empty(); + + // fill table with Benutzer of Gruppe + for (let i = 0; i < benutzerData.length; i++) + { + let benutzer = benutzerData[i]; + benutzerTable.append( + ""+ + ""+benutzer.uid+""+ + ""+benutzer.vorname+""+ + ""+benutzer.nachname+""+ + ""+ + ""+ + ""+ + "" + ); + + // add delete event to button + $("#"+benutzer.uid+"_benutzerLoeschen").click( + function() { + Benutzergruppe.removeBenutzer(benutzer.uid, gruppe_kurzbz); + } + ) + } + + Tablesort.addTablesorter( + "benutzer-table", [[0,0], [2,0]], ["filter"], 2 + ) + } + }, + errorCallback: function(jqXHR, textStatus, errorThrown) { + FHC_DialogLib.alertError(textStatus); + } + } + ); + }, getAllBenutzer: function() { FHC_AjaxClient.ajaxCallGet( - 'organisation/Gruppenadministration/getAllBenutzer', + 'person/gruppenadministration/getAllBenutzer', null, { successCallback: function(data, textStatus, jqXHR) { @@ -62,7 +118,7 @@ var Benutzergruppe = { addBenutzer: function(uid, gruppe_kurzbz) { FHC_AjaxClient.ajaxCallPost( - 'organisation/Gruppenadministration/addBenutzer', + 'person/gruppenadministration/addBenutzer', { uid: uid, gruppe_kurzbz: gruppe_kurzbz @@ -72,7 +128,31 @@ var Benutzergruppe = { if (FHC_AjaxClient.hasData(data)) { let addBenutzerRes = FHC_AjaxClient.getData(data); - console.log(addBenutzerRes); + + Benutzergruppe.getBenutzer(gruppe_kurzbz); + } + }, + errorCallback: function(jqXHR, textStatus, errorThrown) { + FHC_DialogLib.alertError(textStatus); + } + } + ); + }, + removeBenutzer: function(uid, gruppe_kurzbz) + { + FHC_AjaxClient.ajaxCallPost( + 'person/gruppenadministration/removeBenutzer', + { + uid: uid, + gruppe_kurzbz: gruppe_kurzbz + }, + { + successCallback: function(data, textStatus, jqXHR) { + if (FHC_AjaxClient.hasData(data)) + { + let addBenutzerRes = FHC_AjaxClient.getData(data); + + Benutzergruppe.getBenutzer(gruppe_kurzbz); } }, errorCallback: function(jqXHR, textStatus, errorThrown) { @@ -105,16 +185,13 @@ var Benutzergruppe = { * When JQuery is up */ $(document).ready(function() { - + let gruppe_kurzbz = $("#gruppe_kurzbz").val(); Benutzergruppe.getAllBenutzer(); - Tablesort.addTablesorter( - "benutzer-table", [[0,0], [2,0]], ['filter'], 2 - ) + Benutzergruppe.getBenutzer(gruppe_kurzbz); $("#teilnehmerHinzufuegen").click( function(){ let uid = $("#teilnehmer_uid").val(); - let gruppe_kurzbz = $("#gruppe_kurzbz").val(); Benutzergruppe.addBenutzer(uid, gruppe_kurzbz); } );