|
28 | 28 | <!-- DATI SEGMENTO --> |
29 | 29 | <div class="card card-primary"> |
30 | 30 | <div class="card-header"> |
31 | | - <h3 class="card-title"><?php echo tr('Segmento'); ?></h3> |
| 31 | + <h3 class="card-title"><i class="fa fa-filter"></i> <?php echo tr('Informazioni segmento'); ?></h3> |
32 | 32 | </div> |
33 | 33 |
|
34 | 34 | <div class="card-body"> |
35 | 35 | <div class="row"> |
36 | | - |
37 | | - <div class="col-md-3"> |
38 | | - {[ "type": "text", "label": "<?php echo tr('Nome'); ?>", "name": "name", "required": 1, "value": "$title$" ]} |
| 36 | + <div class="col-md-6"> |
| 37 | + {[ "type": "text", "label": "<?php echo tr('Nome'); ?>", "name": "name", "required": 1, "value": "$title$", "icon-before": "<i class='fa fa-tag'></i>" ]} |
39 | 38 | </div> |
40 | 39 |
|
41 | | - <div class="col-md-3"> |
42 | | - {[ "type": "select", "label": "<?php echo tr('Modulo'); ?>", "name": "module", "required": 1, "values": "query=SELECT `zz_modules`.`id`, `title` AS descrizione FROM `zz_modules` LEFT JOIN `zz_modules_lang` ON(`zz_modules`.`id` = `zz_modules_lang`.`id_record` AND `zz_modules_lang`.`id_lang` = <?php echo Models\Locale::getDefault()->id; ?>) WHERE (`enabled` = 1 AND `options` != 'custom' ) OR `zz_modules`.`id` = <?php echo $record['id_module']; ?> ORDER BY `title` ASC", "value": "<?php echo $record['id_module']; ?>", "extra": "<?php echo ($record['predefined']) ? 'readonly' : ''; ?>" ]} |
| 40 | + <div class="col-md-6"> |
| 41 | + {[ "type": "select", "label": "<?php echo tr('Modulo'); ?>", "name": "module", "required": 1, "values": "query=SELECT `zz_modules`.`id`, `title` AS descrizione FROM `zz_modules` LEFT JOIN `zz_modules_lang` ON(`zz_modules`.`id` = `zz_modules_lang`.`id_record` AND `zz_modules_lang`.`id_lang` = <?php echo Models\Locale::getDefault()->id; ?>) WHERE (`enabled` = 1 AND `options` != 'custom' ) OR `zz_modules`.`id` = <?php echo $record['id_module']; ?> ORDER BY `title` ASC", "value": "<?php echo $record['id_module']; ?>", "extra": "<?php echo ($record['predefined']) ? 'readonly' : ''; ?>", "icon-before": "<i class='fa fa-cube'></i>" ]} |
43 | 42 | </div> |
| 43 | + </div> |
44 | 44 |
|
45 | | - <div class="col-md-2"> |
| 45 | + <div class="row"> |
| 46 | + <div class="col-md-4"> |
46 | 47 | {[ "type": "checkbox", "label": "<?php echo tr('Predefinito'); ?>", "name": "predefined", "value": "$predefined$", "help": "<?php echo tr('Seleziona per rendere il segmento predefinito.'); ?>", "placeholder": "<?php echo tr('Segmento predefinito'); ?>", "extra": "<?php echo $record['predefined'] || ($record['is_sezionale'] == 0) ? 'readonly' : ''; ?>" ]} |
47 | 48 | </div> |
48 | 49 |
|
49 | | - <div class="col-md-2"> |
| 50 | + <div class="col-md-4"> |
50 | 51 | {[ "type": "checkbox", "label": "<?php echo tr('Tipologia'); ?>", "help": "<?php echo tr('Se sezionale verrà utilizzato il contatore'); ?>", "name": "is_sezionale", "value": "$is_sezionale$", "extra": "readonly", "values": "Sezionale,Segmento" ]} |
51 | 52 | </div> |
52 | 53 |
|
53 | | - <div class="col-md-2"> |
54 | | - {[ "type": "text", "label": "<?php echo tr('Maschera'); ?>", "name": "pattern", "value": "$pattern$", "maxlength": 25, "placeholder":"####/YYYY", "extra": "<?php echo ($tot > 0) ? 'readonly' : ''; ?>", "extra": "<?php echo (!$record['is_sezionale']) ? 'readonly' : ''; ?>" ]} |
| 54 | + <div class="col-md-4"> |
| 55 | + {[ "type": "text", "label": "<?php echo tr('Maschera'); ?>", "name": "pattern", "value": "$pattern$", "maxlength": 25, "placeholder":"####/YYYY", "extra": "<?php echo ($tot > 0) ? 'readonly' : ''; ?>", "extra": "<?php echo (!$record['is_sezionale']) ? 'readonly' : ''; ?>", "icon-before": "<i class='fa fa-hashtag'></i>" ]} |
55 | 56 | </div> |
56 | 57 | </div> |
57 | 58 |
|
58 | | - <div class="row"> |
| 59 | + <hr> |
59 | 60 |
|
| 61 | + <div class="row"> |
60 | 62 | <div class="col-md-8"> |
61 | | - {[ "type": "textarea", "label": "<?php echo tr('Filtro'); ?>", "name": "clause", "required": 1, "value": "$clause$", "extra": "<?php echo ($record['is_sezionale']) ? 'readonly' : ''; ?>" ]} |
| 63 | + {[ "type": "textarea", "label": "<?php echo tr('Filtro'); ?>", "name": "clause", "required": 1, "value": "$clause$", "extra": "<?php echo ($record['is_sezionale']) ? 'readonly' : ''; ?>", "icon-before": "<i class='fa fa-code'></i>" ]} |
62 | 64 | </div> |
63 | 65 |
|
64 | 66 | <div class="col-md-4"> |
65 | | - {[ "type": "select", "label": "<?php echo tr('Posizione'); ?>", "name": "position", "required": 1, "values":"list=\"WHR\": \"WHERE\", \"HVN\": \"HAVING\"", "value": "$position$", "extra": "<?php echo ($record['is_sezionale']) ? 'readonly' : ''; ?>" ]} |
| 67 | + {[ "type": "select", "label": "<?php echo tr('Posizione'); ?>", "name": "position", "required": 1, "values":"list=\"WHR\": \"WHERE\", \"HVN\": \"HAVING\"", "value": "$position$", "extra": "<?php echo ($record['is_sezionale']) ? 'readonly' : ''; ?>", "icon-before": "<i class='fa fa-map-marker'></i>" ]} |
66 | 68 | </div> |
67 | | - |
68 | 69 | </div> |
69 | 70 | <?php |
70 | 71 |
|
|
75 | 76 |
|
76 | 77 | $current_module = Module::find($record['id_module']); |
77 | 78 | $total = Util\Query::readQuery($current_module); |
78 | | -$module_query = Modules::replaceAdditionals($record['id_module'], $total['query']); |
79 | 79 |
|
80 | | -echo ' |
81 | | - <p><strong>'.tr('Query risultante').':</strong></p> |
82 | | - <p>'.htmlentities((string) $module_query).'</p>'; |
| 80 | +// Check if $total is an array and has the 'query' key |
| 81 | +if (is_array($total) && isset($total['query'])) { |
| 82 | + $module_query = Modules::replaceAdditionals($record['id_module'], $total['query']); |
| 83 | + |
| 84 | + echo ' |
| 85 | + <div class="card card-info mt-4"> |
| 86 | + <div class="card-header"> |
| 87 | + <h3 class="card-title"><i class="fa fa-database"></i> '.tr('Query risultante').'</h3> |
| 88 | + <div class="card-tools"> |
| 89 | + <button type="button" class="btn btn-sm btn-light" id="format-query-btn" title="'.tr('Formatta query').'"> |
| 90 | + <i class="fa fa-indent"></i> '.tr('Formatta').' |
| 91 | + </button> |
| 92 | + <button type="button" class="btn btn-sm btn-light ml-2" id="copy-query-btn" title="'.tr('Copia query').'"> |
| 93 | + <i class="fa fa-copy"></i> '.tr('Copia').' |
| 94 | + </button> |
| 95 | + </div> |
| 96 | + </div> |
| 97 | + <div class="card-body p-0"> |
| 98 | + <div class="sql-formatted" style="max-height: 200px; overflow: auto; padding: 10px; white-space: pre;">'.htmlentities((string) $module_query).'</div> |
| 99 | + <textarea id="query-to-copy" style="position: absolute; left: -9999px;">'.htmlentities((string) $module_query).'</textarea> |
| 100 | + </div> |
| 101 | + </div> |
| 102 | +
|
| 103 | + <script> |
| 104 | + $(document).ready(function() { |
| 105 | + // Event listener per il pulsante di copia |
| 106 | + $("#copy-query-btn").click(function() { |
| 107 | + var copyText = document.getElementById("query-to-copy"); |
| 108 | + copyText.select(); |
| 109 | + document.execCommand("copy"); |
| 110 | +
|
| 111 | + // Mostra un messaggio di conferma |
| 112 | + swal("'.tr('Copiato').'", "'.tr('Query copiata negli appunti').'", "success"); |
| 113 | + }); |
| 114 | +
|
| 115 | + // Event listener per il pulsante di formattazione |
| 116 | + $("#format-query-btn").click(function() { |
| 117 | + var sqlFormattedDiv = $(".sql-formatted"); |
| 118 | +
|
| 119 | + // Alterna tra la visualizzazione con e senza barre di scorrimento |
| 120 | + if (sqlFormattedDiv.hasClass("formatted")) { |
| 121 | + // Ripristina la visualizzazione originale con barre di scorrimento |
| 122 | + sqlFormattedDiv.removeClass("formatted"); |
| 123 | +
|
| 124 | + // Ripristina lo stile originale |
| 125 | + sqlFormattedDiv.css({ |
| 126 | + "max-height": "200px", |
| 127 | + "overflow": "auto", |
| 128 | + "white-space": "pre" |
| 129 | + }); |
| 130 | +
|
| 131 | + // Cambia l\'icona e il testo del pulsante |
| 132 | + $("#format-query-btn i").removeClass("fa-compress").addClass("fa-indent"); |
| 133 | + $("#format-query-btn").attr("title", "'.tr('Formatta query').'"); |
| 134 | + $("#format-query-btn").html(\'<i class="fa fa-indent"></i> '.tr('Formatta').'\'); |
| 135 | + } else { |
| 136 | + // Rimuovi le barre di scorrimento e adatta l\'altezza al contenuto |
| 137 | + sqlFormattedDiv.addClass("formatted"); |
| 138 | +
|
| 139 | + // Modifica lo stile del contenitore |
| 140 | + sqlFormattedDiv.css({ |
| 141 | + "max-height": "none", |
| 142 | + "overflow": "visible", |
| 143 | + "white-space": "pre-wrap" |
| 144 | + }); |
| 145 | +
|
| 146 | + // Cambia l\'icona e il testo del pulsante |
| 147 | + $("#format-query-btn i").removeClass("fa-indent").addClass("fa-compress"); |
| 148 | + $("#format-query-btn").attr("title", "'.tr('Comprimi query').'"); |
| 149 | + $("#format-query-btn").html(\'<i class="fa fa-compress"></i> '.tr('Comprimi').'\'); |
| 150 | + } |
| 151 | + }); |
| 152 | + }); |
| 153 | + </script>'; |
| 154 | +} else { |
| 155 | + echo ' |
| 156 | + <div class="card card-warning mt-4"> |
| 157 | + <div class="card-header"> |
| 158 | + <h3 class="card-title"><i class="fa fa-exclamation-triangle"></i> '.tr('Query risultante').'</h3> |
| 159 | + </div> |
| 160 | + <div class="card-body"> |
| 161 | + <div class="alert alert-warning"> |
| 162 | + <i class="fa fa-exclamation-circle"></i> '.tr('Impossibile generare la query').' |
| 163 | + </div> |
| 164 | + </div> |
| 165 | + </div>'; |
| 166 | +} |
83 | 167 |
|
84 | 168 | $_SESSION['module_'.$id_module]['id_segment'] = $previous; |
85 | 169 | $_SESSION['module_'.$record['id_module']]['id_segment'] = $previous_module; |
86 | 170 |
|
87 | 171 | ?> |
88 | 172 | <div class="row"> |
89 | 173 | <div class="col-md-12"> |
90 | | - {[ "type": "textarea", "label": "<?php echo tr('Note'); ?>", "name": "note", "value": "$note$" ]} |
| 174 | + {[ "type": "textarea", "label": "<?php echo tr('Note'); ?>", "name": "note", "value": "$note$", "icon-before": "<i class='fa fa-sticky-note'></i>" ]} |
91 | 175 | </div> |
92 | 176 | </div> |
93 | 177 | <?php |
|
101 | 185 | <?php |
102 | 186 | } |
103 | 187 | echo ' |
104 | | - <div class="row"> |
105 | | - <div class="col-md-12"> |
106 | | - {[ "type": "select", "label": "'.tr('Gruppi con accesso').'", "name": "gruppi[]", "multiple": "1", "values": "query=SELECT `zz_groups`.`id`, `title` AS descrizione FROM `zz_groups` LEFT JOIN `zz_groups_lang` ON (`zz_groups`.`id` = `zz_groups_lang`.`id_record` AND `zz_groups_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') ORDER BY `zz_groups`.`id` ASC", "value": "'; |
| 188 | + <div class="card card-success mt-4"> |
| 189 | + <div class="card-header"> |
| 190 | + <h3 class="card-title"><i class="fa fa-users"></i> '.tr('Permessi').'</h3> |
| 191 | + </div> |
| 192 | + <div class="card-body"> |
| 193 | + <div class="row"> |
| 194 | + <div class="col-md-12"> |
| 195 | + {[ "type": "select", "label": "'.tr('Gruppi con accesso').'", "name": "gruppi[]", "multiple": "1", "icon-before": "<i class=\'fa fa-users\'></i>", "values": "query=SELECT DISTINCT `zz_groups`.`id`, `title` AS descrizione FROM `zz_groups` LEFT JOIN `zz_groups_lang` ON (`zz_groups`.`id` = `zz_groups_lang`.`id_record` AND `zz_groups_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `zz_groups`.`id` IN (SELECT `idgruppo` FROM `zz_permissions` WHERE `idmodule` = '.prepare($record['id_module']).' AND `permessi` IN (\'r\', \'rw\')) OR `zz_groups`.`id` IN (SELECT `id_gruppo` FROM `zz_group_segment` WHERE `id_segment` = '.prepare($id_record).') ORDER BY `zz_groups`.`id` ASC", "value": "'; |
107 | 196 | $results = $dbo->fetchArray('SELECT GROUP_CONCAT(DISTINCT `id_gruppo` SEPARATOR \',\') AS gruppi FROM `zz_group_segment` WHERE `id_segment`='.prepare($id_record)); |
108 | 197 |
|
109 | 198 | echo $results[0]['gruppi'].'"'; |
110 | 199 |
|
111 | 200 | echo ', "help": "'.tr('Gruppi di utenti in grado di visualizzare questo segmento').'" ]} |
| 201 | + </div> |
| 202 | + </div> |
112 | 203 | </div> |
113 | 204 | </div>'; |
114 | 205 | ?> |
|
0 commit comments