Manager Gruppenadministration:

first version of adding Benutzer to Gruppe
This commit is contained in:
KarpAlex
2022-06-09 20:05:46 +02:00
parent d2fea1ac6f
commit 83351e7329
4 changed files with 210 additions and 42 deletions
@@ -18,12 +18,14 @@ class Gruppenadministration extends Auth_Controller
array(
'index' => 'admin:r',
'showBenutzergruppe' => 'admin:r',
'saveBPK' => 'admin:rw',
'getAllBenutzer' => 'admin:r',
'addBenutzer' => 'admin:rw',
)
);
// Loads models
$this->load->model('organisation/benutzergruppe_model', 'BenutzergruppeModel');
$this->load->model('person/benutzer_model', 'BenutzerModel');
$this->load->model('person/benutzergruppe_model', 'BenutzergruppeModel');
$this->load->library('WidgetLib');
$this->loadPhrases(
@@ -69,7 +71,12 @@ class Gruppenadministration extends Auth_Controller
$this->BenutzergruppeModel->addSelect('uid, vorname, nachname');
$this->BenutzergruppeModel->addJoin('public.tbl_benutzer', 'uid');
$this->BenutzergruppeModel->addJoin('public.tbl_person', 'person_id');
$benutzer = $this->BenutzergruppeModel->loadWhere(array('gruppe_kurzbz' => $gruppe_kurzbz));
$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(
'organisation/gruppenadministration/benutzergruppe.php',
@@ -78,27 +85,41 @@ class Gruppenadministration extends Auth_Controller
}
/**
* Saves a ZGV for a prestudent, includes Ort, Datum, Nation for bachelor and master
* Gets all Benutzer for assignment to Gruppe
*/
public function getAllBenutzer()
{
$this->BenutzerModel->addSelect('uid, vorname, nachname');
$this->BenutzerModel->addJoin('public.tbl_person', 'person_id');
$benutzerRes = $this->BenutzerModel->loadWhere(
array('tbl_benutzer.aktiv' => true)
);
$this->outputJson($benutzerRes);
}
/**
* Adds a Benutzer to Gruppe
*/
// public function saveBPK()
// {
// $person_id = $this->input->post('person_id');
// $bpk = $this->input->post('bpk');
//
// if (isEmptyString($person_id))
// $result = error('PersonID missing');
// else
// {
// $result = $this->PersonModel->update(
// $person_id,
// array(
// 'bpk' => $bpk,
// 'updateamum' => date('Y-m-d H:i:s')
// )
// );
// redirect('person/BPKWartung/index');
// }
// }
public function addBenutzer()
{
$uid = $this->input->post('uid');
$gruppe_kurzbz = $this->input->post('gruppe_kurzbz');
if (isEmptyString($uid))
$result = error('Uid missing');
else
{
$result = $this->BenutzergruppeModel->insert(
array(
'uid' => $uid,
'gruppe_kurzbz' => $gruppe_kurzbz,
'insertamum' => date('Y-m-d H:i:s')
)
);
}
$this->outputJson($result);
}
// -----------------------------------------------------------------------------------------------------------------
// Private methods
@@ -1,14 +0,0 @@
<?php
class Benutzergruppe_model extends DB_Model
{
/**
* Constructor
*/
public function __construct()
{
parent::__construct();
$this->dbTable = 'public.tbl_benutzergruppe';
$this->pk = array('uid', 'gruppe_kurzbz');
}
}
@@ -10,13 +10,14 @@
'sbadmintemplate' => true,
'tablesorter' => true,
'ajaxlib' => true,
'dialoglib' => true,
'filterwidget' => true,
'navigationwidget' => true,
'phrases' => array(
'ui' => array('bitteEintragWaehlen')
),
'customCSSs' => 'public/css/sbadmin2/tablesort_bootstrap.css',
'customJSs' => array('public/js/bootstrapper.js')
'customJSs' => array('public/js/bootstrapper.js', 'public/js/tablesort/tablesort.js', 'public/js/organisation/benutzergruppe.js')
)
);
?>
@@ -31,13 +32,52 @@
<div class="row">
<div class="col-lg-12">
<h3 class="page-header">
<?php echo ucfirst($this->p->t('gruppenadministration', 'benutzergruppe')); ?>
<?php echo ucfirst($this->p->t('gruppenadministration', 'benutzergruppe')).' '.$gruppe_kurzbz ?>
</h3>
</div>
</div>
<div>
<!-- <table>
</table> -->
<div class="row">
<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('ui', 'hinzufuegen') ?>
</button>
</span>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<table class="table table-bordered table-condensed table-responsive" id="benutzer-table">
<thead>
<th>Uid</th>
<th><?php echo ucfirst($this->p->t('global', 'vorname')); ?></th>
<th><?php echo ucfirst($this->p->t('global', 'nachname')); ?></th>
<th><?php echo ucfirst($this->p->t('ui', 'loeschen')); ?></th>
</thead>
<tbody>
<?php foreach ($benutzer as $ben): ?>
<tr>
<td><?php echo $ben->uid; ?></td>
<td><?php echo $ben->vorname; ?></td>
<td><?php echo $ben->nachname; ?></td>
<td>
<button class="btn btn-default benutzerLoeschen" id="benutzerLoeschen">
<?php echo ucfirst($this->p->t('ui', 'loeschen')); ?>
</button>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
</div>
</div>
</div>
+121
View File
@@ -0,0 +1,121 @@
/**
* Javascript file for benutzergruppe management page
*/
var Benutzergruppe = {
getAllBenutzer: function()
{
FHC_AjaxClient.ajaxCallGet(
'organisation/Gruppenadministration/getAllBenutzer',
null,
{
successCallback: function(data, textStatus, jqXHR) {
if (FHC_AjaxClient.hasData(data))
{
benutzerArr = [];
// save loaded data
let benutzerData = FHC_AjaxClient.getData(data);
for (let i = 0; i < benutzerData.length; i++)
{
let ben = benutzerData[i];
benutzerArr.push(
{
vorname: ben.vorname,
nachname: ben.nachname,
uid: ben.uid,
label: ben.nachname + " " + ben.vorname + " (" + ben.uid + ")",
id: ben.uid
}
);
}
// callback for searching source mitarbeiter array correctly
let sourceCallback = function(request, response)
{
// case insensitive matcher
let matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i");
// match vorname nachname OR nachname vorname OR uid
response($.grep(benutzerArr, function (value) {
return matcher.test(value.nachname + ' '+value.vorname + ' ' + value.nachname)
|| matcher.test(value.uid);
}));
}
// fill autocomplete field with benutzer data
Benutzergruppe._fillAutocomplete(
'teilnehmerSelect',
'teilnehmer_uid',
sourceCallback
);
}
},
errorCallback: function(jqXHR, textStatus, errorThrown) {
FHC_DialogLib.alertError(textStatus);
}
}
);
},
addBenutzer: function(uid, gruppe_kurzbz)
{
FHC_AjaxClient.ajaxCallPost(
'organisation/Gruppenadministration/addBenutzer',
{
uid: uid,
gruppe_kurzbz: gruppe_kurzbz
},
{
successCallback: function(data, textStatus, jqXHR) {
if (FHC_AjaxClient.hasData(data))
{
let addBenutzerRes = FHC_AjaxClient.getData(data);
console.log(addBenutzerRes);
}
},
errorCallback: function(jqXHR, textStatus, errorThrown) {
FHC_DialogLib.alertError(textStatus);
}
}
);
},
_fillAutocomplete: function(autocompleteId, idFieldId, source)
{
// jQuery ui autocomplete for benutzer
$("#"+autocompleteId).autocomplete(
{
// custom matcher
source: source,
autoFocus: true,
select: function(event, ui)
{
// when autocmplete entry selected, display label text in autocomplete, fill hidden value field
$("#"+autocompleteId).val(ui.item.label);
$("#"+idFieldId).val(ui.item.id);
return false;
}
}
);
}
};
/**
* When JQuery is up
*/
$(document).ready(function() {
Benutzergruppe.getAllBenutzer();
Tablesort.addTablesorter(
"benutzer-table", [[0,0], [2,0]], ['filter'], 2
)
$("#teilnehmerHinzufuegen").click(
function(){
let uid = $("#teilnehmer_uid").val();
let gruppe_kurzbz = $("#gruppe_kurzbz").val();
Benutzergruppe.addBenutzer(uid, gruppe_kurzbz);
}
);
});