From cdfa82fc8bf0c98b5aaae13ee38dde17ac4a8dd3 Mon Sep 17 00:00:00 2001 From: tDidierjean Date: Mon, 16 Jan 2012 15:31:07 +0000 Subject: [PATCH] [-] BO : fix JS errors and redirection issues on product page --- .../template/controllers/products/form.tpl | 2 ++ .../template/controllers/products/seo.tpl | 4 ++- .../default/template/helper/form/form.tpl | 27 +++++++-------- controllers/admin/AdminProductsController.php | 33 +++++++++---------- 4 files changed, 35 insertions(+), 31 deletions(-) diff --git a/admin-dev/themes/default/template/controllers/products/form.tpl b/admin-dev/themes/default/template/controllers/products/form.tpl index ae394bc4d..4659ddd2e 100644 --- a/admin-dev/themes/default/template/controllers/products/form.tpl +++ b/admin-dev/themes/default/template/controllers/products/form.tpl @@ -222,6 +222,8 @@ } }); + $(".productTabs a.selected").click(); + {if $show_product_tab_content} $("div.productTabs a[id$=-{$show_product_tab_content}]").click(); {/if} diff --git a/admin-dev/themes/default/template/controllers/products/seo.tpl b/admin-dev/themes/default/template/controllers/products/seo.tpl index cc379d877..f1c8ba85e 100644 --- a/admin-dev/themes/default/template/controllers/products/seo.tpl +++ b/admin-dev/themes/default/template/controllers/products/seo.tpl @@ -100,7 +100,9 @@ diff --git a/admin-dev/themes/default/template/helper/form/form.tpl b/admin-dev/themes/default/template/helper/form/form.tpl index be97c46d2..c9dfe3d45 100644 --- a/admin-dev/themes/default/template/helper/form/form.tpl +++ b/admin-dev/themes/default/template/helper/form/form.tpl @@ -410,20 +410,21 @@ var id_language = {$defaultFormLanguage}; var languages = new Array(); + // Multilang field setup must happen before document is ready so that calls to displayFlags() to avoid + // precedence conflicts with other document.ready() blocks + {foreach $languages as $k => $language} + languages[{$k}] = { + id_lang: {$language.id_lang}, + iso_code: '{$language.iso_code}', + name: '{$language.name}', + is_default: "{$language.is_default}" + }; + {/foreach} + // we need allowEmployeeFormLang var in ajax request + allowEmployeeFormLang = {$allowEmployeeFormLang}; + displayFlags(languages, id_language, allowEmployeeFormLang); + $(document).ready(function() { - - {foreach $languages as $k => $language} - languages[{$k}] = { - id_lang: {$language.id_lang}, - iso_code: '{$language.iso_code}', - name: '{$language.name}', - is_default: "{$language.is_default}" - }; - {/foreach} - // we need allowEmployeeFormLang var in ajax request - allowEmployeeFormLang = {$allowEmployeeFormLang}; - displayFlags(languages, id_language, allowEmployeeFormLang); - {if isset($fields_value.id_state)} if ($('#id_country') && $('#id_state')) { diff --git a/controllers/admin/AdminProductsController.php b/controllers/admin/AdminProductsController.php index b82514e36..390eff8cf 100644 --- a/controllers/admin/AdminProductsController.php +++ b/controllers/admin/AdminProductsController.php @@ -63,6 +63,8 @@ class AdminProductsControllerCore extends AdminController 'Accounting' => false, ); + protected $default_tab = 'Informations'; + protected $available_tabs_lang = array (); public function __construct() @@ -976,14 +978,19 @@ class AdminProductsControllerCore extends AdminController if (!$this->action) parent::initProcess(); - // Set tab to display - if ($this->action) - { + if ($this->action == 'save' + && Tools::getValue('submitAdd'.$this->table.'AndStay') + && isset($this->available_tabs[Tools::getValue('key_tab')])) + $this->tab_display = Tools::getValue('key_tab'); + + // Set tab to display if not decided already + if (!$this->tab_display && $this->action) if (in_array($this->action, array_keys($this->available_tabs))) $this->tab_display = $this->action; - elseif ($this->action == 'new' || $this->action == 'save') - $this->tab_display = 'Informations'; - } + + // And if still not set, use default + if (!$this->tab_display) + $this->tab_display = $this->default_tab; } /** @@ -1427,10 +1434,7 @@ class AdminProductsControllerCore extends AdminController if (Tools::getValue('resizer') == 'man' && isset($id_image) && is_int($id_image) && $id_image) $this->redirect_after = self::$currentIndex.'&id_product='.$object->id.'&id_category='.(!empty($_REQUEST['id_category_default'])?$_REQUEST['id_category_default']:'1').'&id_image='.$id_image.'&imageresize&toconf=3&submitAddAndStay='.(Tools::isSubmit('submitAdd'.$this->table.'AndStay') ? 'on' : 'off').'&token='.($token ? $token : $this->token); // Save and stay on same form - if (Tools::isSubmit('submitAdd'.$this->table.'AndStay')) - $this->redirect_after = self::$currentIndex.'&id_product='.$object->id.'&id_category='.(!empty($_REQUEST['id_category_default'])?$_REQUEST['id_category_default']:'1').'&addproduct&conf=3&action='.Tools::getValue('key_tab').'&token='.($token ? $token : $this->token); - else - // Default behavior (save and back) + if (!Tools::isSubmit('submitAdd'.$this->table.'AndStay')) $this->redirect_after = self::$currentIndex.'&id_category='.(!empty($_REQUEST['id_category_default'])?$_REQUEST['id_category_default']:'1').'&conf=3&token='.($token ? $token : $this->token); } else @@ -1826,8 +1830,6 @@ class AdminProductsControllerCore extends AdminController { $this->addJS(_PS_JS_DIR_.'admin-products.js'); $this->fields_form = array(); - if (empty($this->tab_display)) - $this->tab_display = 'Informations'; if(method_exists($this, 'initForm'.$this->tab_display)) $this->tpl_form = strtolower($this->tab_display).'.tpl'; @@ -1838,8 +1840,8 @@ class AdminProductsControllerCore extends AdminController { $product_tabs = array(); // tab_display defines which tab to display first - if (empty($this->tab_display) || !method_exists($this, 'initForm'.$this->tab_display)) - $this->tab_display = 'Informations'; + if (!method_exists($this, 'initForm'.$this->tab_display)) + $this->tab_display = $this->default_tab; // i is used as product_tab id $i = 0; @@ -1866,9 +1868,6 @@ class AdminProductsControllerCore extends AdminController $this->tpl_form_vars['product_tabs'] = $product_tabs; } - - /*$languages = Language::getLanguages(false); - $default_language = (int)Configuration::get('PS_LANG_DEFAULT');*/ } else {