334 lines
12 KiB
PHP
334 lines
12 KiB
PHP
<?php
|
|
/**
|
|
* 2007-2015 Apollotheme
|
|
*
|
|
* NOTICE OF LICENSE
|
|
*
|
|
* ApPageBuilder is module help you can build content for your shop
|
|
*
|
|
* DISCLAIMER
|
|
*
|
|
* @author Apollotheme <apollotheme@gmail.com>
|
|
* @copyright 2007-2019 Apollotheme
|
|
* @license http://apollotheme.com - prestashop template provider
|
|
*/
|
|
|
|
if (!defined('_PS_VERSION_')) {
|
|
# module validation
|
|
exit;
|
|
}
|
|
|
|
class ApImage360 extends ApShortCodeBase
|
|
{
|
|
public $name = 'ApImage360';
|
|
public $for_module = 'manage';
|
|
|
|
public function getInfo()
|
|
{
|
|
return array('label' => $this->l('Image 360'), 'position' => 20, 'desc' => $this->l('Adds multiple 360 images, rotating display objects'),
|
|
'icon_class' => 'icon-image', 'tag' => 'content structure');
|
|
}
|
|
|
|
public function getConfigList()
|
|
{
|
|
$href = Context::getContext()->link->getAdminLink('AdminApPageBuilderImages').'&ajax=1&action=manageimage&imgDir=images&widget=ApImage360';
|
|
$inputs = array(
|
|
array(
|
|
'type' => 'text',
|
|
'name' => 'title',
|
|
'label' => $this->l('Title'),
|
|
'lang' => 'true',
|
|
'default' => '',
|
|
),
|
|
array(
|
|
'type' => 'textarea',
|
|
'name' => 'sub_title',
|
|
'label' => $this->l('Sub Title'),
|
|
'lang' => true,
|
|
'values' => '',
|
|
'autoload_rte' => false,
|
|
'default' => '',
|
|
),
|
|
array(
|
|
'type' => 'select',
|
|
'label' => $this->l('Spin'),
|
|
'name' => 'spin',
|
|
'options' => array(
|
|
'query' => array(
|
|
array('id' => 'drag', 'name' => $this->l('Drag')),
|
|
array('id' => 'hover', 'name' => $this->l('Hover')),
|
|
),
|
|
'id' => 'id',
|
|
'name' => 'name'
|
|
),
|
|
'desc' => $this->l('Method for spinning the image'),
|
|
),
|
|
array(
|
|
'type' => 'text',
|
|
'name' => 'speed',
|
|
'label' => $this->l('Speed'),
|
|
// 'lang' => 'true',
|
|
'default' => '50',
|
|
'desc' => $this->l('Mouse drag distance in pixels to next image (1 - 100). Ex 50'),
|
|
),
|
|
array(
|
|
'type' => 'text',
|
|
'name' => 'mousewheel_step',
|
|
'label' => $this->l('Mousewheel Step'),
|
|
// 'lang' => 'true',
|
|
'default' => '1',
|
|
'desc' => $this->l('Number of image to spin on mousewheel'),
|
|
),
|
|
array(
|
|
'type' => 'switch',
|
|
'label' => $this->l('Smoothing'),
|
|
'name' => 'smoothing',
|
|
'is_bool' => true,
|
|
'values' => ApPageSetting::returnYesNo(),
|
|
'default' => 1,
|
|
'desc' => $this->l('Smoothly stop the image spinning'),
|
|
),
|
|
array(
|
|
'type' => 'select',
|
|
'label' => $this->l('Initialization'),
|
|
'name' => 'initialize_on',
|
|
'options' => array(
|
|
'query' => array(
|
|
array('id' => 'hover', 'name' => $this->l('hover')),
|
|
array('id' => 'click', 'name' => $this->l('click')),
|
|
array('id' => 'load', 'name' => $this->l('load')),
|
|
),
|
|
'id' => 'id',
|
|
'name' => 'name'
|
|
),
|
|
'default' => 'load',
|
|
'desc' => $this->l('Start automatic spin on page load, click or hover'),
|
|
),
|
|
array(
|
|
'type' => 'select',
|
|
'label' => $this->l('Autospin duration'),
|
|
'name' => 'autospin',
|
|
'options' => array(
|
|
'query' => array(
|
|
array('id' => 'once', 'name' => $this->l('Once')),
|
|
array('id' => 'twice', 'name' => $this->l('Twice')),
|
|
array('id' => 'infinite', 'name' => $this->l('Infinite')),
|
|
array('id' => 'off', 'name' => $this->l('Off')),
|
|
),
|
|
'id' => 'id',
|
|
'name' => 'name'
|
|
),
|
|
// 'desc' => $this->l('Method for spinning the image'),
|
|
),
|
|
array(
|
|
'type' => 'select',
|
|
'label' => $this->l('Autospin start'),
|
|
'name' => 'autospin_start',
|
|
'options' => array(
|
|
'query' => array(
|
|
array('id' => 'load', 'name' => $this->l('load')),
|
|
array('id' => 'hover', 'name' => $this->l('hover')),
|
|
array('id' => 'click', 'name' => $this->l('click')),
|
|
array('id' => 'load,hover', 'name' => $this->l('load,hover')),
|
|
array('id' => 'load,click', 'name' => $this->l('load,click')),
|
|
),
|
|
'id' => 'id',
|
|
'name' => 'name'
|
|
),
|
|
'desc' => $this->l('Start automatic spin on page load, click or hover'),
|
|
),
|
|
array(
|
|
'type' => 'select',
|
|
'label' => $this->l('Autospin stops'),
|
|
'name' => 'autospin_stop',
|
|
'options' => array(
|
|
'query' => array(
|
|
array('id' => 'hover', 'name' => $this->l('hover')),
|
|
array('id' => 'click', 'name' => $this->l('click')),
|
|
array('id' => 'never', 'name' => $this->l('never')),
|
|
),
|
|
'id' => 'id',
|
|
'name' => 'name'
|
|
),
|
|
'desc' => $this->l('Start automatic spin on page load, click or hover'),
|
|
),
|
|
array(
|
|
'type' => 'text',
|
|
'name' => 'autospin_speed',
|
|
'label' => $this->l('Autospin Time'),
|
|
// 'lang' => 'true',
|
|
'default' => '2000',
|
|
'desc' => $this->l('Value is milisecond. Ex 2000 (2s)'),
|
|
),
|
|
array(
|
|
'type' => 'select',
|
|
'label' => $this->l('Autospin direction'),
|
|
'name' => 'autospin_direction',
|
|
'options' => array(
|
|
'query' => array(
|
|
array('id' => 'clockwise', 'name' => $this->l('Clockwise')),
|
|
array('id' => 'anticlockwise', 'name' => $this->l('Anticlockwise')),
|
|
array('id' => 'alternate-clockwise', 'name' => $this->l('Alternate Clockwise')),
|
|
array('id' => 'alternate-anticlockwise', 'name' => $this->l('Alternate Anticlockwise')),
|
|
),
|
|
'id' => 'id',
|
|
'name' => 'name'
|
|
),
|
|
'desc' => $this->l('Method for spinning the image'),
|
|
),
|
|
array(
|
|
'type' => 'text',
|
|
'name' => 'start_column',
|
|
'label' => $this->l('Start Column'),
|
|
'default' => '1',
|
|
'desc' => $this->l('Column from which to start spin. auto means to start from the middle'),
|
|
),
|
|
array(
|
|
'type' => 'switch',
|
|
'label' => $this->l('Loop Column'),
|
|
'name' => 'loop_column',
|
|
'is_bool' => true,
|
|
'values' => ApPageSetting::returnYesNo(),
|
|
'default' => 1,
|
|
'desc' => $this->l('Continue spin after the last image on X-axis'),
|
|
),
|
|
array(
|
|
'type' => 'switch',
|
|
'label' => $this->l('Reverse rotation on X-axis'),
|
|
'name' => 'reverse_column',
|
|
'is_bool' => true,
|
|
'values' => ApPageSetting::returnYesNo(),
|
|
'default' => 0,
|
|
),
|
|
array(
|
|
'type' => 'text',
|
|
'name' => 'message',
|
|
'label' => $this->l('Message under image'),
|
|
'default' => 'Drag image to spin',
|
|
'lang' => true,
|
|
),
|
|
array(
|
|
'type' => 'switch',
|
|
'label' => $this->l('Show hint message'),
|
|
'name' => 'hint',
|
|
'is_bool' => true,
|
|
'values' => ApPageSetting::returnYesNo(),
|
|
'default' => 1,
|
|
),
|
|
array(
|
|
'type' => 'text',
|
|
'name' => 'message_desktop_hint',
|
|
'label' => $this->l('Message Desktop Hint'),
|
|
'default' => 'Drag to spin',
|
|
'lang' => true,
|
|
'desc' => $this->l('Text of the hint on Desktop'),
|
|
),
|
|
array(
|
|
'type' => 'text',
|
|
'name' => 'message_mobile_hint',
|
|
'label' => $this->l('Message Mobile Hint'),
|
|
'default' => 'Swipe to spin',
|
|
'lang' => true,
|
|
'desc' => $this->l('Text of the hint on iOS/Android devices'),
|
|
),
|
|
array(
|
|
'type' => 'hidden',
|
|
'name' => 'total_slider',
|
|
'default' => '',
|
|
),
|
|
array(
|
|
'label' => $this->l('Image Url (not image base 64 code)'),
|
|
'type' => 'image_url_360',
|
|
'name' => 'image_url_360',
|
|
'lang' => false,
|
|
'class' => 'image_url_360',
|
|
'show_image' => false,
|
|
),
|
|
array(
|
|
'label' => $this->l('Image'),
|
|
'type' => 'selectImg',
|
|
'href' => $href,
|
|
'name' => 'image_360',
|
|
'lang' => false,
|
|
'class' => 'item-add-slide ignore-lang',
|
|
'form_group_class' => 'apfullslider-row select-img',
|
|
'show_image' => false,
|
|
)
|
|
);
|
|
return $inputs;
|
|
}
|
|
|
|
public function endRenderForm()
|
|
{
|
|
$this->helper->module = new $this->module_name();
|
|
}
|
|
|
|
/**
|
|
* Widget can override this method and add more config at here
|
|
*/
|
|
public function addConfigList($values)
|
|
{
|
|
// Get value with keys special
|
|
$config_val = array();
|
|
$total = isset($values['total_slider']) ? $values['total_slider'] : '';
|
|
|
|
$arr = explode('|', $total);
|
|
$inputs = array('image360');
|
|
// $languages = Language::getLanguages(false);
|
|
foreach ($arr as $i) {
|
|
foreach ($inputs as $config) {
|
|
$config_val[$config][$i] = str_replace($this->str_search, $this->str_relace_html_admin, Tools::getValue($config.'_'.$i, ''));
|
|
}
|
|
}
|
|
|
|
Context::getContext()->smarty->assign(array(
|
|
'arr' => $arr,
|
|
'config_val' => $config_val,
|
|
'image_folder' => apPageHelper::getImgThemeUrl(),
|
|
));
|
|
$list_slider = Context::getContext()->smarty->fetch(apPageHelper::getShortcodeTemplatePath('ApImage360.tpl'));
|
|
$input = array(
|
|
'type' => 'html',
|
|
'name' => 'default_html',
|
|
'html_content' => $list_slider
|
|
);
|
|
$this->config_list[] = $input;
|
|
}
|
|
|
|
public function prepareFontContent($assign, $module = null)
|
|
{
|
|
// validate module
|
|
unset($module);
|
|
|
|
if (!Configuration::get('APPAGEBUILDER_LOAD_IMAGE360')) {
|
|
$assign['formAtts']['lib_has_error'] = true;
|
|
$assign['formAtts']['lib_error'] = 'Please enable Magic360 library in Appagebuilder Configuration.';
|
|
return $assign;
|
|
}
|
|
|
|
$total_slider = isset($assign['formAtts']['total_slider']) ? $assign['formAtts']['total_slider'] : '';
|
|
$list = explode('|', $total_slider);
|
|
|
|
|
|
$image_list = array();
|
|
$image_path = apPageHelper::getImgThemeUrl();
|
|
|
|
foreach ($list as $item) {
|
|
if (isset($assign['formAtts']['image360_'.$item])) {
|
|
$image_list[] = $assign['formAtts']['image360_'.$item];
|
|
}
|
|
}
|
|
|
|
$assign['formAtts']['image_path'] = $image_path;
|
|
$assign['formAtts']['columns'] = count($list);
|
|
$assign['formAtts']['row'] = 1;
|
|
$assign['formAtts']['image_list'] = $image_list;
|
|
|
|
// IMAGE DEFAULT
|
|
$min_key = min(array_keys($image_list));
|
|
$assign['formAtts']['image_default'] = $image_list[$min_key];
|
|
|
|
return $assign;
|
|
}
|
|
}
|