Aggiunta possibilità di impostare un tema diverso per ogni gruppo di utenti

This commit is contained in:
Luca 2024-01-18 22:39:15 +01:00
parent 02ffb6d811
commit c26cc608f4
6 changed files with 92 additions and 11 deletions

View File

@ -221,6 +221,12 @@ if (!API\Response::isAPIRequest()) {
// Impostazione del tema grafico di default
$theme = !empty($config['theme']) ? $config['theme'] : 'default';
//Set the group theme
$user = auth()->getUser();
if ($user->getThemeAttribute()){
$theme = $user->getThemeAttribute();
}
if ($continue) {
// Periodo di visualizzazione dei record

View File

@ -26,13 +26,31 @@ $id_utente = filter('id_utente');
switch (filter('op')) {
// Aggiunta nuovo gruppo
case 'add':
$nome = filter('nome');
$nome = filter('nome');
$id_module_start = filter('id_module_start') ?: null;
$theme = filter('theme') ?: null;
// Verifico che questo nome gruppo non sia già stato usato
if ($dbo->fetchNum('SELECT nome FROM zz_groups WHERE nome='.prepare($nome)) == 0) {
$dbo->query('INSERT INTO zz_groups(nome, editable) VALUES('.prepare($nome).', 1)');
$dbo->insert('zz_groups', [
'nome' => $nome,
'id_module_start' => $id_module_start,
'theme' => $theme,
'editable' => 1,
]);
$id_record = $dbo->lastInsertedID();
if ($id_module_start){
$dbo->insert('zz_permissions', [
'idgruppo' => $id_record,
'idmodule' => $id_module_start,
'permessi' => 'r',
]);
}
flash()->info(tr('Gruppo aggiunto!'));
} else {
flash()->error(tr('Gruppo già esistente!'));
@ -255,7 +273,7 @@ switch (filter('op')) {
break;
case 'update':
case 'update_id_module_start':
$dbo->update('zz_groups', [
'id_module_start' => filter('id_module_start'),
], ['id' => $id_record]);
@ -263,5 +281,15 @@ switch (filter('op')) {
ob_end_clean();
echo 'ok';
break;
case 'update_theme':
$dbo->update('zz_groups', [
'theme' => filter('theme'),
], ['id' => $id_record]);
ob_end_clean();
echo 'ok';
break;
}

View File

@ -24,9 +24,15 @@ include_once __DIR__.'/../../core.php';
<input type="hidden" name="backto" value="record-list">
<div class="row">
<div class="col-md-12">
<div class="col-md-6">
{[ "type": "text", "label": "<?php echo tr('Nome gruppo'); ?>", "name": "nome", "required": 1, "validation": "gruppo", "help": "<?php echo tr('Compilando questo campo verrà creato un nuovo gruppo di utenti.'); ?>" ]}
</div>
<div class="col-md-3">
{[ "type": "select", "label": "<?php echo tr('Tema'); ?>", "name": "theme", "values": "list=\"\": \"<?php echo tr('Predefinito'); ?>\",\"black\": \"<?php echo tr('Nero'); ?>\",\"red\": \"<?php echo tr('Rosso'); ?>\",\"blue\": \"<?php echo tr('Blu'); ?>\",\"green\": \"<?php echo tr('Verde'); ?>\",\"yellow\": \"<?php echo tr('Giallo'); ?>\",\"purple\": \"<?php echo tr('Viola'); ?>\"", "value": "$theme$" ]}
</div>
<div class="col-md-3">
{["type":"select", "label":"<?php echo tr('Modulo iniziale'); ?>", "name":"id_module_start", "ajax-source":"moduli_gruppo", "placeholder":"<?php tr('Modulo iniziale'); ?>" ]}
</div>
</div>
<!-- PULSANTI -->
@ -47,7 +53,7 @@ function submitCheck() {
$("#add-form").submit();
}else{
$("input[name=nome]").focus();
swal("<?php echo tr('Impossibile procedere'); ?>", "<?php echo tr('Nome gruppo già in uso'); ?>", "error");
swal("<?php echo tr('Impossibile procedere'); ?>", "<?php echo tr('Nome gruppo già utilizzato'); ?>.", "error");
}
}

View File

@ -34,6 +34,9 @@ echo '
<div class="col-md-3 pull-right">
{["type":"select", "label":"'.tr('Modulo iniziale').'", "name":"id_module_start", "ajax-source":"moduli_gruppo", "select-options": '.json_encode(['idgruppo' => $record['id']]).', "placeholder":"'.tr('Modulo iniziale').'", "value":"'.$record['id_module_start'].'" ]}
</div>
<div class="col-md-3 pull-right">
{["type":"select", "label":"'.tr('Tema').'", "name":"theme", "values":"list=\"\": \"'.tr('Predefinito').'\",\"black\": \"'.tr('Nero').'\",\"red\": \"'.tr('Rosso').'\",\"blue\": \"'.tr('Blu').'\",\"green\": \"'.tr('Verde').'\",\"yellow\": \"'.tr('Giallo').'\",\"purple\": \"'.tr('Viola').'\" ", "value":"'.$record['theme'].'" ]}
</div>
</div>
<br>';
@ -255,6 +258,7 @@ function update_permissions(id, value, color){
globals.rootdir + "/actions.php?id_module='.$id_module.'&id_record='.$id_record.'&op=update_permission&idmodulo=" + id + "&permesso=" + value,
function(data){
if(data == "ok") {
toastr["success"]("'.tr('Permessi aggiornati!').'");
content_was_modified = false;
@ -265,8 +269,9 @@ function update_permissions(id, value, color){
if( id==$("#id_module_start").val() && value=="-" ){
$("#id_module_start").selectReset();
update_user($("#id_module_start").val());
update_id_module_start($("#id_module_start").val());
}
} else {
swal("'.tr('Errore').'", "'.tr("Errore durante l'aggiornamento dei permessi!").'", "error");
}
@ -275,18 +280,36 @@ function update_permissions(id, value, color){
}
$("#id_module_start").change(function(){
update_user($(this).val());
update_id_module_start($(this).val());
});
function update_user(value){
$("#theme").change(function(){
update_theme($(this).val());
});
function update_id_module_start(value){
$.get(
globals.rootdir + "/actions.php?id_module='.$id_module.'&id_record='.$id_record.'&op=update&id_module_start=" + value,
globals.rootdir + "/actions.php?id_module='.$id_module.'&id_record='.$id_record.'&op=update_id_module_start&id_module_start=" + value,
function(data){
if(data == "ok") {
toastr["success"]("'.tr('Informazioni aggiornate!').'");
toastr["success"]("'.tr('Modulo iniziale aggiornato!').'");
content_was_modified = false;
} else {
swal("'.tr('Errore').'", "'.tr("Errore durante l'aggiornamento delle informazioni!").'", "error");
swal("'.tr('Errore').'", "'.tr("Errore durante l'aggiornamento delle impostazioni!").'", "error");
}
}
);
}
function update_theme(value){
$.get(
globals.rootdir + "/actions.php?id_module='.$id_module.'&id_record='.$id_record.'&op=update_theme&theme=" + value,
function(data){
if(data == "ok") {
toastr["success"]("'.tr('Tema aggiornato!').'");
content_was_modified = false;
} else {
swal("'.tr('Errore').'", "'.tr("Errore durante l'aggiornamento delle impostazioni!").'", "error");
}
}
);

View File

@ -33,6 +33,7 @@ class User extends Model
protected $appends = [
'is_admin',
'gruppo',
'theme',
'id_anagrafica',
];
@ -47,6 +48,7 @@ class User extends Model
protected $is_admin;
protected $gruppo;
protected $theme;
/**
* The attributes that should be hidden for arrays.
@ -111,6 +113,15 @@ class User extends Model
return $this->gruppo;
}
public function getThemeAttribute()
{
if (!isset($this->theme)) {
$this->theme = $this->group->theme;
}
return $this->theme;
}
public function getSediAttribute()
{
$database = database();

7
update/2_4_54.sql Normal file
View File

@ -0,0 +1,7 @@
-- Aggiunto colore in per gruppi utenti
ALTER TABLE `zz_groups` ADD `theme` VARCHAR(25) NULL AFTER `id_module_start`;
UPDATE `zz_groups` SET `theme` = 'black' WHERE `zz_groups`.`nome` = 'Amministratori';
UPDATE `zz_groups` SET `theme` = 'red' WHERE `zz_groups`.`nome` = 'Tecnici';
UPDATE `zz_groups` SET `theme` = 'blue' WHERE `zz_groups`.`nome` = 'Agenti';
UPDATE `zz_groups` SET `theme` = 'green' WHERE `zz_groups`.`nome` = 'Clienti';