diff --git a/api/index.php b/api/index.php index fffa92e1f..ce90d7abf 100644 --- a/api/index.php +++ b/api/index.php @@ -21,7 +21,7 @@ session_write_close(); // Permesso di accesso all'API da ogni dispositivo header('Access-Control-Allow-Origin: *'); -// Attenzione: al momento l'API permette la lettura di tutte le tabelle rpesenti nel database (non limitate a quelle del progetto). +// Attenzione: al momento l'API permette la lettura di tutte le tabelle presenti nel database (non limitate a quelle del progetto) try { // Controlli sulla chiave di accesso @@ -30,21 +30,33 @@ try { // Lettura delle informazioni $request = API::getRequest(); + // Gestione della richiesta $method = $_SERVER['REQUEST_METHOD']; switch ($method) { + // Richiesta PUT (modifica elementi) case 'PUT': $result = $api->update($request); break; + + // Richiesta POST (creazione elementi) case 'POST': $result = $api->create($request); break; + + // Richiesta GET (ottenimento elementi) case 'GET': + // Risorsa specificata if (!empty($request)) { $result = $api->retrieve($request); - } else { + } + + // Risorsa non specificata (lista delle risorse disponibili) + else { $result = API::response(API::getResources()['retrieve']); } break; + + // Richiesta DELETE (eliminazione elementi) case 'DELETE': $result = $api->delete($request); break; @@ -55,4 +67,5 @@ try { $result = API::error('serverError'); } +// Stampa dei risultati echo $result; diff --git a/controller.php b/controller.php index 0d3adde8a..ca26a5299 100644 --- a/controller.php +++ b/controller.php @@ -2,6 +2,12 @@ include_once __DIR__.'/core.php'; +if (!empty($id_record) && !empty($id_module)) { + redirect(ROOTDIR.'/editor.php?id_module='.$id_module.'&id_record='.$id_record); +} elseif (empty($id_module)) { + redirect(ROOTDIR.'/index.php'); +} + if (file_exists($docroot.'/include/custom/top.php')) { include $docroot.'/include/custom/top.php'; } else { @@ -22,10 +28,10 @@ include $docroot.'/actions.php'; /* * Widget top */ - + //se non sono mobile nascondo i widget controller_top -if (!isMobile()){ - echo Widgets::addModuleWidgets($id_module, 'controller_top'); +if (!isMobile()) { + echo Widgets::addModuleWidgets($id_module, 'controller_top'); } // Lettura eventuali plugins modulo da inserire come tab @@ -87,20 +93,19 @@ echo ' redirectOperation($id_module, $id_record); -/** +/* * Widget laterali. */ // Controllo se ho widget per il lato destro dello schermo, altrimenti non creo la colonna di destra //se sono mobile pesco anche i widget di controller_top -if (isMobile()){ - $extra_where = " OR location = 'controller_top'"; -}else{ - $extra_where = ""; +if (isMobile()) { + $extra_where = " OR location = 'controller_top'"; +} else { + $extra_where = ''; } - -$result_widgets = $dbo->fetchArray('SELECT `id`, `location`, `class` FROM `zz_widgets` WHERE `id_module`='.prepare($id_module)." AND (`location`='controller_right' ".$extra_where." ) AND `enabled`=1 ORDER BY `order` ASC"); +$result_widgets = $dbo->fetchArray('SELECT `id`, `location`, `class` FROM `zz_widgets` WHERE `id_module`='.prepare($id_module)." AND (`location`='controller_right' ".$extra_where.' ) AND `enabled`=1 ORDER BY `order` ASC'); if (count($result_widgets) > 0) { echo '
'; diff --git a/modules/articoli/edit.php b/modules/articoli/edit.php index 4e937477c..15e9e5008 100644 --- a/modules/articoli/edit.php +++ b/modules/articoli/edit.php @@ -29,11 +29,11 @@ $_SESSION['superselect']['id_categoria'] = $records[0]['id_categoria'];
- + {[ "type": "text", "label": "", "name": "codice", "required": 1, "value": "$codice$" ]}
{[ "type": "checkbox", "label": "", "name": "attivo", "value": "$attivo$", "help": "", "placeholder": "" ]} - +
@@ -50,7 +50,7 @@ $_SESSION['superselect']['id_categoria'] = $records[0]['id_categoria'];
- {[ "type": "number", "label": "", "name": "qta", "required": 1, "value": "$qta$", "readonly": 1, "decimals": "qta|undefined" ]} + {[ "type": "number", "label": "", "name": "qta", "required": 1, "value": "$qta$", "readonly": 1, "decimals": "qta", "min-value": "undefined" ]}
{[ "type": "checkbox", "label": "", "name": "qta_manuale", "value": 0, "help": "", "placeholder": "" ]} @@ -68,34 +68,34 @@ $_SESSION['superselect']['id_categoria'] = $records[0]['id_categoria'];
{[ "type": "select", "label": "", "name": "um", "value": "$um$", "ajax-source": "misure", "icon-after": "add|" ]}
- +
- {[ "type": "number", "label": "", "name": "threshold_qta", "value": "$threshold_qta$", "decimals": "qta|undefined" ]} + {[ "type": "number", "label": "", "name": "threshold_qta", "value": "$threshold_qta$", "decimals": "qta", "min-value": "undefined" ]}
- + fetchArray("SELECT id FROM zz_plugins WHERE name='Serial'"); - echo ''; - } - ?> - + if (empty($records[0]['abilita_serial'])) { + $plugin = $dbo->fetchArray("SELECT id FROM zz_plugins WHERE name='Serial'"); + echo ''; + } + ?> +
{[ "type": "checkbox", "label": "", "name": "abilita_serial", "value": "$abilita_serial$", "help": "", "placeholder": "" ]}
- - + +
- +
{[ "type": "number", "label": "", "name": "prezzo_acquisto", "value": "$prezzo_acquisto$", "icon-after": "€" ]}
- - + +
{[ "type": "number", "label": "", "name": "prezzo_vendita", "value": "$prezzo_vendita$", "icon-after": "€" ]} @@ -104,18 +104,18 @@ $_SESSION['superselect']['id_categoria'] = $records[0]['id_categoria'];
{[ "type": "select", "label": "", "name": "idiva_vendita", "values": "query=SELECT * FROM co_iva ORDER BY descrizione ASC", "value": "$idiva_vendita$", "valore_predefinito": "Iva predefinita" ]}
- +
{[ "type": "number", "label": "", "name": "gg_garanzia", "decimals": 0, "value": "$gg_garanzia$", "icon-after": "GG" ]}
- +
- - + +
- +
{[ "type": "number", "label": "", "name": "peso_lordo", "value": "$peso_lordo$", "icon-after": "KG" ]}
@@ -298,13 +298,12 @@ $elementi = $dbo->fetchArray('SELECT `co_documenti`.`id`, `co_documenti`.`data`, SELECT `dt_ddt`.`id`, `dt_ddt`.`data`, `dt_ddt`.`numero`, `dt_ddt`.`numero_esterno`, `dt_tipiddt`.`descrizione` AS tipo_documento, `dt_tipiddt`.`dir` FROM `dt_ddt` JOIN `dt_tipiddt` ON `dt_tipiddt`.`id` = `dt_ddt`.`idtipoddt` WHERE `dt_ddt`.`id` IN (SELECT `idddt` FROM `dt_righe_ddt` WHERE `idarticolo` = '.prepare($id_record).') UNION SELECT `co_preventivi`.`id`, `co_preventivi`.`data_bozza`, `co_preventivi`.`numero`, 0 AS numero_esterno , "Preventivo" AS tipo_documento, 0 AS dir FROM `co_preventivi` WHERE `co_preventivi`.`id` IN (SELECT `idpreventivo` FROM `co_righe_preventivi` WHERE `idarticolo` = '.prepare($id_record).') ORDER BY `data`'); - if (!empty($elementi)) { echo '

'.tr('_NUM_ altr_I_ document_I_ collegat_I_', [ '_NUM_' => count($elementi), - '_I_' => (count($elementi)>1) ? tr('i') : tr('o') + '_I_' => (count($elementi) > 1) ? tr('i') : tr('o'), ]).':

    '; @@ -314,17 +313,17 @@ if (!empty($elementi)) { '_NUM_' => !empty($elemento['numero_esterno']) ? $elemento['numero_esterno'] : $elemento['numero'], '_DATE_' => Translator::dateToLocale($elemento['data']), ]); - - //se non è un preventivo è un ddt o una fattura - //se non è un ddt è una fattura. - if (in_array($elemento['tipo_documento'], ['Preventivo'])) { - $modulo ='Preventivi'; - } else if (!in_array($elemento['tipo_documento'], ['Ddt di vendita', 'Ddt di acquisto'])) { - $modulo = ($elemento['dir'] == 'entrata') ? 'Fatture di vendita' : 'Fatture di acquisto'; - } else { - $modulo = ($elemento['dir'] == 'entrata') ? 'Ddt di vendita' : 'Ddt di acquisto'; - } - + + //se non è un preventivo è un ddt o una fattura + //se non è un ddt è una fattura. + if (in_array($elemento['tipo_documento'], ['Preventivo'])) { + $modulo = 'Preventivi'; + } elseif (!in_array($elemento['tipo_documento'], ['Ddt di vendita', 'Ddt di acquisto'])) { + $modulo = ($elemento['dir'] == 'entrata') ? 'Fatture di vendita' : 'Fatture di acquisto'; + } else { + $modulo = ($elemento['dir'] == 'entrata') ? 'Ddt di vendita' : 'Ddt di acquisto'; + } + $id = $elemento['id']; echo ' @@ -341,4 +340,4 @@ if (!empty($elementi)) { - \ No newline at end of file + diff --git a/modules/fatture/add_intervento.php b/modules/fatture/add_intervento.php index 3aebd0f0d..5c8947225 100644 --- a/modules/fatture/add_intervento.php +++ b/modules/fatture/add_intervento.php @@ -41,7 +41,7 @@ foreach ($rs as $key => $value) { echo '
    - {[ "type": "select", "label": "'.tr('Intervento').'", "name": "idintervento", "required": 1, "values": "json='.substr(str_replace('"', '\"', json_encode($rs)), 2, -2).'", "extra": "onchange=\"$data = $(this).selectData(); $(\'#descrizione\').val($data.descrizione); $(\'#prezzo\').val($data.prezzo);\"" ]} + {[ "type": "select", "label": "'.tr('Intervento').'", "name": "idintervento", "required": 1, "values": '.json_encode($rs).', "extra": "onchange=\"$data = $(this).selectData(); $(\'#descrizione\').val($data.descrizione); $(\'#prezzo\').val($data.prezzo);\"" ]}
    '; diff --git a/modules/fatture/crea_documento.php b/modules/fatture/crea_documento.php index bc3d69724..fd5b002f3 100644 --- a/modules/fatture/crea_documento.php +++ b/modules/fatture/crea_documento.php @@ -119,7 +119,7 @@ if (!empty($rs)) { echo ' - + '; @@ -144,7 +144,7 @@ if (!empty($rs)) { // Q.tà da evadere echo ' - {[ "type": "number", "name": "qta_da_evadere['.$r['id'].']", "id": "qta_'.$i.'", "required": 1, "value": "'.$r['qta_rimanente'].'", "extra" : "onkeyup=\"ricalcola_subtotale_riga('.$i.');\"", "decimals": "qta|0" ]} + {[ "type": "number", "name": "qta_da_evadere['.$r['id'].']", "id": "qta_'.$i.'", "required": 1, "value": "'.$r['qta_rimanente'].'", "extra" : "onkeyup=\"ricalcola_subtotale_riga('.$i.');\"", "decimals": "qta", "min-value": "0" ]} '; // Subtotale diff --git a/src/HTMLBuilder/HTMLBuilder.php b/src/HTMLBuilder/HTMLBuilder.php index ae0ba9882..2575879ae 100644 --- a/src/HTMLBuilder/HTMLBuilder.php +++ b/src/HTMLBuilder/HTMLBuilder.php @@ -88,6 +88,7 @@ class HTMLBuilder */ public static function replace($html) { + // Gestione dei manager generici preg_match_all('/'.preg_quote(self::$open['manager']).'(.+?)'.preg_quote(self::$close['manager']).'/is', $html, $managers); foreach ($managers[0] as $value) { @@ -99,6 +100,7 @@ class HTMLBuilder $html = str_replace($value, !empty($result) ? $result : $value, $html); } + // Gestione del formato di input HTML semplificato preg_match_all('/'.preg_quote(self::$open['handler']).'(.+?)'.preg_quote(self::$close['handler']).'/is', $html, $handlers); foreach ($handlers[0] as $value) { @@ -155,10 +157,10 @@ class HTMLBuilder { $string = '{'.substr($string, strlen(self::$open[$type]), -strlen(self::$close[$type])).'}'; - // Fix per contenuti con newline integrate + // Fix per contenuti con newline integrati $string = str_replace(["\n", "\r"], ['\\n', '\\r'], $string); - $json = (array) json_decode($string, true, 2); + $json = (array) json_decode($string, true); return $json; } @@ -212,7 +214,7 @@ class HTMLBuilder // Attributi normali foreach ($json as $key => $value) { - $values[trim($key)] = trim($value); + $values[trim($key)] = is_string($value) ? trim($value) : $value; } // Valori particolari diff --git a/src/HTMLBuilder/Handler/ChoicesHandler.php b/src/HTMLBuilder/Handler/ChoicesHandler.php index 4fd008887..25649b2d8 100644 --- a/src/HTMLBuilder/Handler/ChoicesHandler.php +++ b/src/HTMLBuilder/Handler/ChoicesHandler.php @@ -3,33 +3,50 @@ namespace HTMLBuilder\Handler; /** + * Gestione dell'input di tipo "checkbox". + * * @since 2.3 */ class ChoicesHandler implements HandlerInterface { public function handle(&$values, &$extras) { + // Delega della gestione al metodo specifico per il tipo di input richiesto $result = $this->{$values['type']}($values, $extras); return $result; } + /** + * Gestione dell'input di tipo "checkbox". + * Esempio: {[ "type": "checkbox", "label": "Checkbox di test", "placeholder": "Test", "name": "checkbox", "value": "1" ]}. + * + * @param array $values + * @param array $extras + * + * @return string + */ protected function checkbox(&$values, &$extras) { unset($values['class'][0]); + // Restrizione dei valori permessi $values['value'] = (empty($values['value']) || $values['value'] == 'off') ? false : true; + // Gestione della proprietà "checked" if (!empty($values['value']) && !in_array('checked', $extras)) { $extras[] = 'checked'; } + // Gestione della proprietà "readonly" if (in_array('readonly', $extras)) { $extras[] = 'disabled'; } - $values['placeholder'] = (isset($values['placeholder'])) ? $values['placeholder'] : $values['label']; + // Gestione dei placeholder + $values['placeholder'] = isset($values['placeholder']) ? $values['placeholder'] : $values['label']; + // Generazione del codice HTML $result .= '
    diff --git a/src/HTMLBuilder/Handler/DateHandler.php b/src/HTMLBuilder/Handler/DateHandler.php index f27d03270..20f13aa6e 100644 --- a/src/HTMLBuilder/Handler/DateHandler.php +++ b/src/HTMLBuilder/Handler/DateHandler.php @@ -3,6 +3,8 @@ namespace HTMLBuilder\Handler; /** + * Gestione dell'input di tipo "timestamp", "date" e "time". + * * @since 2.3 */ class DateHandler implements HandlerInterface @@ -10,26 +12,34 @@ class DateHandler implements HandlerInterface public function handle(&$values, &$extras) { // Impostazione alla data corrente se il contenuto corrisponde a "now" - if ($values['value'] == '-now-') { - $values['value'] = date(\Translator::getFormatter()->getStandardFormats()['timestamp']); - } - - if ($values['max-date'] == '-now-') { - $values['max-date'] = date(\Translator::getFormatter()->getStandardFormats()['timestamp']); - } - - if ($values['min-date'] == '-now-') { - $values['min-date'] = date(\Translator::getFormatter()->getStandardFormats()['timestamp']); + $detect = [ + 'value', + 'max-date', + 'min-date', + ]; + foreach ($detect as $attr) { + if ($values[$attr] == '-now-') { + $values[$attr] = date(\Translator::getFormatter()->getStandardFormats()['timestamp']); + } } + // Restrizione dei valori permessi + // Timestamp if ($values['type'] == 'timestamp' && \Translator::getFormatter()->isStandardTimestamp($values['value'])) { $values['value'] = \Translator::timestampToLocale($values['value']); - } elseif ($values['type'] == 'date' && \Translator::getFormatter()->isStandardDate($values['value'])) { + } + + // Data + elseif ($values['type'] == 'date' && \Translator::getFormatter()->isStandardDate($values['value'])) { $values['value'] = \Translator::dateToLocale($values['value']); - } elseif ($values['type'] == 'time' && \Translator::getFormatter()->isStandardTime($values['value'])) { + } + + // Orario + elseif ($values['type'] == 'time' && \Translator::getFormatter()->isStandardTime($values['value'])) { $values['value'] = \Translator::timeToLocale($values['value']); } + // Controllo sulla correttezza sintattica del valore impostato if (!( ($values['type'] == 'timestamp' && \Translator::getFormatter()->isFormattedTimestamp($values['value'])) || ($values['type'] == 'date' && \Translator::getFormatter()->isFormattedDate($values['value'])) || @@ -38,10 +48,12 @@ class DateHandler implements HandlerInterface $values['value'] = ''; } + // Delega della gestione al metodo specifico per il tipo di input richiesto $result = $this->{$values['type']}($values, $extras); $values['type'] = 'text'; + // Generazione del codice HTML di default if (empty($result)) { $result = ' '; @@ -50,6 +62,15 @@ class DateHandler implements HandlerInterface return $result; } + /** + * Gestione dell'input di tipo "timestamp". + * Esempio: {[ "type": "timestamp", "label": "Timestamp di test", "name": "timestamp", "value": "2018-01-01 12:00:30" ]}. + * + * @param array $values + * @param array $extras + * + * @return string + */ protected function timestamp(&$values, &$extras) { $values['class'][] = 'text-center'; @@ -57,6 +78,15 @@ class DateHandler implements HandlerInterface $values['class'][] = 'timestamp-mask'; } + /** + * Gestione dell'input di tipo "date". + * Esempio: {[ "type": "date", "label": "Data di test", "name": "date", "value": "2018-01-01" ]}. + * + * @param array $values + * @param array $extras + * + * @return string + */ protected function date(&$values, &$extras) { $values['class'][] = 'text-center'; @@ -64,6 +94,15 @@ class DateHandler implements HandlerInterface $values['class'][] = 'date-mask'; } + /** + * Gestione dell'input di tipo "time". + * Esempio: {[ "type": "time", "label": "Orario di test", "name": "time", "value": "12:00:30" ]}. + * + * @param array $values + * @param array $extras + * + * @return string + */ protected function time(&$values, &$extras) { $values['class'][] = 'text-center'; diff --git a/src/HTMLBuilder/Handler/DefaultHandler.php b/src/HTMLBuilder/Handler/DefaultHandler.php index adcb9bc78..af19167e1 100644 --- a/src/HTMLBuilder/Handler/DefaultHandler.php +++ b/src/HTMLBuilder/Handler/DefaultHandler.php @@ -3,37 +3,98 @@ namespace HTMLBuilder\Handler; /** + * Gestione dell'input di tipo "text", "file", "password", "email", "number", "textarea" e "hidden". + * * @since 2.3 */ class DefaultHandler implements HandlerInterface { public function handle(&$values, &$extras) { + // Delega della gestione al metodo specifico per il tipo di input richiesto if (in_array($values['type'], get_class_methods($this))) { $result = $this->{$values['type']}($values, $extras); - } else { + } + + // Caso non previsto + else { $result = $this->custom($values, $extras); } return $result; } + /** + * Gestione dell'input di tipo non altrimenti previsto. + * Esempio: {[ "type": "undefined", "label": "Custom di test", "placeholder": "Test", "name": "custom", "value": "custom" ]}. + * + * @param array $values + * @param array $extras + * + * @return string + */ + protected function custom(&$values, &$extras) + { + // Generazione del codice HTML + return ' + |value|'; + } + + /** + * Gestione dell'input di tipo "text". + * Esempio: {[ "type": "text", "label": "Text di test", "placeholder": "Test", "name": "text" ]}. + * + * @param array $values + * @param array $extras + * + * @return string + */ protected function text(&$values, &$extras) { + // Generazione del codice HTML return ' '; } + /** + * Gestione dell'input di tipo "file". + * Esempio: {[ "type": "file", "label": "File di test", "placeholder": "Test", "name": "file" ]}. + * + * @param array $values + * @param array $extras + * + * @return string + */ protected function file(&$values, &$extras) { + // Delega al metodo "text", per la generazione del codice HTML return $this->text($values, $extras); } + /** + * Gestione dell'input di tipo "password". + * Esempio: {[ "type": "password", "label": "Password di test", "placeholder": "Test", "name": "password" ]}. + * + * @param array $values + * @param array $extras + * + * @return string + */ protected function password(&$values, &$extras) { + // Delega al metodo "text", per la generazione del codice HTML return $this->text($values, $extras); } + /** + * Gestione dell'input di tipo "hidden". + * Esempio: {[ "type": "hidden", "label": "Hidden di test", "placeholder": "Test", "name": "hidden" ]}. + * + * @param array $values + * @param array $extras + * + * @return string + */ protected function hidden(&$values, &$extras) { $original = $values; @@ -44,54 +105,81 @@ class DefaultHandler implements HandlerInterface $values['name'] = $original['name']; $values['class'] = []; + // Delega al metodo "text", per la generazione del codice HTML return $this->text($values, $extras); } + /** + * Gestione dell'input di tipo "email". + * Esempio: {[ "type": "email", "label": "Email di test", "placeholder": "Test", "name": "email" ]}. + * + * @param array $values + * @param array $extras + * + * @return string + */ protected function email(&$values, &$extras) { $values['class'][] = 'email-mask'; $values['type'] = 'text'; + // Delega al metodo "text", per la generazione del codice HTML return $this->text($values, $extras); } + /** + * Gestione dell'input di tipo "number". + * Esempio: {[ "type": "number", "label": "Number di test", "placeholder": "Test", "name": "number" ]}. + * + * @param array $values + * @param array $extras + * + * @return string + */ protected function number(&$values, &$extras) { $values['class'][] = 'inputmask-decimal'; $values['value'] = !empty($values['value']) ? $values['value'] : 0; + // Gestione della precisione (numero specifico, oppure "qta" per il valore previsto nell'impostazione "Cifre decimali per quantità"). $decimals = null; if (isset($values['decimals'])) { if (is_numeric($values['decimals'])) { $decimals = $values['decimals']; } elseif (starts_with($values['decimals'], 'qta')) { - $parts = explode('|', $values['decimals']); - $values['min-value'] = isset($parts[1]) ? $parts[1] : 1; + // Se non è previsto un valore minimo, lo imposta a 1 + $values['min-value'] = isset($values['min-value']) ? $values['min-value'] : 1; $decimals = \Settings::get('Cifre decimali per quantità'); $values['decimals'] = $decimals; } } + // Controllo sulla correttezza sintattica del valore impostato $values['value'] = (\Translator::getFormatter()->isStandardNumber($values['value'])) ? \Translator::numberToLocale($values['value'], $decimals) : $values['value']; $values['type'] = 'text'; + // Delega al metodo "text", per la generazione del codice HTML return $this->text($values, $extras); } - protected function custom(&$values, &$extras) - { - return ' - |value|'; - } - + /** + * Gestione dell'input di tipo "textarea". + * Esempio: {[ "type": "textarea", "label": "Textarea di test", "placeholder": "Test", "name": "textarea" ]}. + * + * @param array $values + * @param array $extras + * + * @return string + */ protected function textarea(&$values, &$extras) { $values['class'][] = 'autosize'; + // Generazione del codice HTML return ' '; } diff --git a/src/HTMLBuilder/Handler/HandlerInterface.php b/src/HTMLBuilder/Handler/HandlerInterface.php index 3efd229d6..af553072b 100644 --- a/src/HTMLBuilder/Handler/HandlerInterface.php +++ b/src/HTMLBuilder/Handler/HandlerInterface.php @@ -3,10 +3,19 @@ namespace HTMLBuilder\Handler; /** + * Intefaccia utilizzata per interagire con la classe HTMLBuilder. * * @since 2.3 */ interface HandlerInterface { + /** + * Gestore pubblico, liberamente implementabile per la creazione del codice HTML. + * + * @param array $values + * @param array $extras + * + * @return string + */ public function handle(&$values, &$extras); } diff --git a/src/HTMLBuilder/Handler/MediaHandler.php b/src/HTMLBuilder/Handler/MediaHandler.php index 1437a3f22..4eb0a9cb3 100644 --- a/src/HTMLBuilder/Handler/MediaHandler.php +++ b/src/HTMLBuilder/Handler/MediaHandler.php @@ -3,33 +3,49 @@ namespace HTMLBuilder\Handler; /** + * Gestione dell'input di tipo "image". + * * @since 2.3 */ class MediaHandler implements HandlerInterface { + public function handle(&$values, &$extras) + { + // Delega della gestione al metodo specifico per il tipo di input richiesto + $result = $this->{$values['type']}($values, $extras); + + return $result; + } + /** - * @since 2.3 + * Gestione dell'input di tipo "image". + * Esempio: {[ "type": "image", "label": "Immagine di test", "name": "image", "class": "img-thumbnail", "value": "image_path" ]}. * * @param array $values * @param array $extras * * @return string */ - public function handle(&$values, &$extras) + public function image(&$values, &$extras) { unset($values['class'][0]); - // Form upload + // Valore non imposato if (empty($values['value'])) { $values['type'] = 'file'; + // Generazione del codice HTML return ' '; - } else { - // Visualizzazione dell'immagine e della relativa spunta per la cancellazione + } + + // Valore presente + // Visualizzazione dell'immagine e della relativa spunta per la cancellazione + else { $values['class'][] = 'img-thumbnail'; $values['class'][] = 'img-responsive'; + // Generazione del codice HTML return '