table = 'chcreaposts'; $this->className = 'Chcreapost'; $this->name = 'AdminChcreateur'; $this->lang = true; $this->deleted = false; $this->module = 'chcreateur'; $this->position_identifier = 'id_chcreaposts'; $this->allow_export = false; $this->bootstrap = true; if (Shop::isFeatureActive()) { Shop::addTableAssociation($this->table, ['type' => 'shop']); } parent::__construct(); $this->fields_list = [ 'id_chcreaposts' => [ 'title' => $this->l('Id'), 'width' => 100, 'type' => 'text', ], 'id_temp' => [ 'title' => 'Image', 'align' => 'center', 'callback' => 'getImage', ], 'post_title' => [ 'title' => $this->l('Post Title'), 'width' => 60, 'type' => 'text', ], 'post_excerpt' => [ 'title' => $this->l('Excerpt'), 'width' => 220, 'type' => 'text', ], 'link_rewrite' => [ 'title' => $this->l('URL Rewrite'), 'width' => 220, 'type' => 'text', ], 'post_format' => [ 'title' => $this->l('Format'), 'width' => 20, 'type' => 'text', ], 'position' => [ 'title' => $this->l('Position'), 'align' => 'left', 'filter_key' => 'a!position', 'position' => 'position', // 'orderby' => false ], /* 'post_date' => [ 'title' => $this->l('Date'), 'align' => 'text-right', 'type' => 'datetime', 'filter_key' => 'post_date', ], */ 'active' => [ 'title' => $this->l('Status'), 'width' => 60, 'align' => 'center', 'active' => 'status', 'type' => 'bool', 'orderby' => false, ], ]; $this->bulk_actions = [ 'delete' => [ 'text' => $this->l('Delete selected'), 'icon' => 'icon-trash', 'confirm' => $this->l('Delete selected items?'), ], ]; parent::__construct(); } public function getImage($id, $col) { $Chcreaimages = new Chcreaimages(); $imgs = $Chcreaimages->getUrls($id); if ( count($imgs) < 1 ) { $html = ''; } else { $html = ''; } return $html; } public function __initToolbar() { parent::initToolbar(); /* $this->toolbar_btn['custom'] = array( 'href' => '', 'desc' => 'Un nouveau' ); */ // print_r($this->toolbar_btn);exit(); } public function init() { parent::init(); $this->_join = 'LEFT JOIN '._DB_PREFIX_.'chcreaposts_shop sbp ON a.id_chcreaposts=sbp.id_chcreaposts && sbp.id_shop IN('.implode(',', Shop::getContextListShopID()).')'; $this->_select = 'a.`id_chcreaposts` as `id_temp`'; $this->_orderBy = 'a.position'; } public function setMedia($isNewTheme = false) { parent::setMedia(); $this->addJqueryUi('ui.widget'); $this->addJqueryPlugin('tagify'); $this->addJqueryPlugin('select2'); //$this->context->controller->addJS(chcrea_js_dir.'validator.min.js'); } public function renderForm() { $id_chcreaposts = Tools::getValue('id_chcreaposts'); $audio_temp = ''; $video_temp = ''; $gallery_temp = []; $gallery_temp_str = ''; $post_img_temp = ''; $prod_temp = ''; $gallery_url = chcrea_img_uri; if (isset($id_chcreaposts) && !empty($id_chcreaposts)) { $Chcreapost = new Chcreapost($id_chcreaposts); if (isset($Chcreapost->audio) && !empty($Chcreapost->audio)) { $audio_temp = @explode(',', $Chcreapost->audio); } if (isset($Chcreapost->related_products) && !empty($Chcreapost->related_products)) { $prod_temp = @explode(',', $Chcreapost->related_products); } if (isset($Chcreapost->video) && !empty($Chcreapost->video)) { //$video_temp = @explode(',', $Chcreapost->video); $video_temp = $Chcreapost->video; } // if (isset($Chcreapost->gallery) && !empty($Chcreapost->gallery)) { // $gallery_temp = @explode(',', $Chcreapost->gallery); // $gallery_temp_str = $Chcreapost->gallery; // } // if (isset($Chcreapost->post_img) && !empty($Chcreapost->post_img)) { // $post_img_temp = '
'; // } $Chcreaimages = new Chcreaimages(); $imgs = $Chcreaimages->getUrls($id_chcreaposts); if ( is_array($imgs) ){ foreach($imgs as $img) { $post_img_temp .= '
'; } } $gallery_url = chcrea_img_uri.'/'. $id_chcreaposts .'/'; $Chcreaimages = new Chcreaimages(); $imgs = $Chcreaimages->getGallery($id_chcreaposts); foreach($imgs as $value) { $gallery_temp[$value['id_images']] = $value['name']; } // print("
".print_r($gallery_temp,true)."
"); // exit(); } $this->fields_form = [ 'description' => "Le format des images : 1200 x 630", 'legend' => [ 'title' => $this->l('Add New Post'), ], 'input' => [ /* [ 'type' => 'radio', 'label' => $this->l('Post Format'), 'name' => 'post_format', 'required' => false, 'class' => 't', 'is_bool' => true, 'values' => [ [ 'id' => 'standrad', 'value' => 'standrad', 'label' => $this->l('Standard'), ], [ 'id' => 'gallery', 'value' => 'gallery', 'label' => $this->l('Gallery'), ], [ 'id' => 'video', 'value' => 'video', 'label' => $this->l('Video'), ], [ 'id' => 'audio', 'value' => 'audio', 'label' => $this->l('Audio'), ], ], ], */ [ 'type' => 'text', 'label' => $this->l('Post Title'), 'name' => 'post_title', 'id' => 'name', // for copyMeta2friendlyURL compatibility 'class' => 'copyMeta2friendlyURL', 'desc' => $this->l('Enter Your Blog Post Title'), 'lang' => true, ], [ 'type' => 'textarea', 'label' => $this->l('Post Excerpt'), 'name' => 'post_excerpt', 'desc' => $this->l('Enter Your Blog Post Excerpt'), 'lang' => true, ], [ 'type' => 'textarea', 'label' => $this->l('Post Content'), 'name' => 'post_content', 'desc' => $this->l('Enter Your Blog Post Content'), 'lang' => true, 'autoload_rte' => true, ], [ 'type' => 'text', 'label' => $this->l('Meta Title'), 'name' => 'meta_title', 'desc' => $this->l('Enter Your Post Meta Title for SEO'), 'lang' => true, ], [ 'type' => 'textarea', 'label' => $this->l('Meta Description'), 'name' => 'meta_description', 'desc' => $this->l('Enter Your Post Meta Description for SEO'), 'lang' => true, ], [ 'type' => 'tags', 'label' => $this->l('Meta Keyword'), 'name' => 'meta_keyword', 'desc' => $this->l('Enter Your Post Meta Keyword for SEO. Separate by comma(,)'), 'lang' => true, ], [ 'type' => 'file', 'label' => "Meta Image
1200 x 630", 'name' => 'post_img', 'desc' => $post_img_temp.$this->l('Format Please Upload Feature Image From Your Computer.'), ], [ 'type' => 'select_multiple', // 'type' => 'select', 'label' => $this->l('Select Related Products'), 'name' => 'related_products_temp', 'defaults' => $prod_temp, 'options' => [ 'query' => self::getallproducts(), 'id' => 'id', 'name' => 'name', 'reference' => 'reference', ], ], [ 'type' => 'gallery', 'label' => "Image dans l'article
1200 x 630", 'name' => 'gallery_temp', 'defaults' => $gallery_temp, 'defaults_str' => $gallery_temp_str, 'url' => $gallery_url, 'desc' => $this->l('Please give Image url for Gallery post. Separate by comma(,). You can add Any Kind of Image URL.'), ], /* [ // 'type' => 'textarea', 'type' => 'textarea', 'label' => $this->l('Video'), 'name' => 'video_temp', 'defaults' => $video_temp, 'desc' => $this->l('Please give video iframe url for video post. Separate by comma(,). You can add youtube or vimeo video url.'), ], */ [ // 'type' => 'textarea', 'type' => 'textarea', 'label' => $this->l('Video'), 'name' => 'video', //'defaults' => $video_temp, 'desc' => $this->l('Please give video iframe url for video post. Separate by comma(,). You can add youtube or vimeo video url.'), ], [ 'type' => 'textarea', //'type' => 'text_multiple', 'label' => $this->l('Audio'), 'name' => 'audio', //'name' => 'audio_temp', //'defaults' => $audio_temp, 'desc' => $this->l('Please give Audio url for Audio post. Separate by comma(,). You can add any kind of an audio source.'), ], [ 'type' => 'text', 'label' => $this->l('URL Rewrite'), 'name' => 'link_rewrite', 'desc' => $this->l('Enter Your Post Url for SEO'), 'lang' => true, ], [ 'type' => 'select', 'label' => $this->l('Comment Status'), 'name' => 'comment_status', 'options' => [ 'query' => [ [ 'id' => 'open', 'name' => 'Open', ], [ 'id' => 'close', 'name' => 'Closed', ], [ 'id' => 'disable', 'name' => 'Disabled', ], ], 'id' => 'id', 'name' => 'name', ], ], [ 'type' => 'switch', 'label' => $this->l('Status'), 'name' => 'active', 'required' => false, 'class' => 't', 'is_bool' => true, 'values' => [ [ 'id' => 'active', 'value' => 1, 'label' => $this->l('Enabled'), ], [ 'id' => 'active', 'value' => 0, 'label' => $this->l('Disabled'), ], ], ], ], 'submit' => [ 'title' => $this->l('Save'), 'class' => 'btn btn-default pull-right', ], ]; if (Shop::isFeatureActive()) { $this->fields_form['input'][] = [ 'type' => 'shop', 'label' => $this->l('Shop association:'), 'name' => 'checkBoxShopAsso', ]; } if (!($Chcreapost = $this->loadObject(true))) { return; } $this->setdefaultvalue($Chcreapost); $this->fields_form['submit'] = [ 'title' => $this->l('Save '), 'class' => 'btn btn-default pull-right', ]; $this->tpl_form_vars = [ 'active' => $this->object->active, 'PS_ALLOW_ACCENTED_CHARS_URL', (int) Configuration::get('PS_ALLOW_ACCENTED_CHARS_URL'), ]; Media::addJsDef(['PS_ALLOW_ACCENTED_CHARS_URL' => (int) Configuration::get('PS_ALLOW_ACCENTED_CHARS_URL')]); // print('
'.print_r($this->fields_form,true).'
');exit(); // print('
'.print_r($this->override_folder,true).'
');exit(); return parent::renderForm(); } public function setdefaultvalue($obj) { if (isset($obj->post_format) && !empty($obj->post_format)) { $this->fields_value['post_format'] = $obj->post_format; } else { $this->fields_value['post_format'] = 'standrad'; } if (isset($obj->active) && !empty($obj->active)) { $this->fields_value['active'] = $obj->active; } else { $this->fields_value['active'] = 1; } } public function renderList() { if (isset($this->_filter) && '' == trim($this->_filter)) { $this->_filter = $this->original_filter; } $this->addRowAction('edit'); $this->addRowAction('delete'); return parent::renderList(); } public static function getallproducts() { $rslt = []; $rslt[0]['id'] = 0; $rslt[0]['name'] = 'Select Products'; $id_lang = (int) Context::getContext()->language->id; $sql = 'SELECT p.`id_product`, pl.`name`, p.`reference` FROM `'._DB_PREFIX_.'product` p '.Shop::addSqlAssociation('product', 'p').' LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` '.Shop::addSqlRestrictionOnLang('pl').') WHERE pl.`id_lang` = '.(int) $id_lang.' ORDER BY pl.`name`'; $products = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); if (isset($products)) { $i = 1; foreach ($products as $r) { $rslt[$i]['id'] = $r['id_product']; $rslt[$i]['name'] = $r['name']; $rslt[$i]['reference'] = $r['reference']; ++$i; } } return $rslt; } public function processPosition() { // ------------------------------------------------------------------------------ // error_log("-----:function:".__FUNCTION__, 0); print_r($_POST); exit(); if ('1' !== $this->tabAccess['edit']) { $this->errors[] = Tools::displayError('You do not have permission to edit this.'); } elseif (!Validate::isLoadedObject($object = new Chcreapost((int) Tools::getValue($this->identifier, Tools::getValue('id_chcreaposts', 1))))) { $this->errors[] = Tools::displayError('An error occurred while updating the status for an object.').' '. $this->table.' '.Tools::displayError('(cannot load object)'); } if (!$object->updatePosition((int) Tools::getValue('way'), (int) Tools::getValue('position'))) { $this->errors[] = Tools::displayError('Failed to update the position.'); } else { $object->regenerateEntireNtree(); Tools::redirectAdmin(self::$currentIndex.'&'.$this->table.'Orderby=position&'.$this->table.'Orderway=asc&conf=5'.(($id_chcreaposts = (int) Tools::getValue($this->identifier)) ? ('&'.$this->identifier.'='.$id_chcreaposts) : '').'&token='.Tools::getAdminTokenLite('Adminxipcategory')); } } public function ajaxProcessUpdatePositions() { $id_chcreaposts = (int) Tools::getValue('id'); $way = (int) Tools::getValue('way'); $positions = Tools::getValue($this->table); if (is_array($positions)) { foreach ($positions as $key => $value) { $pos = explode('_', $value); if ((isset($pos[1], $pos[2])) && ($pos[2] == $id_chcreaposts)) { $position = $key + 1; break; } } } $Chcreapost = new Chcreapost($id_chcreaposts); if (Validate::isLoadedObject($Chcreapost)) { if (isset($position) && $Chcreapost->updatePosition($way, $position)) { Hook::exec('action'.$this->className.'Update'); exit(true); } exit('{"hasError" : true, errors : "Can not update Chcreapost position"}'); } exit('{"hasError" : true, "errors" : "This Chcreapost can not be loaded"}'); } }