Skip to content

Commit d499fff

Browse files
committed
fix: #1613 Visualizzazione impostazioni personalizzabili dall'utente
1 parent ad8c069 commit d499fff

3 files changed

Lines changed: 37 additions & 13 deletions

File tree

modules/impostazioni/edit.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@
5454
foreach ($gruppi as $key => $gruppo) {
5555
echo '
5656
<!-- Impostazioni della singola sezione -->
57-
<div class="card card-primary collapsed-card" title="'.$gruppo->nome.'">
58-
<div class="card-header clickable" title="'.$gruppo->nome.'" id="impostazioni-'.$key.'">
57+
<div class="card card-primary collapsed-card">
58+
<div class="card-header clickable" data-title="'.$gruppo->nome.'" id="impostazioni-'.$key.'">
5959
<div class="card-title">'.tr('_SEZIONE_', [
6060
'_SEZIONE_' => $gruppo->nome,
6161
]).'</div>
@@ -116,8 +116,8 @@
116116
117117
let sezioni = JSON.parse(data);
118118
for(const sezione of sezioni){
119-
$(`.card-header[title="` + sezione + `"]`).removeClass("hidden")
120-
let card = $(`.card-header[title="` + sezione + `"]`).removeClass("hidden")
119+
$(`.card-header[data-title="` + sezione + `"]`).removeClass("hidden")
120+
let card = $(`.card-header[data-title="` + sezione + `"]`).removeClass("hidden")
121121
caricaSezione(card);
122122
}
123123
});
@@ -135,7 +135,7 @@ function caricaSezione(header) {
135135
}
136136
137137
// Caricamento della sezione di impostazioni
138-
let sezione = card.attr("title");
138+
let sezione = card.find(".card-header").data("title");
139139
localLoading(container, true);
140140
return $.get("'.$structure->fileurl('sezione.php').'?id_module='.$id_module.'&sezione=" + sezione, function(data) {
141141
container.html(data);

modules/impostazioni/sezione.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,3 +52,9 @@
5252
echo '
5353
</script>';
5454
}
55+
56+
?>
57+
58+
<script>
59+
init();
60+
</script>

src/Settings.php

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,24 @@ public static function input($setting, $required = false, $value_user = null)
164164
$input_value = $setting->valore;
165165
}
166166

167+
// Definizione icona per evidenziare le impostazioni personalizzate e personalizzabili
168+
$user = Auth::user();
169+
$user_options = [];
170+
$user_setting_icon = '';
171+
$tooltip = $setting->getTranslation('help');
172+
173+
if ($user) {
174+
$user_options = json_decode($user->options ?: '', true);
175+
}
176+
177+
if ($user_options['settings'][$setting->id] !== null) {
178+
$user_setting_icon = '<i class="fa fa-user text-primary"></i>';
179+
$tooltip .= ($tooltip?'<br>':'').'<em>'.tr('Personalizzata dall\'utente').'</em>';
180+
} else if ($setting->is_user_setting) {
181+
$user_setting_icon = '<i class="fa fa-user text-secondary"></i>';
182+
$tooltip .= ($tooltip?'<br>':'').'<em>'.tr('Personalizzabile dall\'utente').'</em>';
183+
}
184+
167185
// Lista predefinita
168186
if (preg_match("/list\[(.+?)\]/", $setting->tipo, $m)) {
169187
$values = explode(',', $m[1]);
@@ -177,7 +195,7 @@ public static function input($setting, $required = false, $value_user = null)
177195
}
178196

179197
$result = '
180-
{[ "type": "select", "multiple": 0, "label": '.json_encode($setting->getTranslation('title')).', "readonly": "'.!$setting->editable.'", "name": "setting['.$setting->id.']", "values": '.json_encode($list).', "value": "'.$input_value.'", "required": "'.intval($required).'", "help": "'.$setting->getTranslation('help').'" ]}';
198+
{[ "type": "select", "multiple": 0, "label": '.json_encode($user_setting_icon.' '.$setting->getTranslation('title')).', "readonly": "'.!$setting->editable.'", "name": "setting['.$setting->id.']", "values": '.json_encode($list).', "value": "'.$input_value.'", "required": "'.intval($required).'", "help": "'.$tooltip.'" ]}';
181199
}
182200

183201
// Lista multipla
@@ -210,38 +228,38 @@ public static function input($setting, $required = false, $value_user = null)
210228
}
211229

