%PDF- %PDF-
Direktori : /var/www/html/bbw/farmaci/kritik-portale/module/Backend/src/Backend/View/Helper/ |
Current File : /var/www/html/bbw/farmaci/kritik-portale/module/Backend/src/Backend/View/Helper/Widget.php |
<?php namespace Backend\View\Helper; use Zend\Form\View\Helper\AbstractHelper; use Zend\Stdlib\ArrayUtils; /** * @package * @author Cornelius Adams (conlabz GmbH) <cornelius.adams@conlabz.de> */ class Widget extends AbstractHelper { /** * template of widget/wrapper * * @var string */ protected $widgetTemplate = 'backend/widget'; /** * template of widget content * * @var string */ protected $widgetContentTemplate; /** * widget content variables * * @var array */ protected $contentVariables; /** * * @var array */ protected $availableWidgetOptions = [ 'colorbutton', 'editbutton', 'togglebutton', 'deletebutton', 'fullscreenbutton', 'custombutton', 'collapsed', 'sortable' ]; /** * @param string $template * @param array $variables * <pre> * [ * 'title' => 'Some title', * 'icon' => 'user', * 'options' => [ * 'colorbutton' => false, * 'deletebutton' => false, * 'sortable' => false * ] * ] * </pre> * @return BackendWidget */ public function __invoke($template, array $variables = []) { $this->widgetContentTemplate = $template; $viewModelVars = (array) $this->getView() ->plugin('viewmodel') ->getCurrent() ->getVariables(); $this->contentVariables = ArrayUtils::merge($viewModelVars, $variables); return $this; } /** * render widget * * @return string */ public function render() { $renderedContent = $this->getView()->partial( $this->widgetContentTemplate, $this->contentVariables ); $widgetData = ArrayUtils::merge( $this->getWidgetContentData(), [ 'content' => $renderedContent ] ); return $this->getView()->partial( $this->widgetTemplate, $widgetData ); } /** * * @return array */ protected function getWidgetContentData() { if (!isset($this->contentVariables['widgetId'])) { $this->contentVariables['widgetId'] = str_replace('/', '-', $this->widgetContentTemplate); } $this->contentVariables['widgetAttributes'] = $this->getWidgetAttributes(); return $this->contentVariables; } /** * * @return array */ protected function getWidgetAttributes() { $widgetAttributes = [ 'class' => 'jarviswidget ' . $this->getWidgetColor(), 'id' => $this->contentVariables['widgetId'] ]; $widgetOptions = isset($this->contentVariables['options']) ? $this->contentVariables['options'] : []; if (false !== $widgetOptions && count($widgetOptions)) { foreach ($this->availableWidgetOptions as $widgetOption) { if (isset($widgetOptions[$widgetOption]) && false === $widgetOptions[$widgetOption]) { $widgetAttributes['data-widget-' . $widgetOption] = 'false'; } } } else if (false === $widgetOptions) { foreach ($this->availableWidgetOptions as $widgetOption) { $widgetAttributes['data-widget-' . $widgetOption] = 'false'; } } return $this->createAttributesString($widgetAttributes); } protected function getWidgetColor() { $color = isset($this->contentVariables['color']) ? $this->contentVariables['color'] : 'darken'; return 'jarviswidget-color-' . $color; } /** * * @return string */ public function __toString() { return $this->render(); } }