. */ namespace HTMLBuilder\Wrapper; use Modules; /** * @since 2.3 */ class HTMLWrapper implements WrapperInterface { public function before(&$values, &$extras) { $result = ''; $extra_class = ''; if( $values['type']=='checkbox' ){ $extra_class = 'checkbox-group'; } // Valori particolari $values['icon-before'] = isset($values['icon-before']) ? $this->parser($values, $extras, $values['icon-before']) : null; $values['icon-after'] = isset($values['icon-after']) ? $this->parser($values, $extras, $values['icon-after']) : null; $result .= '
'; // Generazione dell'etichetta if (!empty($values['label'])) { $result .= ' '; } if (!empty($values['icon-before']) || !empty($values['icon-after']) || !empty($values['validation'])) { $result .= '
'; if (!empty($values['icon-before'])) { $result .= ' '.$values['icon-before'].''; } } return $result; } public function after(&$values, &$extras) { $rand = rand(0, 99); $pseudo_id = $values['id'].$rand; $result = ''; if (!empty($values['icon-before']) || !empty($values['icon-after']) || !empty($values['validation'])) { if (!empty($values['icon-after'])) { $result .= ' '.$values['icon-after'].''; } if (!empty($values['validation'])) { $result .= ' '; } $result .= '
'; unset($values['icon-before']); unset($values['icon-after']); unset($values['icon-custom']); } if (!empty($values['help']) && !empty($values['show-help'])) { $result .= ' '.$values['help'].''; unset($values['help']); unset($values['show-help']); } $values['data-parsley-errors-container'] = '#'.$pseudo_id.'-errors'; $result .= '
'; $result .= '
'; if (!empty($values['label'])) { unset($values['label']); } if (!empty($values['validation'])) { $values['valid'] = '1'; $value = explode('|', $values['validation']); $name = $value[0]; $id_module = isset($value[1]) ? $value[1] : '$id_module$'; $id_record = isset($value[2]) ? $value[2] : '$id_record$'; $result .= ' '; } return $result; } protected function parser(&$values, &$extras, $string) { $result = $string; if (string_starts_with($string, 'add|')) { $result = $this->add($values, $extras, $string); $values['icon-custom'] = 'no-padding'; } elseif (string_starts_with($string, 'choice|')) { $result = $this->choice($values, $extras, $string); $values['icon-custom'] = 'no-padding'; } if (string_contains($string, 'permission, ['r', 'rw'])) { $result = ' '; } return $result; } protected function choice(&$values, &$extras, $string) { $result = null; $pieces = explode('|', $string); $type = $pieces[1]; $extra = !empty($pieces[3]) ? $pieces[3] : null; if ($type == 'untprc') { $choices = [ [ 'id' => 'PRC', 'descrizione' => '%', ], [ 'id' => 'UNT', 'descrizione' => currency(), ], ]; } elseif ($type == 'email') { $choices = [ [ 'id' => 'a', 'descrizione' => tr('A').'     ', ], [ 'id' => 'cc', 'descrizione' => tr('CC').'  ', ], [ 'id' => 'bcc', 'descrizione' => tr('CCN'), ], ]; } elseif ($type == 'period') { $choices = [ [ 'id' => 'manual', 'descrizione' => tr('giorno/i (manuale)'), ], [ 'id' => 'days', 'descrizione' => tr('giorno/i'), ], [ 'id' => 'months', 'descrizione' => tr('mese/i'), ], [ 'id' => 'years', 'descrizione' => tr('anno/i'), ], ]; } $value = (empty($pieces[2]) || !in_array($pieces[2], array_column($choices, 'id'))) ? $choices[0]['id'] : $pieces[2]; $result = '{[ "type": "select", "name": "tipo_'.prepareToField($values['name']).'", "id": "tipo_'.prepareToField($values['name']).'_'.rand(0, 99).'", "value": "'.prepareToField($value).'", "values": '.json_encode($choices).', "class": "no-search", "extra": "'.$extra.'" ]}'; $result = \HTMLBuilder\HTMLBuilder::replace($result); return $result; } }