diff --git a/lib/functions.php b/lib/functions.php index ec482f461..17f1468e1 100755 --- a/lib/functions.php +++ b/lib/functions.php @@ -341,10 +341,7 @@ function redirectOperation($id_module, $id_record) */ function prepareToField($string) { - $string = str_replace('"', '"', $string); - $string = str_replace('"', '"', $string); - - return $string; + return str_replace('"', '"', $string); } /** diff --git a/modules/articoli/bulk.php b/modules/articoli/bulk.php index b020c6921..c85c57409 100755 --- a/modules/articoli/bulk.php +++ b/modules/articoli/bulk.php @@ -487,7 +487,7 @@ $operations['crea-preventivo'] = [ 'msg' => tr('Ogni articolo selezionato, verrà aggiunto al preventivo').'

{[ "type": "text", "label": "'.tr('Nome preventivo').'", "name": "nome", "required": 1 ]} {[ "type": "select", "label": "'.tr('Cliente').'", "name": "id_cliente", "ajax-source": "clienti", "required": 1 ]} - {[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "ajax-source": "segmenti", "select-options": '.json_encode(["id_module" => $id_preventivi, 'is_sezionale' => 1]).', "value": "'.$id_segment.'" ]} + {[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "ajax-source": "segmenti", "select-options": '.json_encode(["id_module" => $id_preventivi, 'is_sezionale' => 1]).', "value": "'.$id_segment.'", "select-options-escape": true ]} {[ "type": "select", "label": "'.tr('Tipo di attività').'", "name": "id_tipo", "values": "query=SELECT idtipointervento AS id, descrizione FROM in_tipiintervento", "required": 1 ]} {[ "type": "date", "label": "'.tr('Data').'", "name": "data", "required": 1, "value": "-now-" ]}', 'button' => tr('Procedi'), @@ -501,7 +501,7 @@ $operations['change-categoria'] = [ 'title' => tr('Cambiare la categoria e la sottocategoria?'), 'msg' => tr('Per ciascun articolo selezionato, verrà modificata la categoria e la sottocategoria').'

{[ "type": "select", "label": "'.tr('Categoria').'", "name": "id_categoria", "required": 1, "ajax-source": "categorie", "extra": "onchange=\"$(\'#subcategoria\').enable();updateSelectOption(\'id_categoria\', $(\'#id_categoria\').val());session_set(\'superselect,id_categoria\', $(\'#id_categoria\').val(), 0);$(\'#subcategoria\').val(null).trigger(\'change\');\"" ]}
- {[ "type": "select", "label": "'.tr('Sottocategoria').'", "name": "subcategoria", "ajax-source": "sottocategorie", "select-options": "{\'id_categoria\': 0}", "disabled": "1" ]}', + {[ "type": "select", "label": "'.tr('Sottocategoria').'", "name": "subcategoria", "ajax-source": "sottocategorie", "select-options": "{\'id_categoria\': 0}", "disabled": "1", "select-options-escape": true ]}', 'button' => tr('Procedi'), 'class' => 'btn btn-lg btn-warning', ], diff --git a/modules/contratti/bulk.php b/modules/contratti/bulk.php index 4ae2d3804..373f2eb1d 100755 --- a/modules/contratti/bulk.php +++ b/modules/contratti/bulk.php @@ -227,7 +227,7 @@ $operations['crea_fattura'] = [ 'data' => [ 'title' => tr('Fatturare i _TYPE_ selezionati?', ['_TYPE_' => strtolower($module['name'])]), 'msg' => '{[ "type": "checkbox", "label": "'.tr('Aggiungere alle fatture di vendita non ancora emesse?').'", "placeholder": "'.tr('Aggiungere alle fatture esistenti non ancora emesse?').'", "name": "accodare" ]}
- {[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "ajax-source": "segmenti", "select-options": '.json_encode(["id_module" => $id_fatture, 'is_sezionale' => 1]).', "value": "'.$id_segment.'" ]}
+ {[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "ajax-source": "segmenti", "select-options": '.json_encode(["id_module" => $id_fatture, 'is_sezionale' => 1]).', "value": "'.$id_segment.'", "select-options-escape": true ]}
{[ "type": "select", "label": "'.tr('Tipo documento').'", "name": "idtipodocumento", "required": 1, "values": "query=SELECT id, CONCAT(codice_tipo_documento_fe, \' - \', descrizione) AS descrizione FROM co_tipidocumento WHERE enabled = 1 AND dir =\'entrata\' ORDER BY codice_tipo_documento_fe", "value": "'.$idtipodocumento.'" ]}', 'button' => tr('Procedi'), 'class' => 'btn btn-lg btn-warning', diff --git a/modules/ddt/bulk.php b/modules/ddt/bulk.php index e0f2cda30..9bcf2d004 100755 --- a/modules/ddt/bulk.php +++ b/modules/ddt/bulk.php @@ -182,7 +182,7 @@ $operations['crea_fattura'] = [ 'data' => [ 'title' => tr('Fatturare i _TYPE_ selezionati?', ['_TYPE_' => strtolower($module['name'])]), 'msg' => '{[ "type": "checkbox", "label": "'.tr('Aggiungere alle _TYPE_ non ancora emesse?', ['_TYPE_' => strtolower($module_fatture)]).'", "placeholder": "'.tr('Aggiungere alle _TYPE_ nello stato bozza?', ['_TYPE_' => strtolower($module_fatture)]).'", "name": "accodare" ]}
- {[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "ajax-source": "segmenti", "select-options": '.json_encode(["id_module" => $id_fatture, 'is_sezionale' => 1]).', "value": "'.$id_segment.'" ]}
+ {[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "ajax-source": "segmenti", "select-options": '.json_encode(["id_module" => $id_fatture, 'is_sezionale' => 1]).', "value": "'.$id_segment.'", "select-options-escape": true ]}
{[ "type": "select", "label": "'.tr('Tipo documento').'", "name": "idtipodocumento", "required": 1, "values": "query=SELECT id, CONCAT(codice_tipo_documento_fe, \' - \', descrizione) AS descrizione FROM co_tipidocumento WHERE enabled = 1 AND dir ='.prepare($dir).' ORDER BY codice_tipo_documento_fe", "value": "'.$idtipodocumento.'" ]}', 'button' => tr('Procedi'), 'class' => 'btn btn-lg btn-warning', diff --git a/modules/fatture/bulk.php b/modules/fatture/bulk.php index f0eb2590f..1866ac780 100755 --- a/modules/fatture/bulk.php +++ b/modules/fatture/bulk.php @@ -590,7 +590,7 @@ $operations['export-csv'] = [ $operations['copy-bulk'] = [ 'text' => ' '.tr('Duplica selezionati').'', 'data' => [ - 'msg' => tr('Vuoi davvero duplicare le righe selezionate?').'

{[ "type": "select", "label": "'.tr('Fattura in avanti di').'", "name": "skip_time", "required": 1, "values": "list=\"Giorno\":\"'.tr('Un giorno').'\", \"Settimana\":\"'.tr('Una settimana').'\", \"Mese\":\"'.tr('Un mese').'\", \"Anno\":\"'.tr('Un anno').'\" ", "value": "Giorno" ]}
{[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "ajax-source": "segmenti", "select-options": '.json_encode(["id_module" => $id_module, 'is_sezionale' => 1]).', "value": "'.$_SESSION['module_'.$id_module]['id_segment'].'" ]}
{[ "type": "checkbox", "label": "'.tr('Aggiungere i riferimenti ai documenti esterni?').'", "placeholder": "'.tr('Aggiungere i riferimenti ai documenti esterni?').'", "name": "riferimenti" ]}', + 'msg' => tr('Vuoi davvero duplicare le righe selezionate?').'

{[ "type": "select", "label": "'.tr('Fattura in avanti di').'", "name": "skip_time", "required": 1, "values": "list=\"Giorno\":\"'.tr('Un giorno').'\", \"Settimana\":\"'.tr('Una settimana').'\", \"Mese\":\"'.tr('Un mese').'\", \"Anno\":\"'.tr('Un anno').'\" ", "value": "Giorno" ]}
{[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "ajax-source": "segmenti", "select-options": '.json_encode(["id_module" => $id_module, 'is_sezionale' => 1]).', "value": "'.$_SESSION['module_'.$id_module]['id_segment'].'", "select-options-escape": true ]}
{[ "type": "checkbox", "label": "'.tr('Aggiungere i riferimenti ai documenti esterni?').'", "placeholder": "'.tr('Aggiungere i riferimenti ai documenti esterni?').'", "name": "riferimenti" ]}', 'button' => tr('Procedi'), 'class' => 'btn btn-lg btn-warning', ], diff --git a/modules/interventi/bulk.php b/modules/interventi/bulk.php index ecd6762bb..fff092522 100755 --- a/modules/interventi/bulk.php +++ b/modules/interventi/bulk.php @@ -368,7 +368,7 @@ if (App::debug()) { 'data' => [ 'title' => tr('Fatturare gli _TYPE_ selezionati?', ['_TYPE_' => strtolower($module['name'])]).' ', 'msg' => '{[ "type": "checkbox", "label": "'.tr('Aggiungere alle fatture di vendita non ancora emesse?').'", "placeholder": "'.tr('Aggiungere alle fatture di vendita nello stato bozza?').'", "name": "accodare" ]}
- {[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "ajax-source": "segmenti", "select-options": '.json_encode(["id_module" => $id_fatture, 'is_sezionale' => 1]).', "value": "'.$id_segment.'" ]}
+ {[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "ajax-source": "segmenti", "select-options": '.json_encode(["id_module" => $id_fatture, 'is_sezionale' => 1]).', "value": "'.$id_segment.'", "select-options-escape": true ]}
{[ "type": "select", "label": "'.tr('Tipo documento').'", "name": "idtipodocumento", "required": 1, "values": "query=SELECT id, CONCAT(codice_tipo_documento_fe, \' - \', descrizione) AS descrizione FROM co_tipidocumento WHERE enabled = 1 AND dir =\'entrata\' ORDER BY codice_tipo_documento_fe", "value": "'.$idtipodocumento.'" ]}', 'button' => tr('Procedi'), 'class' => 'btn btn-lg btn-warning', diff --git a/modules/ordini/bulk.php b/modules/ordini/bulk.php index c280ab9fe..dc470a115 100644 --- a/modules/ordini/bulk.php +++ b/modules/ordini/bulk.php @@ -121,7 +121,7 @@ switch (post('op')) { } else { flash()->warning(tr('Nessun ordine fatturato!')); } - break; + break; case 'cambia_stato': $id_stato = post('id_stato'); @@ -144,7 +144,7 @@ switch (post('op')) { flash()->warning(tr('Nessun ordine modificato!')); } - break; + break; case 'unisci_rdo': $id_stato = post('id_stato'); @@ -193,7 +193,7 @@ switch (post('op')) { flash()->warning(tr('Nessun ordine creato!')); } - break; + break; } if ($module['name'] == 'Ordini cliente') { $operations['crea_fattura'] = [ @@ -201,7 +201,7 @@ if ($module['name'] == 'Ordini cliente') { 'data' => [ 'title' => tr('Fatturare i _TYPE_ selezionati?', ['_TYPE_' => strtolower($module['name'])]), 'msg' => '{[ "type": "checkbox", "label": "'.tr('Aggiungere alle _TYPE_ non ancora emesse?', ['_TYPE_' => strtolower($module_fatture)]).'", "placeholder": "'.tr('Aggiungere alle _TYPE_ nello stato bozza?', ['_TYPE_' => strtolower($module_fatture)]).'", "name": "accodare" ]} - {[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "ajax-source": "segmenti", "select-options": '.json_encode(["id_module" => $id_fatture, 'is_sezionale' => 1]).', "value": "'.$id_segment.'" ]} + {[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "ajax-source": "segmenti", "select-options": '.json_encode(["id_module" => $id_fatture, 'is_sezionale' => 1]).', "value": "'.$id_segment.'", "select-options-escape": true ]} {[ "type": "select", "label": "'.tr('Tipo documento').'", "name": "idtipodocumento", "required": 1, "values": "query=SELECT id, CONCAT(codice_tipo_documento_fe, \' - \', descrizione) AS descrizione FROM co_tipidocumento WHERE enabled = 1 AND dir =\'entrata\' ORDER BY codice_tipo_documento_fe", "value": "'.$idtipodocumento.'" ]}', 'button' => tr('Procedi'), 'class' => 'btn btn-lg btn-warning', @@ -215,7 +215,7 @@ if ($module['name'] == 'Ordini cliente') { 'data' => [ 'title' => tr('Unire gli ordini selezionati?'), 'msg' => tr('Gli ordini saranno processati solo se in uno dei seguenti stati: Bozza, In attesa di conferma, Accettato.
Tutti gli ordini processati verranno eliminati e verrà creato un nuovo ordine unificato per fornitore.').' - {[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "ajax-source": "segmenti", "select-options": '.json_encode(["id_module" => $id_module, 'is_sezionale' => 1]).', "value": "'.$id_segment_ordini.'" ]} + {[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "ajax-source": "segmenti", "select-options": '.json_encode(["id_module" => $id_module, 'is_sezionale' => 1]).', "value": "'.$id_segment_ordini.'", "select-options-escape": true ]} {[ "type": "select", "label": "'.tr('Stato').'", "name": "id_stato", "required": 1, "values": "query=SELECT id, descrizione FROM or_statiordine" ]} {[ "type": "date", "label": "'.tr('Data').'", "name": "data", "required": 1]}', 'button' => tr('Procedi'), diff --git a/src/HTMLBuilder/HTMLBuilder.php b/src/HTMLBuilder/HTMLBuilder.php index 8dfe92a60..b21566e01 100755 --- a/src/HTMLBuilder/HTMLBuilder.php +++ b/src/HTMLBuilder/HTMLBuilder.php @@ -487,6 +487,9 @@ class HTMLBuilder // Fix per la presenza di apici doppi if (!empty($value)){ $value = prepareToField(is_array($value) ? implode(' ', $value) : $value); + if ($key == 'data-select-options' && $values['select-options-escape']) { + $value = htmlentities($value, ENT_COMPAT); + } } if (string_contains($result, '|'.$key.'|')) { $result = str_replace('|'.$key.'|', $value, $result);