112 lines
2.9 KiB
PHP
112 lines
2.9 KiB
PHP
<?php
|
|
|
|
namespace Nextend\SmartSlider3\Widget\Group;
|
|
|
|
use Nextend\Framework\Form\ContainerInterface;
|
|
use Nextend\Framework\Form\Element\CheckboxOnOff;
|
|
use Nextend\Framework\Form\Element\Group\GroupCheckboxOnOff;
|
|
use Nextend\Framework\Form\Form;
|
|
use Nextend\Framework\Pattern\OrderableTrait;
|
|
use Nextend\SmartSlider3\Widget\AbstractWidget;
|
|
use Nextend\SmartSlider3\Widget\WidgetGroupFactory;
|
|
|
|
abstract class AbstractWidgetGroup {
|
|
|
|
use OrderableTrait;
|
|
|
|
/** @var AbstractWidget[] */
|
|
private $widgets = array();
|
|
|
|
protected $showOnMobileDefault = 0;
|
|
|
|
public function __construct() {
|
|
WidgetGroupFactory::addGroup($this);
|
|
}
|
|
|
|
public abstract function getName();
|
|
|
|
public abstract function getLabel();
|
|
|
|
/**
|
|
* @param $name
|
|
* @param AbstractWidget $widget
|
|
*/
|
|
public function addWidget($name, $widget) {
|
|
$this->widgets[$name] = $widget;
|
|
}
|
|
|
|
/**
|
|
* @return AbstractWidget[]
|
|
*/
|
|
public function getWidgets() {
|
|
return $this->widgets;
|
|
}
|
|
|
|
/**
|
|
* @param $name
|
|
*
|
|
* @return AbstractWidget
|
|
*/
|
|
public function getWidget($name) {
|
|
return $this->widgets[$name];
|
|
}
|
|
|
|
/**
|
|
* @param ContainerInterface $container
|
|
*/
|
|
abstract public function renderFields($container);
|
|
|
|
/**
|
|
* @param Form $form
|
|
*/
|
|
protected function compatibility($form) {
|
|
$name = $this->getName();
|
|
|
|
/**
|
|
* Convert to the new control form with the enable field
|
|
*/
|
|
if (!$form->has('widget-' . $name . '-enabled')) {
|
|
|
|
if ($form->get('widget' . $name, 'disabled') !== 'disabled') {
|
|
$form->set('widget-' . $name . '-enabled', 1);
|
|
|
|
} else {
|
|
$form->set('widget-' . $name . '-enabled', 0);
|
|
}
|
|
}
|
|
|
|
$widgets = $this->getWidgets();
|
|
|
|
$widgetPreset = $form->get('widget' . $name);
|
|
|
|
if (!isset($widgets[$widgetPreset])) {
|
|
$widgetPreset = key($widgets);
|
|
$form->set('widget' . $name, $widgetPreset);
|
|
}
|
|
|
|
$widget = $widgets[$widgetPreset];
|
|
|
|
$form->fillDefault($widget->getDefaults());
|
|
}
|
|
|
|
protected function addHideOnFeature($key, $row) {
|
|
|
|
$groupShowOn = new GroupCheckboxOnOff($row, $key, n2_('Hide on'));
|
|
new CheckboxOnOff($groupShowOn, $key . 'mobileportrait', false, 'ssi_16 ssi_16--mobileportrait', $this->showOnMobileDefault, array(
|
|
'invert' => true,
|
|
'checkboxTip' => n2_('Mobile')
|
|
));
|
|
|
|
|
|
new CheckboxOnOff($groupShowOn, $key . 'tabletportrait', false, 'ssi_16 ssi_16--tabletportrait', 1, array(
|
|
'invert' => true,
|
|
'checkboxTip' => n2_('Tablet')
|
|
));
|
|
|
|
|
|
new CheckboxOnOff($groupShowOn, $key . 'desktopportrait', false, 'ssi_16 ssi_16--desktopportrait', 1, array(
|
|
'invert' => true,
|
|
'checkboxTip' => n2_('Desktop')
|
|
));
|
|
}
|
|
} |