Gruppenmanagement:

- renamed gruppenadministration to gruppenmanagement
- added additional columns to gruppenmanagement filterwidget
- improved comments
- write public.tbl_log every time user is added or deleted from a group
This commit is contained in:
KarpAlex
2022-06-14 17:30:07 +02:00
parent 1066dff8e0
commit de08bfd0fc
6 changed files with 108 additions and 89 deletions
@@ -5,7 +5,7 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
/**
* Page for managing groups of which user is the manager
*/
class Gruppenadministration extends Auth_Controller
class Gruppenmanagement extends Auth_Controller
{
private $_uid; // contains the UID of the logged user
@@ -28,6 +28,7 @@ class Gruppenadministration extends Auth_Controller
// Loads models
$this->load->model('person/benutzer_model', 'BenutzerModel');
$this->load->model('person/benutzergruppe_model', 'BenutzergruppeModel');
$this->load->model('system/Log_model', 'LogModel');
$this->load->library('WidgetLib');
$this->loadPhrases(
@@ -55,7 +56,7 @@ class Gruppenadministration extends Auth_Controller
//$this->_setNavigationMenuIndex(); // define the navigation menu for this page
$this->load->view(
'person/gruppenadministration/gruppenadministration.php',
'person/gruppenmanagement/gruppenmanagement.php',
array('uid' => $this->_uid)
);
}
@@ -70,18 +71,8 @@ class Gruppenadministration extends Auth_Controller
$data[self::FHC_CONTROLLER_ID] = $this->getControllerId();
// $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));
//
// if (isError($benutzerRes))
// show_error(getError($benutzerRes));
//
// $benutzer = hasData($benutzerRes) ? getData($benutzerRes) : array();
$this->load->view(
'person/gruppenadministration/benutzergruppe.php',
'person/gruppenmanagement/benutzergruppe.php',
array('gruppe_kurzbz' => $gruppe_kurzbz)
);
}
@@ -142,7 +133,7 @@ class Gruppenadministration extends Auth_Controller
if (hasData($benutzerExistsRes))
{
$this->outputJsonError($this->p->t('gruppenadministration', 'benutzerSchonZugewiesen'));
$this->outputJsonError($this->p->t('gruppenmanagement', 'benutzerSchonZugewiesen'));
return;
}
@@ -153,11 +144,26 @@ class Gruppenadministration extends Auth_Controller
'insertamum' => date('Y-m-d H:i:s')
)
);
// log the group add
$lastQry = $this->db->last_query();
if (isSuccess($result))
{
$this->LogModel->insert(array(
'mitarbeiter_uid' => $this->_uid,
'beschreibung' => 'Gruppenmanagement: Nutzer zu Gruppe hinzugefügt',
'sql' => $lastQry
));
}
}
$this->outputJson($result);
}
/**
* Removes Benutzer from Gruppe
*/
public function removeBenutzer()
{
$uid = $this->input->post('uid');
@@ -175,6 +181,18 @@ class Gruppenadministration extends Auth_Controller
);
}
// log the group remove
$lastQry = $this->db->last_query();
if (isSuccess($result))
{
$this->LogModel->insert(array(
'mitarbeiter_uid' => $this->_uid,
'beschreibung' => 'Gruppenmanagement: Nutzer aus Gruppe entfernt',
'sql' => $lastQry
));
}
$this->outputJson($result);
}
@@ -186,9 +204,9 @@ class Gruppenadministration extends Auth_Controller
*/
private function _setNavigationMenuShowDetails()
{
$this->load->library('NavigationLib', array('navigation_page' => 'person/Gruppenadministration/showBenutzergruppe'));
$this->load->library('NavigationLib', array('navigation_page' => 'person/Gruppenmanagement/showBenutzergruppe'));
$link = site_url('person/Gruppenadministration');
$link = site_url('person/Gruppenmanagement');
$this->navigationlib->setSessionMenu(
array(
@@ -209,32 +227,8 @@ class Gruppenadministration extends Auth_Controller
}
/**
* Define the navigation menu for the showDetails page
* Set uid of authentificated user
*/
// private function _setNavigationMenuIndex()
// {
// $this->load->library('NavigationLib', array('navigation_page' => 'person/gruppenadministration/index'));
//
// $link = site_url();
//
// $this->navigationlib->setSessionMenu(
// array(
// 'back' => $this->navigationlib->oneLevel(
// 'Zurück', // description
// $link, // link
// array(), // children
// 'angle-left', // icon
// true, // expand
// null, // subscriptDescription
// null, // subscriptLinkClass
// null, // subscriptLinkValue
// '', // target
// 1 // sort
// )
// )
// );
// }
private function _setAuthUID()
{
$this->_uid = getAuthUID();
@@ -32,7 +32,7 @@
<div class="row">
<div class="col-lg-12">
<h3 class="page-header">
<?php echo ucfirst($this->p->t('gruppenadministration', 'benutzergruppe')).' '.$gruppe_kurzbz ?>
<?php echo ucfirst($this->p->t('gruppenmanagement', 'benutzergruppe')).' '.$gruppe_kurzbz ?>
</h3>
</div>
</div>
@@ -40,13 +40,12 @@
<div class="col-lg-12">
<div class="form-inline">
<div class="input-group" id="absgstatusgrselect_137998">
<!-- <label for="mitarbeiterSelect"><php echo $this->p->t('benutzergruppe', 'zustaendigerMitarbeiter') ></label> -->
<input type="text" class="form-control" name="teilnehmerSelect" id="teilnehmerSelect">
<input type="hidden" name="teilnehmer_uid" id="teilnehmer_uid">
<input type="hidden" name="gruppe_kurzbz" id="gruppe_kurzbz" value="<?php echo $gruppe_kurzbz ?>">
<span class="input-group-btn">
<button type="button" class="btn btn-default" id="teilnehmerHinzufuegen">
<?php echo $this->p->t('gruppenadministration', 'benutzer') ?>&nbsp;
<?php echo $this->p->t('gruppenmanagement', 'benutzer') ?>&nbsp;
<?php echo $this->p->t('ui', 'hinzufuegen') ?>
</button>
</span>
@@ -2,7 +2,7 @@
$this->load->view(
'templates/FHC-Header',
array(
'title' => 'Gruppenadministration',
'title' => 'Gruppenmanagement',
'jquery' => true,
'jqueryui' => true,
'bootstrap' => true,
@@ -31,12 +31,12 @@
<div class="row">
<div class="col-lg-12">
<h3 class="page-header">
<?php echo ucfirst($this->p->t('gruppenadministration', 'gruppenadministration')); ?>
<?php echo ucfirst($this->p->t('gruppenmanagement', 'gruppenmanagement')); ?>
</h3>
</div>
</div>
<div>
<?php $this->load->view('person/gruppenadministration/gruppenadministrationData.php'); ?>
<?php $this->load->view('person/gruppenmanagement/gruppenmanagementData.php'); ?>
</div>
</div>
</div>
@@ -2,7 +2,7 @@
$filterWidgetArray = array(
'query' => '
SELECT gruppe_kurzbz, grp.bezeichnung AS gruppe_bezeichnung, grp.beschreibung AS gruppe_beschreibung,
studiengang_kz, UPPER(stg.typ||stg.kurzbz) AS studiengang_kurzbz, semester
studiengang_kz, UPPER(stg.typ||stg.kurzbz) AS studiengang_kurzbz, semester, sichtbar, lehre, grp.aktiv, mailgrp, generiert
FROM public.tbl_gruppe grp
JOIN public.tbl_studiengang stg USING (studiengang_kz)
JOIN public.tbl_gruppe_manager grpmgr USING (gruppe_kurzbz)
@@ -12,19 +12,24 @@
'datasetRepresentation' => 'tablesorter',
'additionalColumns' => array('Teilnehmer'),
'columnsAliases' => array(
ucfirst($this->p->t('gruppenadministration', 'kurzbezeichnung')) ,
ucfirst($this->p->t('gruppenmanagement', 'kurzbezeichnung')) ,
ucfirst($this->p->t('global', 'bezeichnung')) ,
ucfirst($this->p->t('global', 'beschreibung')) ,
ucfirst($this->p->t('lehre', 'studiengangskennzahl')) ,
ucfirst($this->p->t('lehre', 'studiengang')),
ucfirst($this->p->t('lehre', 'semester')) ,
ucfirst($this->p->t('gruppenmanagement', 'sichtbar')) ,
ucfirst($this->p->t('gruppenmanagement', 'lehre')) ,
ucfirst($this->p->t('gruppenmanagement', 'aktiv')) ,
ucfirst($this->p->t('gruppenmanagement', 'mailgrp')) ,
ucfirst($this->p->t('gruppenmanagement', 'generiert'))
),
'formatRow' => function($datasetRaw) {
/* NOTE: Dont use $this here for PHP Version compatibility */
$datasetRaw->{'Teilnehmer'} = sprintf(
'<a href="%s?gruppe_kurzbz=%s&origin_page=%s&fhc_controller_id=%s">'.$this->p->t('gruppenadministration', 'zuweisenlöschen').'</a>',
site_url('person/Gruppenadministration/showBenutzergruppe'),
'<a href="%s?gruppe_kurzbz=%s&origin_page=%s&fhc_controller_id=%s">'.$this->p->t('gruppenmanagement', 'zuweisenlöschen').'</a>',
site_url('person/Gruppenmanagement/showBenutzergruppe'),
$datasetRaw->{'gruppe_kurzbz'},
'index',
(isset($_GET['fhc_controller_id'])?$_GET['fhc_controller_id']:'')
@@ -42,15 +47,19 @@
{
$datasetRaw->{'semester'} = '-';
}
//$datasetRaw->{'lehre'} = $datasetRaw->{'lehre'} == 'true' ? 'ja' : 'nein';
$datasetRaw->{'sichtbar'} = $datasetRaw->{'sichtbar'} == 'true' ? 'ja' : 'nein';
$datasetRaw->{'lehre'} = $datasetRaw->{'lehre'} == 'true' ? 'ja' : 'nein';
$datasetRaw->{'aktiv'} = $datasetRaw->{'aktiv'} == 'true' ? 'ja' : 'nein';
$datasetRaw->{'mailgrp'} = $datasetRaw->{'mailgrp'} == 'true' ? 'ja' : 'nein';
$datasetRaw->{'generiert'} = $datasetRaw->{'generiert'} == 'true' ? 'ja' : 'nein';
return $datasetRaw;
}
);
$filterWidgetArray['app'] = 'core';
$filterWidgetArray['datasetName'] = 'gruppenadministration';
$filterWidgetArray['filterKurzbz'] = 'gruppenadministration';
$filterWidgetArray['datasetName'] = 'gruppenmanagement';
$filterWidgetArray['filterKurzbz'] = 'gruppenmanagement';
$filterWidgetArray['filter_id'] = $this->input->get('filter_id');
echo $this->widgetlib->widget('FilterWidget', $filterWidgetArray);
+49 -32
View File
@@ -3,30 +3,32 @@
*/
var Benutzergruppe = {
getBenutzer: function(gruppe_kurzbz)
{
getBenutzer: function(gruppe_kurzbz) {
FHC_AjaxClient.ajaxCallGet(
'person/gruppenadministration/getBenutzer',
'person/gruppenmanagement/getBenutzer',
{
gruppe_kurzbz: gruppe_kurzbz
},
{
successCallback: function(data, textStatus, jqXHR) {
if (FHC_AjaxClient.isError(data)) FHC_DialogLib.alertError(FHC_AjaxClient.getError(data));
if (FHC_AjaxClient.isError(data))
{
FHC_DialogLib.alertError(FHC_AjaxClient.getError(data));
return;
}
let benutzerTable = $("#benutzer-table tbody");
benutzerTable.empty();
if (FHC_AjaxClient.hasData(data))
{
// save loaded data
let benutzerData = FHC_AjaxClient.getData(data);
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];
console.log(benutzer.aktiv);
benutzerTable.append(
"<tr>"+
"<td>"+benutzer.uid+"</td>"+
@@ -48,11 +50,10 @@ var Benutzergruppe = {
}
)
}
Tablesort.addTablesorter(
"benutzer-table", [[0,0], [2,0]], ["filter", "zebra"], 2, {headers: {4: {filter: false}}}
)
}
// add tablesorter to benutzergruppe table
Benutzergruppe._setTablesorter();
},
errorCallback: function(jqXHR, textStatus, errorThrown) {
FHC_DialogLib.alertError(textStatus);
@@ -60,14 +61,17 @@ var Benutzergruppe = {
}
);
},
getAllBenutzer: function()
{
getAllBenutzer: function() {
FHC_AjaxClient.ajaxCallGet(
'person/gruppenadministration/getAllBenutzer',
'person/gruppenmanagement/getAllBenutzer',
null,
{
successCallback: function(data, textStatus, jqXHR) {
if (FHC_AjaxClient.isError(data)) FHC_DialogLib.alertError(FHC_AjaxClient.getError(data));
if (FHC_AjaxClient.isError(data))
{
FHC_DialogLib.alertError(FHC_AjaxClient.getError(data));
return;
}
if (FHC_AjaxClient.hasData(data))
{
@@ -118,22 +122,24 @@ var Benutzergruppe = {
}
);
},
addBenutzer: function(uid, gruppe_kurzbz)
{
addBenutzer: function(uid, gruppe_kurzbz) {
FHC_AjaxClient.ajaxCallPost(
'person/gruppenadministration/addBenutzer',
'person/gruppenmanagement/addBenutzer',
{
uid: uid,
gruppe_kurzbz: gruppe_kurzbz
},
{
successCallback: function(data, textStatus, jqXHR) {
if (FHC_AjaxClient.isError(data)) FHC_DialogLib.alertError(FHC_AjaxClient.getError(data));
if (FHC_AjaxClient.isError(data))
{
FHC_DialogLib.alertError(FHC_AjaxClient.getError(data));
return;
}
if (FHC_AjaxClient.hasData(data))
{
let addBenutzerRes = FHC_AjaxClient.getData(data);
// load Benutzer after add to show change
Benutzergruppe.getBenutzer(gruppe_kurzbz);
}
},
@@ -143,22 +149,24 @@ var Benutzergruppe = {
}
);
},
removeBenutzer: function(uid, gruppe_kurzbz)
{
removeBenutzer: function(uid, gruppe_kurzbz) {
FHC_AjaxClient.ajaxCallPost(
'person/gruppenadministration/removeBenutzer',
'person/gruppenmanagement/removeBenutzer',
{
uid: uid,
gruppe_kurzbz: gruppe_kurzbz
},
{
successCallback: function(data, textStatus, jqXHR) {
if (FHC_AjaxClient.isError(data)) FHC_DialogLib.alertError(FHC_AjaxClient.getError(data));
if (FHC_AjaxClient.isError(data))
{
FHC_DialogLib.alertError(FHC_AjaxClient.getError(data));
return;
}
if (FHC_AjaxClient.hasData(data))
{
let addBenutzerRes = FHC_AjaxClient.getData(data);
// load Benutzer after remove to show change
Benutzergruppe.getBenutzer(gruppe_kurzbz);
}
},
@@ -168,8 +176,7 @@ var Benutzergruppe = {
}
);
},
_fillAutocomplete: function(autocompleteId, idFieldId, source)
{
_fillAutocomplete: function(autocompleteId, idFieldId, source) {
// jQuery ui autocomplete for benutzer
$("#"+autocompleteId).autocomplete(
{
@@ -185,6 +192,12 @@ var Benutzergruppe = {
}
}
);
},
_setTablesorter: function() {
Tablesort.addTablesorter(
// sort by first and third column asc, show filters beggining with 2 Benutzer, exclude fifth column from filter
"benutzer-table", [[0,0], [2,0]], ["filter", "zebra"], 2, {headers: {4: {filter: false}}}
)
}
};
@@ -192,12 +205,16 @@ var Benutzergruppe = {
* When JQuery is up
*/
$(document).ready(function() {
// get the group name
let gruppe_kurzbz = $("#gruppe_kurzbz").val();
// load Benutzer for autocomplete selection
Benutzergruppe.getAllBenutzer();
// load Benutzer for table
Benutzergruppe.getBenutzer(gruppe_kurzbz);
$("#teilnehmerHinzufuegen").click(
function(){
// add click event to "add Benutzer" button
$("#teilnehmerHinzufuegen").click(function(){
let uid = $("#teilnehmer_uid").val();
Benutzergruppe.addBenutzer(uid, gruppe_kurzbz);
$("#teilnehmerSelect").val('');
+3 -3
View File
@@ -1112,14 +1112,14 @@ $filters = array(
),
array(
'app' => 'core',
'dataset_name' => 'gruppenadministration',
'filter_kurzbz' => 'Gruppenadministration',
'dataset_name' => 'gruppenmanagement',
'filter_kurzbz' => 'gruppenmanagement',
'description' => '{Meine Gruppen}',
'sort' => 1,
'default_filter' => true,
'filter' => '
{
"name": "Gruppenadministration",
"name": "gruppenmanagement",
"columns": [
{"name": "gruppe_kurzbz"},
{"name": "gruppe_bezeichnung"},