Skip to content

Commit 60d7dbe

Browse files
committed
feat: controllo su widgets personalizzati in Aggiornamenti
1 parent 7cda1b9 commit 60d7dbe

8 files changed

Lines changed: 1117 additions & 625 deletions

File tree

include/init/requirements.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,7 @@
345345
'checksum.json' => tr('Necessario per il controllo integrità dei files del gestionale'),
346346
'settings.json' => tr('Necessario per il controllo delle impostazioni del gestionale'),
347347
'views.json' => tr('Necessario per il controllo delle viste del database'),
348+
'widgets.json' => tr('Necessario per il controllo dei widgets del database'),
348349
'modules.json' => tr('Necessario per il controllo dei moduli del database'),
349350
];
350351

modules/aggiornamenti/database.php

Lines changed: 382 additions & 623 deletions
Large diffs are not rendered by default.

modules/aggiornamenti/edit.php

Lines changed: 156 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,11 @@ function settings_diff($expected, $current)
5252
return IntegrityChecker::settingsDiff($expected, $current);
5353
}
5454

55+
function widgets_diff($expected, $current)
56+
{
57+
return IntegrityChecker::widgetsDiff($expected, $current);
58+
}
59+
5560
// Inizializzazione del modulo corrente
5661
$module = Module::find($id_module);
5762

@@ -230,6 +235,7 @@ function highlightDifferences($current, $expected)
230235
// Verifica se mancano i file di riferimento per viste e moduli
231236
$views_file_missing = !file_exists(base_dir().'/views.json');
232237
$modules_file_missing = !file_exists(base_dir().'/modules.json');
238+
$widgets_file_missing = !file_exists(base_dir().'/widgets.json');
233239

