Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
25.00% |
1 / 4 |
CRAP | |
77.14% |
27 / 35 |
| TwbBundleButtonGroup | |
0.00% |
0 / 1 |
|
25.00% |
1 / 4 |
21.87 | |
77.14% |
27 / 35 |
| __invoke(array $aButtons = null, array $aButtonGroupOptions = null) | |
100.00% |
1 / 1 |
2 | |
100.00% |
1 / 1 |
|||
| render(array $aButtons, array $aButtonGroupOptions = null) | |
0.00% |
0 / 1 |
5.06 | |
86.67% |
13 / 15 |
|||
| renderButtons(array $aButtons, $bJustified = false) | |
0.00% |
0 / 1 |
10.92 | |
64.29% |
9 / 14 |
|||
| getFormElementHelper() | |
0.00% |
0 / 1 |
3.07 | |
80.00% |
4 / 5 |
|||
| <?php | |
| namespace TwbBundle\View\Helper; | |
| class TwbBundleButtonGroup extends \Zend\Form\View\Helper\AbstractHelper { | |
| /** | |
| * @var string | |
| */ | |
| protected static $buttonGroupContainerFormat = '<div %s>%s</div>'; | |
| /** | |
| * @var string | |
| */ | |
| protected static $buttonGroupJustifiedFormat = '<div class="btn-group">%s</div>'; | |
| /** | |
| * @var \TwbBundle\Form\View\Helper\TwbBundleFormElement | |
| */ | |
| protected $formElementHelper; | |
| /** | |
| * @param array $aButtons | |
| * @param array $aButtonGroupOptions | |
| * @return \TwbBundle\View\Helper\TwbBundleButtonGroup|string | |
| */ | |
| public function __invoke(array $aButtons = null, array $aButtonGroupOptions = null) { | |
| return $aButtons ? $this->render($aButtons, $aButtonGroupOptions) : $this; | |
| } | |
| /** | |
| * Render button groups markup | |
| * @param array $aButtons | |
| * @param array $aButtonGroupOptions | |
| * @throws \LogicException | |
| * @return string | |
| */ | |
| public function render(array $aButtons, array $aButtonGroupOptions = null) { | |
| // ### Button group container attributes ### | |
| if (empty($aButtonGroupOptions['attributes'])) { | |
| $aButtonGroupOptions['attributes'] = array('class' => 'btn-group'); | |
| } else { | |
| if (!is_array($aButtonGroupOptions['attributes'])) { | |
| throw new \LogicException('"attributes" option expects an array, "' . gettype($aButtonGroupOptions['attributes']) . '" given'); | |
| } | |
| if (empty($aButtonGroupOptions['attributes']['class'])) { | |
| $aButtonGroupOptions['attributes']['class'] = 'btn-group'; | |
| } elseif (!preg_match('/(\s|^)(?:btn-group|btn-group-vertical)(\s|$)/', $aButtonGroupOptions['attributes']['class'])) { | |
| $aButtonGroupOptions['attributes']['class'] .= ' btn-group'; | |
| } | |
| } | |
| // ### Render button group ### | |
| return sprintf( | |
| self::$buttonGroupContainerFormat, | |
| //Container attributes | |
| $this->createAttributesString($aButtonGroupOptions['attributes']), | |
| //Buttons | |
| $this->renderButtons($aButtons, strpos($aButtonGroupOptions['attributes']['class'], 'btn-group-justified') !== false) | |
| ); | |
| } | |
| /** | |
| * Render buttons markup | |
| * @param array $aButtons | |
| * @return string | |
| */ | |
| protected function renderButtons(array $aButtons, $bJustified = false) { | |
| $sMarkup = ''; | |
| foreach ($aButtons as $oButton) { | |
| if ( | |
| is_array($oButton) || ($oButton instanceof \Traversable && !($oButton instanceof \Zend\Form\ElementInterface)) | |
| ) { | |
| $oFactory = new \Zend\Form\Factory(); | |
| $oButton = $oFactory->create($oButton); | |
| } elseif (!($oButton instanceof \Zend\Form\ElementInterface)) { | |
| throw new \LogicException(sprintf( | |
| 'Button expects an instanceof \Zend\Form\ElementInterface or an array / \Traversable, "%s" given', is_object($oButton) ? get_class($oButton) : gettype($oButton) | |
| )); | |
| } | |
| $sButtonMarkup = $this->getFormElementHelper()->__invoke($oButton); | |
| $sMarkup .= $bJustified ? sprintf(self::$buttonGroupJustifiedFormat, $sButtonMarkup) : $sButtonMarkup; | |
| } | |
| return $sMarkup; | |
| } | |
| /** | |
| * @return \TwbBundle\Form\View\Helper\TwbBundleFormElement | |
| */ | |
| public function getFormElementHelper() { | |
| if ($this->formElementHelper instanceof \TwbBundle\Form\View\Helper\TwbBundleFormElement) { | |
| return $this->formElementHelper; | |
| } | |
| if (method_exists($this->view, 'plugin')) { | |
| return $this->formElementHelper = $this->view->plugin('form_element'); | |
| } | |
| return $this->formElementHelper = new \TwbBundle\Form\View\Helper\TwbBundleFormElement(); | |
| } | |
| } |