212230
$result = '
213-
{[ "type": "select", "multiple": 1, "label": '.json_encode($setting->getTranslation('title')).', "readonly": "'.!$setting->editable.'", "name": "setting['.$setting->id.'][]", "values": '.json_encode($list).', "value": "'.$input_value.'", "required": "'.intval($required).'", "help": "'.$setting->getTranslation('help').'" ]}';
231+
{[ "type": "select", "multiple": 1, "label": '.json_encode($user_setting_icon.' '.$setting->getTranslation('title')).', "readonly": "'.!$setting->editable.'", "name": "setting['.$setting->id.'][]", "values": '.json_encode($list).', "value": "'.$input_value.'", "required": "'.intval($required).'", "help": "'.$tooltip.'" ]}';
214232
}
215233

216234
// Lista da query
217235
elseif (preg_match('/^query=(.+?)$/', $setting->tipo, $m)) {
218236
$result = '
219-
{[ "type": "select", "label": '.json_encode($setting->getTranslation('title')).', "readonly": "'.!$setting->editable.'", "name": "setting['.$setting->id.']", "values": "'.str_replace('"', '\"', $setting->tipo).'", "value": "'.$input_value.'", "required": "'.intval($required).'", "help": "'.$setting->getTranslation('help').'" ]}';
237+
{[ "type": "select", "label": '.json_encode($user_setting_icon.' '.$setting->getTranslation('title')).', "readonly": "'.!$setting->editable.'", "name": "setting['.$setting->id.']", "values": "'.str_replace('"', '\"', $setting->tipo).'", "value": "'.$input_value.'", "required": "'.intval($required).'", "help": "'.$tooltip.'" ]}';
220238
}
221239

222240
// Boolean (checkbox)
223241
elseif ($setting->tipo == 'boolean') {
224242
$result = '
225-
{[ "type": "checkbox", "label": '.json_encode($setting->getTranslation('title')).', "readonly": "'.!$setting->editable.'", "name": "setting['.$setting->id.']", "placeholder": "'.tr('Attivo').'", "value": "'.$input_value.'", "required": "'.intval($required).'", "help": "'.$setting->getTranslation('help').'" ]}';
243+
{[ "type": "checkbox", "label": '.json_encode($user_setting_icon.' '.$setting->getTranslation('title')).', "readonly": "'.!$setting->editable.'", "name": "setting['.$setting->id.']", "placeholder": "'.tr('Attivo').'", "value": "'.$input_value.'", "required": "'.intval($required).'", "help": "'.$tooltip.'" ]}';
226244
}
227245

228246
// Editor
229247
elseif ($setting->tipo == 'ckeditor') {
230248
$result = input([
231249
'type' => 'ckeditor',
232-
'label' => trim(json_encode($setting->getTranslation('title')), '"'),
250+
'label' => $user_setting_icon.' '.$setting->getTranslation('title'),
233251
'readonly' => !$setting->editable,
234252
'name' => 'setting['.$setting->id.']',
235253
'value' => $input_value,
236254
'required' => intval($required),
237-
'help' => $setting->getTranslation('help'),
255+
'help' => $tooltip,
238256
]);
239257
}
240258

241259
// Campi di default
242260
elseif (in_array($setting->tipo, ['textarea', 'timestamp', 'date', 'time'])) {
243261
$result = '
244-
{[ "type": "'.$setting->tipo.'", "label": '.json_encode($setting->getTranslation('title')).', "readonly": "'.!$setting->editable.'", "name": "setting['.$setting->id.']", "value": '.json_encode($input_value).', "required": "'.intval($required).'", "help": "'.$setting->getTranslation('help').'" ]}';
262+
{[ "type": "'.$setting->tipo.'", "label": '.json_encode($user_setting_icon.' '.$setting->getTranslation('title')).', "readonly": "'.!$setting->editable.'", "name": "setting['.$setting->id.']", "value": '.json_encode($input_value).', "required": "'.intval($required).'", "help": "'.$tooltip.'" ]}';
245263
}
246264

247265
// Campo di testo
@@ -252,7 +270,7 @@ public static function input($setting, $required = false, $value_user = null)
252270
$tipo = $numerico ? 'number' : 'text';
253271

254272
$result = '
255-
{[ "type": "'.$tipo.'", "label": '.json_encode($setting->getTranslation('title')).', "readonly": "'.!$setting->editable.'", "name": "setting['.$setting->id.']", "value": "'.$input_value.'"'.($numerico && $setting->tipo == 'integer' ? ', "decimals": 0' : '').', "required": "'.intval($required).'", "help": "'.$setting->getTranslation('help').'" ]}';
273+
{[ "type": "'.$tipo.'", "label": '.json_encode($user_setting_icon.' '.$setting->getTranslation('title')).', "readonly": "'.!$setting->editable.'", "name": "setting['.$setting->id.']", "value": "'.$input_value.'"'.($numerico && $setting->tipo == 'integer' ? ', "decimals": 0' : '').', "required": "'.intval($required).'", "help": "'.$tooltip.'" ]}';
256274
}
257275

258276
return $result;

0 commit comments

Comments
 (0)