234240
// Verifica se manca il file di riferimento per il database
235241
$file_to_check_database = 'mysql.json';
@@ -832,7 +838,30 @@ function getModuleNameFromReference($reference_file, $folder_name, $modules_json
832838
$results_settings = settings_diff($data_settings, $settings);
833839
$results_settings_added = settings_diff($settings, $data_settings);
834840

835-
if (!empty($results) || !empty($results_added) || !empty($results_settings) || !empty($results_settings_added)) {
841+
$contents_widgets = file_get_contents(base_dir().'/widgets.json');
842+
$data_widgets = json_decode($contents_widgets, true);
843+
844+
// Carica e accoda i widgets dai file widgets.json presenti nelle sottocartelle di modules/
845+
$modules_dir = base_dir().'/modules/';
846+
$widgets_json_files = glob($modules_dir.'*/widgets.json');
847+
848+
if (!empty($widgets_json_files)) {
849+
foreach ($widgets_json_files as $widgets_json_file) {
850+
$widgets_contents = file_get_contents($widgets_json_file);
851+
$widgets_data = json_decode($widgets_contents, true);
852+
853+
if (!empty($widgets_data) && is_array($widgets_data)) {
854+
// Accoda i widgets del modulo a quelli principali
855+
$data_widgets = array_merge($data_widgets, $widgets_data);
856+
}
857+
}
858+
}
859+
860+
$widgets = Update::getWidgets();
861+
$results_widgets = widgets_diff($data_widgets, $widgets);
862+
$results_widgets_added = widgets_diff($widgets, $data_widgets);
863+
864+
if (!empty($results) || !empty($results_added) || !empty($results_settings) || !empty($results_settings_added) || !empty($results_widgets) || !empty($results_widgets_added)) {
836865
$database_has_errors = true;
837866

838867
// Conta i tipi di errori nei risultati (campi mancanti/modificati)
@@ -899,6 +928,30 @@ function getModuleNameFromReference($reference_file, $folder_name, $modules_json
899928
}
900929
}
901930

931+
// Conta i tipi di errori nei widgets
932+
foreach ($results_widgets as $module_key => $module_widgets) {
933+
if (is_array($module_widgets)) {
934+
foreach ($module_widgets as $widget_name => $widget) {
935+
if (!$widget['current']) {
936+
++$database_danger_count; // Widget mancante
937+
} else {
938+
++$database_warning_count; // Widget modificato
939+
}
940+
}
941+
}
942+
}
943+
944+
// Conta i widgets non previsti
945+
foreach ($results_widgets_added as $module_key => $module_widgets) {
946+
if (is_array($module_widgets)) {
947+
foreach ($module_widgets as $widget_name => $widget) {
948+
if ($widget['current'] == null) {
949+
++$database_info_count; // Widget non previsto
950+
}
951+
}
952+
}
953+
}
954+
902955
$database_error_count = $database_danger_count + $database_warning_count + $database_info_count + $database_premium_count;
903956
}
904957
}
@@ -940,12 +993,113 @@ function getModuleNameFromReference($reference_file, $folder_name, $modules_json
940993

941994
include __DIR__.'/database.php';
942995

996+
echo '
997+
</div>
998+
</div>';
999+
1000+
// Card Impostazioni personalizzate
1001+
$settings_danger_count = 0;
1002+
$settings_warning_count = 0;
1003+
$settings_info_count = 0;
1004+
1005+
foreach ($results_settings as $key => $setting) {
1006+
if (!$setting['current']) {
1007+
++$settings_danger_count;
1008+
} else {
1009+
++$settings_warning_count;
1010+
}
1011+
}
1012+
1013+
foreach ($results_settings_added as $key => $setting) {
1014+
if ($setting['current'] == null) {
1015+
++$settings_info_count;
1016+
}
1017+
}
1018+
1019+
$settings_colors = Utils::determineCardColor($settings_danger_count, $settings_warning_count, $settings_info_count > 0 ? 1 : 0);
1020+
$settings_card_color = $settings_colors['color'];
1021+
$settings_icon = $settings_colors['icon'];
1022+
1023+
$settings_badge_html = Utils::generateBadgeHtml($settings_danger_count, $settings_warning_count, $settings_info_count);
1024+
1025+
echo '
1026+
<div class="card card-outline card-'.$settings_card_color.' requirements-card mb-2 collapsable collapsed-card">
1027+
<div class="card-header with-border requirements-card-header requirements-card-header-'.$settings_card_color.'">
1028+
<h3 class="card-title requirements-card-title requirements-card-title-'.$settings_card_color.'">
1029+
<i class="fa '.$settings_icon.' mr-2 requirements-icon"></i>
1030+
'.tr('Impostazioni personalizzate').'
1031+
'.$settings_badge_html.'
1032+
</h3>
1033+
<div class="card-tools pull-right">
1034+
<button type="button" class="btn btn-tool" data-card-widget="collapse">
1035+
<i class="fa fa-plus"></i>
1036+
</button>
1037+
</div>
1038+
</div>
1039+
<div class="card-body">';
1040+
1041+
include __DIR__.'/settings.php';
1042+
1043+
echo '
1044+
</div>
1045+
</div>';
1046+
1047+
// Card Widgets personalizzati
1048+
$widgets_danger_count = 0;
1049+
$widgets_warning_count = 0;
1050+
$widgets_info_count = 0;
1051+
1052+
foreach ($results_widgets as $module_key => $module_widgets) {
1053+
if (is_array($module_widgets)) {
1054+
foreach ($module_widgets as $widget_name => $widget) {
1055+
if (!$widget['current']) {
1056+
++$widgets_danger_count;
1057+
} else {
1058+
++$widgets_warning_count;
1059+
}
1060+
}
1061+
}
1062+
}
1063+
1064+
foreach ($results_widgets_added as $module_key => $module_widgets) {
1065+
if (is_array($module_widgets)) {
1066+
foreach ($module_widgets as $widget_name => $widget) {
1067+
if ($widget['current'] == null) {
1068+
++$widgets_info_count;
1069+
}
1070+
}
1071+
}
1072+
}
1073+
1074+
$widgets_colors = Utils::determineCardColor($widgets_danger_count, $widgets_warning_count, $widgets_info_count > 0 ? 1 : 0);
1075+
$widgets_card_color = $widgets_colors['color'];
1076+
$widgets_icon = $widgets_colors['icon'];
1077+
1078+
$widgets_badge_html = Utils::generateBadgeHtml($widgets_danger_count, $widgets_warning_count, $widgets_info_count);
1079+
1080+
echo '
1081+
<div class="card card-outline card-'.$widgets_card_color.' requirements-card mb-2 collapsable collapsed-card">
1082+
<div class="card-header with-border requirements-card-header requirements-card-header-'.$widgets_card_color.'">
1083+
<h3 class="card-title requirements-card-title requirements-card-title-'.$widgets_card_color.'">
1084+
<i class="fa '.$widgets_icon.' mr-2 requirements-icon"></i>
1085+
'.tr('Widgets personalizzati').'
1086+
'.$widgets_badge_html.'
1087+
</h3>
1088+
<div class="card-tools pull-right">
1089+
<button type="button" class="btn btn-tool" data-card-widget="collapse">
1090+
<i class="fa fa-plus"></i>
1091+
</button>
1092+
</div>
1093+
</div>
1094+
<div class="card-body">';
1095+
1096+
include __DIR__.'/widgets.php';
1097+
9431098
echo '
9441099
</div>
9451100
</div>
9461101
</div>
9471102
</div>
948-
</div>
9491103
9501104
<script>
9511105
$(document).ready(function() {

0 commit comments

Comments
 (0)