* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ if (!defined('_PS_VERSION_')) { exit; } class AdminStEasyVideoGalleryController extends ModuleAdminController { protected $contr = ''; public function __construct() { $this->bootstrap = true; parent::__construct(); $image_types_arr = array( array('id' => '','name' => $this->l('Use the predefined value.'),) ); $imagesTypes = ImageType::getImagesTypes('products'); foreach ($imagesTypes as $k => $imageType) { if (Tools::substr($imageType['name'], -3) == '_2x') { continue; } $image_types_arr[] = array('id' => $imageType['name'], 'name' => $imageType['name'].'('.$imageType['width'].'x'.$imageType['height'].')'); } $selector_desc = $this->contr == 'QUICKVIEW' ? $this->l('In most cases, selectors in quickview should start with .modal.quickview') : ($this->contr == 'DESKTOP' ? $this->l('In most cases, selectors start with .page-product:not(.modal-open) to avoid conflict with selectors in quickview window.') : ''); $play_icon_fields = $this->module->getButtonFiledsOptions('PLAY_ICON'); unset($play_icon_fields[$this->module->_prefix_st.'PLAY_ICON_BTN_HOVER_COLOR_'.$this->contr], $play_icon_fields[$this->module->_prefix_st.'PLAY_ICON_BTN_HOVER_BG_'.$this->contr]); $this->fields_options = array( 'general' => array( 'title' => $this->l('General Settings'), 'icon' => 'icon-cogs', 'fields' => array( $this->module->_prefix_st.'GALLERY_DISPLAY_'.$this->contr => array( 'type' => 'radio', 'title' => $this->l('How to display vidoes'), 'validation' => 'isUnsignedInt', 'choices' => array( 0 => $this->l('No'), 1 => $this->l('Buttons'), 2 => $this->l('Videos'), 3 => $this->l('Add videos to a slider'), 4 => $this->l('Add buttons to a thumbnail slider, videos show out when the buttons are clicked'), 5 => $this->l('Add videos to a slider, add buttons to a synchronized thumbnail slider'), 6 => $this->l('Videos, add buttons to a thumbnail slider.'),// panda transformer gallery image scrolling 7 => $this->l('A button on the first image, and a video icon on the first item of thumbnail slider'), ), ), $this->module->_prefix_st.'GALLERY_VIDEO_SELECTOR_'.$this->contr => array( 'type' => 'text', 'title' => $this->l('Video selector'), 'validation' => 'isAnything', 'desc' => $selector_desc, ), $this->module->_prefix_st.'GALLERY_VIDEO_APPEND_'.$this->contr => [ 'title' => $this->l('How to add'), 'cast' => 'intval', 'type' => 'select', 'identifier' => 'id', 'list' => $this->module::$_appends, ], $this->module->_prefix_st.'GALLERY_VIDEO_POSITION_'.$this->contr => [ 'type' => 'radio', 'cast' => 'intval', 'title' => $this->l('How to video player'), 'validation' => 'isUnsignedInt', 'choices' => array( 0 => $this->l('Display on an element (Position: absolute)'), 1 => $this->l('Normal document flow (Position: static)'), ), ], $this->module->_prefix_st.'GALLERY_BUTTON_SELECTOR_'.$this->contr => array( 'type' => 'text', 'title' => $this->l('Button selector'), 'validation' => 'isAnything', 'desc' => $selector_desc, ), $this->module->_prefix_st.'GALLERY_BUTTON_APPEND_'.$this->contr => [ 'title' => $this->l('How to add'), 'cast' => 'intval', 'type' => 'select', 'identifier' => 'id', 'list' => $this->module::$_appends, ], $this->module->_prefix_st.'GALLERY_BUTTON_POSITION_'.$this->contr => [ 'type' => 'radio', 'cast' => 'intval', 'title' => $this->l('How to display buttons'), 'validation' => 'isUnsignedInt', 'choices' => array( 0 => $this->l('Display on an element (Position: absolute)'), 1 => $this->l('Normal document flow (Position: static)'), ), ], $this->module->_prefix_st.'GALLERY_BUTTON_LAYOUT_'.$this->contr => array( 'type' => 'radio', 'cast' => 'intval', 'title' => $this->l('Play button layout'), 'validation' => 'isUnsignedInt', 'choices' => array( 0 => $this->l('Icon'), 1 => $this->l('Text'), 2 => $this->l('Icon + text horizontally'), 3 => $this->l('Icon + text vertically'), ), ), $this->module->_prefix_st.'GALLERY_BUTTON_HIDE_'.$this->contr => array( 'title' => $this->l('Hide the play button when videos start play'), 'validation' => 'isBool', 'type' => 'bool', 'is_bool' => true, ), $this->module->_prefix_st.'GALLERY_TYPE_'.$this->contr => array( 'type' => 'radio', 'title' => $this->l('Slider'), 'validation' => 'isUnsignedInt', 'choices' => array( 0 => $this->l('Use the predefined value.'), 1 => $this->l('Swiper'), 2 => $this->l('Slick slider'), 3 => $this->l('Owl carrousel 2'), 4 => $this->l('Owl carrousel 1'), // 5 => $this->l('PrestaShop classic theme - Scrollbox'), ), 'desc' => $this->l('Select the first option if you are using one of these themes: Classic theme, Panda theme, Transformer theme and Warehouse theme.'), ), $this->module->_prefix_st.'GALLERY_SLIDER_APPEND_'.$this->contr => [ 'title' => $this->l('How to add'), 'cast' => 'intval', 'type' => 'select', 'identifier' => 'id', 'list' => array( 0 => array( 'id' => 0, 'name' => '1', ), 1 => array( 'id' => 1, 'name' => '2', ), 2 => array( 'id' => 2, 'name' => '3', ), 100 => array( 'id' => 100, 'name' => 'End', ), ), ], $this->module->_prefix_st.'GALLERY_SLIDER_SELECTOR_'.$this->contr => array( 'type' => 'text', 'title' => $this->l('Gallery selector'), 'validation' => 'isAnything', 'desc' => $this->l('Leave it empty to use the predefined value.').$selector_desc, ), $this->module->_prefix_st.'GALLERY_THUMBNAIL_TYPE_'.$this->contr => array( 'type' => 'radio', 'title' => $this->l('Thumbnail slider'), 'validation' => 'isUnsignedInt', 'choices' => array( 0 => $this->l('Use the predefined value.'), 1 => $this->l('Swiper'), 2 => $this->l('Slick slider'), 3 => $this->l('Owl carrousel 2'), 4 => $this->l('Owl carrousel 1'), 5 => $this->l('PrestaShop classic theme - Scrollbox'), ), 'desc' => $this->l('Select the first option if you are using one of these themes: Classic theme, Panda theme, Transformer theme and Warehouse theme.'), ), $this->module->_prefix_st.'GALLERY_THUMBNAIL_APPEND_'.$this->contr => [ 'title' => $this->l('How to add'), 'cast' => 'intval', 'type' => 'select', 'identifier' => 'id', 'list' => array( 0 => array( 'id' => 0, 'name' => '1', ), 1 => array( 'id' => 1, 'name' => '2', ), 2 => array( 'id' => 2, 'name' => '3', ), 100 => array( 'id' => 100, 'name' => 'End', ), ), ], $this->module->_prefix_st.'GALLERY_THUMBNAIL_SELECTOR_'.$this->contr => array( 'type' => 'text', 'title' => $this->l('Thumbnail selector'), 'validation' => 'isAnything', 'desc' => $this->l('Leave it empty to use the predefined value.').$selector_desc, ), $this->module->_prefix_st.'GALLERY_THUMBNAIL_ITEM_SELECTOR_'.$this->contr => array( 'type' => 'text', 'title' => $this->l('Thumbnail item selector'), 'validation' => 'isAnything', 'desc' => $this->l('Leave it empty to use the predefined value.').$selector_desc, ), $this->module->_prefix_st.'GALLERY_CLOSE_VIDEO_'.$this->contr => array( 'type' => 'radio', 'cast' => 'intval', 'title' => $this->l('Close video'), 'validation' => 'isUnsignedInt', 'choices' => array( 0 => $this->l('Default'), 1 => $this->l('When a thumbnail item is clicked.'), 2 => $this->l('When a thumbnail item is on hover.'), ), ), $this->module->_prefix_st.'GALLERY_VIDEO_TEMPLATE_'.$this->contr => [ 'title' => $this->l('Video template'), 'validation' => 'isAnything', 'type' => 'textarea', 'cols' => 30, 'rows' => 5, 'desc' => array( $this->l('They are four variables you can use: @placeholder_url@, @placeholder_width@, @placeholder_height@, and @thumbnail_url@.'), $this->l('Disable the "Use HTMLPurifier Library" setting on the "BO>Preferences>General" page, otherwise the value won\'t be saved.'), ), ], $this->module->_prefix_st.'GALLERY_VIDEO_IMAGE_TYPE_'.$this->contr => [ 'title' => $this->l('Placeholder image for videos'), 'validation' => 'isAnything', 'required' => false, 'type' => 'select', 'list' => $image_types_arr, 'identifier' => 'id', ], $this->module->_prefix_st.'GALLERY_BUTTON_TEMPLATE_'.$this->contr => [ 'title' => $this->l('Button template'), 'validation' => 'isAnything', 'type' => 'textarea', 'cols' => 30, 'rows' => 5, 'desc' => array( $this->l('They are four variables you can use: @placeholder_url@, @placeholder_width@, @placeholder_height@, and @thumbnail_url@.'), $this->l('Disable the "Use HTMLPurifier Library" setting on the "BO>Preferences>General" page, otherwise the value won\'t be saved.'), ), ], $this->module->_prefix_st.'GALLERY_BUTTON_IMAGE_TYPE_'.$this->contr => [ 'title' => $this->l('Placeholder image for buttons'), 'validation' => 'isAnything', 'required' => false, 'type' => 'select', 'list' => $image_types_arr, 'identifier' => 'id', ], ), 'submit' => array('title' => $this->l('Save all')), ), 'player' => array( 'title' => $this->l('Player'), 'icon' => 'icon-cogs', 'fields' => array( $this->module->_prefix_st.'GALLERY_AUTOPLAY_'.$this->contr => array( 'title' => $this->l('Autoplay'), 'validation' => 'isBool', 'type' => 'bool', 'is_bool' => true, 'desc' => $this->l('When videos are displayed in video palyers'), ), $this->module->_prefix_st.'GALLERY_MUTED_'.$this->contr => array( 'title' => $this->l('Muted'), 'validation' => 'isBool', 'type' => 'bool', 'is_bool' => true, 'desc' => $this->l('Only muted videos can be autoplay'), ), $this->module->_prefix_st.'GALLERY_LOOP_'.$this->contr => array( 'title' => $this->l('Loop'), 'validation' => 'isBool', 'type' => 'bool', 'is_bool' => true, ), $this->module->_prefix_st.'GALLERY_CONTROLS_'.$this->contr => array( 'title' => $this->l('Show controls'), 'validation' => 'isBool', 'type' => 'bool', 'is_bool' => true, ), ), 'submit' => array('title' => $this->l('Save all')), ), 'player_style' => array( 'title' => $this->l('Player style'), 'icon' => 'icon-cogs', 'fields' => array( $this->module->_prefix_st.'GALLERY_PLAYER_BG_'.$this->contr => [ 'title' => $this->l('Color'), 'validation' => 'isColor', 'type' => 'color', 'size' => 5, 'name' => $this->module->_prefix_st.'GALLERY_PLAYER_BG_'.$this->contr, ], $this->module->_prefix_st.'GALLERY_VIDEO_ZINDEX_'.$this->contr => [ 'title' => $this->l('Z-index'), 'validation' => 'isUnsignedId', 'required' => false, 'cast' => 'intval', 'type' => 'text', ], ), 'submit' => array('title' => $this->l('Save all')), ), 'button_style' => array( 'title' => $this->l('Play button style'), 'icon' => 'icon-cogs', 'fields' => array( $this->module->_prefix_st.'GALLERY_PLAY_BTN_POSITION_'.$this->contr => [ 'type' => 'radio', 'cast' => 'intval', 'title' => $this->l('Position'), 'validation' => 'isUnsignedInt', 'choices' => array( 0 => $this->l('Center'), 1 => $this->l('Top left'), 2 => $this->l('Top right'), 3 => $this->l('Bottom right'), 4 => $this->l('Bottom left'), ), ], $this->module->_prefix_st.'GALLERY_PLAY_BTN_OFFSET_X_'.$this->contr => [ 'title' => $this->l('Offset x'), 'validation' => 'isUnsignedInt', 'cast' => 'intval', 'type' => 'text', 'suffix' => $this->l('pixels'), ], $this->module->_prefix_st.'GALLERY_PLAY_BTN_OFFSET_Y_'.$this->contr => [ 'title' => $this->l('Offset y'), 'validation' => 'isUnsignedInt', 'cast' => 'intval', 'type' => 'text', 'suffix' => $this->l('pixels'), ], ) + $this->module->getButtonFiledsOptions('GALLERY_PLAY', '_'.$this->contr) + array( $this->module->_prefix_st.'GALLERY_PLAY_TEXT_COLOR_'.$this->contr => [ 'title' => $this->l('Play" text color'), 'validation' => 'isColor', 'type' => 'color', 'size' => 5, 'name' => $this->module->_prefix_st.'GALLERY_PLAY_TEXT_COLOR_'.$this->contr, ], $this->module->_prefix_st.'GALLERY_PLAY_TEXT_BG_'.$this->contr => [ 'title' => $this->l('Play" text background'), 'validation' => 'isColor', 'type' => 'color', 'size' => 5, 'name' => $this->module->_prefix_st.'GALLERY_PLAY_TEXT_BG_'.$this->contr, ], ), 'submit' => array('title' => $this->l('Save all')), ), 'close_style' => array( 'title' => $this->l('Close button style'), 'icon' => 'icon-cogs', 'fields' => array( $this->module->_prefix_st.'GALLERY_CLOSE_BTN_POSITION_'.$this->contr => [ 'type' => 'radio', 'cast' => 'intval', 'title' => $this->l('Position'), 'validation' => 'isUnsignedInt', 'choices' => array( 0 => $this->l('Center'), 1 => $this->l('Top left'), 2 => $this->l('Top right'), 3 => $this->l('Bottom right'), 4 => $this->l('Bottom left'), ), ], $this->module->_prefix_st.'GALLERY_CLOSE_BTN_OFFSET_X_'.$this->contr => [ 'title' => $this->l('Offset x'), 'validation' => 'isUnsignedInt', 'cast' => 'intval', 'type' => 'text', 'suffix' => $this->l('pixels'), ], $this->module->_prefix_st.'GALLERY_CLOSE_BTN_OFFSET_Y_'.$this->contr => [ 'title' => $this->l('Offset y'), 'validation' => 'isUnsignedInt', 'cast' => 'intval', 'type' => 'text', 'suffix' => $this->l('pixels'), ], ) + $this->module->getButtonFiledsOptions('GALLERY_CLOSE', '_'.$this->contr), 'submit' => array('title' => $this->l('Save all')), ), 'play_icon_style' => array( 'title' => $this->l('Play icon style'), 'icon' => 'icon-cogs', 'fields' => $play_icon_fields, 'submit' => array('title' => $this->l('Save all')), ), ); } public function postProcess() { parent::postProcess(); } public function setMedia($isNewTheme = false) { parent::setMedia($isNewTheme); $this->addCss(_MODULE_DIR_.$this->module->name.'/views/css/admin.css'); $this->addJs(_MODULE_DIR_.$this->module->name.'/views/js/admin.js?108'); } }