2017-08-04 16:28:16 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace HTMLBuilder\Handler;
|
|
|
|
|
|
|
|
/**
|
2018-01-12 16:23:26 +01:00
|
|
|
* Gestione dell'input di tipo "checkbox".
|
|
|
|
*
|
2017-08-04 16:28:16 +02:00
|
|
|
* @since 2.3
|
|
|
|
*/
|
|
|
|
class ChoicesHandler implements HandlerInterface
|
|
|
|
{
|
|
|
|
public function handle(&$values, &$extras)
|
|
|
|
{
|
2018-01-12 16:23:26 +01:00
|
|
|
// Delega della gestione al metodo specifico per il tipo di input richiesto
|
2017-08-04 16:28:16 +02:00
|
|
|
$result = $this->{$values['type']}($values, $extras);
|
|
|
|
|
|
|
|
return $result;
|
|
|
|
}
|
|
|
|
|
2018-01-12 16:23:26 +01:00
|
|
|
/**
|
|
|
|
* 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
|
|
|
|
*/
|
2017-08-04 16:28:16 +02:00
|
|
|
protected function checkbox(&$values, &$extras)
|
|
|
|
{
|
|
|
|
unset($values['class'][0]);
|
|
|
|
|
2018-01-12 16:23:26 +01:00
|
|
|
// Restrizione dei valori permessi
|
2017-08-04 16:28:16 +02:00
|
|
|
$values['value'] = (empty($values['value']) || $values['value'] == 'off') ? false : true;
|
|
|
|
|
2018-01-12 16:23:26 +01:00
|
|
|
// Gestione della proprietà "checked"
|
2017-08-04 16:28:16 +02:00
|
|
|
if (!empty($values['value']) && !in_array('checked', $extras)) {
|
|
|
|
$extras[] = 'checked';
|
|
|
|
}
|
|
|
|
|
2018-01-12 16:23:26 +01:00
|
|
|
// Gestione della proprietà "readonly"
|
2017-08-04 16:28:16 +02:00
|
|
|
if (in_array('readonly', $extras)) {
|
|
|
|
$extras[] = 'disabled';
|
|
|
|
}
|
|
|
|
|
2018-01-12 16:23:26 +01:00
|
|
|
// Gestione dei placeholder
|
|
|
|
$values['placeholder'] = isset($values['placeholder']) ? $values['placeholder'] : $values['label'];
|
2017-08-04 16:28:16 +02:00
|
|
|
|
2018-01-12 16:23:26 +01:00
|
|
|
// Generazione del codice HTML
|
2018-03-15 17:39:19 +01:00
|
|
|
// "+ this.checked" rende il valore booleano un numero
|
2018-06-23 15:41:32 +02:00
|
|
|
$result = '
|
2020-07-30 18:39:14 +02:00
|
|
|
<div class="form-group">
|
2017-08-04 16:28:16 +02:00
|
|
|
<input type="hidden" name="|name|" value="|value|">
|
2020-07-30 18:39:14 +02:00
|
|
|
<input type="checkbox" id="|id|" value="|value|" autocomplete="off" class="hidden" |attr| onchange="$(this).parent().find(\'[type = hidden]\').val(+this.checked)"/>
|
|
|
|
<div class="btn-group">
|
|
|
|
<label for="|id|" class="btn btn-default">
|
|
|
|
<span class="fa fa-check"></span>
|
|
|
|
<span class="fa fa-close"></span>
|
|
|
|
</label>
|
|
|
|
<label for="|id|" class="btn btn-default active">
|
|
|
|
|placeholder|
|
|
|
|
</label>
|
|
|
|
</div>
|
|
|
|
</div>';
|
2017-08-04 16:28:16 +02:00
|
|
|
|
|
|
|
return $result;
|
|
|
|
}
|
|
|
|
}
|