Beispiel #1
0
 protected function prepareLabel(ElementInterface $element)
 {
     $escapeHtmlHelper = $this->getEscapeHtmlHelper();
     $valuesOptions = $element->getValueOptions();
     //append span with c-indicator for each option
     foreach ($valuesOptions as $key => $optionSpec) {
         if (is_scalar($optionSpec)) {
             $optionSpec = ['label' => $optionSpec, 'value' => $key];
         }
         if (!$element instanceof LabelAwareInterface || !$element->getLabelOption('disable_html_escape')) {
             $optionSpec['label'] = $escapeHtmlHelper($optionSpec['label']);
         }
         $optionSpec['label'] = '<span class="c-indicator"></span>' . $optionSpec['label'];
         $valuesOptions[$key] = $optionSpec;
     }
     //disable escape because it was already used above
     $element->setLabelOption('disable_html_escape', true);
     $element->setValueOptions($valuesOptions);
 }
Beispiel #2
0
 public function render(ElementInterface $element)
 {
     $type = $element->getAttribute('type');
     if ($type == 'multi_checkbox' || $type == "radio") {
         $aOptions = $element->getValueOptions();
         $aAtributes = $element->getOptions();
         $aClasse = $element->getAttributes();
         $aClasse = explode(" ", @$aClasse["class"]);
         $sType = $type;
         $selected = $element->getValue();
         $disabled = $element->getAttribute("disabled");
         foreach ($aOptions as $sKey => $aOption) {
             if (is_scalar($aOption)) {
                 $aOption = array('label' => " " . $aOption, 'value' => $sKey);
             }
             $aOption['label_attributes'] = array();
             $classe = "";
             if (!in_array("not-bootstrap", $aClasse)) {
                 $classe = "btn btn-default ";
                 if ($type == "multi_checkbox") {
                     if (@in_array($sKey, $selected)) {
                         $classe .= "active";
                     }
                 } else {
                     if ($type == "radio") {
                         if ($sKey == $selected) {
                             $classe .= "active";
                         }
                     }
                 }
             }
             if (in_array("not-bootstrap", $aClasse)) {
                 $classe .= "not-bootstrap";
             }
             if ($disabled) {
                 $classe .= " disabled";
             }
             if (empty($aOption['label_attributes']['class'])) {
                 $aOption['label_attributes']['class'] = trim($classe);
             } elseif (!preg_match('/(\\s|^)' . preg_quote($classe) . '(\\s|$)/', $aOption['label_attributes']['class'])) {
                 $aOption['label_attributes']['class'] .= trim(' ' . $classe);
             }
             if (isset($aAtributes['data'])) {
                 foreach ($aAtributes['data'] as $key => $value) {
                     $aOption['label_attributes']['data-' . $key] = $value[$sKey];
                 }
             }
             if ($disabled) {
                 if ($type == "multi_checkbox") {
                     if (@in_array($sKey, $selected)) {
                         $aOptions[$sKey] = $aOption;
                     } else {
                         unset($aOptions[$sKey]);
                     }
                 } else {
                     if ($type == "radio") {
                         if ($sKey == $selected) {
                             $aOptions[$sKey] = $aOption;
                         } else {
                             unset($aOptions[$sKey]);
                         }
                     }
                 }
             } else {
                 $aOptions[$sKey] = $aOption;
             }
         }
         $element->setValueOptions($aOptions);
         if (!in_array("not-bootstrap", $aClasse)) {
             return sprintf('<div><div class="btn-group" data-toggle="buttons">%s</div></div>', parent::render($element));
         } else {
             return sprintf('<div>%s</div>', parent::render($element));
         }
     }
     return parent::render($element);
 }