310 lines
11 KiB
PHP
310 lines
11 KiB
PHP
<?php
|
|
/**
|
|
* Creative Elements - live Theme & Page Builder
|
|
*
|
|
* @author WebshopWorks
|
|
* @copyright 2019-2022 WebshopWorks.com
|
|
* @license One domain support license
|
|
*/
|
|
|
|
defined('_PS_VERSION_') or die;
|
|
|
|
require_once _PS_MODULE_DIR_ . 'creativeelements/classes/CEContent.php';
|
|
|
|
class AdminCEContentController extends ModuleAdminController
|
|
{
|
|
public $bootstrap = true;
|
|
|
|
public $table = 'ce_content';
|
|
|
|
public $identifier = 'id_ce_content';
|
|
|
|
public $className = 'CEContent';
|
|
|
|
public $lang = true;
|
|
|
|
protected $_defaultOrderBy = 'title';
|
|
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
|
|
if ((Tools::getIsset('updatece_content') || Tools::getIsset('addce_content')) && Shop::getContextShopID() === null) {
|
|
$this->displayWarning(
|
|
$this->trans('You are in a multistore context: any modification will impact all your shops, or each shop of the active group.', [], 'Admin.Catalog.Notification')
|
|
);
|
|
}
|
|
|
|
$table_shop = _DB_PREFIX_ . $this->table . '_shop';
|
|
$this->_select = 'sa.*';
|
|
$this->_join = "LEFT JOIN $table_shop sa ON sa.id_ce_content = a.id_ce_content AND b.id_shop = sa.id_shop";
|
|
$this->_where = "AND sa.id_shop = " . (int) $this->context->shop->id . " AND a.id_product = 0";
|
|
|
|
$this->fields_list = [
|
|
'id_ce_content' => [
|
|
'title' => $this->trans('ID', [], 'Admin.Global'),
|
|
'class' => 'fixed-width-xs',
|
|
'align' => 'center',
|
|
],
|
|
'title' => [
|
|
'title' => $this->trans('Title', [], 'Admin.Global'),
|
|
],
|
|
'hook' => [
|
|
'title' => $this->trans('Position', [], 'Admin.Global'),
|
|
'class' => 'fixed-width-xl',
|
|
],
|
|
'date_add' => [
|
|
'title' => $this->trans('Created on', [], 'Modules.Facetedsearch.Admin'),
|
|
'filter_key' => 'sa!date_add',
|
|
'class' => 'fixed-width-lg',
|
|
'type' => 'datetime',
|
|
],
|
|
'date_upd' => [
|
|
'title' => $this->l('Modified on'),
|
|
'filter_key' => 'sa!date_upd',
|
|
'class' => 'fixed-width-lg',
|
|
'type' => 'datetime',
|
|
],
|
|
'active' => [
|
|
'title' => $this->trans('Displayed', [], 'Admin.Global'),
|
|
'filter_key' => 'sa!active',
|
|
'class' => 'fixed-width-xs',
|
|
'align' => 'center',
|
|
'active' => 'status',
|
|
'type' => 'bool',
|
|
],
|
|
];
|
|
|
|
$this->bulk_actions = [
|
|
'delete' => [
|
|
'text' => $this->trans('Delete selected', [], 'Admin.Notifications.Info'),
|
|
'icon' => 'fa fa-icon-trash',
|
|
'confirm' => $this->trans('Delete selected items?', [], 'Admin.Notifications.Info'),
|
|
],
|
|
];
|
|
}
|
|
|
|
public function ajaxProcessHideEditor()
|
|
{
|
|
$id = (int) Tools::getValue('id');
|
|
$id_type = (int) Tools::getValue('idType');
|
|
|
|
$uids = CE\UId::getBuiltList($id, $id_type, $this->context->shop->id);
|
|
$res = empty($uids) ? $uids : array_keys($uids[$this->context->shop->id]);
|
|
|
|
die(json_encode($res));
|
|
}
|
|
|
|
public function ajaxProcessMigrate()
|
|
{
|
|
if ($ids = Tools::getValue('ids')) {
|
|
require_once _CE_PATH_ . 'classes/CEMigrate.php';
|
|
|
|
$done = [];
|
|
|
|
foreach ($ids as $id) {
|
|
CEMigrate::moveContent($id, $this->module) && $done[] = (int) $id;
|
|
}
|
|
$res = CEMigrate::removeIds('content', $done);
|
|
|
|
die(json_encode($res));
|
|
}
|
|
}
|
|
|
|
public function setMedia($isNewTheme = false)
|
|
{
|
|
parent::setMedia($isNewTheme);
|
|
|
|
$this->addJquery();
|
|
$this->js_files[] = _MODULE_DIR_ . 'creativeelements/views/lib/e-select2/js/e-select2.full.min.js?v=4.0.6-rc1';
|
|
$this->css_files[_MODULE_DIR_ . 'creativeelements/views/lib/e-select2/css/e-select2.min.css?v=4.0.6-rc1'] = 'all';
|
|
}
|
|
|
|
public function initHeader()
|
|
{
|
|
parent::initHeader();
|
|
|
|
$display_suppliers = Configuration::get('PS_DISPLAY_SUPPLIERS');
|
|
$display_manufacturers = version_compare(_PS_VERSION_, '1.7.7', '<')
|
|
? $display_suppliers
|
|
: Configuration::get('PS_DISPLAY_MANUFACTURERS');
|
|
$id_lang = $this->context->language->id;
|
|
$link = $this->context->link;
|
|
$tabs = &$this->context->smarty->tpl_vars['tabs']->value;
|
|
|
|
foreach ($tabs as &$tab0) {
|
|
foreach ($tab0['sub_tabs'] as &$tab1) {
|
|
if ('AdminParentCEContent' === $tab1['class_name']) {
|
|
foreach ($tab1['sub_tabs'] as &$tab2) {
|
|
if ('AdminCEContent' === $tab2['class_name']) {
|
|
$sub_tabs = &$tab2['sub_tabs'];
|
|
|
|
$tab = Tab::getTab($id_lang, Tab::getIdFromClassName('AdminCEContent'));
|
|
$tab['current'] = true;
|
|
$tab['href'] = $link->getAdminLink('AdminCEContent');
|
|
$sub_tabs[] = $tab;
|
|
|
|
$tab = Tab::getTab($id_lang, Tab::getIdFromClassName('AdminCmsContent'));
|
|
$tab['current'] = '';
|
|
$tab['href'] = $link->getAdminLink('AdminCmsContent');
|
|
$sub_tabs[] = $tab;
|
|
|
|
$tab = Tab::getTab($id_lang, Tab::getIdFromClassName('AdminProducts'));
|
|
$tab['current'] = '';
|
|
$tab['href'] = $link->getAdminLink('AdminProducts');
|
|
$sub_tabs[] = $tab;
|
|
|
|
$tab = Tab::getTab($id_lang, Tab::getIdFromClassName('AdminCategories'));
|
|
$tab['current'] = '';
|
|
$tab['href'] = $link->getAdminLink('AdminCategories');
|
|
$sub_tabs[] = $tab;
|
|
|
|
if ($display_manufacturers) {
|
|
$tab = Tab::getTab($id_lang, Tab::getIdFromClassName('AdminManufacturers'));
|
|
$tab['current'] = '';
|
|
$tab['href'] = $link->getAdminLink('AdminManufacturers');
|
|
$sub_tabs[] = $tab;
|
|
}
|
|
|
|
if ($display_suppliers) {
|
|
$tab = Tab::getTab($id_lang, Tab::getIdFromClassName('AdminSuppliers'));
|
|
$tab['current'] = '';
|
|
$tab['href'] = $link->getAdminLink('AdminSuppliers');
|
|
$sub_tabs[] = $tab;
|
|
}
|
|
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public function initToolBarTitle()
|
|
{
|
|
$this->page_header_toolbar_title = $this->l('Place Content Anywhere');
|
|
|
|
$this->context->smarty->assign('icon', 'icon-list');
|
|
|
|
$this->toolbar_title[] = $this->l('Contents List');
|
|
}
|
|
|
|
public function initPageHeaderToolbar()
|
|
{
|
|
if (empty($this->display)) {
|
|
$this->page_header_toolbar_btn['addce_content'] = [
|
|
'href' => self::$currentIndex . '&addce_content&token=' . $this->token,
|
|
'desc' => $this->trans('Add new', [], 'Admin.Actions'),
|
|
'icon' => 'process-icon-new',
|
|
];
|
|
}
|
|
parent::initPageHeaderToolbar();
|
|
}
|
|
|
|
public function initContent()
|
|
{
|
|
$this->context->smarty->assign('current_tab_level', 3);
|
|
|
|
return parent::initContent();
|
|
}
|
|
|
|
public function renderList()
|
|
{
|
|
$this->addRowAction('edit');
|
|
$this->addRowAction('delete');
|
|
|
|
return parent::renderList();
|
|
}
|
|
|
|
public function renderForm()
|
|
{
|
|
$col = count(Language::getLanguages(false, false, true)) > 1 ? 9 : 7;
|
|
|
|
version_compare(_PS_VERSION_, '1.7.8', '<') or $col--;
|
|
|
|
$this->fields_form = [
|
|
'legend' => [
|
|
'title' => $this->l('Content'),
|
|
'icon' => 'icon-edit',
|
|
],
|
|
'input' => [
|
|
[
|
|
'type' => 'text',
|
|
'label' => $this->trans('Title', [], 'Admin.Global'),
|
|
'name' => 'title',
|
|
'lang' => true,
|
|
'col' => $col,
|
|
],
|
|
[
|
|
'type' => 'text',
|
|
'label' => $this->trans('Position', [], 'Admin.Global'),
|
|
'name' => 'hook',
|
|
'required' => true,
|
|
'col' => 3,
|
|
],
|
|
[
|
|
'type' => 'textarea',
|
|
'label' => $this->l('Content'),
|
|
'name' => 'content',
|
|
'lang' => true,
|
|
'col' => $col,
|
|
],
|
|
[
|
|
'type' => 'switch',
|
|
'label' => $this->trans('Displayed', [], 'Admin.Global'),
|
|
'name' => 'active',
|
|
'required' => false,
|
|
'is_bool' => true,
|
|
'values' => [
|
|
[
|
|
'id' => 'active_on',
|
|
'value' => 1,
|
|
'label' => $this->trans('Enabled', [], 'Admin.Global'),
|
|
],
|
|
[
|
|
'id' => 'active_off',
|
|
'value' => 0,
|
|
'label' => $this->trans('Disabled', [], 'Admin.Global'),
|
|
],
|
|
],
|
|
],
|
|
],
|
|
'submit' => [
|
|
'title' => $this->trans('Save', [], 'Admin.Actions'),
|
|
],
|
|
'buttons' => [
|
|
'save_and_stay' => [
|
|
'type' => 'submit',
|
|
'title' => $this->trans('Save and stay', [], 'Admin.Actions'),
|
|
'icon' => 'process-icon-save',
|
|
'name' => 'submitAddce_contentAndStay',
|
|
'class' => 'btn btn-default pull-right',
|
|
],
|
|
],
|
|
];
|
|
|
|
if (Shop::isFeatureActive()) {
|
|
$this->fields_form['input'][] = [
|
|
'type' => 'shop',
|
|
'label' => $this->trans('Shop association', [], 'Admin.Global'),
|
|
'name' => 'checkBoxShopAsso',
|
|
];
|
|
}
|
|
|
|
return parent::renderForm();
|
|
}
|
|
|
|
protected function trans($id, array $parameters = [], $domain = null, $locale = null)
|
|
{
|
|
return empty($this->translator) ? $this->l($id) : parent::trans($id, $parameters, $domain, $locale);
|
|
}
|
|
|
|
protected function l($string, $module = 'creativeelements', $addslashes = false, $htmlentities = true)
|
|
{
|
|
$str = Translate::getModuleTranslation($module, $string, '', null, $addslashes || !$htmlentities);
|
|
|
|
return $htmlentities ? $str : call_user_func('stripslashes', $str);
|
|
}
|
|
}
|