%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/bbw/farmaci/kritik-portale/module/Backend/src/Backend/View/Helper/
Upload File :
Create Path :
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();
    }
}

Zerion Mini Shell 1.0