UPGRADE NOTE: Do not edit or add to this file if you wish to upgrade AbanteCart to newer versions in the future. If you wish to customize AbanteCart for your needs please refer to http://www.AbanteCart.com for more information. ------------------------------------------------------------------------------*/ if (!defined('DIR_CORE')) { header('Location: static_pages/'); } /** * @property ModelExtensionBannerManager $model_extension_banner_manager */ class ControllerPagesExtensionBannerManager extends AController { public $data = array(); public $error = array(); public function main() { //init controller data $this->extensions->hk_InitData($this, __FUNCTION__); $this->loadLanguage('banner_manager/banner_manager'); $this->document->setTitle($this->language->get('banner_manager_name')); $this->data['heading_title'] = $this->language->get('banner_manager_list'); $this->document->initBreadcrumb(array( 'href' => $this->html->getSecureURL('index/home'), 'text' => $this->language->get('text_home'), 'separator' => FALSE, )); $this->document->addBreadcrumb(array( 'href' => $this->html->getSecureURL('extension/banner_manager'), 'text' => $this->language->get('banner_manager_name'), 'separator' => ' :: ', 'current' => true )); $grid_settings = array('table_id' => 'banner_grid', 'url' => $this->html->getSecureURL('listing_grid/banner_manager'), 'editurl' => $this->html->getSecureURL('listing_grid/banner_manager/edit'), 'update_field' => $this->html->getSecureURL('listing_grid/banner_manager/update_field'), 'sortname' => 'date_modified', 'sortorder' => 'desc', 'columns_search' => true, 'actions' => array( 'edit' => array( 'text' => $this->language->get('text_edit'), 'href' => $this->html->getSecureURL('extension/banner_manager/edit', '&banner_id=%ID%') ), 'delete' => array( 'text' => $this->language->get('button_delete'), 'href' => $this->html->getSecureURL('extension/banner_manager/delete', '&banner_id=%ID%') ) ), ); $form = new AForm (); $form->setForm(array('form_name' => 'banner_grid_search')); $grid_settings['colNames'] = array($this->language->get('column_banner_id'), '', //icons $this->language->get('column_banner_name'), $this->language->get('column_banner_group'), $this->language->get('column_banner_type'), $this->language->get('column_status'), $this->language->get('column_update_date')); $grid_settings['colModel'] = array(array('name' => 'banner_id', 'index' => 'banner_id', 'width' => 20, 'align' => 'center', 'search' => false), array('name' => 'banner_icon', 'index' => 'icon', 'width' => 50, 'align' => 'center', 'search' => false ), array('name' => 'banner_name', 'index' => 'name', 'width' => 110, 'align' => 'left', ), array('name' => 'banner_group', 'index' => 'banner_group_name', 'width' => 110, 'align' => 'left', ), array('name' => 'banner_type', 'index' => 'banner_type', 'width' => 70, 'align' => 'center', 'search' => false), array('name' => 'status', 'index' => 'status', 'align' => 'center', 'width' => 60, 'search' => false), array('name' => 'date_modified', 'index' => 'date_modified', 'width' => 80, 'align' => 'center', 'search' => false)); $grid = $this->dispatch('common/listing_grid', array($grid_settings)); $this->data['listing_grid'] = $grid->dispatchGetOutput(); if (isset ($this->session->data['warning'])) { $this->data['error_warning'] = $this->session->data['warning']; $this->session->data['warning'] = ''; } else { $this->data ['error_warning'] = ''; } if (isset ($this->session->data['success'])) { $this->data['success'] = $this->session->data['success']; $this->session->data['success'] = ''; } else { $this->data ['success'] = ''; } $this->data['banner_types'] = array( array( 'href' => $this->html->getSecureURL('extension/banner_manager/insert', '&banner_type=1'), 'text' => $this->language->get('text_graphic_banner'), 'icon' => '' ), array( 'href' => $this->html->getSecureURL('extension/banner_manager/insert', '&banner_type=2'), 'text' => $this->language->get('text_text_banner'), 'icon' => '' ), ); $this->data['text_type'] = $this->language->get('column_banner_type'); $this->data['insert'] = $this->html->getSecureURL('extension/banner_manager/insert'); $this->data['form_language_switch'] = $this->html->getContentLanguageSwitcher(); $this->view->batchAssign($this->language->getASet()); $this->view->batchAssign($this->data); $this->view->assign('help_url', $this->gen_help_url('banner_manager')); $this->processTemplate('pages/extension/banner_manager.tpl'); //update controller data $this->extensions->hk_UpdateData($this, __FUNCTION__); } public function insert() { //init controller data $this->extensions->hk_InitData($this, __FUNCTION__); $this->loadLanguage('banner_manager/banner_manager'); $this->document->setTitle($this->language->get('banner_manager_name')); $this->data['heading_title'] = $this->language->get('banner_manager_name'); if ($this->request->is_POST() && $this->_validateForm()) { $this->_prepareData(); $this->loadModel('extension/banner_manager'); $banner_id = $this->model_extension_banner_manager->addBanner($this->request->post); $this->session->data ['success'] = $this->language->get('text_banner_success'); $this->redirect($this->html->getSecureURL('extension/banner_manager/edit', '&banner_id=' . $banner_id)); } foreach ($this->request->post as $k => $v) { $this->data[$k] = $v; } $this->_getForm(); //update controller data $this->extensions->hk_UpdateData($this, __FUNCTION__); } public function edit() { //init controller data $this->extensions->hk_InitData($this, __FUNCTION__); $this->loadLanguage('banner_manager/banner_manager'); $this->document->setTitle($this->language->get('banner_manager_name')); $this->data['heading_title'] = $this->language->get('banner_manager_name'); $banner_id = (int)$this->request->get['banner_id']; // saving if ($this->request->is_POST() && $this->_validateForm() && $banner_id) { $this->_prepareData(); $this->loadModel('extension/banner_manager'); $this->model_extension_banner_manager->editBanner($banner_id, $this->request->post); $this->session->data ['success'] = $this->language->get('text_banner_success'); $this->redirect($this->html->getSecureURL('extension/banner_manager/edit', '&banner_id=' . $banner_id)); } $this->data['error'] = $this->error; $this->loadModel('extension/banner_manager'); $info = $this->model_extension_banner_manager->getBanner($banner_id, 0); foreach ($info as $k => $v) { $this->data[$k] = $v; } $this->data['banner_group_name'] = array($this->data['banner_group_name'], $this->data['banner_group_name']); $this->_getForm(); //update controller data $this->extensions->hk_UpdateData($this, __FUNCTION__); } public function delete() { //init controller data $this->extensions->hk_InitData($this, __FUNCTION__); $banner_id = (int)$this->request->get['banner_id']; $this->loadModel('extension/banner_manager'); $this->model_extension_banner_manager->deleteBanner($banner_id); //update controller data $this->extensions->hk_UpdateData($this, __FUNCTION__); $this->redirect($this->html->getSecureURL('extension/banner_manager')); } private function _getForm() { if (isset ($this->session->data['warning'])) { $this->data ['error_warning'] = $this->session->data['warning']; $this->session->data['warning'] = ''; } else { $this->data ['error_warning'] = ''; } $this->view->assign('success', $this->session->data['success']); if (isset($this->session->data['success'])) { unset($this->session->data['success']); } $this->document->initBreadcrumb(array('href' => $this->html->getSecureURL('index/home'), 'text' => $this->language->get('text_home'), 'separator' => FALSE)); $this->document->addBreadcrumb(array('href' => $this->html->getSecureURL('extension/banner_manager'), 'text' => $this->language->get('banner_manager_name'), 'separator' => ' :: ')); $this->data ['cancel'] = $this->html->getSecureURL('extension/banner_manager'); $banner_type = 1; if (!isset($this->request->get['banner_id'])) { if ( $this->request->get['banner_type'] ) { $banner_type = $this->request->get['banner_type']; } elseif ($this->request->post['banner_type']) { $banner_type = $this->request->post['banner_type']; } $this->data ['action'] = $this->html->getSecureURL('extension/banner_manager/insert'); $this->data ['form_title'] = $this->language->get('text_create'); $this->data ['update'] = ''; $form = new AForm ('ST'); } else { $this->data ['action'] = $this->html->getSecureURL('extension/banner_manager/edit', '&banner_id=' . $this->request->get ['banner_id']); $this->data ['form_title'] = $this->language->get('text_edit') . ' ' . $this->data['name']; $this->data ['update'] = $this->html->getSecureURL('listing_grid/banner_manager/update_field', '&banner_id=' . $this->request->get ['banner_id']); $form = new AForm ('HS'); $this->data['button_details'] = $this->html->buildElement( array('type' => 'button', 'name' => 'btn_details', 'href' => $this->html->getSecureUrl('extension/banner_manager_stat/details', '&banner_id=' . $this->request->get ['banner_id']), 'text' => $this->language->get('text_view_stat') )); $banner_type = $this->data['banner_type']; } if ($banner_type == 1) { $this->data['banner_types'] = array( 'text' => $this->language->get('text_graphic_banner'), 'icon' => '' ); } else { $this->data['banner_types'] = array( 'text' => $this->language->get('text_text_banner'), 'icon' => '' ); } $this->document->addBreadcrumb( array('href' => $this->data['action'], 'text' => $this->data ['form_title'], 'separator' => ' :: ', 'current' => true )); $form->setForm(array('form_name' => 'BannerFrm', 'update' => $this->data ['update'])); $this->data['form']['form_open'] = $form->getFieldHtml( array('type' => 'form', 'name' => 'BannerFrm', 'attr' => 'data-confirm-exit="true" class="aform form-horizontal"', 'action' => $this->data ['action'])); $this->data['form']['hidden_fields']['type'] = $form->getFieldHtml(array( 'type' => 'hidden', 'name' => 'banner_type', 'value' => $banner_type )); $this->data['form']['submit'] = $form->getFieldHtml( array('type' => 'button', 'name' => 'submit', 'text' => $this->language->get('button_save'))); $this->data['form']['cancel'] = $form->getFieldHtml( array('type' => 'button', 'name' => 'cancel', 'text' => $this->language->get('button_cancel'))); //check if banner is active based on dates and update status $now = time(); if (dateISO2Int($this->data['start_date']) > $now || dateISO2Int($this->data['end_date']) < $now) { $this->data['status'] = 0; } $this->data['form']['fields']['status'] = $form->getFieldHtml(array('type' => 'checkbox', 'name' => 'status', 'value' => 1, 'checked' => ($this->data['status'] ? true : false), 'style' => 'btn_switch')); $this->data['form']['text']['status'] = $this->language->get('banner_manager_status'); $this->data['form']['fields']['name'] = $form->getFieldHtml(array( 'type' => 'input', 'name' => 'name', 'value' => $this->data['name'], 'required' => true)); $this->data['form']['text']['name'] = $this->language->get('entry_banner_name'); // groups of banners $this->loadModel('extension/banner_manager'); $result = $this->model_extension_banner_manager->getBannerGroups(); $groups = array('0' => $this->language->get('text_select'), 'new' => $this->language->get('text_add_new_group')); if ($result) { foreach ($result as $row) { $groups[$row['banner_group_name']] = $row['banner_group_name']; } } $value = $this->data['banner_group_name'][0]; if(!$value && sizeof($groups)==2){ $value = 'new'; } $this->data['form']['fields']['banner_group_name'] = $form->getFieldHtml(array( 'type' => 'selectbox', 'name' => 'banner_group_name[0]', 'options' => $groups, 'value' => $value, 'required' => true, 'style' => 'no-save' )); $this->data['form']['text']['banner_group_name'] = $this->language->get('entry_banner_group_name'); $this->data['form']['fields']['new_banner_group'] = $form->getFieldHtml( array( 'type' => 'input', 'name' => 'banner_group_name[1]', 'value' => (!in_array($this->data['banner_group_name'][1], $groups) ? $this->data['banner_group_name'][1] : ''), 'placeholder' => $this->language->get('text_put_new_group'), 'style' => 'no-save' )); $this->data['new_group_hint'] = $this->language->get('text_put_new_group'); $this->data['form']['fields']['sort_order'] = $form->getFieldHtml(array( 'type' => 'input', 'name' => 'sort_order', 'value' => $this->data['sort_order'], 'style' => 'small-field', '')); $this->data['form']['text']['sort_order'] = $this->language->get('entry_banner_sort_order'); if ($banner_type == 1) { $this->data['form']['fields']['url'] = $form->getFieldHtml( array( 'type' => 'input', 'name' => 'target_url', 'value' => $this->data['target_url'], 'required' => true )); $this->data['form']['text']['url'] = $this->language->get('entry_banner_url'); } $this->data['form']['fields']['blank'] = $form->getFieldHtml( array('type' => 'checkbox', 'name' => 'blank', 'value' => $this->data['blank'], 'style' => 'btn_switch' )); $this->data['form']['text']['blank'] = $this->language->get('entry_banner_blank'); $this->data['form']['fields']['date_start'] = $form->getFieldHtml(array( 'type' => 'date', 'name' => 'start_date', 'value' => dateISO2Display($this->data['start_date']), 'default' => dateNowDisplay(), 'dateformat' => format4Datepicker($this->language->get('date_format_short')), 'highlight' => 'future', 'style' => 'small-field')); $this->data['form']['text']['date_start'] = $this->language->get('entry_banner_date_start'); $this->data['form']['fields']['date_end'] = $form->getFieldHtml(array( 'type' => 'date', 'name' => 'end_date', 'value' => dateISO2Display($this->data['end_date']), 'default' => '', 'dateformat' => format4Datepicker($this->language->get('date_format_short')), 'highlight' => 'pased', 'style' => 'small-field')); $this->data['form']['text']['date_end'] = $this->language->get('entry_banner_date_end'); $this->data['banner_id'] = $this->request->get['banner_id'] ? $this->request->get['banner_id'] : '-1'; if ($banner_type == 1) { $this->data['form']['fields']['meta'] = $form->getFieldHtml(array( 'type' => 'textarea', 'name' => 'meta', 'value' => $this->data ['meta'], 'attr' => ' style="height: 50px;"' ) ); $this->data['form']['text']['meta'] = $this->language->get('entry_banner_meta'); $this->addChild('responses/common/resource_library/get_resources_html', 'resources_html', 'responses/common/resource_library_scripts.tpl'); $resources_scripts = $this->dispatch( 'responses/common/resource_library/get_resources_scripts', array( 'object_name' => 'banners', 'object_id' => $this->data['banner_id'], 'types' => array('image'), ) ); $this->view->assign('current_url', $this->html->currentURL()); $this->view->assign('resources_scripts', $resources_scripts->dispatchGetOutput()); $this->view->assign('rl', $this->html->getSecureURL('common/resource_library', '&object_name=banners&type=image')); } else { $this->data['form']['fields']['description'] = $form->getFieldHtml(array( 'type' => 'textarea', 'name' => 'description', 'value' => $this->data ['description'], 'attr' => '') ); $this->data['form']['text']['description'] = $this->language->get('entry_banner_html'); } $this->view->batchAssign($this->language->getASet()); $this->view->batchAssign($this->data); $this->view->assign('form_language_switch', $this->html->getContentLanguageSwitcher()); $this->view->assign('language_code', $this->session->data['language']); $this->view->assign('help_url', $this->gen_help_url('banner_edit')); $this->processTemplate('pages/extension/banner_manager_form.tpl'); } private function _validateForm() { if (!$this->user->canModify('extension/banner_manager')) { $this->session->data['warning'] = $this->error ['warning'] = $this->language->get('error_permission'); } if ($this->request->post) { $required = array('name', 'banner_type', 'banner_group_name'); if ($this->request->post['banner_type'] == 1) { $required[] = 'target_url'; } foreach ($this->request->post as $name => $value) { if (in_array($name, $required) && empty($value)) { $this->error ['warning'] = $this->language->get('error_empty'); $this->session->data['warning'] = $this->language->get('error_empty'); break; } } if (!is_array($this->request->post['banner_group_name']) || (!$this->request->post['banner_group_name'][1] && in_array($this->request->post['banner_group_name'][0], array('0', 'new'))) || trim($this->request->post['banner_group_name'][1]) == trim($this->language->get('text_put_new_group')) && in_array($this->request->post['banner_group_name'][0], array('0', 'new')) ) { $this->error ['warning'] = $this->language->get('error_empty'); $this->session->data['warning'] = $this->language->get('error_empty'); } } $this->extensions->hk_ValidateData($this); if (!$this->error) { return TRUE; } else { return FALSE; } } // Prepare data before passing to model private function _prepareData() { if (isset($this->request->post['start_date']) && $this->request->post['start_date']) { $this->request->post['start_date'] = dateDisplay2ISO($this->request->post['start_date']); } if (isset($this->request->post['end_date']) && $this->request->post['end_date']) { $this->request->post['end_date'] = dateDisplay2ISO($this->request->post['end_date']); } if (is_array($this->request->post['banner_group_name']) && isset($this->request->post['banner_group_name'][1])) { $this->request->post['banner_group_name'][1] = trim($this->request->post['banner_group_name'][1]); $this->request->post['banner_group_name'][1] = mb_ereg_replace('/^[0-9A-Za-z\ \. _\-]/', '', $this->request->post['banner_group_name'][1]); } if ($this->request->post['banner_group_name'][1] && $this->request->post['banner_group_name'][0] == 'new') { $this->request->post['banner_group_name'] = $this->request->post['banner_group_name'][1]; } else { $this->request->post['banner_group_name'] = $this->request->post['banner_group_name'][0]; } } public function insert_block() { //init controller data $this->extensions->hk_InitData($this, __FUNCTION__); $this->loadLanguage('design/blocks'); $this->loadLanguage('banner_manager/banner_manager'); $this->document->setTitle($this->language->get('banner_manager_name')); $this->data['heading_title'] = $this->language->get('text_banner_block'); $lm = new ALayoutManager(); $block = $lm->getBlockByTxtId('banner_block'); $this->data['block_id'] = $block['block_id']; if ($this->request->is_POST() && $this->_validateBlockForm()) { if (isset($this->session->data['layout_params'])) { $layout = new ALayoutManager($this->session->data['layout_params']['tmpl_id'], $this->session->data['layout_params']['page_id'], $this->session->data['layout_params']['layout_id']); $blocks = $layout->getLayoutBlocks(); if ($blocks) { foreach ($blocks as $block) { if ($block['block_id'] == $this->session->data['layout_params']['parent_block_id']) { $parent_instance_id = $block['instance_id']; $position = 0; if ($block['children']) { foreach ($block['children'] as $child) { $position = $child['position'] > $position ? $child['position'] : $position; } } break; } } } $savedata = $this->session->data['layout_params']; $savedata['parent_instance_id'] = $parent_instance_id; $savedata['position'] = $position + 10; $savedata['status'] = 1; } else { $layout = new ALayoutManager(); } $content = ''; if ($this->request->post['banner_group_name']) { $content = serialize(array('banner_group_name' => $this->request->post['banner_group_name'])); } $custom_block_id = $layout->saveBlockDescription( $this->data['block_id'], 0, array('name' => $this->request->post['block_name'], 'title' => $this->request->post['block_title'], 'description' => $this->request->post['block_description'], 'content' => $content, 'status' => (int)$this->request->post['block_status'], 'block_wrapper' => $this->request->post['block_wrapper'], 'block_framed' => $this->request->post['block_framed'], 'language_id' => $this->session->data['content_language_id'])); // save custom_block in layout if (isset($this->session->data['layout_params'])) { $savedata['custom_block_id'] = $custom_block_id; $savedata['block_id'] = $this->data['block_id']; $layout->saveLayoutBlocks($savedata); unset($this->session->data['layout_params']); } // save list if it is custom if ($this->request->post['block_banners']) { $listing_manager = new AListingManager($custom_block_id); $listing_manager->deleteCustomListing(); foreach ($this->request->post['block_banners'] as $k=>$id) { $listing_manager->saveCustomListItem( array('data_type' => 'banner_id', 'id' => (int)$id, 'sort_order' => (int)$k)); } } $this->session->data ['success'] = $this->language->get('text_banner_success'); $this->redirect($this->html->getSecureURL('extension/banner_manager/edit_block', '&custom_block_id=' . $custom_block_id)); } foreach ($this->request->post as $k => $v) { $this->data[$k] = $v; } $blocks = array(); $custom_block_types = array('html_block', 'listing_block'); foreach ($custom_block_types as $txt_id) { $block = $lm->getBlockByTxtId($txt_id); if ($block['block_id']) { $blocks[$block['block_id']] = $this->language->get('text_' . $txt_id); } } foreach ($blocks as $block_text) { $this->data['tabs'][] = array('href' => $this->html->getSecureURL('design/blocks/insert', '&block_id=' . $this->data['block_id']), 'text' => $block_text, 'active' => false); } $this->data['tabs'][] = array('href' => $this->html->getSecureURL('extension/banner_manager/insert_block', '&block_id=' . $this->data['block_id']), 'text' => $this->language->get('text_banner_block'), 'active' => true); $this->_getBlockForm(); //update controller data $this->extensions->hk_UpdateData($this, __FUNCTION__); } public function edit_block() { //init controller data $this->extensions->hk_InitData($this, __FUNCTION__); $this->loadLanguage('banner_manager/banner_manager'); $this->loadLanguage('design/blocks'); $this->document->setTitle($this->language->get('banner_manager_name')); $this->data['heading_title'] = $this->language->get('text_banner_block'); $lm = new ALayoutManager(); $block = $lm->getBlockByTxtId('banner_block'); $this->data['block_id'] = $block['block_id']; $custom_block_id = (int)$this->request->get['custom_block_id']; if (!$custom_block_id) { $this->redirect($this->html->getSecureURL('extension/banner_manager/insert_block')); } $layout = new ALayoutManager(); if ($this->request->is_POST() && $this->_validateBlockForm()) { $content = ''; if ($this->request->post['banner_group_name']) { $content = serialize(array('banner_group_name' => $this->request->post['banner_group_name'])); } // saving $layout->saveBlockDescription($this->data['block_id'], $custom_block_id, array('name' => $this->request->post['block_name'], 'title' => $this->request->post['block_title'], 'description' => $this->request->post['block_description'], 'content' => $content, 'status' => (int)$this->request->post['block_status'], 'block_wrapper' => $this->request->post['block_wrapper'], 'block_framed' => $this->request->post['block_framed'], 'language_id' => $this->session->data['content_language_id'])); // save list if it is custom if ($this->request->post['block_banners']) { $listing_manager = new AListingManager($custom_block_id); $listing_manager->deleteCustomListing(); $k=0; foreach ($this->request->post['block_banners'] as $id) { $listing_manager->saveCustomListItem( array('data_type' => 'banner_id', 'id' => $id, 'sort_order' => (int)$k)); $k++; } } else { //delete the list as nothing provided $listing_manager = new AListingManager($custom_block_id); $listing_manager->deleteCustomListing(); } $this->session->data ['success'] = $this->language->get('text_banner_success'); $this->redirect($this->html->getSecureURL('extension/banner_manager/edit_block', '&custom_block_id=' . $custom_block_id)); } $this->data['tabs'][0] = array('href' => $this->html->getSecureURL('extension/banner_manager/insert_block', '&block_id=' . $this->data['block_id']), 'text' => $this->language->get('text_banner_block'), 'active' => true); $this->_getBlockForm(); //update controller data $this->extensions->hk_UpdateData($this, __FUNCTION__); } private function _getBlockForm() { if (isset ($this->session->data['warning'])) { $this->data ['error_warning'] = $this->session->data['warning']; $this->session->data['warning'] = ''; } else { $this->data ['error_warning'] = ''; } $this->load->library('json'); $this->view->assign('success', $this->session->data['success']); if (isset($this->session->data['success'])) { unset($this->session->data['success']); } $this->document->initBreadcrumb(array('href' => $this->html->getSecureURL('index/home'), 'text' => $this->language->get('text_home'), 'separator' => FALSE)); $this->document->addBreadcrumb(array('href' => $this->html->getSecureURL('design/blocks'), 'text' => $this->language->get('heading_title'), 'separator' => ' :: ')); $this->data ['cancel'] = $this->html->getSecureURL('design/blocks'); $custom_block_id = (int)$this->request->get ['custom_block_id']; // need to get data of custom listing $options_list = array(); if ($custom_block_id) { $lm = new ALayoutManager(); $block_info = $lm->getBlockDescriptions($custom_block_id); $language_id = $this->session->data['content_language_id']; if (!isset($block_info[$language_id])) { $language_id = key($block_info); } foreach ($block_info[$language_id] as $k => $v) { $this->data[$k] = $v; } $content = $block_info[$this->language->getContentLanguageID()]['content']; if ($content) { $content = unserialize($content); } else { $content = current($block_info); $content = unserialize($content['content']); } $this->data['banner_group_name'] = $content['banner_group_name']; $lm = new AListingManager($this->request->get ['custom_block_id']); $list = $lm->getCustomList(); $options_list = array(); if ($list) { foreach ($list as $row) { $options_list[(int)$row['id']] = array(); } $ids = array_keys($options_list); $assigned_banners = $this->model_extension_banner_manager->getBanners(array('subsql_filter' => 'b.banner_id IN ('.implode(', ',$ids).')')); $rm = new AResourceManager(); $rm->setType('image'); foreach($assigned_banners as $banner){ $id = $banner['banner_id']; if(in_array($id, $ids)){ $thumbnail = $rm->getMainThumb('banners', $banner['banner_id'], (int)$this->config->get('config_image_grid_width'), (int)$this->config->get('config_image_grid_height'), false); $icon = $thumbnail['thumb_html'] ? $thumbnail['thumb_html'] : ' '; $options_list[$id] = array( 'image' => $icon, 'id' => $id, 'name' => $banner['name'], 'sort_order' => (int)$banner['sort_order'], ); } } } } if (!$custom_block_id) { $this->data ['action'] = $this->html->getSecureURL('extension/banner_manager/insert_block'); $this->data ['form_title'] = $this->language->get('text_create_block'); $this->data ['update'] = ''; $form = new AForm ('ST'); } else { $this->data ['action'] = $this->html->getSecureURL('extension/banner_manager/edit_block', '&custom_block_id=' . $custom_block_id); $this->data ['form_title'] = $this->language->get('text_edit') . ' ' . $this->data['name']; $this->data ['update'] = $this->html->getSecureURL('listing_grid/blocks_grid/update_field', '&custom_block_id=' . $custom_block_id); $form = new AForm ('HS'); } $this->document->addBreadcrumb(array('href' => $this->data['action'], 'text' => $this->data ['form_title'], 'separator' => ' :: ', 'current' => true )); $form->setForm(array('form_name' => 'BannerBlockFrm', 'update' => $this->data ['update'])); $this->data['form']['form_open'] = $form->getFieldHtml(array('type' => 'form', 'name' => 'BannerBlockFrm', 'attr' => 'data-confirm-exit="true"', 'action' => $this->data ['action'], 'attr' => 'data-confirm-exit="true" class="aform form-horizontal"' )); $this->data['form']['submit'] = $form->getFieldHtml(array('type' => 'button', 'name' => 'submit', 'text' => $this->language->get('button_save'), 'style' => 'button1')); $this->data['form']['cancel'] = $form->getFieldHtml(array('type' => 'button', 'name' => 'cancel', 'text' => $this->language->get('button_cancel'), 'style' => 'button2')); if ($custom_block_id) { $this->data['form']['fields']['block_status'] = $form->getFieldHtml( array('type' => 'checkbox', 'name' => 'block_status', 'value' => $this->data['status'], 'style' => 'btn_switch' )); $this->data['form']['text']['block_status'] = $this->html->convertLinks($this->language->get('entry_block_status')); $this->data['form']['fields']['block_status_note'] = ''; $this->data['form']['text']['block_status_note'] = $this->html->convertLinks($this->language->get('entry_block_status_note')); } $this->data['form']['fields']['block_name'] = $form->getFieldHtml(array('type' => 'hidden', 'name' => 'block_id', 'value' => $this->data['block_id'])); $this->data['form']['fields']['block_name'] .= $form->getFieldHtml(array( 'type' => 'input', 'name' => 'block_name', 'value' => $this->data['name'], 'required' => true)); $this->data['form']['text']['block_name'] = $this->language->get('entry_block_name'); $this->data['form']['fields']['block_title'] = $form->getFieldHtml(array('type' => 'input', 'name' => 'block_title', 'required' => true, 'value' => $this->data ['title'] )); $this->data['form']['text']['block_title'] = $this->language->get('entry_block_title'); // list of templates for block $tmpl_ids = $this->extensions->getInstalled('template'); $tmpl_ids[] = 'default'; $this->data['block_wrappers'] = array(); foreach ($tmpl_ids as $tmpl_id) { // for tpls of block that stores in db $layout_manager = new ALayoutManager($tmpl_id); $block = $layout_manager->getBlockByTxtId('banner_block'); $block_templates = (array)$layout_manager->getBlockTemplates($block['block_id']); foreach ($block_templates as $item) { if ($item['template']) { $this->data['block_wrappers'][$item['template']] = $item['template']; } } //Automatic block template selection mode based on parent is limited to 1 template per location //To extend, allow custom block's template to be selected to suppress automatic selection //for tpls that stores in main.php (other extensions templates) $ext_tpls = $this->extensions->getExtensionTemplates(); foreach ($ext_tpls as $section) { foreach ($section as $s => $tpls) { if ($s != 'storefront') { continue; } foreach ($tpls as $tpl) { if (isset($this->data['block_wrappers'][$tpl]) || strpos($tpl, 'blocks/banner_block/') === false) { continue; } $this->data['block_wrappers'][$tpl] = $tpl; } } } $tpls = glob(DIR_STOREFRONT . 'view/*/template/blocks/banner_block/*.tpl'); foreach ($tpls as $tpl) { $pos = strpos($tpl, 'blocks/banner_block/'); $tpl = substr($tpl, $pos); if (!isset($this->data['block_wrappers'][$tpl])) { $this->data['block_wrappers'][$tpl] = $tpl; } } } ksort($this->data['block_wrappers']); array_unshift($this->data['block_wrappers'], $this->language->get('text_automatic')); if ($this->data['block_wrapper'] && !isset($this->data['block_wrappers'][$this->data['block_wrapper']])) { $this->data['block_wrappers'] = array_merge(array($this->data['block_wrapper'] => $this->data['block_wrapper']), $this->data['block_wrappers']); } $this->data['form']['fields']['block_wrapper'] = $form->getFieldHtml(array('type' => 'selectbox', 'name' => 'block_wrapper', 'options' => $this->data['block_wrappers'], 'value' => $this->data['block_wrapper'], 'help_url' => $this->gen_help_url('block_wrapper'))); $this->data['form']['text']['block_wrapper'] = $this->language->get('entry_block_wrapper'); $this->data['form']['fields']['block_framed'] = $form->getFieldHtml(array('type' => 'checkbox', 'name' => 'block_framed', 'value' => $this->data['block_framed'], 'style' => 'btn_switch', 'help_url' => $this->gen_help_url('block_framed'),)); $this->data['form']['text']['block_framed'] = $this->language->get('entry_block_framed'); $this->data['form']['fields']['block_description'] = $form->getFieldHtml(array('type' => 'textarea', 'name' => 'block_description', 'value' => $this->data ['description'], 'attr' => ' style="height: 50px;"', )); $this->data['form']['text']['block_description'] = $this->language->get('entry_block_description'); // groups of banners $this->loadModel('extension/banner_manager'); $result = $this->model_extension_banner_manager->getBannerGroups(); $groups = array('0' => $this->language->get('text_select')); if ($result) { foreach ($result as $row) { $groups[$row['banner_group_name']] = $row['banner_group_name']; } } $this->data['form']['fields']['banner_group_name'] = $form->getFieldHtml(array('type' => 'selectbox', 'name' => 'banner_group_name', 'options' => $groups, 'value' => $this->data['banner_group_name'], 'style' => 'no-save' )); $this->data['form']['text']['banner_group_name'] = $this->language->get('entry_banner_group_name'); $this->data['form']['text']['listed_banners'] = $this->language->get('entry_banners_selected'); //load only prior saved products $this->data['banners'] = array(); $this->data['form']['fields']['listed_banners'] = $form->getFieldHtml( array( 'type' => 'multiselectbox', 'name' => 'block_banners[]', 'value' => $ids, 'options' => $options_list, 'style' => 'no-save chosen', 'ajax_url' => $this->html->getSecureURL('listing_grid/banner_manager/banners'), 'placeholder' => $this->language->get('text_select_from_lookup'), )); $this->view->batchAssign($this->language->getASet()); $this->view->batchAssign($this->data); $this->view->assign('form_language_switch', $this->html->getContentLanguageSwitcher()); $this->view->assign('language_code', $this->session->data['language']); $this->view->assign('help_url', $this->gen_help_url('banner_edit')); $this->view->assign('rl', $this->html->getSecureURL('common/resource_library', '&object_name=banners&type=image&mode=url')); $this->processTemplate('pages/extension/banner_manager_block_form.tpl'); } private function _validateBlockForm() { if (!$this->user->canModify('extension/banner_manager')) { $this->session->data['warning'] = $this->error ['warning'] = $this->language->get('error_permission'); } if (!$this->data['block_id']) { $this->error ['warning'] = $this->session->data['warning'] = 'Block with txt_id "banner_block" does not exists in your database!'; } if ($this->request->post) { $required = array('block_name', 'block_title'); foreach ($this->request->post as $name => $value) { if (in_array($name, $required) && empty($value)) { $this->error ['warning'] = $this->session->data['warning'] = $this->language->get('error_empty'); break; } } } foreach ($required as $name) { if (!in_array($name, array_keys($this->request->post))) { return false; } } if (!$this->error) { return TRUE; } else { return FALSE; } } }