Gruppenmanager:

- set on update cascade for gruppe_kurzbz foreign key
- Notice + disabling add of group managers when group is "generiert"
This commit is contained in:
KarpAlex
2022-06-14 14:08:27 +02:00
parent 2e728462ca
commit 1066dff8e0
2 changed files with 45 additions and 38 deletions
+15 -15
View File
@@ -6176,20 +6176,6 @@ if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berecht
}
}
// Add permission for managing user groups
if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'lehre/gruppenmanager';"))
{
if($db->db_num_rows($result) == 0)
{
$qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES('lehre/gruppenmanager', 'Manager einer Gruppe werden und die Gruppe verwalten');";
if(!$db->db_query($qry))
echo '<strong>system.tbl_berechtigung '.$db->db_last_error().'</strong><br>';
else
echo ' system.tbl_berechtigung: Added permission for lehre/gruppenmanager<br>';
}
}
// Creates table public.tbl_gruppe_manager if it doesn't exist and grants privileges
if (!$result = @$db->db_query('SELECT 1 FROM public.tbl_gruppe_manager LIMIT 1'))
{
@@ -6219,7 +6205,7 @@ if (!$result = @$db->db_query('SELECT 1 FROM public.tbl_gruppe_manager LIMIT 1')
ALTER TABLE public.tbl_gruppe_manager ADD CONSTRAINT pk_gruppe_manager PRIMARY KEY (gruppe_manager_id);
ALTER TABLE public.tbl_gruppe_manager ADD CONSTRAINT fk_gruppe_manager_gruppe_kurzbz FOREIGN KEY (gruppe_kurzbz) REFERENCES public.tbl_gruppe(gruppe_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT;
ALTER TABLE public.tbl_gruppe_manager ADD CONSTRAINT fk_gruppe_manager_gruppe_kurzbz FOREIGN KEY (gruppe_kurzbz) REFERENCES public.tbl_gruppe(gruppe_kurzbz) ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE public.tbl_gruppe_manager ADD CONSTRAINT fk_gruppe_manager_uid FOREIGN KEY (uid) REFERENCES public.tbl_benutzer(uid) ON UPDATE CASCADE ON DELETE RESTRICT;
ALTER TABLE public.tbl_gruppe_manager ADD CONSTRAINT uk_gruppe_manager_gruppe_kurzbz_uid UNIQUE (gruppe_kurzbz, uid);';
@@ -6242,6 +6228,20 @@ if (!$result = @$db->db_query('SELECT 1 FROM public.tbl_gruppe_manager LIMIT 1')
echo '<br>Granted privileges to <strong>vilesci</strong> on public.tbl_gruppe_manager';
}
// Add permission for managing user groups
if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'lehre/gruppenmanager';"))
{
if($db->db_num_rows($result) == 0)
{
$qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES('lehre/gruppenmanager', 'Manager einer Gruppe werden und die Gruppe verwalten');";
if(!$db->db_query($qry))
echo '<strong>system.tbl_berechtigung '.$db->db_last_error().'</strong><br>';
else
echo ' system.tbl_berechtigung: Added permission for lehre/gruppenmanager<br>';
}
}
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '<H2>Pruefe Tabellen und Attribute!</H2>';
+30 -23
View File
@@ -112,6 +112,21 @@ if(!$rechte->isBerechtigt('lehre/gruppe', null, 's'))
$(this).closest('.manager-uid').remove();
});
}
function toggleManagerAssignable()
{
var generiert = $("#generiert").prop('checked');
if (generiert === true)
{
$("#gruppemanager").prop("disabled", true);
$("#genGruppenManagerHinweis").removeClass("hiddenNotice");
}
else
{
$("#gruppemanager").prop("disabled", false);
$("#genGruppenManagerHinweis").addClass("hiddenNotice");
}
}
$(document).ready(function()
{
$("#t1").tablesorter(
@@ -138,6 +153,9 @@ if(!$rechte->isBerechtigt('lehre/gruppe', null, 's'))
// Löschen von Gruppemanager html bei Klick
setManagerDeleteEvent();
// Hinzufügen von Managern deaktiviert wenn generierte Gruppe
toggleManagerAssignable();
// autocomplete für user input Feld
$("#gruppemanager").autocomplete({
source: "einheit_autocomplete.php?work=searchUser",
@@ -176,7 +194,7 @@ if(!$rechte->isBerechtigt('lehre/gruppe', null, 's'))
}
);
// nach 5 Managern Zeile einfügen
// nach 5 Managern in nächste Zeile springen
if (counter >= 5)
{
$(".manager-uid-container").prepend(
@@ -191,9 +209,15 @@ if(!$rechte->isBerechtigt('lehre/gruppe', null, 's'))
// Loeschen Event für neuen Administrator setzen
setManagerDeleteEvent();
}
// Feld leeren
$("#gruppemanager").val('');
return false; // prevent default, damit text nicht im Inputfeld bleibt
}
});
// Hinzufügen von Managern deaktiviert wenn Gruppe auf generiert setzen
$("#generiert").click(toggleManagerAssignable);
});
</script>
<style>
@@ -230,7 +254,7 @@ if(!$rechte->isBerechtigt('lehre/gruppe', null, 's'))
{
padding-bottom: 3px;
}
.hiddenManager
.hiddenNotice
{
display: none;
}
@@ -268,18 +292,6 @@ else if (isset($_GET['type']) && $_GET['type']=='delete')
{
$grp_kurzbz = $_GET['einheit_id'];
// Gruppenmanager der Gruppe löschen
$grpmgr=new gruppemanager();
if ($grpmgr->load_uids($grp_kurzbz))
{
foreach($grpmgr->uids as $uid)
{
if (!$grpmgr->delete($uid->uid, $grp_kurzbz))
echo $grpmgr->errormsg;
}
}
// die Gruppe löschen
$e=new gruppe();
if(!$e->delete($grp_kurzbz))
echo $e->errormsg;
@@ -385,7 +397,7 @@ function doSave()
// gruppemanager immer array, leer wenn keine angegeben
$gruppemanager_uids = is_array($_POST['gruppemanager']) ? $_POST['gruppemanager'] : array();
$gruppemanager_uids = isset($_POST['gruppemanager']) && is_array($_POST['gruppemanager']) ? $_POST['gruppemanager'] : array();
// Prüfung: generierte Gruppen haben keine Manager
if (count($gruppemanager_uids) > 0 && $e->generiert === true)
@@ -525,8 +537,10 @@ function doEdit($kurzbz,$new=false)
<tr>
<td>Gruppenadministrator</td>
<td class="gruppenmanager-cell">
<div "<?php echo ($e->generiert?' class="hiddenManager"':'');?>">
<input type="text" name="gruppemanager" id="gruppemanager" autofocus="autofocus" />
<span class="hiddenNotice" id="genGruppenManagerHinweis">
Generierte Gruppen dürfen keine Administratoren haben.
</span>
<?php
$gruppemanager_class = new gruppemanager();
echo "<div class='manager-uid-container'>";
@@ -543,15 +557,8 @@ function doEdit($kurzbz,$new=false)
echo "<p class='manager-separator'></p>";
$count++;
}
// Absatz für korrekten Abstand
//echo "<p class='manager-separator'></p>";
}
echo "</div>";
?>
</div>
<div "<?php echo (!$e->generiert?' class="hiddenManager"':'');?>">
Generierte Gruppen dürfen keine Administratoren haben.
</div>
</td>
<td>Administratoren, die Benutzer zur Gruppe entfernen/hinzufügen können</td>
</tr>