From f44ed700c03e2ebd7a10df554d1bff462baa22ad Mon Sep 17 00:00:00 2001 From: Francois Gaillard Date: Wed, 7 Mar 2012 14:25:57 +0000 Subject: [PATCH] [-] BO : #PSFV-620 : BugFix blank labels between languages. --- cache/class_index.php | 26 +++---- js/admin.js | 2 +- modules/blocktopmenu/blocktopmenu.php | 103 +++++++++++++++++--------- 3 files changed, 83 insertions(+), 48 deletions(-) diff --git a/cache/class_index.php b/cache/class_index.php index 85e0ba68a..e7542dfda 100644 --- a/cache/class_index.php +++ b/cache/class_index.php @@ -435,7 +435,7 @@ 'NotificationCore' => 'classes/Notification.php', 'ObjectModel' => 'override/classes/ObjectModel.php', 'ObjectModelCore' => 'classes/ObjectModel.php', - 'Order' => 'override/classes/order/Order.php', + 'Order' => 'override/classes/Order.php', 'OrderCarrier' => 'override/classes/order/OrderCarrier.php', 'OrderCarrierCore' => 'classes/order/OrderCarrier.php', 'OrderCartRule' => 'override/classes/order/OrderCartRule.php', @@ -445,37 +445,37 @@ 'OrderController' => 'override/controllers/front/OrderController.php', 'OrderControllerCore' => 'controllers/front/OrderController.php', 'OrderCore' => 'classes/order/Order.php', - 'OrderDetail' => 'override/classes/order/OrderDetail.php', + 'OrderDetail' => 'override/classes/OrderDetail.php', 'OrderDetailController' => 'override/controllers/front/OrderDetailController.php', 'OrderDetailControllerCore' => 'controllers/front/OrderDetailController.php', 'OrderDetailCore' => 'classes/order/OrderDetail.php', - 'OrderDiscount' => 'override/classes/order/OrderDiscount.php', + 'OrderDiscount' => 'override/classes/OrderDiscount.php', 'OrderDiscountCore' => 'classes/order/OrderDiscount.php', 'OrderFollowController' => 'override/controllers/front/OrderFollowController.php', 'OrderFollowControllerCore' => 'controllers/front/OrderFollowController.php', - 'OrderHistory' => 'override/classes/order/OrderHistory.php', + 'OrderHistory' => 'override/classes/OrderHistory.php', 'OrderHistoryCore' => 'classes/order/OrderHistory.php', 'OrderInvoice' => 'override/classes/order/OrderInvoice.php', 'OrderInvoiceCore' => 'classes/order/OrderInvoice.php', - 'OrderMessage' => 'override/classes/order/OrderMessage.php', + 'OrderMessage' => 'override/classes/OrderMessage.php', 'OrderMessageCore' => 'classes/order/OrderMessage.php', 'OrderOpcController' => 'override/controllers/front/OrderOpcController.php', 'OrderOpcControllerCore' => 'controllers/front/OrderOpcController.php', 'OrderPayment' => 'override/classes/order/OrderPayment.php', 'OrderPaymentCore' => 'classes/order/OrderPayment.php', - 'OrderReturn' => 'override/classes/order/OrderReturn.php', + 'OrderReturn' => 'override/classes/OrderReturn.php', 'OrderReturnController' => 'override/controllers/front/OrderReturnController.php', 'OrderReturnControllerCore' => 'controllers/front/OrderReturnController.php', 'OrderReturnCore' => 'classes/order/OrderReturn.php', - 'OrderReturnState' => 'override/classes/order/OrderReturnState.php', + 'OrderReturnState' => 'override/classes/OrderReturnState.php', 'OrderReturnStateCore' => 'classes/order/OrderReturnState.php', - 'OrderSlip' => 'override/classes/order/OrderSlip.php', + 'OrderSlip' => 'override/classes/OrderSlip.php', 'OrderSlipController' => 'override/controllers/front/OrderSlipController.php', 'OrderSlipControllerCore' => 'controllers/front/OrderSlipController.php', 'OrderSlipCore' => 'classes/order/OrderSlip.php', - 'OrderState' => 'override/classes/order/OrderState.php', + 'OrderState' => 'override/classes/OrderState.php', 'OrderStateCore' => 'classes/order/OrderState.php', - 'PDF' => 'override/classes/pdf/PDF.php', + 'PDF' => 'override/classes/PDF.php', 'PDFCore' => 'classes/pdf/PDF.php', 'PDFGenerator' => 'override/classes/pdf/PDFGenerator.php', 'PDFGeneratorCore' => 'classes/pdf/PDFGenerator.php', @@ -557,7 +557,7 @@ 'StateCore' => 'classes/State.php', 'StatisticsController' => 'override/controllers/front/StatisticsController.php', 'StatisticsControllerCore' => 'controllers/front/StatisticsController.php', - 'Stock' => 'override/classes/stock/Stock.php', + 'Stock' => 'override/classes/Stock.php', 'StockAvailable' => 'override/classes/stock/StockAvailable.php', 'StockAvailableCore' => 'classes/stock/StockAvailable.php', 'StockCore' => 'classes/stock/Stock.php', @@ -568,9 +568,9 @@ 'StockManagerInterface' => 'classes/stock/StockManagerInterface.php', 'StockManagerModule' => 'override/classes/stock/StockManagerModule.php', 'StockManagerModuleCore' => 'classes/stock/StockManagerModule.php', - 'StockMvt' => 'override/classes/stock/StockMvt.php', + 'StockMvt' => 'override/classes/StockMvt.php', 'StockMvtCore' => 'classes/stock/StockMvt.php', - 'StockMvtReason' => 'override/classes/stock/StockMvtReason.php', + 'StockMvtReason' => 'override/classes/StockMvtReason.php', 'StockMvtReasonCore' => 'classes/stock/StockMvtReason.php', 'StockMvtWS' => 'override/classes/stock/StockMvtWS.php', 'StockMvtWSCore' => 'classes/stock/StockMvtWS.php', diff --git a/js/admin.js b/js/admin.js index 749ea8169..e5aa3b790 100644 --- a/js/admin.js +++ b/js/admin.js @@ -124,10 +124,10 @@ function toggleLanguageFlags(elt) // Kept for retrocompatibility only (out of AdminProducts & AdminCategories) function changeLanguage(field, fieldsString, id_language_new, iso_code) { + $('div[id^='+field+'_]').hide(); var fields = fieldsString.split('ยค'); for (var i = 0; i < fields.length; ++i) { - $('#'+fields[i]+'_'+id_language).hide(); $('#'+fields[i]+'_'+id_language_new).show(); $('#'+'language_current_'+fields[i]).attr('src', '../img/l/' + id_language_new + '.jpg'); } diff --git a/modules/blocktopmenu/blocktopmenu.php b/modules/blocktopmenu/blocktopmenu.php index 5eabbbe96..448d6e45d 100644 --- a/modules/blocktopmenu/blocktopmenu.php +++ b/modules/blocktopmenu/blocktopmenu.php @@ -111,8 +111,13 @@ class Blocktopmenu extends Module public function getContent() { - $id_lang = Shop::getContextShopID(); + $id_lang = (int)Context::getContext()->language->id; + $languages = $this->context->controller->getLanguages(); + $default_language = Configuration::get('PS_LANG_DEFAULT'); + + $labels = Tools::getValue('label') ? array_filter(Tools::getValue('label'), 'strlen') : array(); $spacer = str_repeat(' ', $this->spacer_size); + $divLangName = 'link_label'; if (Tools::isSubmit('submitBlocktopmenu')) { @@ -124,18 +129,25 @@ class Blocktopmenu extends Module } else if (Tools::isSubmit('submitBlocktopmenuLinks')) { - if (Tools::getValue('link') == '') - $this->_html .= $this->displayError($this->l('Unable to add this link')); + + if ((Tools::getValue('link') == '') && (!count($labels))) + ; + else if (Tools::getValue('link') == '') + $this->_html .= $this->displayError($this->l('Please, fill the "Link" field')); + else if (!count($labels)) + $this->_html .= $this->displayError($this->l('Please add a label')); + else if (!isset($labels[$default_language])) + $this->_html .= $this->displayError($this->l('Please add a label for your default language')); else { - MenuTopLinks::add(Tools::getValue('link'), Tools::getValue('label'), Tools::getValue('new_window', 0), (int)$this->context->shop->id); + MenuTopLinks::add(Tools::getValue('link'), Tools::getValue('label'), Tools::getValue('new_window', 0), (int)Shop::getContextShopID()); $this->_html .= $this->displayConfirmation($this->l('The link has been added')); } } else if (Tools::isSubmit('submitBlocktopmenuRemove')) { $id_linksmenutop = Tools::getValue('id_linksmenutop', 0); - MenuTopLinks::remove($id_linksmenutop, (int)$this->context->shop->id); + MenuTopLinks::remove($id_linksmenutop, (int)Shop::getContextShopID()); Configuration::updateValue('MOD_BLOCKTOPMENU_ITEMS', str_replace(array('LNK'.$id_linksmenutop.',', 'LNK'.$id_linksmenutop), '', Configuration::get('MOD_BLOCKTOPMENU_ITEMS'))); $this->_html .= $this->displayConfirmation($this->l('The link has been removed')); } @@ -170,7 +182,7 @@ class Blocktopmenu extends Module // BEGIN CMS $this->_html .= ''; - $this->getCMSOptions(); + $this->getCMSOptions(0, 1, $id_lang); $this->_html .= ''; // BEGIN SUPPLIER @@ -189,7 +201,7 @@ class Blocktopmenu extends Module // BEGIN Categories $this->_html .= ''; - $this->getCategoryOption(); + $this->getCategoryOption(1, $id_lang); $this->_html .= ''; // BEGIN Products @@ -201,7 +213,15 @@ class Blocktopmenu extends Module $this->_html .= ''; $links = MenuTopLinks::gets($id_lang, null, (int)Shop::getContextShopID()); foreach ($links as $link) - $this->_html .= ''; + { + if ($link['label'] == '') + { + $link = MenuTopLinks::get($link['id_linksmenutop'], $default_language, (int)Shop::getContextShopID()); + $this->_html .= ''; + } + else + $this->_html .= ''; + } $this->_html .= ''; $this->_html .= '
@@ -265,11 +285,6 @@ class Blocktopmenu extends Module
'; - $defaultLanguage = intval($this->context->language->id); - $languages = $this->context->controller->getLanguages(); - $iso = Language::getIsoById($defaultLanguage); - $divLangName = 'link_label'; - $this->_html .= '
'.$this->l('Add Menu Top Link').' @@ -279,20 +294,20 @@ class Blocktopmenu extends Module foreach ($languages as $language) { $this->_html .= ' -

- +
- +

@@ -401,7 +416,14 @@ class Blocktopmenu extends Module case 'LNK': $link = MenuTopLinks::get($id, $id_lang, $id_shop); if (count($link)) - $this->_html .= ''.PHP_EOL; + { + if (!isset($link[0]['label']) || ($link[0]['label'] == '')) + { + $default_language = Configuration::get('PS_LANG_DEFAULT'); + $link = MenuTopLinks::get($link[0]['id_linksmenutop'], $default_language, (int)Shop::getContextShopID()); + } + $this->_html .= ''; + } break; } } @@ -480,7 +502,14 @@ class Blocktopmenu extends Module case 'LNK': $link = MenuTopLinks::get($id, $id_lang, $id_shop); if (count($link)) + { + if (!isset($link[0]['label']) || ($link[0]['label'] == '')) + { + $default_language = Configuration::get('PS_LANG_DEFAULT'); + $link = MenuTopLinks::get($link[0]['id_linksmenutop'], $default_language, (int)Shop::getContextShopID()); + } $this->_menu .= '

  • '.$link[0]['label'].'
  • '.PHP_EOL; + } break; } } @@ -532,14 +561,14 @@ class Blocktopmenu extends Module $this->_menu .= ''; } - private function getCMSMenuItems($parent, $depth = 1) + private function getCMSMenuItems($parent, $depth = 1, $id_lang = false) { - $id_lang = Context::getContext()->language->id; + $id_lang = $id_lang ? $id_lang : (int)Context::getContext()->language->id; if ($depth > 3) return; - $categories = $this->getCMSCategories(false, $parent); + $categories = $this->getCMSCategories(false, $parent, $id_lang); $pages = $this->getCMSPages($parent); if (count($categories) || count($pages)) @@ -569,16 +598,19 @@ class Blocktopmenu extends Module } } - private function getCMSOptions($parent = 0, $depth = 1) + private function getCMSOptions($parent = 0, $depth = 1, $id_lang = false) { - $categories = $this->getCMSCategories(false, $parent); - $pages = $this->getCMSPages($parent); + $id_lang = $id_lang ? $id_lang : (int)Context::getContext()->language->id; + + $categories = $this->getCMSCategories(false, $parent, $id_lang); + $pages = $this->getCMSPages($parent, false, $id_lang); + $spacer = str_repeat(' ', $this->spacer_size * (int)$depth); foreach ($categories as $category) { $this->_html .= ''; - $this->getCMSOptions($category['id_cms_category'], $depth + 1); + $this->getCMSOptions($category['id_cms_category'], $depth + 1, $id_lang); } foreach ($pages as $page) @@ -602,15 +634,17 @@ class Blocktopmenu extends Module return $this->display(__FILE__, 'blocktopmenu.tpl'); } - private function getCMSCategories($recursive = false, $parent = 1) + private function getCMSCategories($recursive = false, $parent = 1, $id_lang = false) { + $id_lang = $id_lang ? $id_lang : (int)Context::getContext()->language->id; + if ($recursive === false) { $sql = 'SELECT bcp.`id_cms_category`, bcp.`id_parent`, bcp.`level_depth`, bcp.`active`, bcp.`position`, cl.`name`, cl.`link_rewrite` FROM `'._DB_PREFIX_.'cms_category` bcp INNER JOIN `'._DB_PREFIX_.'cms_category_lang` cl ON (bcp.`id_cms_category` = cl.`id_cms_category`) - WHERE cl.`id_lang` = '.(int)Context::getContext()->language->id.' + WHERE cl.`id_lang` = '.$id_lang.' AND bcp.`id_parent` = '.(int)$parent; return Db::getInstance()->executeS($sql); @@ -621,13 +655,13 @@ class Blocktopmenu extends Module FROM `'._DB_PREFIX_.'cms_category` bcp INNER JOIN `'._DB_PREFIX_.'cms_category_lang` cl ON (bcp.`id_cms_category` = cl.`id_cms_category`) - WHERE cl.`id_lang` = '.(int)Context::getContext()->language->id.' + WHERE cl.`id_lang` = '.$id_lang.' AND bcp.`id_parent` = '.(int)$parent; $results = Db::getInstance()->executeS($sql); foreach ($results as $result) { - $sub_categories = $this->getCMSCategories(true, $result['id_cms_category']); + $sub_categories = $this->getCMSCategories(true, $result['id_cms_category'], $id_lang); if ($sub_categories && count($sub_categories) > 0) $result['sub_categories'] = $sub_categories; $categories[] = $result; @@ -638,9 +672,10 @@ class Blocktopmenu extends Module } - private function getCMSPages($id_cms_category, $id_shop = false) + private function getCMSPages($id_cms_category, $id_shop = false, $id_lang = false) { - $id_shop = ($id_shop !== false) ? $id_shop : Context::getContext()->shop->id; + $id_shop = ($id_shop !== false) ? $id_shop : (int)Context::getContext()->shop->id; + $id_lang = $id_lang ? $id_lang : (int)Context::getContext()->language->id; $sql = 'SELECT c.`id_cms`, cl.`meta_title`, cl.`link_rewrite` FROM `'._DB_PREFIX_.'cms` c @@ -649,8 +684,8 @@ class Blocktopmenu extends Module INNER JOIN `'._DB_PREFIX_.'cms_lang` cl ON (c.`id_cms` = cl.`id_cms`) WHERE c.`id_cms_category` = '.(int)$id_cms_category.' - AND cs.`id_shop` = '.(int)$id_shop.' - AND cl.`id_lang` = '.(int)Context::getContext()->language->id.' + AND cs.`id_shop` = '.$id_shop.' + AND cl.`id_lang` = '.$id_lang.' AND c.`active` = 1 ORDER BY `position`';