bootstrap = true;
$this->display = 'view';
parent::__construct();
$this->meta_title = $this->trans('HTML Blocks', array(), 'Modules.HTMLBlocks');
if (!$this->module->active) {
Tools::redirectAdmin($this->context->link->getAdminLink('AdminHome'));
}
$this->name = 'HTMLBlocks';
$this->repository = new HTMLBlockRepository(
Db::getInstance(),
$this->context->shop
);
}
public function init()
{
if (Tools::isSubmit('edit'.$this->className)) {
$this->display = 'edit';
} elseif (Tools::isSubmit('addHTMLBlocks')) {
$this->display = 'add';
}
parent::init();
}
public function postProcess()
{
if (Tools::isSubmit('submit'.$this->className)) {
if (!$this->manageHTMLBlock()) {
return false;
}
$hook_name = Hook::getNameById(Tools::getValue('id_hook'));
if (!Hook::isModuleRegisteredOnHook($this->module, $hook_name, $this->context->shop->id)) {
Hook::registerHook($this->module, $hook_name);
}
$this->module->_clearCache($this->module->templateFile);
Tools::redirectAdmin($this->context->link->getAdminLink('Admin'.$this->name));
} elseif (Tools::isSubmit('delete'.$this->className)) {
if (!$this->deleteHTMLBlock()) {
return false;
}
$this->module->_clearCache($this->module->templateFile);
Tools::redirectAdmin($this->context->link->getAdminLink('Admin'.$this->name));
}
return parent::postProcess();
}
public function renderView()
{
$title = $this->trans('HTML Block configuration', array(), 'Modules.HTMLBlocks');
$this->fields_form[]['form'] = array(
'legend' => array(
'title' => $title,
'icon' => 'icon-list-alt'
),
'input' => array(
array(
'type' => 'html_blocks',
'label' => $this->trans('HTML Blocks', array(), 'Modules.HTMLBlocks'),
'name' => 'html_blocks',
'values' => $this->repository->getCMSBlocksSortedByHook(),
),
),
'buttons' => array(
'newBlock' => array(
'title' => $this->trans('New block', array(), 'Modules.HTMLBlocks'),
'href' => $this->context->link->getAdminLink('Admin'.$this->name).'&addHTMLBlocks',
'class' => 'pull-right',
'icon' => 'process-icon-new'
),
),
);
$this->getLanguages();
$helper = $this->buildHelper();
$helper->submit_action = '';
$helper->title = $title;
$helper->fields_value = $this->fields_value;
return $helper->generateForm($this->fields_form);
}
public function renderForm()
{
$block = new HTMLBlock((int)Tools::getValue('id_html_block'));
$this->fields_form[0]['form'] = array(
'tinymce' => true,
'legend' => array(
'title' => isset($block) ? $this->trans('Edit the link block.', array(), 'Modules.HTMLBlocks') : $this->trans('New link block', array(), 'Modules.HTMLBlocks'),
'icon' => isset($block) ? 'icon-edit' : 'icon-plus-square'
),
'input' => array(
array(
'type' => 'hidden',
'name' => 'id_html_block',
),
array(
'type' => 'text',
'label' => $this->trans('Name of the HTML block', array(), 'Modules.HTMLBlocks'),
'name' => 'name',
'required' => true,
),
array(
'type' => 'select',
'label' => $this->trans('Hook', array(), 'Admin.Global'),
'name' => 'id_hook',
'class' => 'input-lg',
'options' => array(
'query' => $this->repository->getDisplayHooksForHelper(),
'id' => 'id',
'name' => 'name'
)
),
array(
'type' => 'text',
'label' => $this->trans('Position', array(), 'Modules.HTMLBlocks'),
'name' => 'position',
),
array(
'type' => 'textarea',
'label' => $this->trans('Content', array(), 'Modules.HTMLBlocks') . ' - ' . Language::getLanguage($this->default_form_language)['name'],
'name' => 'content',
'lang' => true,
'cols' => 40,
'rows' => 10,
'class' => 'rte',
'autoload_rte' => true,
),
),
'buttons' => array(
'cancelBlock' => array(
'title' => $this->trans('Cancel', array(), 'Admin.Actions'),
'href' => (Tools::safeOutput(Tools::getValue('back', false)))
?: $this->context->link->getAdminLink('Admin'.$this->name),
'icon' => 'process-icon-cancel'
)
),
'submit' => array(
'name' => 'submit'.$this->className,
'title' => $this->trans('Save', array(), 'Admin.Actions'),
)
);
if ($id_hook = Tools::getValue('id_hook')) {
$block->id_hook = (int)$id_hook;
}
if (Tools::getValue('name')) {
$block->name = Tools::getValue('name');
}
$helper = $this->buildHelper();
if (isset($id_html_block)) {
$helper->currentIndex = AdminController::$currentIndex.'&id_html_block='.$id_html_block;
$helper->submit_action = 'edit'.$this->className;
} else {
$helper->submit_action = 'addHTMLBlock';
}
$helper->fields_value = (array)$block;
return $helper->generateForm($this->fields_form);
}
protected function buildHelper()
{
$helper = new HelperForm();
$helper->module = $this->module;
$helper->override_folder = 'htmlblocks/';
$helper->identifier = $this->className;
$helper->token = Tools::getAdminTokenLite('Admin'.$this->name);
$helper->languages = $this->_languages;
$helper->currentIndex = $this->context->link->getAdminLink('Admin'.$this->name);
$helper->default_form_language = $this->default_form_language;
$helper->allow_employee_form_lang = $this->allow_employee_form_lang;
$helper->toolbar_scroll = true;
$helper->toolbar_btn = $this->initToolbar();
return $helper;
}
public function initToolBarTitle()
{
$this->toolbar_title[] = $this->trans('Themes', array(), 'Modules.HTMLBlocks');
$this->toolbar_title[] = $this->trans('HTML Blocks', array(), 'Modules.HTMLBlocks');
}
public function setMedia($isNewTheme = false)
{
parent::setMedia($isNewTheme);
$this->addJqueryPlugin('tablednd');
$this->addJS(_PS_JS_DIR_.'admin/dnd.js');
}
private function manageHTMLBlock() {
$id_html_block = (int) Tools::getValue('id_html_block');
$id_hook = (int) Tools::getValue('id_hook');
if (!empty($id_hook)) {
return $this->repository->createOrUpdateHTMLBlock(
$id_html_block,
$id_hook,
Tools::getValue('name'));
}
return false;
}
private function deleteHTMLBlock()
{
$success = true;
$id_html_block = (int) Tools::getValue('id_html_block');
if (!empty($id_html_block)) {
$success &= Db::getInstance()->execute('DELETE FROM `'._DB_PREFIX_.'html_block` WHERE `id_html_block` = '.$id_html_block);
if ($success) {
$success &= Db::getInstance()->execute('DELETE FROM `'._DB_PREFIX_.'html_block_lang` WHERE `id_html_block` = '.$id_html_block);
}
}
return $success;
}
}