table = 'cmsps_categories'; $this->className = 'CmsPsCategory'; $this->identifier = 'id_category'; $this->lang = TRUE; $this->bootstrap = TRUE; $this->context = Context::getContext(); $this->fieldImageSettings = array( 'name' => 'image', 'dir' => 'cms_c' ); parent::__construct(); if (Tools::getValue('id_category')) { $this->_where = ' AND a.`id_parent` =' . (int)Tools::getValue('id_category'); } else { $this->_where = ' AND a.`id_parent` = 0'; } $this->actions = array('view', 'edit','delete'); $this->fields_list = array( 'id_category' => array( 'title' => 'ID', 'width' => 25 ), 'title' => array( 'title' => $this->module->l('Title'), 'width' => 45, ), 'slug' => array( 'title' => $this->module->l('Alias'), 'width' => 45, ), 'active' => array( 'title' => $this->l('Active'), 'active' => 'status', 'type' => 'bool', 'class' => 'fixed-width-xs', 'align' => 'center', 'ajax' => true, 'orderby' => false ) ); if (Shop::isFeatureActive() && Shop::getContext() != Shop::CONTEXT_ALL){ $this->_join .= 'JOIN `'._DB_PREFIX_.'cmsps_categories_shop` acs ON a.`id_category` = acs.`id_category` AND acs.`id_shop` IN ('.implode(', ', Shop::getContextListShopID()).') '; $this->_group .= 'GROUP BY acs.`id_category`'; } } public function initPageHeaderToolbar() { parent::initPageHeaderToolbar(); if ($this->display != 'edit' && $this->display != 'add') { $this->page_header_toolbar_btn['new_sales'] = array( 'href' => self::$currentIndex.'&addcmsps_categories&token='.$this->token, 'desc' => $this->l('Add new Category', NULL, NULL, FALSE), 'icon' => 'process-icon-new' ); } } public function renderForm() { if (!($obj = $this->loadObject(TRUE))) return; $image = _CMS_CAT_IMG_DIR_.$obj->id.'.jpg'; $image_url = ImageManager::thumbnail($image, $this->table.'_'.(int)$obj->id.'.'.$this->imageType, 350, $this->imageType, true, true); $image_size = file_exists($image) ? filesize($image) / 1000 : false; $this->fields_form = array( 'multilang' => TRUE, 'tinymce' => TRUE, 'legend' => array( 'title' => $this->className, ), 'submit' => array( 'name' => 'submitCMSPSCategory', 'title' => $this->l('Save'), ), 'input' => array( array( 'type' => 'text', 'label' => $this->l('Title'), 'name' => 'title', 'lang' => TRUE, 'required' => TRUE, 'size' => 114 ), array( 'type' => 'text', 'label' => $this->l('Slug'), 'name' => 'slug', 'lang' => TRUE, 'required' => TRUE, 'size' => 114 ), array( 'type' => 'select', 'label' => $this->l('Parent Category'), 'name' => 'id_parent', 'required' => TRUE, 'options' => array( 'query' => $this->getParentPossibility(), 'id' => 'id', 'name' => 'name' ) ), array( 'type' => 'textarea', 'label' => $this->l('Description'), 'name' => 'description', 'autoload_rte' => TRUE, 'cols' => 100, 'rows' => 6, 'lang' => TRUE, ), array( 'type' => 'file', 'label' => $this->l('Image'), 'name' => 'image', 'display_image' => true, 'image' => $image_url ? $image_url : false, 'size' => $image_size, 'delete_url' => self::$currentIndex.'&'.$this->identifier.'='.$this->object->id.'&token='.$this->token.'&deleteImage=1', ), array( 'type' => 'text', 'label' => $this->l('Meta title'), 'name' => 'meta_title', 'lang' => TRUE, 'size' => 114 ), array( 'type' => 'text', 'label' => $this->l('Meta desc'), 'name' => 'meta_desc', 'lang' => TRUE, 'size' => 114 ), array( 'type' => 'shop', 'label' => $this->l('Shop'), 'name' => 'checkBoxShopAsso_cmsps_categories' ), array( 'type' => 'switch', 'label' => $this->l('Active'), 'name' => 'active', 'required' => false, 'is_bool' => true, 'values' => array( array( 'id' => 'active_on', 'value' => 1, 'label' => $this->l('Enabled') ), array( 'id' => 'active_off', 'value' => 0, 'label' => $this->l('Disabled') ) ) ) ) ); $this->fields_value = array( 'image' => $image ? $image : FALSE, 'size' => $image ? filesize(_CMS_CAT_IMG_DIR_.'/'.$obj->id.'.jpg') / 1000 : FALSE ); return parent::renderForm(); } public function renderView() { if (($id = Tools::getValue('id_category'))) { return parent::renderList(); } } public function getParentPossibility() { $categories_list = CmsPsCategory::getParentPossibility($this->context->language->id, $this->context->shop->id, $this->object->id_category); $categories = array( array( 'id' => 0, 'name' => $this->l('-- Root Category --'), ), ); foreach ($categories_list as $key => $category) { $categories[] = array( 'id' => $category['id_category'], 'name' => $category['title'] ); } return $categories; } protected function copyFromPost(&$object, $table) { parent::copyFromPost($object, $table); } public function setMedia() { parent::setMedia(); $this->addJs(_PS_MODULE_DIR_.'cmsps/js/admin.js'); } public function postProcess() { if (Tools::getValue('deleteImage')) { $this->processForceDeleteImage(); } return parent::postProcess(); } public function processForceDeleteImage() { $category = $this->loadObject(true); if (Validate::isLoadedObject($category)) $category->deleteImage(true); } public function processDelete() { if (Validate::isLoadedObject($category = $this->loadObject())) { if ($category->hasChildren()) { $this->errors[] = Tools::displayError('Impossible : This category has children.'); return true; } elseif($category->hasPosts()) { $this->errors[] = Tools::displayError('Impossible : This category has posts.'); return true; } else { $category->deleteImage(true); parent::processDelete(); } } } // DEFINIR LES FORMATS D'IMAGE POUR LE RESIZE protected function postImage($id) { $ret = parent::postImage($id); if (isset($_FILES) && count($_FILES) && $_FILES['image']['name'] != NULL && !empty($this->object->id) ) { // p($_FILES);die; return TRUE; } return TRUE; } public function ajaxProcessstatuscmspsCategories() { if (!$id_category = (int)Tools::getValue('id_category')) die(Tools::jsonEncode(array('success' => false, 'error' => true, 'text' => $this->l('Failed to update the status')))); else { $category = new CmsPsCategory((int)$id_category); if (Validate::isLoadedObject($category)) { $category->active = $category->active == 1 ? 0 : 1; $category->save() ? die(Tools::jsonEncode(array('success' => true, 'text' => $this->l('The status has been updated successfully')))) : die(Tools::jsonEncode(array('success' => false, 'error' => true, 'text' => $this->l('Failed to update the status')))); } } } public function processSave() { parent::processSave(); Hook::exec('seoUrlCmsCategory', array( 'object' => $this->object )); } }