<?php namespace Nextend\SmartSlider3\Application\Admin\FormManager\Slider; use Nextend\Framework\Form\Container\ContainerRowGroup; use Nextend\Framework\Form\Container\ContainerTable; use Nextend\Framework\Form\Element\Breakpoint; use Nextend\Framework\Form\Element\CheckboxOnOff; use Nextend\Framework\Form\Element\Group\GroupCheckboxOnOff; use Nextend\Framework\Form\Element\Grouping; use Nextend\Framework\Form\Element\Hidden\HiddenOnOff; use Nextend\Framework\Form\Element\Message\Notice; use Nextend\Framework\Form\Element\OnOff; use Nextend\Framework\Form\Element\Text\HiddenText; use Nextend\Framework\Form\Element\Text\Number; use Nextend\Framework\Form\Element\Text\NumberAutoComplete; use Nextend\Framework\Form\FormTabbed; use Nextend\SmartSlider3\Application\Admin\Settings\ViewSettingsGeneral; use Nextend\SmartSlider3\Form\Element\Select\ResponsiveSubFormIcon; use Nextend\SmartSlider3\Settings; class SliderSize extends AbstractSliderTab { /** * SliderSize constructor. * * @param FormTabbed $form */ public function __construct($form) { parent::__construct($form); $this->size(); $this->breakpoints(); $this->layout(); $this->customSize(); } /** * @return string */ protected function getName() { return 'size'; } /** * @return string */ protected function getLabel() { return n2_('Size'); } protected function size() { $table = new ContainerTable($this->tab, 'size', n2_('Slider size')); /** * Used for field injection: /size/size/size-1 */ $row1 = $table->createRow('size-1'); new NumberAutoComplete($row1, 'width', n2_('Width'), 900, array( 'wide' => 5, 'min' => 10, 'values' => array( 1920, 1400, 1000, 800, 600, 400 ), 'unit' => 'px' )); new NumberAutoComplete($row1, 'height', n2_('Height'), 500, array( 'wide' => 5, 'min' => 10, 'values' => array( 800, 600, 500, 400, 300, 200 ), 'unit' => 'px' )); /** * Used for field removal: /size/size/size-2 */ $row2 = $table->createRow('size-2'); new OnOff($row2, 'responsiveLimitSlideWidth', n2_('Limit slide width'), 1, array( 'relatedFieldsOn' => array( 'slidergrouping-responsive-slide-width' ), 'tipLabel' => n2_('Limit slide width'), 'tipDescription' => n2_('Limits the width of the slide and prevents the slider from getting too tall.'), 'tipLink' => 'https://smartslider.helpscoutdocs.com/article/1774-slider-settings-size#limit-slide-width' )); $slideMaxWidthGroup = new Grouping($row2, 'grouping-responsive-slide-width'); new OnOff($slideMaxWidthGroup, 'responsiveSlideWidth', n2_('Desktop'), 0, array( 'relatedFieldsOn' => array( 'sliderresponsiveSlideWidthMax' ) )); new NumberAutoComplete($slideMaxWidthGroup, 'responsiveSlideWidthMax', n2_('Max'), 3000, array( 'min' => 0, 'values' => array( 3000, 980 ), 'unit' => 'px', 'wide' => 5 )); new OnOff($slideMaxWidthGroup, 'responsiveSlideWidthTablet', n2_('Tablet'), 0, array( 'relatedFieldsOn' => array( 'sliderresponsiveSlideWidthMaxTablet' ) )); new NumberAutoComplete($slideMaxWidthGroup, 'responsiveSlideWidthMaxTablet', n2_('Max'), 3000, array( 'min' => 0, 'values' => array( 3000, 980 ), 'unit' => 'px', 'wide' => 5 )); new OnOff($slideMaxWidthGroup, 'responsiveSlideWidthMobile', n2_('Mobile'), 0, array( 'relatedFieldsOn' => array( 'sliderresponsiveSlideWidthMaxMobile' ) )); new NumberAutoComplete($slideMaxWidthGroup, 'responsiveSlideWidthMaxMobile', n2_('Max'), 480, array( 'min' => 0, 'values' => array( 3000, 480 ), 'unit' => 'px', 'wide' => 5 )); } protected function breakpoints() { $table = new ContainerTable($this->tab, 'breakpoints', n2_('Breakpoints')); $tableFieldset = $table->getFieldsetLabel(); new HiddenText($tableFieldset, 'responsive-breakpoint-tablet-portrait', false, ViewSettingsGeneral::defaults['tablet-portrait']); new HiddenText($tableFieldset, 'responsive-breakpoint-tablet-portrait-landscape', false, ViewSettingsGeneral::defaults['tablet-landscape']); new HiddenText($tableFieldset, 'responsive-breakpoint-mobile-portrait', false, ViewSettingsGeneral::defaults['mobile-portrait']); new HiddenText($tableFieldset, 'responsive-breakpoint-mobile-portrait-landscape', false, ViewSettingsGeneral::defaults['mobile-landscape']); new HiddenOnOff($tableFieldset, 'responsive-breakpoint-tablet-portrait-enabled', n2_('Tablet'), 1, array( 'relatedFieldsOn' => array( 'sliderresponsive-breakpoint-notice-tablet-portrait', 'table-row-override-slider-size-tablet-portrait-row' ) )); new HiddenOnOff($tableFieldset, 'responsive-breakpoint-mobile-portrait-enabled', n2_('Mobile'), 1, array( 'relatedFieldsOn' => array( 'sliderresponsive-breakpoint-notice-mobile-portrait', 'table-row-override-slider-size-mobile-portrait-row' ) )); $row1 = $table->createRow('breakpoints-row-1'); $instructions = n2_('Breakpoints define the browser width in pixel when the slider switches to a different device.'); new Notice($row1, 'breakpoints-instructions', n2_('Instruction'), $instructions); $row2 = $table->createRow('breakpoints-row-2'); new OnOff($row2, 'responsive-breakpoint-global', n2_('Global breakpoints'), 0, array( 'tipLabel' => n2_('Global breakpoints'), 'tipDescription' => sprintf(n2_('You can use the global breakpoints, or adjust them locally here. You can configure the Global breakpoints at %1$sGlobal settings%2$s > General > Breakpoints'), sprintf('<a href="%s" target="_blank">', $this->form->getMVCHelper() ->getUrlSettingsDefault()), '</a>') )); new Breakpoint($row2, 'breakpoints', array( 'tabletportrait-portrait' => 'sliderresponsive-breakpoint-tablet-portrait', 'tabletportrait-landscape' => 'sliderresponsive-breakpoint-tablet-portrait-landscape', 'mobileportrait-portrait' => 'sliderresponsive-breakpoint-mobile-portrait', 'mobileportrait-landscape' => 'sliderresponsive-breakpoint-mobile-portrait-landscape' ), array(), array( 'field' => 'sliderresponsive-breakpoint-global', 'values' => array( 'tabletportrait-portrait' => Settings::get('responsive-screen-width-tablet-portrait', ViewSettingsGeneral::defaults['tablet-portrait']), 'tabletportrait-landscape' => Settings::get('responsive-screen-width-tablet-portrait-landscape', ViewSettingsGeneral::defaults['tablet-landscape']), 'mobileportrait-portrait' => Settings::get('responsive-screen-width-mobile-portrait', ViewSettingsGeneral::defaults['mobile-portrait']), 'mobileportrait-landscape' => Settings::get('responsive-screen-width-mobile-portrait-landscape', ViewSettingsGeneral::defaults['mobile-landscape']) ) )); } protected function layout() { $table = new ContainerTable($this->tab, 'responsive-mode', n2_('Layout')); $row1 = $table->createRow('responsive-mode-row-1'); /** * Used for option removal: /size/responsive-mode/responsive-mode-row-1/responsive-mode */ new ResponsiveSubFormIcon($row1, 'responsive-mode', $table, $this->form->createAjaxUrl(array("slider/renderresponsivetype")), 'auto'); } protected function customSize() { } /** * @param ContainerRowGroup $rowGroup */ protected function desktopLandscape($rowGroup) { } /** * @param ContainerRowGroup $rowGroup */ protected function tabletLandscape($rowGroup) { } /** * @param ContainerRowGroup $rowGroup */ protected function tabletPortrait($rowGroup) { $row = $rowGroup->createRow('override-slider-size-tablet-portrait-row'); new OnOff($row, 'slider-size-override-tablet-portrait', n2_('Tablet'), 0, array( 'relatedFieldsOn' => array( 'slidertablet-portrait-width', 'slidertablet-portrait-height' ) )); new Number($row, 'tablet-portrait-width', n2_('Width'), 768, array( 'wide' => 5, 'unit' => 'px' )); new Number($row, 'tablet-portrait-height', n2_('Height'), 1024, array( 'wide' => 5, 'unit' => 'px' )); } /** * @param ContainerRowGroup $rowGroup */ protected function mobileLandscape($rowGroup) { } /** * @param ContainerRowGroup $rowGroup */ protected function mobilePortrait($rowGroup) { $row = $rowGroup->createRow('override-slider-size-mobile-portrait-row'); new OnOff($row, 'slider-size-override-mobile-portrait', n2_('Mobile'), 0, array( 'relatedFieldsOn' => array( 'slidermobile-portrait-width', 'slidermobile-portrait-height' ) )); new Number($row, 'mobile-portrait-width', n2_('Width'), 320, array( 'wide' => 5, 'unit' => 'px' )); new Number($row, 'mobile-portrait-height', n2_('Height'), 568, array( 'wide' => 5, 'unit' => 'px' )); } }