* @copyright 2007-2014 PrestaShop SA
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
if (!defined('_PS_VERSION_'))
exit;
use PrestaShop\PrestaShop\Core\Module\WidgetInterface;
class StFbLikeBox extends Module implements WidgetInterface
{
private $_html = '';
private $_prefix_st = 'ST_FB_LB_';
public $fields_form;
public $fields_value;
public $validation_errors = array();
public static $locale = array(
array('id'=>'ca_ES', 'name'=>'Catalan'),
array('id'=>'cs_CZ', 'name'=>'Czech'),
array('id'=>'cy_GB', 'name'=>'Welsh'),
array('id'=>'da_DK', 'name'=>'Danish'),
array('id'=>'de_DE', 'name'=>'German'),
array('id'=>'eu_ES', 'name'=>'Basque'),
array('id'=>'en_PI', 'name'=>'English (Pirate)'),
array('id'=>'en_UD', 'name'=>'English (Upside Down)'),
array('id'=>'ck_US', 'name'=>'Cherokee'),
array('id'=>'es_LA', 'name'=>'Spanish'),
array('id'=>'es_CL', 'name'=>'Spanish (Chile)'),
array('id'=>'es_CO', 'name'=>'Spanish (Colombia)'),
array('id'=>'es_ES', 'name'=>'Spanish (Spain)'),
array('id'=>'es_MX', 'name'=>'Spanish (Mexico)'),
array('id'=>'es_VE', 'name'=>'Spanish (Venezuela)'),
array('id'=>'fb_FI', 'name'=>'Finnish (test)'),
array('id'=>'fi_FI', 'name'=>'Finnish'),
array('id'=>'fr_FR', 'name'=>'French (France)'),
array('id'=>'gl_ES', 'name'=>'Galician'),
array('id'=>'hu_HU', 'name'=>'Hungarian'),
array('id'=>'it_IT', 'name'=>'Italian'),
array('id'=>'ja_JP', 'name'=>'Japanese'),
array('id'=>'ko_KR', 'name'=>'Korean'),
array('id'=>'nb_NO', 'name'=>'Norwegian (bokmal)'),
array('id'=>'nn_NO', 'name'=>'Norwegian (nynorsk)'),
array('id'=>'nl_NL', 'name'=>'Dutch'),
array('id'=>'pl_PL', 'name'=>'Polish'),
array('id'=>'pt_BR', 'name'=>'Portuguese (Brazil)'),
array('id'=>'pt_PT', 'name'=>'Portuguese (Portugal)'),
array('id'=>'ro_RO', 'name'=>'Romanian'),
array('id'=>'ru_RU', 'name'=>'Russian'),
array('id'=>'sk_SK', 'name'=>'Slovak'),
array('id'=>'sl_SI', 'name'=>'Slovenian'),
array('id'=>'sv_SE', 'name'=>'Swedish'),
array('id'=>'th_TH', 'name'=>'Thai'),
array('id'=>'tr_TR', 'name'=>'Turkish'),
array('id'=>'ku_TR', 'name'=>'Kurdish'),
array('id'=>'zh_CN', 'name'=>'Simplified Chinese (China)'),
array('id'=>'zh_HK', 'name'=>'Traditional Chinese (Hong Kong)'),
array('id'=>'zh_TW', 'name'=>'Traditional Chinese (Taiwan)'),
array('id'=>'fb_LT', 'name'=>'Leet Speak'),
array('id'=>'af_ZA', 'name'=>'Afrikaans'),
array('id'=>'sq_AL', 'name'=>'Albanian'),
array('id'=>'hy_AM', 'name'=>'Armenian'),
array('id'=>'az_AZ', 'name'=>'Azeri'),
array('id'=>'be_BY', 'name'=>'Belarusian'),
array('id'=>'bn_IN', 'name'=>'Bengali'),
array('id'=>'bs_BA', 'name'=>'Bosnian'),
array('id'=>'bg_BG', 'name'=>'Bulgarian'),
array('id'=>'hr_HR', 'name'=>'Croatian'),
array('id'=>'nl_BE', 'name'=>'Dutch (België)'),
array('id'=>'en_GB', 'name'=>'English (UK)'),
array('id'=>'eo_EO', 'name'=>'Esperanto'),
array('id'=>'et_EE', 'name'=>'Estonian'),
array('id'=>'fo_FO', 'name'=>'Faroese'),
array('id'=>'fr_CA', 'name'=>'French (Canada)'),
array('id'=>'ka_GE', 'name'=>'Georgian'),
array('id'=>'el_GR', 'name'=>'Greek'),
array('id'=>'gu_IN', 'name'=>'Gujarati'),
array('id'=>'hi_IN', 'name'=>'Hindi'),
array('id'=>'is_IS', 'name'=>'Icelandic'),
array('id'=>'id_ID', 'name'=>'Indonesian'),
array('id'=>'ga_IE', 'name'=>'Irish'),
array('id'=>'jv_ID', 'name'=>'Javanese'),
array('id'=>'kn_IN', 'name'=>'Kannada'),
array('id'=>'kk_KZ', 'name'=>'Kazakh'),
array('id'=>'la_VA', 'name'=>'Latin'),
array('id'=>'lv_LV', 'name'=>'Latvian'),
array('id'=>'li_NL', 'name'=>'Limburgish'),
array('id'=>'lt_LT', 'name'=>'Lithuanian'),
array('id'=>'mk_MK', 'name'=>'Macedonian'),
array('id'=>'mg_MG', 'name'=>'Malagasy'),
array('id'=>'ms_MY', 'name'=>'Malay'),
array('id'=>'mt_MT', 'name'=>'Maltese'),
array('id'=>'mr_IN', 'name'=>'Marathi'),
array('id'=>'mn_MN', 'name'=>'Mongolian'),
array('id'=>'ne_NP', 'name'=>'Nepali'),
array('id'=>'pa_IN', 'name'=>'Punjabi'),
array('id'=>'rm_CH', 'name'=>'Romansh'),
array('id'=>'sa_IN', 'name'=>'Sanskrit'),
array('id'=>'sr_RS', 'name'=>'Serbian'),
array('id'=>'so_SO', 'name'=>'Somali'),
array('id'=>'sw_KE', 'name'=>'Swahili'),
array('id'=>'tl_PH', 'name'=>'Filipino'),
array('id'=>'ta_IN', 'name'=>'Tamil'),
array('id'=>'tt_RU', 'name'=>'Tatar'),
array('id'=>'te_IN', 'name'=>'Telugu'),
array('id'=>'ml_IN', 'name'=>'Malayalam'),
array('id'=>'uk_UA', 'name'=>'Ukrainian'),
array('id'=>'uz_UZ', 'name'=>'Uzbek'),
array('id'=>'vi_VN', 'name'=>'Vietnamese'),
array('id'=>'xh_ZA', 'name'=>'Xhosa'),
array('id'=>'zu_ZA', 'name'=>'Zulu'),
array('id'=>'km_KH', 'name'=>'Khmer'),
array('id'=>'tg_TJ', 'name'=>'Tajik'),
array('id'=>'ar_AR', 'name'=>'Arabic'),
array('id'=>'he_IL', 'name'=>'Hebrew'),
array('id'=>'ur_PK', 'name'=>'Urdu'),
array('id'=>'fa_IR', 'name'=>'Persian'),
array('id'=>'sy_SY', 'name'=>'Syriac'),
array('id'=>'yi_DE', 'name'=>'Yiddish'),
array('id'=>'gn_PY', 'name'=>'Guaraní'),
array('id'=>'qu_PE', 'name'=>'Quechua'),
array('id'=>'ay_BO', 'name'=>'Aymara'),
array('id'=>'se_NO', 'name'=>'Northern Sámi'),
array('id'=>'ps_AF', 'name'=>'Pashto'),
array('id'=>'tl_ST', 'name'=>'Klingon'),
);
public static $wide_map = array(
array('id'=>'1', 'name'=>'1/12'),
array('id'=>'1-2', 'name'=>'1.2/12'),
array('id'=>'1-5', 'name'=>'1.5/12'),
array('id'=>'2', 'name'=>'2/12'),
array('id'=>'2-4', 'name'=>'2.4/12'),
array('id'=>'3', 'name'=>'3/12'),
array('id'=>'4', 'name'=>'4/12'),
array('id'=>'5', 'name'=>'5/12'),
array('id'=>'6', 'name'=>'6/12'),
array('id'=>'7', 'name'=>'7/12'),
array('id'=>'8', 'name'=>'8/12'),
array('id'=>'9', 'name'=>'9/12'),
array('id'=>'10', 'name'=>'10/12'),
array('id'=>'11', 'name'=>'11/12'),
array('id'=>'12', 'name'=>'12/12'),
);
private $_hooks = array();
private $templateFile = array();
public $vc_hooks;
public function __construct()
{
$this->name = 'stfblikebox';
$this->tab = 'front_office_features';
$this->version = '1.0.7';
$this->author = 'SUNNYTOO.COM';
$this->need_instance = 0;
$this->bootstrap = true;
parent::__construct();
$this->initHookArray();
$this->displayName = $this->getTranslator()->trans('Facebook page plugin', array(), 'Modules.Stfblikebox.Admin');
$this->description = $this->getTranslator()->trans('Adds a Facebook social plugin Like Box', array(), 'Modules.Stfblikebox.Admin');
$this->ps_versions_compliancy = array('min' => '1.7', 'max' => _PS_VERSION_);
$this->templateFile = array(
'module:stfblikebox/views/templates/hook/stfblikebox.tpl',
'module:stfblikebox/views/templates/hook/stfblikebox-footer.tpl'
);
$this->vc_hooks = array(
'Block' => 'displayLeftColumn',
'Footer block' => 'displayStackedFooter1',
);
}
public function install()
{
if (!parent::install()
|| !$this->registerHook('vcBeforeInit')
//|| !$this->registerHook('displayFooter')
|| !Configuration::updateValue($this->_prefix_st.'URL', 'https://www.facebook.com/envato')
|| !Configuration::updateValue($this->_prefix_st.'HEIGHT', 200)
|| !Configuration::updateValue($this->_prefix_st.'FACE', 1)
|| !Configuration::updateValue($this->_prefix_st.'STREAM', 1)
|| !Configuration::updateValue($this->_prefix_st.'LOCALE', 'en_US')
|| !Configuration::updateValue($this->_prefix_st.'WIDE_ON_FOOTER', 3)
|| !Configuration::updateValue($this->_prefix_st.'HIDE_COVER', 0)
|| !Configuration::updateValue($this->_prefix_st.'SMALL_HEADER', 1)
|| !Configuration::updateValue($this->_prefix_st.'HIDE_ON_MOBILE', 0)
)
return false;
return true;
}
private function initHookArray()
{
$this->_hooks = array(
'Column' => array(
array(
'id' => 'displayLeftColumn',
'val' => '1',
'name' => $this->getTranslator()->trans('Left column except the produt page', array(), 'Admin.Theme.Panda')
),
array(
'id' => 'displayRightColumn',
'val' => '1',
'name' => $this->getTranslator()->trans('Right column except the produt page', array(), 'Admin.Theme.Panda')
),
array(
'id' => 'displayLeftColumnProduct',
'val' => '1',
'name' => $this->getTranslator()->trans('Left column on the product page only', array(), 'Admin.Theme.Panda')
),
array(
'id' => 'displayRightColumnProduct',
'val' => '1',
'name' => $this->getTranslator()->trans('Right column on the product page only', array(), 'Admin.Theme.Panda')
),
array(
'id' => 'displayProductRightColumn',
'val' => '1',
'name' => $this->getTranslator()->trans('Product right column', array(), 'Admin.Theme.Panda')
),
array(
'id' => 'displayHomeFirstQuarter',
'val' => '1',
'name' => $this->getTranslator()->trans('displayHomeFirstQuarter', array(), 'Admin.Theme.Panda')
),
array(
'id' => 'displayHomeSecondQuarter',
'val' => '1',
'name' => $this->getTranslator()->trans('displayHomeSecondQuarter', array(), 'Admin.Theme.Panda')
),
array(
'id' => 'displayHomeThirdQuarter',
'val' => '1',
'name' => $this->getTranslator()->trans('displayHomeThirdQuarter', array(), 'Admin.Theme.Panda')
),
array(
'id' => 'displayHomeFourthQuarter',
'val' => '1',
'name' => $this->getTranslator()->trans('displayHomeFourthQuarter', array(), 'Admin.Theme.Panda')
),
),
'Footer' => array(
array(
'id' => 'displayStackedFooter1',
'val' => '1',
'name' => $this->getTranslator()->trans('Stacked footer 1', array(), 'Admin.Theme.Panda'),
'is_stacked_footer'=>1,
),
array(
'id' => 'displayStackedFooter2',
'val' => '1',
'name' => $this->getTranslator()->trans('Stacked footer 2', array(), 'Admin.Theme.Panda'),
'is_stacked_footer'=>1,
),
array(
'id' => 'displayStackedFooter3',
'val' => '1',
'name' => $this->getTranslator()->trans('Stacked footer 3', array(), 'Admin.Theme.Panda'),
'is_stacked_footer'=>1,
),
array(
'id' => 'displayStackedFooter4',
'val' => '1',
'name' => $this->getTranslator()->trans('Stacked footer 4', array(), 'Admin.Theme.Panda'),
'is_stacked_footer'=>1,
),
array(
'id' => 'displayStackedFooter5',
'val' => '1',
'name' => $this->getTranslator()->trans('Stacked footer 5', array(), 'Admin.Theme.Panda'),
'is_stacked_footer'=>1,
),
array(
'id' => 'displayStackedFooter6',
'val' => '1',
'name' => $this->getTranslator()->trans('Stacked footer 6', array(), 'Admin.Theme.Panda'),
'is_stacked_footer'=>1,
),
array(
'id' => 'displayFooter',
'val' => '1',
'name' => $this->getTranslator()->trans('displayFooter', array(), 'Admin.Theme.Panda')
),
array(
'id' => 'displayFooterAfter',
'val' => '1',
'name' => $this->getTranslator()->trans('displayFooterAfter', array(), 'Admin.Theme.Panda')
),
)
);
}
private function saveHook()
{
foreach($this->_hooks AS $key => $values)
{
if (!$key)
continue;
foreach($values AS $value)
{
$val = (int)Tools::getValue($key.'_'.$value['id']);
$this->_processHook($key, $value['id'], $val);
if (isset($value['ref']) && $value['ref'])
$this->_processHook($key, $value['ref'], $val);
}
}
// clear module cache to apply new data.
Cache::clean('hook_module_list');
}
private function _processHook($key='', $hook='', $value=1)
{
if (!$key || !$hook)
return false;
$rs = true;
$id_hook = Hook::getIdByName($hook);
if ($value)
{
if ($id_hook && Hook::getModulesFromHook($id_hook, $this->id))
return $rs;
if (!$this->isHookableOn($hook))
$this->validation_errors[] = $this->getTranslator()->trans('This module cannot be transplanted to ', array(), 'Admin.Theme.Panda').$hook;
else
$rs = $this->registerHook($hook, Shop::getContextListShopID());
}
else
{
if($id_hook && Hook::getModulesFromHook($id_hook, $this->id))
{
$rs = $this->unregisterHook($id_hook, Shop::getContextListShopID());
$rs &= $this->unregisterExceptions($id_hook, Shop::getContextListShopID());
}
}
return $rs;
}
public function getContent()
{
$this->initFieldsForm();
if (isset($_POST['savestfblikebox']))
{
foreach($this->fields_form as $form)
foreach($form['form']['input'] as $field)
if(isset($field['validation']))
{
$errors = array();
$value = Tools::getValue($field['name']);
if (isset($field['required']) && $field['required'] && $value==false && (string)$value != '0')
$errors[] = sprintf(Tools::displayError('Field "%s" is required.'), $field['label']);
elseif($value)
{
$field_validation = $field['validation'];
if (!Validate::$field_validation($value))
$errors[] = sprintf(Tools::displayError('Field "%s" is invalid.'), $field['label']);
}
// Set default value
if ($value === false && isset($field['default_value']))
$value = $field['default_value'];
if(count($errors))
{
$this->validation_errors = array_merge($this->validation_errors, $errors);
}
elseif($value==false)
{
switch($field['validation'])
{
case 'isUnsignedId':
case 'isUnsignedInt':
case 'isInt':
case 'isBool':
$value = 0;
break;
default:
$value = '';
break;
}
Configuration::updateValue('ST_FB_'.strtoupper($field['name']), $value);
}
else
Configuration::updateValue('ST_FB_'.strtoupper($field['name']), $value);
}
if(count($this->validation_errors))
$this->_html .= $this->displayError(implode('
',$this->validation_errors));
else {
$this->saveHook();
$this->_html .= $this->displayConfirmation($this->getTranslator()->trans('Settings updated', array(), 'Admin.Theme.Panda'));
}
}
$helper = $this->initForm();
return $this->_html.$helper->generateForm($this->fields_form);
}
protected function initFieldsForm()
{
$this->fields_form[0]['form'] = array(
'legend' => array(
'title' => $this->displayName,
'icon' => 'icon-cogs'
),
'input' => array(
array(
'type' => 'text',
'label' => $this->getTranslator()->trans('Facebook Page URL:', array(), 'Modules.Stfblikebox.Admin'),
'name' => 'lb_url',
'size' => 64,
'required' => true,
'validation' => 'isGenericName',
),
array(
'type' => 'text',
'label' => $this->getTranslator()->trans('Height:', array(), 'Admin.Theme.Panda'),
'name' => 'lb_height',
'required' => true,
'desc' => $this->getTranslator()->trans('The height of the plugin in pixels.', array(), 'Modules.Stfblikebox.Admin'),
'validation' => 'isUnsignedInt',
'prefix' => 'px',
'class' => 'fixed-width-lg'
),
array(
'type' => 'switch',
'label' => $this->getTranslator()->trans('Show Friend\'s Faces:', array(), 'Modules.Stfblikebox.Admin'),
'name' => 'lb_face',
'is_bool' => true,
'values' => array(
array(
'id' => 'lb_face_on',
'value' => 1,
'label' => $this->getTranslator()->trans('Yes', array(), 'Admin.Theme.Panda')),
array(
'id' => 'lb_face_off',
'value' => 0,
'label' => $this->getTranslator()->trans('No', array(), 'Admin.Theme.Panda')),
),
'desc' => $this->getTranslator()->trans('Show profile photos when friends like this.', array(), 'Modules.Stfblikebox.Admin'),
'validation' => 'isBool',
),
array(
'type' => 'switch',
'label' => $this->getTranslator()->trans('Show Page Posts:', array(), 'Modules.Stfblikebox.Admin'),
'name' => 'lb_stream',
'is_bool' => true,
'values' => array(
array(
'id' => 'lb_stream_on',
'value' => 1,
'label' => $this->getTranslator()->trans('Yes', array(), 'Admin.Theme.Panda')),
array(
'id' => 'lb_stream_off',
'value' => 0,
'label' => $this->getTranslator()->trans('No', array(), 'Admin.Theme.Panda')),
),
'desc' => $this->getTranslator()->trans('Show posts from the Page\'s timeline.', array(), 'Modules.Stfblikebox.Admin'),
'validation' => 'isBool',
),
array(
'type' => 'switch',
'label' => $this->getTranslator()->trans('Hide Cover Photo:', array(), 'Modules.Stfblikebox.Admin'),
'name' => 'lb_hide_cover',
'is_bool' => true,
'values' => array(
array(
'id' => 'lb_hide_cover_on',
'value' => 1,
'label' => $this->getTranslator()->trans('Yes', array(), 'Admin.Theme.Panda')),
array(
'id' => 'lb_hide_cover_off',
'value' => 0,
'label' => $this->getTranslator()->trans('No', array(), 'Admin.Theme.Panda')),
),
'desc' => $this->getTranslator()->trans('Hide cover photo in the header', array(), 'Modules.Stfblikebox.Admin'),
'validation' => 'isBool',
),
array(
'type' => 'switch',
'label' => $this->getTranslator()->trans('Use the small header instead:', array(), 'Modules.Stfblikebox.Admin'),
'name' => 'lb_small_header',
'is_bool' => true,
'values' => array(
array(
'id' => 'llb_small_header_on',
'value' => 1,
'label' => $this->getTranslator()->trans('Yes', array(), 'Admin.Theme.Panda')),
array(
'id' => 'llb_small_header_off',
'value' => 0,
'label' => $this->getTranslator()->trans('No', array(), 'Admin.Theme.Panda')),
),
'desc' => $this->getTranslator()->trans('Use the small header instead', array(), 'Modules.Stfblikebox.Admin'),
'validation' => 'isBool',
),
array(
'type' => 'select',
'label' => $this->getTranslator()->trans('Locale:', array(), 'Admin.Theme.Panda'),
'name' => 'lb_locale',
'options' => array(
'query' => self::$locale,
'id' => 'id',
'name' => 'name',
'default' => array(
'value' => 'en_US',
'label' => 'English (US)'
)
),
'validation' => 'isAnything',
),
array(
'type' => 'radio',
'label' => $this->getTranslator()->trans('Hide on mobile:', array(), 'Admin.Theme.Panda'),
'name' => 'lb_hide_on_mobile',
'default_value' => 0,
'is_bool' => true,
'values' => array(
array(
'id' => 'hide_on_mobile_1',
'value' => 1,
'label' => $this->getTranslator()->trans('Hide', array(), 'Admin.Theme.Panda')),
array(
'id' => 'hide_on_mobile_2',
'value' => 2,
'label' => $this->getTranslator()->trans('Open', array(), 'Admin.Theme.Panda')),
array(
'id' => 'hide_on_mobile_0',
'value' => 0,
'label' => $this->getTranslator()->trans('Collapse', array(), 'Admin.Theme.Panda')),
),
'desc' => $this->getTranslator()->trans('Screen width < 768px.', array(), 'Admin.Theme.Panda'),
'validation' => 'isUnsignedInt',
),
array(
'type' => 'select',
'label' => $this->getTranslator()->trans('Wide on footer:', array(), 'Admin.Theme.Panda'),
'name' => 'lb_wide_on_footer',
'default_value' => 3,
'options' => array(
'query' => self::$wide_map,
'id' => 'id',
'name' => 'name',
),
'validation' => 'isGenericName',
),
),
'submit' => array(
'title' => $this->getTranslator()->trans('Save', array(), 'Admin.Actions'),
)
);
$this->fields_form[1]['form'] = array(
'legend' => array(
'title' => $this->getTranslator()->trans('Hook manager', array(), 'Admin.Theme.Panda'),
'icon' => 'icon-cogs'
),
'description' => $this->getTranslator()->trans('Check the hook that you would like this module to display on.', array(), 'Admin.Theme.Panda').'
'.$this->getTranslator()->trans('Click here to see hook position', array(), 'Admin.Theme.Panda').'.',
'input' => array(
),
'submit' => array(
'title' => $this->getTranslator()->trans(' Save all ', array(), 'Admin.Theme.Panda')
),
);
foreach($this->_hooks AS $key => $values)
{
if (!is_array($values) || !count($values))
continue;
$this->fields_form[1]['form']['input'][] = array(
'type' => 'checkbox',
'label' => $key,
'name' => $key,
'lang' => true,
'values' => array(
'query' => $values,
'id' => 'id',
'name' => 'name'
)
);
}
}
protected function initForm()
{
$helper = new HelperForm();
$helper->show_toolbar = false;
$helper->table = $this->table;
$lang = new Language((int)Configuration::get('PS_LANG_DEFAULT'));
$helper->default_form_language = $lang->id;
$helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0;
$helper->identifier = $this->identifier;
$helper->submit_action = 'savestfblikebox';
$helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false).'&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name;
$helper->token = Tools::getAdminTokenLite('AdminModules');
$helper->tpl_vars = array(
'fields_value' => $this->getConfigFieldsValues(),
'languages' => $this->context->controller->getLanguages(),
'id_language' => $this->context->language->id,
);
return $helper;
}
public function renderWidget($hookName = null, array $configuration = [])
{
$data = $this->getWidgetVariables($hookName, $configuration);
if(isset($configuration['lb_url']) && $configuration['lb_url'])
$data ['st_lb_url'] = $configuration['lb_url'];
$this->smarty->assign($data );
$is_footer_hook = $is_stacked_footer = false;
foreach($this->_hooks['Footer'] AS $hook)
{
if(Tools::strtolower($hook['id']) == Tools::strtolower($hookName))
{
$is_footer_hook = true;
$is_stacked_footer = isset($hook['is_stacked_footer']);
break;
}
}
$this->smarty->assign(array(
'is_stacked_footer' => $is_stacked_footer,
));
return $this->fetch($is_footer_hook ? $this->templateFile[1] : $this->templateFile[0]);
}
public function getWidgetVariables($hookName = null, array $configuration = [])
{
if(!Configuration::get($this->_prefix_st.'URL'))
return false;
return array(
'st_lb_url' => Configuration::get($this->_prefix_st.'URL'),
'st_lb_height' => (int)Configuration::get($this->_prefix_st.'HEIGHT'),
'st_lb_face' => Configuration::get($this->_prefix_st.'FACE'),
'st_lb_stream' => Configuration::get($this->_prefix_st.'STREAM'),
'st_lb_hide_cover' => Configuration::get($this->_prefix_st.'HIDE_COVER'),
'st_lb_small_header' => Configuration::get($this->_prefix_st.'SMALL_HEADER'),
/*
'st_lb_colorscheme' => Configuration::get($this->_prefix_st.'COLORSCHEME'),
'st_lb_header' => Configuration::get($this->_prefix_st.'HEADER'),
'st_lb_color_scheme' => Configuration::get($this->_prefix_st.'CS'),
'st_lb_width' => (int)Configuration::get($this->_prefix_st.'WIDTH'),
'st_lb_b_color' => Configuration::get($this->_prefix_st.'B_C'),
'st_lb_bg_color' => Configuration::get($this->_prefix_st.'BG_C'),
'st_lb_connections' => Configuration::get($this->_prefix_st.'CONNECTIONS'),
*/
'st_lb_hide_on_mobile' => Configuration::get($this->_prefix_st.'HIDE_ON_MOBILE'),
'st_lb_locale' => Configuration::get($this->_prefix_st.'LOCALE'),
'st_fb_lb_wide_on_footer' => Configuration::get($this->_prefix_st.'WIDE_ON_FOOTER'),
);
}
private function getConfigFieldsValues()
{
$fields_values = array(
'lb_url' => Configuration::get($this->_prefix_st.'URL'),
'lb_height' => (int)Configuration::get($this->_prefix_st.'HEIGHT'),
'lb_face' => (int)Configuration::get($this->_prefix_st.'FACE'),
'lb_stream' => (int)Configuration::get($this->_prefix_st.'STREAM'),
'lb_hide_cover' => Configuration::get($this->_prefix_st.'HIDE_COVER'),
'lb_small_header' => Configuration::get($this->_prefix_st.'SMALL_HEADER'),
'lb_locale' => Configuration::get($this->_prefix_st.'LOCALE'),
'lb_wide_on_footer' => Configuration::get($this->_prefix_st.'WIDE_ON_FOOTER'),
'lb_hide_on_mobile' => Configuration::get($this->_prefix_st.'HIDE_ON_MOBILE'),
);
foreach($this->_hooks AS $key => $values)
{
if (!$key)
continue;
foreach($values AS $value)
{
$fields_values[$key.'_'.$value['id']] = 0;
if($id_hook = Hook::getIdByName($value['id']))
if(Hook::getModulesFromHook($id_hook, $this->id))
$fields_values[$key.'_'.$value['id']] = 1;
}
}
return $fields_values;
}
public function get_prefix()
{
if (isset($this->_prefix_st) && $this->_prefix_st)
return $this->_prefix_st;
return false;
}
public function hookvcBeforeInit()
{
JsComposer::add_shortcode($this->name, array($this,'vc_shortcode_init'));
if(isset($this->context->controller->admin_webpath) && !empty($this->context->controller->admin_webpath)) {
$this->vc_map_init();
}
}
public function vc_shortcode_init($atts, $content = null)
{
extract(JsComposer::shortcode_atts(array(
'hook_name' => '',
'lb_url' => '',
'st_time' => '',
), $atts));
if(!isset($this->vc_hooks[$hook_name]))
return ;
$hook = $this->vc_hooks[$hook_name];
return $this->renderWidget($hook, array('lb_url'=>$lb_url,'st_time'=>$st_time));
}
function vc_map_init()
{
$vc_hooks = array();
foreach ($this->vc_hooks as $key => $value) {
$vc_hooks[$key] = $key;
}
$params = array(
'name' => $this->displayName,
'base' => $this->name,
'icon' => 'icon-panda',
'category' => 'Panda',
'params' => array(
array(
'type' => 'dropdown',
'holder' => 'div',
'class' => 'hide_in_vc_editor',
'heading' => $this->getTranslator()->trans('How to display', array(), 'Admin.Theme.Panda'),
'param_name' => 'hook_name',
'value' => $vc_hooks,
'std' => 'Block'
),
array(
'type' => 'textfield',
'heading' => $this->getTranslator()->trans('Facebook Page URL:', array(), 'Modules.Stfblikebox.Admin'),
'class' => 'hide_in_vc_editor',
'holder' => 'div',
'param_name' => 'lb_url',
'value' => '',
),
array(
'type' => 'textfield',
'holder' => 'div',
'param_name' => 'st_time',
'value' => time(),
),
array(
'type' => 'html',
'param_name' => 'st_conf_link_box',
'code' => ''.$this->getTranslator()->trans('Go to the module to change settings.', array(), 'Admin.Theme.Panda').'',
),
array(
'type' => 'html',
'param_name' => 'st_refeash_link_box',
'code' => ''.$this->getTranslator()->trans('Refresh this window to get new data.', array(), 'Admin.Theme.Panda').'',
),
)
);
vc_map($params);
}
}