initToolbar(); /** @var Category $obj */ $obj = $this->loadObject(true); $context = Context::getContext(); $id_shop = $context->shop->id; $selected_categories = array((isset($obj->id_parent) && $obj->isParentCategoryAvailable($id_shop))? (int)$obj->id_parent : (int)Tools::getValue('id_parent', Category::getRootCategory()->id)); $unidentified = new Group(Configuration::get('PS_UNIDENTIFIED_GROUP')); $guest = new Group(Configuration::get('PS_GUEST_GROUP')); $default = new Group(Configuration::get('PS_CUSTOMER_GROUP')); $unidentified_group_information = sprintf($this->l('%s - All people without a valid customer account.'), ''.$unidentified->name[$this->context->language->id].''); $guest_group_information = sprintf($this->l('%s - Customer who placed an order with the guest checkout.'), ''.$guest->name[$this->context->language->id].''); $default_group_information = sprintf($this->l('%s - All people who have created an account on this site.'), ''.$default->name[$this->context->language->id].''); if (!($obj = $this->loadObject(true))) { return; } $image = _PS_CAT_IMG_DIR_.$obj->id.'.'.$this->imageType; $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; $images_types = ImageType::getImagesTypes('categories'); $format = array(); $thumb = $thumb_url = ''; $formated_category= ImageType::getFormatedName('category'); $formated_medium = ImageType::getFormatedName('medium'); foreach ($images_types as $k => $image_type) { if ($formated_category == $image_type['name']) { $format['category'] = $image_type; } elseif ($formated_medium == $image_type['name']) { $format['medium'] = $image_type; $thumb = _PS_CAT_IMG_DIR_.$obj->id.'-'.$image_type['name'].'.'.$this->imageType; if (is_file($thumb)) { $thumb_url = ImageManager::thumbnail($thumb, $this->table.'_'.(int)$obj->id.'-thumb.'.$this->imageType, (int)$image_type['width'], $this->imageType, true, true); } } } $image_homeimg = _PS_CAT_IMG_DIR_.'home/'.$obj->id.'.jpg'; $image_homeimg_url = ImageManager::thumbnail($image_homeimg, $this->table.'_homeimg_'.(int)$obj->id.'.'.$this->imageType, 350, $this->imageType, true, true); $image_iconcat = _PS_CAT_IMG_DIR_.'iconcat/'.$obj->id.'.jpg'; $image_iconcat_url = ImageManager::thumbnail($image_homeimg, $this->table.'_iconcat_'.(int)$obj->id.'.'.$this->imageType, 350, $this->imageType, true, true); $image_univers = _PS_CAT_IMG_DIR_.'univers/'.$obj->id.'.jpg'; $image_univers_url = ImageManager::thumbnail($image_univers, $this->table.'_univers_'.(int)$obj->id.'.'.$this->imageType, 350, $this->imageType, true, true); $skins = array(); foreach ( explode(',', Configuration::get('ADVCONSTRUCTOR_TYPE')) as $skin ) { $skins[] = array( 'id' => $skin, 'name' => $skin ); } $categories_univers_list = 'doublecube, vrac, pochette_transparente, simplecube, sachetorganza, pochette, coffret, aurore_chocolats, pyramide'; $categories_univers = array(); foreach ( explode(',', $categories_univers_list) as $cat ) { $categories_univers[] = array( 'id' => $cat, 'name' => $cat, ); } $this->fields_form = array( 'tinymce' => true, 'legend' => array( 'title' => $this->l('Category'), 'icon' => 'icon-tags' ), 'input' => array( array( 'type' => 'text', 'label' => $this->l('Name'), 'name' => 'name', 'lang' => true, 'required' => true, 'class' => 'copy2friendlyUrl', 'hint' => $this->l('Invalid characters:').' <>;=#{}', ), array( 'type' => 'switch', 'label' => $this->l('Displayed'), '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') ) ) ), array( 'type' => 'switch', 'label' => $this->l('Affichée sur l\'accueil ?'), 'name' => 'home', 'required' => false, 'is_bool' => true, 'default' => 1, 'values' => array( array( 'id' => 'home_on', 'value' => 1, 'label' => $this->l('Enabled') ), array( 'id' => 'home_off', 'value' => 0, 'label' => $this->l('Disabled') ) ) ), array( 'type' => 'categories', 'label' => $this->l('Parent category'), 'name' => 'id_parent', 'tree' => array( 'id' => 'categories-tree', 'selected_categories' => $selected_categories, 'disabled_categories' => (!Tools::isSubmit('add'.$this->table) && !Tools::isSubmit('submitAdd'.$this->table)) ? array($this->_category->id) : null, 'root_category' => $context->shop->getCategory() ) ), array( 'type' => 'textarea', 'label' => $this->l('Description'), 'name' => 'description', 'autoload_rte' => true, 'lang' => true, 'hint' => $this->l('Invalid characters:').' <>;=#{}' ), array( 'type' => 'textarea', 'label' => $this->l('Description longue'), 'name' => 'long_description', 'autoload_rte' => true, 'lang' => true, 'hint' => $this->l('Invalid characters:').' <>;=#{}' ), array( 'type' => 'file', 'label' => $this->l('Category Cover Image'), 'name' => 'image', 'display_image' => true, 'image' => $image_url ? $image_url : false, 'size' => $image_size, 'delete_url' => self::$currentIndex.'&'.$this->identifier.'='.$this->_category->id.'&token='.$this->token.'&deleteImage=1', 'hint' => $this->l('This is the main image for your category, displayed in the category page. The category description will overlap this image and appear in its top-left corner.'), 'format' => $format['category'] ), array( 'type' => 'file', 'label' => $this->l('Image accueil'), 'name' => 'homeimg', 'display_image' => true, 'image' => $image_homeimg_url ? $image_homeimg_url : false, 'delete_url' => self::$currentIndex.'&'.$this->identifier.'='.$this->_category->id.'&token='.$this->token.'&deleteImage=1&folder=home', 'hint' => $this->l('Upload a category image from your computer.'), ), array( 'type' => 'select', 'label' => $this->l('Icone category'), 'name' => 'liste_icons_univers', 'hint' => $this->l('Choose a category'), 'options' => array( 'query' => $categories_univers, 'id' => 'id', 'name' => 'name', ) ), array( 'type' => 'file', 'label' => $this->l('Icon'), 'name' => 'iconat', 'display_image' => true, 'image' => $image_iconcat_url ? $image_iconcat_url : false, 'delete_url' => self::$currentIndex.'&'.$this->identifier.'='.$this->_category->id.'&token='.$this->token.'&deleteImage=1&folder=iconcat', 'hint' => $this->l('Upload a category image from your computer.'), ), array( 'type' => 'file', 'label' => $this->l('Image dans le listing Univers'), 'name' => 'univers', 'display_image' => true, 'image' => $image_univers_url ? $image_univers_url : false, 'delete_url' => self::$currentIndex.'&'.$this->identifier.'='.$this->_category->id.'&token='.$this->token.'&deleteImage=1&folder=home', 'hint' => $this->l('Upload a category image from your computer.'), ), array( 'type' => 'textarea', 'label' => $this->l('Meta title'), 'name' => 'meta_title', 'lang' => true, 'rows' => 5, 'cols' => 100, 'hint' => $this->l('Forbidden characters:').' <>;=#{}' ), array( 'type' => 'textarea', 'label' => $this->l('Meta description'), 'name' => 'meta_description', 'lang' => true, 'rows' => 5, 'cols' => 100, 'hint' => $this->l('Forbidden characters:').' <>;=#{}' ), array( 'type' => 'tags', 'label' => $this->l('Meta keywords'), 'name' => 'meta_keywords', 'lang' => true, 'hint' => $this->l('To add "tags," click in the field, write something, and then press "Enter."').' '.$this->l('Forbidden characters:').' <>;=#{}' ), array( 'type' => 'text', 'label' => $this->l('Friendly URL'), 'name' => 'link_rewrite', 'lang' => true, 'required' => true, 'hint' => $this->l('Only letters, numbers, underscore (_) and the minus (-) character are allowed.') ), array( 'type' => 'text', 'label' => $this->l('URL spécifique'), 'name' => 'specific_url', 'lang' => true, 'hint' => $this->l('URL de la destination') ), array( 'type' => 'group', 'label' => $this->l('Group access'), 'name' => 'groupBox', 'values' => Group::getGroups(Context::getContext()->language->id), 'info_introduction' => $this->l('You now have three default customer groups.'), 'unidentified' => $unidentified_group_information, 'guest' => $guest_group_information, 'customer' => $default_group_information, 'hint' => $this->l('Mark all of the customer groups which you would like to have access to this category.') ), array( 'type' => 'textarea', 'label' => $this->l('Description dans le listing Univers'), 'name' => 'description_univers', 'autoload_rte' => true, 'lang' => true, 'hint' => $this->l('Invalid characters:').' <>;=#{}' ), array( 'type' => 'text', 'label' => $this->l('URL du produit exclusif'), 'name' => 'linkExclusive', 'lang' => true, 'hint' => $this->l('Only letters, numbers, underscore (_) and the minus (-) character are allowed.'), ), ), 'submit' => array( 'title' => $this->l('Save'), 'name' => 'submitAdd'.$this->table.($this->_category->is_root_category && !Tools::isSubmit('add'.$this->table) && !Tools::isSubmit('add'.$this->table.'root') ? '': 'AndBackToParent') ), ); $this->tpl_form_vars['shared_category'] = Validate::isLoadedObject($obj) && $obj->hasMultishopEntries(); $this->tpl_form_vars['PS_ALLOW_ACCENTED_CHARS_URL'] = (int)Configuration::get('PS_ALLOW_ACCENTED_CHARS_URL'); $this->tpl_form_vars['displayBackOfficeCategory'] = Hook::exec('displayBackOfficeCategory'); // Display this field only if multistore option is enabled if (Configuration::get('PS_MULTISHOP_FEATURE_ACTIVE') && Tools::isSubmit('add'.$this->table.'root')) { $this->fields_form['input'][] = array( 'type' => 'switch', 'label' => $this->l('Root Category'), 'name' => 'is_root_category', 'required' => false, 'is_bool' => true, 'values' => array( array( 'id' => 'is_root_on', 'value' => 1, 'label' => $this->l('Yes') ), array( 'id' => 'is_root_off', 'value' => 0, 'label' => $this->l('No') ) ) ); unset($this->fields_form['input'][2], $this->fields_form['input'][3]); } // Display this field only if multistore option is enabled AND there are several stores configured if (Shop::isFeatureActive()) { $this->fields_form['input'][] = array( 'type' => 'shop', 'label' => $this->l('Shop association'), 'name' => 'checkBoxShopAsso', ); } // remove category tree and radio button "is_root_category" if this category has the root category as parent category to avoid any conflict if ($this->_category->id_parent == (int)Configuration::get('PS_ROOT_CATEGORY') && Tools::isSubmit('updatecategory')) { foreach ($this->fields_form['input'] as $k => $input) { if (in_array($input['name'], array('id_parent', 'is_root_category'))) { unset($this->fields_form['input'][$k]); } } } if (!($obj = $this->loadObject(true))) { return; } // Added values of object Group $category_groups_ids = $obj->getGroups(); $groups = Group::getGroups($this->context->language->id); // if empty $carrier_groups_ids : object creation : we set the default groups if (empty($category_groups_ids)) { $preselected = array(Configuration::get('PS_UNIDENTIFIED_GROUP'), Configuration::get('PS_GUEST_GROUP'), Configuration::get('PS_CUSTOMER_GROUP')); $category_groups_ids = array_merge($category_groups_ids, $preselected); } foreach ($groups as $group) { $this->fields_value['groupBox_'.$group['id_group']] = Tools::getValue('groupBox_'.$group['id_group'], (in_array($group['id_group'], $category_groups_ids))); } $this->fields_value['is_root_category'] = (bool)Tools::isSubmit('add'.$this->table.'root'); return AdminController::renderForm(); } public function postProcess() { parent::postProcess(); $images = array( 'banner' => 'banners', 'univers' => 'univers', 'homeimg' => 'home', 'iconcat' => 'iconcat' ); foreach($images as $imageName => $folder) { if(isset($_FILES[$imageName]) && !empty($_FILES[$imageName]['tmp_name'])) { $obj = $this->loadObject(TRUE); $fileTemp = $_FILES[$imageName]['tmp_name']; $fileParts = pathinfo($_FILES[$imageName]['name']); if($fileParts['extension'] == 'jpg' || $fileParts['extension'] == 'png') { if(!is_dir(_PS_CAT_IMG_DIR_.$folder)) mkdir(_PS_CAT_IMG_DIR_.$folder, 0775); $res = move_uploaded_file($fileTemp, _PS_CAT_IMG_DIR_.$folder.'/'.$obj->id.'.jpg'); if(!$res) { $this->errors[] = sprintf(Tools::displayError('An error occured during upload of file %s'), $obj->id.'.' . $fileParts['extension']); } else { $this->confirmations[] = sprintf($this->l('File %s has been uploaded'), $obj->id.'.' . $fileParts['extension']); } } else { $this->errors[] = sprintf(Tools::displayError('File %s have not good extension, only .jpg or .png'), $obj->id.'.' . $fileParts['extension']); } } } } }