diff --git a/CHANGELOG b/CHANGELOG index f17cc860f..8b88cc093 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -23,6 +23,261 @@ International Registred Trademark & Property of PrestaShop SA Release Notes for PrestaShop 1.4 -------------------------------- +#################################### +# v1.4.1.0 - 6030 (2011-04-21) # +#################################### + + Added Features: + + [+] Installer : Adding address format table + [+] Installer : Thanks to Michael Bangiev for german installer translation \! + [+] Installer : When upgrading, you can now automatically desactivate non-native modules + [+] Installer : added link to the online theme validator + + [+] FO : Adding address formating for stores + + [+] BO : Adding address formating + [+] BO : Adding address formating + [+] BO : Adding address formating + [+] BO : Adding address formating + [+] BO : Adding address formating + [+] BO : Adding address formating + [+] BO : added methods to enable/disable one or more module by name + [+] BO : added static method to get non native module list in ModuleCore class + + [+] CORE : allow to load interface with the autoload + + [+] WS : add column in the PREFIX_webservice_account table + + [+] TR : translation wording + + Improved/changed features: + + [*] Project : added new tinyMCE version + [*] Project : remove old tinyMC version + + [*] INSTALLER : Can manage HTML in preactivation text + [*] Installer : added readme_it, readme_de, and CHANGELOG to the file-to-delete list + + [*] FO : #PSCFI-1537 corrects address block error + [*] FO : Cached queries + [*] FO : Display label can desactivated + Tax & Shipping simulator + [*] FO : Fixed link to delete customer product picture when friendly url + canonical are activated + [*] FO : Using geocoding for itinerary + [*] FO : corrects smarty2 compliance + [*] FO : in category view, products for which the default combination is out of stock but other combinations are still available no longer display an 'Out of stock' message. + [*] FO : in product view, accessories now display a message if they are out of stock or out of the default combination. + [*] FO : setMedia called now only in init() + + [*] BO : Adding store infos templatization + [*] BO : Adding store infos templatization + [*] BO : keeping cart status on refresh + [*] BO : #8341 Wording: changing depth and package spelling + [*] BO : #8345 Deleting unused vars + [*] BO : #8406 Adding method to get protocol + [*] BO : #8406 removing hard coded http + [*] BO : #8419 Adding attachment name check + [*] BO : #8438 corrects use of uninstanciated value + [*] BO : #8440 restores quantity display + [*] BO : #8459 filtering arrow keys + [*] BO : #8486 changing getProtocol + [*] BO : #8486 changing getProtocol + [*] BO : #8569 removing bad redirect & cookie path for ajaxfilemanager + [*] BO : #8693 Adding back to category link on add doc attachment + [*] BO : #PSCFI-1294 wording: corrects Pproduct + [*] BO : Adding market place group to AdminModules + [*] BO : Adding missing else case + [*] BO : Adding store infos templatization + [*] BO : Adding translate for contact, Bug tracker, forum + [*] BO : Corrects die error is state is used + [*] BO : cleaning + [*] BO : improve loading of home page of Back office + [*] BO : now admin tabs defined in module use now translation in their module directory + [*] BO : orders don t disappear anymore if authorized localhost client + [*] BO : revert: Adding missing else case + [*] BO : reverting + [*] BO : reverting wording + [*] BO : setting re-ordeing regexp to 99 max + [*] BO : unsetting var after use + [*] BO : updating iso state code according to ISO_3166-2 + [*] BO : wording + + [*] MO : Bug fixed #PSCFI-1370 - Adding possibility to choose calcul mode for shipping cost in USPS module + [*] MO : Display option for eKomi module + [*] MO : added weight filter - removing the restriction on cache table + [*] MO : improvements on carriercompare (Shipping estimation) module + [*] MO : themeinstallator - exported themes archives now have a random md5 filename + + Fixed bugs: + + [-] Project : Fixed bug #PSCFI-1208 - MODULE_DIR (relative path) should be replaced with PS_MODULE_DIR (full path) + [-] Project : fixed json_encode and json_decode calls + + [-] INSTALLER : Bug fixed on checkbox preactivation system + [-] INSTALLER : Preactivation prechecked bug has been fixed + [-] Installer : Bug Fixed #8585 - Wrong currency for reduction inserted to ps_specific_price + [-] Installer : Bug Fixed #PSCFI-1266 - 1.3 price reductions not applied to all groups on 1.4 upgrade + [-] Installer : Fixed #PSCFI-1466 - undefined constant _PS_VERSION_ was used instead of $oldversion + [-] Installer : Fixed #PSCFI-1496 - var name corrected in desactivatecustommodule.php + [-] Installer : Fixed #PSCFI-1500 - PREFIX_ / ps_ in installer + [-] Installer : Fixed about-us german url rewrite + [-] Installer : fixed bug #8477 - German friendly URLs have uppercase letters + [-] Installer : fixed bug #PSCFI-1381 - svn5784 upgrade sql error and cannot complete upgrade - Cannot redeclare alter_cms_block() previously declared + [-] Installer : fixed bug #PSCFI-1500 + [-] Installer : fixed bug if CMS module is not installed + + [-] FO : #PSCFI-1374 Fixed a bug concerning the cart without taxes + [-] FO : Bug Fixed #8315 - Incorrect tax for counties + [-] FO : Bug Fixed #PSCFI-1459 - Problem in tax summary (tax excl + ecotax) + [-] FO : Bug Fixed #PSCFI-1460 - Combination + overriden EcoTax + [-] FO : Bug Fixed #PSCFI-1516 - Incorrect cache key in price calculation + [-] FO : Bug fixed #8293 - Wrong price round for product + [-] FO : Bug fixed default picture missing in product comparison + [-] FO : CSS and JS files not available (404) are now empty, haven't code html of 404 page of Prestashop + [-] FO : Fixed #7752 - now customer image will be deleted if they remove product they attached to a product + [-] FO : Fixed #8418 HTTPS issue with _SERVER['HTTPS'] + [-] FO : Fixed #PSCFI-1118 add to cart with customization + [-] FO : Fixed #PSCFI-1215 blockbestsellers now correctly constructs links to best-sale page + [-] FO : Fixed #PSCFI-1220 wrong call to setMedia() + [-] FO : Fixed #PSCFI-1269 undefined variable + [-] FO : Fixed #PSCFI-733 - fatal error when disabling shop + [-] FO : Fixed bug #PSCFI-1201 - Product quantities were not displayed when they should be. + [-] FO : Fixed bug #PSCFI-1373 - Bug with the update function when an id_lang was passed to the construct function. + [-] FO : Fixed bug on ssl pages + [-] FO : Fixed login issue when special ssl configuration + [-] FO : Hours can now be translated for the store locator + [-] FO : Remove debug comment + [-] FO : Smarty 2 compatibility + [-] FO : Use default country for default taxes + [-] FO : deleted the string "!" which didn't make sense in the sentence "Assign an address title for future reference". + [-] FO : fixed a bug when a customer have on his cookie a disabled currency + [-] FO : fixed bug #7991 - fixed a bug where the 'add to cart' button was still active for accessories on product pages when they are out of stock, and fixed a bug where out of stock message for products was not displayed. + [-] FO : fixed bug #8042 - logo and favicon were not cached properly + [-] FO : fixed bug #8363 - Availability in cart (green dot) wrong for products with stock 0 + [-] FO : fixed bug #8389 - Category page not work + [-] FO : fixed bug #8436 - State select is invalid HTML + [-] FO : fixed bug #8479 - Smarty error on lines 147 and 168 of themes/prestashop/address.tpl + [-] FO : fixed bug #8492 - Error in cms.php?id_cms_category=1 + [-] FO : fixed bug #8536 - Incompleted end tag + [-] FO : fixed bug #8555 - 1.4.0.17 h1 overlaps a background bar + [-] FO : fixed bug #8577 - shipping bug order OPC + [-] FO : fixed bug #8631 - CMS page links to other languages ignores URL rewrite (always unfriendly URL) + [-] FO : fixed bug #PSCFI-1290 - One Page Checkout calculates gift_price in two different ways - one right, one wrong + [-] FO : fixed bug #PSCFI-1296 - cart_summary is not updated after deleting items + [-] FO : fixed bug #PSCFI-1303 - Tag pagination with specific characters + [-] FO : fixed bug #PSCFI-1315 - Bug authentication and not installed newsletter module + [-] FO : fixed bug #PSCFI-1317 - 5 step checkout is missing address information in checkout window + [-] FO : fixed bug #PSCFI-1369 - svn5760 typo ("mob") in ajax.php + [-] FO : fixed bug #PSCFI-1395 - PackCore static function "IsInStock" doesn't work for packs + [-] FO : fixed bug #PSCFI-1400 - no css for search pages + [-] FO : fixed bug #PSCFI-1475 - An error occured because of an undefined variable $tag. The variable has been renamed as $search_tag to fix it. + [-] FO : fixed bug #PSCFI-1489 - Clicking on "Add to cart" - Button disables all "Add to cart" + [-] FO : fixed bug #PSCFI-151 - Full category list displays then shrinks + [-] FO : fixed bug #PSCFI-1543 - theme: "out of stock" condition may not be EXACTLY zero + [-] FO : fixed bug #PSCFI-1548 - Error in getPacksTable sql query + [-] FO : fixed bug PSCFI-1455 - Class "warning-inline" doesn't exist. Changed to "warning_inline" + [-] FO : fixed bug live edit now display correctly + [-] FO : fixed many call to unexisting css and js file after an update + [-] FO : fixed stylesheet bug and CCC feature + [-] FO :fixed a translation bug in French + + [-] BO : Bug Fixed #PSCFI-1481 - IncludeTab and active action + [-] BO : Fix on preactivation process + [-] BO : Fixed #1205 error on updating product + [-] BO : Fixed #8513, #7932, #8040 about mail translation loss, thanks to sorsand rodt + [-] BO : Fixed #PSCFI-1191 - url rewrite for home page + [-] BO : Fixed #PSCFI-1222 - product order + [-] BO : Fixed #PSCFI-1394 bug while cleaning connection pages + [-] BO : Fixed #PSCFI-1485 - strict standard + [-] BO : Fixed #PSCFI-1512 - thanks to Melinda for fixing the filtering module system :) + [-] BO : Fixed #PSCFI-1517 - colorpicker.js issue on firefox 4 + [-] BO : Fixed #PSCFI-1518 - now you can translate modules in a custom theme using the AdminTranslations tools + [-] BO : Fixed #PSCFI-858 upload flag for a language + [-] BO : Fixed #PSCFI-999 - generate a correct htaccess for cms and category cms + [-] BO : Fixed 8452 - mysql_close is not called if invalid link ressource + [-] BO : Fixed bug #PSCFI-1254 - Filtering manufacturers by activity would generate an incorrect sql query + [-] BO : Fixed bug - sql error when duplicate product + [-] BO : Fixed login issue when special ssl configuration + [-] BO : Localization pack can now be imported locally if no internet connection is available + [-] BO : Now .tpl are translate in root theme folder + [-] BO : Now when a language is added, the translation in the default language is automatically copied to the new language. + [-] BO : Rouding issues with float 149.42 - 149.42 = -0.0000000000012 + [-] BO : added array_change_key_case for module translation compatibility + [-] BO : fixed #PSCFI-1207 - language pack import not possible with safari 5 on osx 10.6.6 and 10.6.7 + [-] BO : fixed bad redirection + [-] BO : fixed bug #8391 - Currency symbol not shown in admin/products + [-] BO : fixed bug #8393 - Pagination was broken. + [-] BO : fixed bug #8414 - meta-keywords saving error + [-] BO : fixed bug #8563 - BO: change country to one without states + [-] BO : fixed bug #8576 - Illegal offset type in admin modules page + [-] BO : fixed bug #8636 - Fatal error during address importation + [-] BO : fixed bug #8649 - Suppliers Description validates wrong + [-] BO : fixed bug #PSCFI-1356 - Unknown object in AdminProduct due to typo + [-] BO : fixed bug #PSCFI-1372 - svn5757 tinymce.inc.js misses some plugins + [-] BO : fixed bug #PSCFI-1380 - sorting sub-categories by name in the table make back to parent category + [-] BO : fixed bug #PSCFI-1429 - Deleting products does not remove image files + [-] BO : fixed bug #PSCFI-1431 - Import error if html tag in CSV + [-] BO : fixed bug #PSCFI-1461 - Product updateDefaultAttribute function - small typo + [-] BO : fixed bug #PSCFI-1468 - Unable to delete Tax + [-] BO : fixed bug #PSCFI-1469 - BO Modules UI wrong collapse icon + [-] BO : fixed bug #PSCFI-1471 - UK localization xml was missing + [-] BO : fixed bug #PSCFI-1523 - Bug in saving mail subjects between translations + [-] BO : fixed bug #PSCFI-1560 - Carrier filter in AdminCarts Tab + [-] BO : fixed bug PSCFI-1557 - If a product's name include a comma, it cannot be added to a "pack" product + [-] BO : fixed bug in stock movements where clicking 'reset' would display an error. + [-] BO : fixed bug interface in AdminCountries tab + [-] BO : fixed bug on modules autocomplete search + [-] BO : fixed bug on modules filters + [-] BO : fixed bug scollTo bug when install new module + [-] BO : fixed mail subject translation (utf8, htmlentities, quotes) + [-] BO : fixed notice errors on product comaprison feature + [-] BO : install fix (now works) + [-] BO : liveEdit when open_basedir restriction + [-] BO : module can't be now transplanted anywhere, just where it can + [-] BO :fixed a translation bug, name files are translated with the content + + [-] Classes : fixed bug #8599 + [-] Classes : fixed bug #PSCFI-1358 - Undefined index in Tools::displayasdeprecated + [-] Classes : fixed bug #PSCFI-1358 - Undefined index in Tools::displayasdeprecated (another one) + [-] Classes : fixed bug #PSCFI-1384 - error in Class configuration + [-] Classes : fixed bug #PSCFI-1391 - "Reset" link on "Categories block v2.0" causes "Max depth" to be lost + [-] Classes : you can define encoding to strlen() method of Tools class + + [-] Core : fixed bug #PSCFI-1397 - .htaccess in /download is missing + [-] Core : fixed little bug on validation method for iso code of state + + [-] MO : Bug fixed #PSCFI-1370 - Fix on USPS module for FirstClassMailType + [-] MO : Translations fixed on module Twenga + [-] MO : TrustedShops - Integration certificate enable features + [-] MO : TrustedShops - Missing {literal} tags + [-] MO : TrustedShops, Fix a notice when a certificat doesn't exist for a language, add new translations and fix a image display + [-] MO : add a sentence in module producttooltip in order to indicate that statdata module must be active (PSCFI-1206) + [-] MO : change the way to save the serialize array, use Tools::htmlentitiesUTF8 for save in database. + [-] MO : fixed bug #8374 - Featured Products block issue + [-] MO : fixed bug #8544 - Mail alert bug + [-] MO : fixed bug #8567 - Search Stats not working on 1.4.0.17 + [-] MO : fixed bug #8581 - BlockLink - SQL Error + [-] MO : fixed bug #PSCFI-1321 - _clearCache error in blockcategories + [-] MO : fixed bug #PSCFI-1378 - Socolissimo validate.php collect wrong data + [-] MO : fixed bug in template for productcomment module + [-] MO : fixed bug on DejaLa module + [-] MO : incorrect index array in followup.php for email + [-] MO : rename field id_block_cms to id_cms_block + + [-] WS : Fixing PHP 5.3 compatibility bug + [-] WS : add the error number when a webservice error is set + + [-] TR : Fixed german translation + [-] TR : fix german translation, thanks to the community + [-] TR : fixed fr mispelling at first login (please delete install dir and move admin) + + [-] LO : Currency format + + Deprecated methods: + + [~] FO : Link->getUrlWith is deprecated + + #################################### # v1.4.0.17 - 5552 (2011-03-16) # #################################### diff --git a/admin-dev/ajax.php b/admin-dev/ajax.php index 00f42ec98..b10a475dc 100644 --- a/admin-dev/ajax.php +++ b/admin-dev/ajax.php @@ -610,7 +610,7 @@ if (Tools::isSubmit('getAdminHomeElement')) $isoCountry = Country::getIsoById(Configuration::get('PS_COUNTRY_DEFAULT')); $context = stream_context_create(array('http' => array('method'=>"GET", 'timeout' => 5))); - $content = @file_get_contents('https://www.prestashop.com/partner/preactivation/preactivation-block.php?version=1.0&shop='.urlencode(Configuration::get('PS_SHOP_NAME')).'&protocol='.$protocol.'&url='.urlencode($_SERVER['HTTP_HOST']).'&iso_country='.$isoCountry.'&iso_lang='.Tools::strtolower($isoUser).'&id_lang='.(int)$cookie->id_lang.'&email='.urlencode(Configuration::get('PS_SHOP_EMAIL')).'&security='.md5(Configuration::get('PS_SHOP_EMAIL')._COOKIE_IV_), false, $context); + $content = @file_get_contents('https://www.prestashop.com/partner/preactivation/preactivation-block.php?version=1.0&shop='.urlencode(Configuration::get('PS_SHOP_NAME')).'&protocol='.$protocol.'&url='.urlencode($_SERVER['HTTP_HOST']).'&iso_country='.$isoCountry.'&iso_lang='.Tools::strtolower($isoUser).'&id_lang='.(int)$cookie->id_lang.'&email='.urlencode(Configuration::get('PS_SHOP_EMAIL')).'&date_creation='._PS_CREATION_DATE_.'&v='._PS_VERSION_.'&security='.md5(Configuration::get('PS_SHOP_EMAIL')._COOKIE_IV_), false, $context); if (!$content) die('NOK'); $content = explode('|', $content); @@ -629,6 +629,8 @@ if (Tools::isSubmit('getAdminHomeElement')) } } } + else + $result['partner_preactivation'] = ''; // DISCOVER PRESTASHOP $content = @file_get_contents('https://www.prestashop.com/partner/prestashop/prestashop-link.php?iso_country='.$isoCountry.'&iso_lang='.Tools::strtolower($isoUser).'&id_lang='.(int)$cookie->id_lang, false, $context); @@ -648,4 +650,4 @@ if (Tools::isSubmit('getAdminHomeElement')) die(Tools::jsonEncode($result)); -} \ No newline at end of file +} diff --git a/admin-dev/tabs/AdminAddresses.php b/admin-dev/tabs/AdminAddresses.php index c68093228..f33e3cd93b 100644 --- a/admin-dev/tabs/AdminAddresses.php +++ b/admin-dev/tabs/AdminAddresses.php @@ -62,7 +62,7 @@ class AdminAddresses extends AdminTab 'address1' => array('title' => $this->l('Address'), 'width' => 200), 'postcode' => array('title' => $this->l('Postcode/ Zip Code'), 'align' => 'right', 'width' => 50), 'city' => array('title' => $this->l('City'), 'width' => 150), - 'country' => array('title' => $this->l('Country'), 'width' => 100, 'type' => 'select', 'select' => $this->countriesArray, 'filter_key' => 'cl!id_country')); + 'country' => array('title' => $this->l('Country'), 'width' => 100, 'type' => 'select', 'select' => $this->countriesArray, 'filter_key' => 'id_country')); parent::__construct(); } @@ -275,6 +275,13 @@ class AdminAddresses extends AdminTab * '; } + echo ' + +
+ +

'.$this->l('DNI / NIF / NIE').'

+
'; + echo '
* @@ -282,143 +289,216 @@ class AdminAddresses extends AdminTab
'; break; } - if ($this->addressType != 'manufacturer') - { - echo ' -
- - '.$this->l('Invalid characters:').' <>;=#{}  -
'; + $addresses_fields = $this->processAddressFormat(); + $addresses_fields = $addresses_fields["dlv_all_fields"]; // we use delivery address - if ((Configuration::get('VATNUMBER_MANAGEMENT') AND file_exists(_PS_MODULE_DIR_.'vatnumber/vatnumber.php')) && VatNumber::isApplicable(Configuration::get('PS_COUNTRY_DEFAULT'))) - echo '
'; - else if(Configuration::get('VATNUMBER_MANAGEMENT')) - echo '
'; - else - echo'
'; + + foreach($addresses_fields as $addr_field_item) + { + if ($addr_field_item == 'company') + { + if ($this->addressType != 'manufacturer') + { + echo ' +
+ + '.$this->l('Invalid characters:').' <>;=#{}  +
'; + + if ((Configuration::get('VATNUMBER_MANAGEMENT') AND file_exists(_PS_MODULE_DIR_.'vatnumber/vatnumber.php')) && VatNumber::isApplicable(Configuration::get('PS_COUNTRY_DEFAULT'))) + echo '
'; + else if(Configuration::get('VATNUMBER_MANAGEMENT')) + echo '
'; + else + echo'
'; echo ' -
+
-
-
'; - } +
+
'; + } + } + elseif ($addr_field_item == 'lastname') + { echo ' - -
+ +
* '.$this->l('Invalid characters:').' 0-9!<>,;?=+()@#"�{}_$%:  -
- -
+
'; + } + elseif ($addr_field_item == 'firstname') + { + + echo ' + +
* '.$this->l('Invalid characters:').' 0-9!<>,;?=+()@#"�{}_$%:  -
- -
- -

'.$this->l('DNI / NIF / NIE').'

-
- -
- * -
- -
- -
- -
- -
- -
- * -
- -
- * -
'; - - $id_country_ajax = (int)$this->getFieldValue($obj, 'id_country'); - - echo ' - -
- +
'; + } + elseif ($addr_field_item == 'address1') + { + + echo ' +
- -
+ * +
'; + } + elseif ($addr_field_item == 'address2') + { + + echo ' + +
+ +
'; + } + elseif ($addr_field_item == 'postcode') + { + + echo ' + +
+ +
'; + } + elseif ($addr_field_item == 'city') + { + + echo ' + +
+ * +
'; + } + elseif ($addr_field_item == 'country') + { + + echo ' + +
+ * +
'; + + + echo ' +
+ +
+
+
'; + + + $id_country_ajax = (int)$this->getFieldValue($obj, 'id_country'); + + echo ' + '; + } + + } // End foreach + echo '
-
+
'; + + echo '
-
+
'; + + + echo '
'.$this->l('Forbidden characters:').' <>;=#{}  -
+
'; + + echo '
* '.$this->l('Required field').'
- + '; + echo ' '; } + + protected function processAddressFormat() + { + $tmp_addr = new Address((int)Tools::getValue("id_address")); + $selectedCountry = (!is_null($tmp_addr)) ? $tmp_addr->id_country : (int)(Configuration::get('PS_COUNTRY_DEFAULT')); + $inv_adr_fields = AddressFormat::getOrderedAddressFields($selectedCountry); + $dlv_adr_fields = AddressFormat::getOrderedAddressFields($selectedCountry); + + $inv_all_fields = array(); + $dlv_all_fields = array(); + + $out = array(); + + foreach (array('inv','dlv') as $adr_type) + { + foreach (${$adr_type.'_adr_fields'} as $fields_line) + foreach(explode(' ',$fields_line) as $field_item) + ${$adr_type.'_all_fields'}[] = trim($field_item); + + + $out[$adr_type.'_adr_fields'] = ${$adr_type.'_adr_fields'}; + $out[$adr_type.'_all_fields'] = ${$adr_type.'_all_fields'}; + } + + return $out; + } } diff --git a/admin-dev/tabs/AdminContact.php b/admin-dev/tabs/AdminContact.php index c535ff9b3..21e005d86 100644 --- a/admin-dev/tabs/AdminContact.php +++ b/admin-dev/tabs/AdminContact.php @@ -59,6 +59,7 @@ class AdminContact extends AdminPreferences 'PS_SHOP_FAX' => array('title' => $this->l('Fax:'), 'validation' => 'isGenericName', 'size' => 30, 'type' => 'text'), ); parent::__construct(); + } public function postProcess() diff --git a/admin-dev/tabs/AdminCountries.php b/admin-dev/tabs/AdminCountries.php index e611eed5b..e9bce6a04 100644 --- a/admin-dev/tabs/AdminCountries.php +++ b/admin-dev/tabs/AdminCountries.php @@ -59,7 +59,35 @@ class AdminCountries extends AdminTab if (isset($_GET['delete'.$this->table]) OR Tools::getValue('submitDel'.$this->table)) $this->_errors[] = Tools::displayError('You cannot delete a country. If you do not want it available for customers, please disable it.'); else + { + if (Tools::getValue('submitAdd'.$this->table)) + { + $id_country = Tools::getValue('id_country'); + $tmp_addr_format = new AddressFormat($id_country); + + $save_status = false; + + $is_new = is_null($tmp_addr_format->id_country); + if ($is_new) + { + $tmp_addr_format = new AddressFormat(); + $tmp_addr_format->id_country = $id_country; + } + + $tmp_addr_format->format = Tools::getValue('address_layout'); + if (strlen($tmp_addr_format->format) > 0) + { + if ($tmp_addr_format->checkFormatFields()) + $save_status = ($is_new) ? $tmp_addr_format->save(): $tmp_addr_format->update(); + + if (!$save_status) + $this->_errors[] = Tools::displayError('Invalid address layout'.Db::getInstance()->getMsgError()); + } + unset($tmp_addr_format); + } + return parent::postProcess(); + } } public function displayForm($isMainTab = true) @@ -113,6 +141,7 @@ class AdminCountries extends AdminTab $zones = Zone::getZones(); foreach ($zones AS $zone) echo ' '; + $address_layout = AddressFormat::getAddressCountryFormat($obj->id); echo '

'.$this->l('Geographical zone where country is located').'

@@ -128,6 +157,12 @@ class AdminCountries extends AdminTab *

'.$this->l('National zip code (L for a letter, N for a number and C for the Iso code), e.g., NNNNN for France. No verification if undefined').'.

+ +
+

+

'.$this->l('Reset address layout').'

+

'.$this->l('Possible fields :').' '.implode(', ', (Address::getDispFieldsValidate())).'

+
id OR $this->getFieldValue($obj, 'active')) ? 'checked="checked" ' : '').'/> @@ -150,6 +185,14 @@ class AdminCountries extends AdminTab getFieldValue($obj, 'need_identification_number') AND $obj->id) ? 'checked="checked" ' : '').'/>
+
+ +
+ id OR $this->getFieldValue($obj, 'display_tax_label')) ? 'checked="checked" ' : '').'/> + + getFieldValue($obj, 'display_tax_label') AND $obj->id) ? 'checked="checked" ' : '').'/> + +
diff --git a/admin-dev/tabs/AdminEmployees.php b/admin-dev/tabs/AdminEmployees.php index aaeb660e1..1ee802898 100644 --- a/admin-dev/tabs/AdminEmployees.php +++ b/admin-dev/tabs/AdminEmployees.php @@ -90,7 +90,7 @@ class AdminEmployees extends AdminTab return; $profiles = Profile::getProfiles((int)($cookie->id_lang)); - echo ' + echo ' @@ -118,8 +118,9 @@ class AdminEmployees extends AdminTab *
 
-
- +
'; + // Note : width= fix Firefox 4 display bug related to colorpicker librarie + echo '

'.$this->l('Back office background will be displayed in this color. HTML colors only (e.g.,').' "lightblue", "#CC6600")

 
diff --git a/admin-dev/tabs/AdminImport.php b/admin-dev/tabs/AdminImport.php index e6993a04f..84fb77496 100644 --- a/admin-dev/tabs/AdminImport.php +++ b/admin-dev/tabs/AdminImport.php @@ -1291,7 +1291,7 @@ class AdminImport extends AdminTab return sizeof($tmp); } - private function _usortFiles($a, $b) + private static function _usortFiles($a, $b) { $a = strrev(substr(strrev($a), 0, 14)); $b = strrev(substr(strrev($b), 0, 14)); diff --git a/admin-dev/tabs/AdminModules.php b/admin-dev/tabs/AdminModules.php index 3ef65cc33..5ffc07872 100644 --- a/admin-dev/tabs/AdminModules.php +++ b/admin-dev/tabs/AdminModules.php @@ -531,7 +531,7 @@ class AdminModules extends AdminTab } if ($showCountryModules) - if (isset($module->limited_countries) AND ((is_array($module->limited_countries) AND !in_array(strtolower($isoCountryDefault), $module->limited_countries)) OR (!is_array($module->limited_countries) AND strtolower($isoCountryDefault) != strval($module->limited_countries)))) + if (isset($module->limited_countries) AND ((is_array($module->limited_countries) AND sizeof($module->limited_countries) AND !in_array(strtolower($isoCountryDefault), $module->limited_countries)) OR (!is_array($module->limited_countries) AND strtolower($isoCountryDefault) != strval($module->limited_countries)))) unset($modules[$key]); if (!empty($filterName)) diff --git a/admin-dev/tabs/AdminOrders.php b/admin-dev/tabs/AdminOrders.php index 68a23b99e..3d9a3f881 100644 --- a/admin-dev/tabs/AdminOrders.php +++ b/admin-dev/tabs/AdminOrders.php @@ -685,27 +685,22 @@ class AdminOrders extends AdminTab
- '. (!empty($addressDelivery->company) ? $addressDelivery->company.'
' : '') .$addressDelivery->firstname.' '.$addressDelivery->lastname.'
- '.$addressDelivery->address1.'
'. (!empty($addressDelivery->address2) ? $addressDelivery->address2.'
' : '') .' - '.$addressDelivery->postcode.' '.$addressDelivery->city.'
- '.$addressDelivery->country.($addressDelivery->id_state ? ' - '.$deliveryState->name : '').'
- '.(!empty($addressDelivery->phone) ? $addressDelivery->phone.'
' : '').' - '.(!empty($addressDelivery->phone_mobile) ? $addressDelivery->phone_mobile.'
' : '').' - '.(!empty($addressDelivery->other) ? '
'.$addressDelivery->other.'
' : '').' - + '.$this->displayAddressDetail($addressDelivery) +// . (!empty($addressDelivery->company) ? $addressDelivery->company.'
' : '') .$addressDelivery->firstname.' '.$addressDelivery->lastname.'
+// '.$addressDelivery->address1.'
'. (!empty($addressDelivery->address2) ? $addressDelivery->address2.'
' : '') .' +// '.$addressDelivery->postcode.' '.$addressDelivery->city.'
+// '.$addressDelivery->country.($addressDelivery->id_state ? ' - '.$deliveryState->name : '').'
+// '.(!empty($addressDelivery->phone) ? $addressDelivery->phone.'
' : '').' +// '.(!empty($addressDelivery->phone_mobile) ? $addressDelivery->phone_mobile.'
' : '').' +// '.(!empty($addressDelivery->other) ? '
'.$addressDelivery->other.'
' : '').' + .'
'.$this->l('Invoice address').''.$this->l('Invoice address').'
- '. (!empty($addressInvoice->company) ? $addressInvoice->company.'
' : '').(!empty($addressInvoice->vat_number) ? $addressInvoice->vat_number.'
' : '').$addressInvoice->firstname.' '.$addressInvoice->lastname.'
- '.$addressInvoice->address1.'
'. (!empty($addressInvoice->address2) ? $addressInvoice->address2.'
' : '') .' - '.$addressInvoice->postcode.' '.$addressInvoice->city.'
- '.$addressInvoice->country.($addressInvoice->id_state ? ' - '.$invoiceState->name : '').'
- '.(!empty($addressInvoice->phone) ? $addressInvoice->phone.'
' : '').' - '.(!empty($addressInvoice->phone_mobile) ? $addressInvoice->phone_mobile.'
' : '').' - '.(!empty($addressInvoice->other) ? '
'.$addressInvoice->other.'
' : '').' -
+ '.$this->displayAddressDetail($addressInvoice) + .'
 
'; @@ -935,6 +930,60 @@ class AdminOrders extends AdminTab echo '

'.$this->l('Back to list').'
'; } + public function displayAddressDetail($address) + { + $optional_fields = array( + 'company' => 1 + , 'phone' => 1 + , 'phone_mobile' => 1 + , 'address2' => 1 + ); + $out = ''; + $address_datas = AddressFormat::getAddressCountryFormat($address->id_country); + + $field_other = $address->other; + $lines_out = $address->getOrderedValues(array( + 'spacer' => ' ' + , 'optional' => $optional_fields + ) + , $address_datas); + + $out = implode("
", $lines_out) .((!(is_null($field_other) || $field_other == '') )? '
'.$field_other: ''); + return $out; + } + + /** + * returns String array values according to the given string pattern + * + */ + + public function getOrderedValues($address, $pattern, array $given_values = null) + { + $out = array(); + if (!empty($fields) && $fields != '' && !is_null($address)) + { + $sep = "\n"; + $line_sep = ' '; + $lines = explode($sep, $pattern); + foreach ($lines as $one_line) + { + if(!empty($one_line) && $one_line!= '') + { + $tmp_values = array(); + $words = explode($line_sep, trim($one_line)); + $tmp_words = array(); + + // String append instead of Array append + foreach ($words as $one_word) + $tmp_values[$one_word] = (is_null($given_values)) ? $address->{$one_word} : $given_values[$one_word]; + + $out[] = array($tmp_values, implode(' ', $tmp_values)); + } + } + } + return $out; + } + public function display() { global $cookie; diff --git a/admin-dev/tabs/AdminPreferences.php b/admin-dev/tabs/AdminPreferences.php index 37042e810..2ce503b18 100644 --- a/admin-dev/tabs/AdminPreferences.php +++ b/admin-dev/tabs/AdminPreferences.php @@ -270,6 +270,7 @@ class AdminPreferences extends AdminTab $val[$language['id_lang']] = isset($values['cast']) ? $values['cast'](Tools::getValue($field.'_'.$language['id_lang'])) : Tools::getValue($field.'_'.$language['id_lang']); else $val = isset($values['cast']) ? $values['cast'](Tools::getValue($field)) : Tools::getValue($field); + Configuration::updateValue($field, $val); } Tools::redirectAdmin($currentIndex.'&conf=6'.'&token='.$this->token); @@ -303,10 +304,11 @@ class AdminPreferences extends AdminTab $tab['db_prefix'] = _DB_PREFIX_; $tab['db_user'] = _DB_USER_; $tab['db_passwd'] = ''; + return $tab; } - private function getDivLang($fields) + private function getDivLang($fields) { $tab = array(); foreach ($fields AS $key => $field) @@ -347,6 +349,7 @@ class AdminPreferences extends AdminTab if (isset($field['required']) AND $field['required']) $required = true; $val = $this->getVal($confValues, $key); + if (!in_array($field['type'], array('image', 'radio', 'container', 'container_end')) OR isset($field['show'])) echo '
'.($field['title'] ? '' : '').'
'; diff --git a/admin-dev/tabs/AdminTranslations.php b/admin-dev/tabs/AdminTranslations.php index de60cd4c6..2144b77b6 100644 --- a/admin-dev/tabs/AdminTranslations.php +++ b/admin-dev/tabs/AdminTranslations.php @@ -420,12 +420,13 @@ class AdminTranslations extends AdminTab foreach ($matches[1] AS $key) { - $module_key = ($is_default ? self::DEFAULT_THEME_NAME : '').'<{'.Tools::strtolower($module_name).'}'.($is_default ? 'prestashop' : $theme_name).'>'.Tools::strtolower($template_name).'_'.md5($key); + $module_key = ($is_default ? self::DEFAULT_THEME_NAME : '').'<{'.Tools::strtolower($module_name).'}'.strtolower($is_default ? 'prestashop' : $theme_name).'>'.Tools::strtolower($template_name).'_'.md5($key); // to avoid duplicate entry if (!in_array($module_key, $array_check_duplicate)) { $array_check_duplicate[] = $module_key; - $this->modules_translations[($is_default ? self::DEFAULT_THEME_NAME : $theme_name)][$module_name][$template_name][$key] = key_exists($module_key, $_MODULES) ? html_entity_decode($_MODULES[$module_key], ENT_COMPAT, 'UTF-8') : ''; + $this->modules_translations[strtolower($is_default ? self::DEFAULT_THEME_NAME : $theme_name)][$module_name][$template_name][$key] + = key_exists($module_key, $_MODULES) ? html_entity_decode($_MODULES[$module_key], ENT_COMPAT, 'UTF-8') : ''; $this->total_expression++; } } @@ -1486,39 +1487,22 @@ class AdminTranslations extends AdminTab } protected function getTinyMCEForMails($iso_lang) { + // TinyMCE + $isoTinyMCE = (file_exists(_PS_ROOT_DIR_.'/js/tiny_mce/langs/'.$iso_lang.'.js') ? $iso_lang : 'en'); + $ad = dirname($_SERVER["PHP_SELF"]); return ' - + + + - '; + '; } public function displayFormMails($lang, $noDisplay = false) { diff --git a/classes/Address.php b/classes/Address.php index e384c481d..9542356c2 100644 --- a/classes/Address.php +++ b/classes/Address.php @@ -168,6 +168,145 @@ class AddressCore extends ObjectModel } } + /** + * Returns fields required for an address in an array hash + * @return array hash values + */ + public static function getFieldsValidate() + { + $tmp_addr = new Address(); + $out = ($tmp_addr->fieldsValidate); + + unset($tmp_addr); + return $out; + } + + + /** + * Returns selected fields required for an address in an array according to a selection hash + * @return array String values + */ + public static function getDispFieldsValidate() + { + $out = array(); + $remove_fields = array( + 'id_customer' => 1 + ,'id_manufacturer' => 1 + ,'id_supplier' => 1 + ,'deleted'=> 1 + ,'dni' => 1 + ,'vat_number' => 1 + ,'other' => 1 + + ); + + $fields_hash = self::getFieldsValidate(); + foreach (array_keys($fields_hash) as $field_item) + { + if (!isset($remove_fields[$field_item])) + { + if ($field_item == 'id_country') + $field_item = 'country'; + elseif($field_item == 'id_state') + $field_item = 'state'; + + $out[] = $field_item; + } + } + return $out; + } + + + /** + * Returns values ordered in an array according to given fields + * @param array $config set options for the method formated as + $config = array( + 'spacer' => ' ' + , 'optional' => array( + 'company' => 1 + ,'phone' => 1 + ) + , 'ignore' => array( + 'phone_mobile' => 1 + ) + , 'return_set' => true (true: hash return, false: String array) + ) + * @param String $pattern lines of each needed fields \n splitted + * @param array $values optionnal given values + * @return array field values or hash values + */ + public static function getOrderedValuesFromArray($config, $pattern, array $values = null) + { + $tmp_address = new Address(); + $out = $tmp_address->getOrderedValues($config, $pattern, $values); + unset($tmp_address); + return $out; + } + + + /** + * Returns values ordered in an array according to given fields + * @param array $config set options for the method formated as + $config = array( + 'spacer' => ' ' + , 'optional' => array( + 'company' => 1 + ,'phone' => 1 + ,'phone_mobile' => 1 + ) + , 'return_set' => true + ) + * @param String $address_datas lines of each needed fields \n splitted + * @param array $given_values optionnal given values + * @return array field values or values in a hash + */ + + public function getOrderedValues(array $config, $address_datas, array $given_values = null) + { + + $spacer = $config["spacer"]; // String used for joining lines_out + $optional_fields = (isset($config["optional"]))? $config["optional"] : array(); // array hash tells which fields are optional + + $ignore = (isset($config["ignore"]))? $config["ignore"] : array(); // array hash tells which fields are ignored + + + $return_set = (!empty($config["return_set"])) ? $config["return_set"] : false; + + $line_breaker = "\n"; // used in address_datas format + + + $lines_out = array(); + $fields_lines = explode($line_breaker, $address_datas); + + foreach ($fields_lines as $one_line) + if(!empty($one_line) && $one_line!= '') + { + $tmp_values = array(); + $val_added = false; + + $words = explode(' ', trim($one_line)); + $tmp_words = array(); + + foreach ($words as $one_word) + { + if (!isset($ignore[$one_word])) + { + $one_word = trim($one_word); + $val = (is_null($given_values)) ? $this->{$one_word} : $given_values[$one_word]; + if ((!empty($val) && $val != '') || ((empty($val) || $val == '') && (isset($optional_fields[$one_word]) != 1))) + { + $tmp_values[$one_word] = $val; + $val_added = true; + } + } + } + if ($val_added) + $lines_out[] = ($return_set) ? $tmp_values : implode($spacer, $tmp_values); + } + return $lines_out; + } + + public function getFields() { parent::validateFields(); @@ -197,9 +336,9 @@ class AddressCore extends ObjectModel return $fields; } - public function validateControler($htmlentities = true) + public function validateController($htmlentities = true) { - $errors = parent::validateControler($htmlentities); + $errors = parent::validateController($htmlentities); if (!Configuration::get('VATNUMBER_CHECKING')) return $errors; include_once(_PS_MODULE_DIR_.'vatnumber/vatnumber.php'); diff --git a/classes/AddressFormat.php b/classes/AddressFormat.php new file mode 100644 index 000000000..c52094984 --- /dev/null +++ b/classes/AddressFormat.php @@ -0,0 +1,137 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class AddressFormatCore extends ObjectModel +{ + /** @var integer */ + public $id_address_format; + + /** @var integer */ + public $id_country; + + /** @var string */ + public $format; + + + protected $fieldsRequired = array ('format'); + protected $fieldsValidate = array ('format' => 'isGenericName'); + + /* MySQL does not allow 'order detail' for a table name */ + protected $table = 'address_format'; + protected $identifier = 'id_country'; + + public function getFields() + { + parent::validateFields(); + + $fields['id_country'] = (int)($this->id_country); + $fields['format'] = pSQL($this->format); + + return $fields; + } + + + public function checkFormatFields() + { + $out = true; + $addr_f_validate = Address::getFieldsValidate(); + + $fields_format = explode("\n", $this->format); + foreach($fields_format as $field_line) + { + $fields = explode(' ', trim($field_line)); + foreach($fields as $field_item) + { + $field_item = trim($field_item); + if (!isset($addr_f_validate[$field_item]) && !isset($addr_f_validate['id_'.$field_item])) + $out = false; + } + } + return $out; + } + + /** + * Returns address format fields in array by country + * + * @param Integer PS_COUNTRY.id + * @return Array String field address format + */ + public static function getOrderedAddressFields($id_country) + { + $out = array(); + $field_set = explode("\n", self::getAddressCountryFormat($id_country)); + foreach ($field_set as $field_item) + { + $out[] = trim($field_item); + } + return $out; + } + + /** + * Returns address format by country if not defined using default country + * + * @param Integer PS_COUNTRY.id + * @return String field address format + */ + public static function getAddressCountryFormat($id_country) + { + $out = ''; + $tmp_obj = new AddressFormat(); + $tmp_obj->id_country = $id_country; + $out = $tmp_obj->getFormat($tmp_obj->id_country); + unset($tmp_obj); + return $out; + } + + /** + * Returns address format by country + * + * @param Integer PS_COUNTRY.id + * @return String field address format + */ + public function getFormat($id_country) + { + global $defaultCountry; + $out = $this->_getFormatDB($id_country); + if (strlen(trim($out)) == 0) + { + $out = $this->_getFormatDB($defaultCountry->id); + } + return $out; + } + + private function _getFormatDB($id_country) + { + $result = Db::getInstance()->getRow(' + SELECT format + FROM `'._DB_PREFIX_.$this->table.'` + WHERE `id_country` = '.(int)($id_country)); + + return isset($result['format']) ? $result['format'] : false; + } +} + diff --git a/classes/AdminTab.php b/classes/AdminTab.php index bd7e9d377..5840dcdb4 100644 --- a/classes/AdminTab.php +++ b/classes/AdminTab.php @@ -185,14 +185,15 @@ abstract class AdminTabCore if ($className == 'AdminCategories' OR $className == 'AdminProducts') $className = 'AdminCatalog'; $this->token = Tools::getAdminToken($className.(int)($this->id).(int)($cookie->id_employee)); + } /** * use translations files to replace english expression. - * + * * @param mixed $string term or expression in english - * @param string $class + * @param string $class * @param boolan $addslashes if set to true, the return value will pass through addslashes(). Otherwise, stripslashes(). * @param boolean $htmlentities if set to true(default), the return value will pass through htmlentities($string, ENT_QUOTES, 'utf-8') * @return string the translation if available, or the english default text. @@ -297,6 +298,7 @@ abstract class AdminTabCore foreach ($res AS $row) $required_fields[(int)$row['id_required_field']] = $row['field_name']; + $table_fields = Db::getInstance()->ExecuteS('SHOW COLUMNS FROM '.pSQL(_DB_PREFIX_.$this->table)); $irow = 0; foreach ($table_fields AS $field) @@ -1094,7 +1096,7 @@ abstract class AdminTabCore LIMIT '.(int)($start).','.(int)($limit); $this->_list = Db::getInstance()->ExecuteS($sql); - $this->_listTotal = count(Db::getInstance()->ExecuteS('SELECT + $this->_listTotal = count(Db::getInstance()->ExecuteS('SELECT '.($this->_tmpTableFilter ? ' * FROM (SELECT ' : '').' '.($this->lang ? 'b.*, ' : '').'a.*'.(isset($this->_select) ? ', '.$this->_select.' ' : '').' FROM `'._DB_PREFIX_.$sqlTable.'` a @@ -1105,8 +1107,8 @@ abstract class AdminTabCore '.((isset($this->_filterHaving) || isset($this->_having)) ? 'HAVING ' : '').(isset($this->_filterHaving) ? ltrim($this->_filterHaving, ' AND ') : '').(isset($this->_having) ? $this->_having.' ' : '').' ORDER BY '.(($orderBy == $this->identifier) ? 'a.' : '').'`'.pSQL($orderBy).'` '.pSQL($orderWay). ($this->_tmpTableFilter ? ') tmpTable WHERE 1'.$this->_tmpTableFilter : ''))); - - + + } /** @@ -1145,9 +1147,9 @@ abstract class AdminTabCore global $currentIndex, $cookie; $isCms = false; if (preg_match('/cms/Ui', $this->identifier)) - $isCms = true; + $isCms = true; $id_cat = Tools::getValue('id_'.($isCms ? 'cms_' : '').'category'); - + if (!isset($token) OR empty($token)) $token = $this->token; @@ -1469,7 +1471,7 @@ abstract class AdminTabCore { global $currentIndex; - echo 'identifier.'='.$id.'&'.$active.$this->table. ((int)$id_category AND (int)$id_product ? '&id_category='.$id_category : '').'&token='.($token!=NULL ? $token : $this->token).'"> '.($value ? $this->l('Enabled') : $this->l('Disabled')).''; diff --git a/classes/Cart.php b/classes/Cart.php index 1d4c0b724..f5a4bd249 100644 --- a/classes/Cart.php +++ b/classes/Cart.php @@ -684,13 +684,13 @@ class CartCore extends ObjectModel self::$_nbProducts = NULL; if ((int)($id_customization)) { - $productTotalQuantity = (int)(Db::getInstance()->getValue('SELECT `quantity` - FROM `'._DB_PREFIX_.'cart_product` + $productTotalQuantity = (int)(Db::getInstance()->getValue('SELECT `quantity` + FROM `'._DB_PREFIX_.'cart_product` WHERE `id_product` = '.(int)($id_product).' AND `id_product_attribute` = '.(int)($id_product_attribute))); - $customizationQuantity = (int)(Db::getInstance()->getValue('SELECT `quantity` - FROM `'._DB_PREFIX_.'customization` - WHERE `id_cart` = '.(int)($this->id).' - AND `id_product` = '.(int)($id_product).' + $customizationQuantity = (int)(Db::getInstance()->getValue('SELECT `quantity` + FROM `'._DB_PREFIX_.'customization` + WHERE `id_cart` = '.(int)($this->id).' + AND `id_product` = '.(int)($id_product).' AND `id_product_attribute` = '.(int)($id_product_attribute))); if (!$this->_deleteCustomization((int)($id_customization), (int)($id_product), (int)($id_product_attribute))) return false; @@ -719,7 +719,7 @@ class CartCore extends ObjectModel } /** - * Delete a customization from the cart. If customization is a Picture (type=2), + * Delete a customization from the cart. If customization is a Picture (type=2), * then the image is also deleted * * @param integer $id_customization @@ -729,7 +729,7 @@ class CartCore extends ObjectModel { $result = true; $customization = Db::getInstance()->getRow('SELECT * - FROM `'._DB_PREFIX_.'customization` + FROM `'._DB_PREFIX_.'customization` WHERE `id_customization` = '.(int)($id_customization)); if ($customization and sizeof($customization)) @@ -737,7 +737,7 @@ class CartCore extends ObjectModel $custData = Db::getInstance()->getRow('SELECT * FROM `'._DB_PREFIX_.'customized_data` WHERE `id_customization` = '.(int)($id_customization)); - + if (isset($custData['type']) and $custData['type'] == 0) $result &= $this->deletePictureToProduct($id_product,$custData['value']); @@ -748,15 +748,15 @@ class CartCore extends ObjectModel if($result) $result &= Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'cart_product` SET `quantity` = `quantity` - '.(int)($customization['quantity']).' - WHERE `id_cart` = '.(int)($this->id).' - AND `id_product` = '.(int)($id_product).((int)($id_product_attribute) ? ' + WHERE `id_cart` = '.(int)($this->id).' + AND `id_product` = '.(int)($id_product).((int)($id_product_attribute) ? ' AND `id_product_attribute` = '.(int)($id_product_attribute) : '')); if (!$result) return false; - return Db::getInstance()->Execute('DELETE - FROM `'._DB_PREFIX_.'customization` + return Db::getInstance()->Execute('DELETE + FROM `'._DB_PREFIX_.'customization` WHERE `id_customization` = '.(int)($id_customization)); } @@ -829,8 +829,10 @@ class CartCore extends ObjectModel if ($withTaxes) { - $total_price = ($total_price - $total_ecotax) * (1 + (float)(Tax::getProductTaxRate((int)$product['id_product'], (int)$this->{Configuration::get('PS_TAX_ADDRESS_TYPE')})) / 100); - $total_price = Tools::ps_round($total_price - $total_ecotax, 2); + $total_price = ($total_price - $total_ecotax) * (1 + (float)(Tax::getProductTaxRate((int)$product['id_product'], (int)$this->{Configuration::get('PS_TAX_ADDRESS_TYPE')})) / 100); + $total_ecotax = $total_ecotax * (1 + Tax::getProductEcotaxRate((int)$this->{Configuration::get('PS_TAX_ADDRESS_TYPE')}) / 100); + $total_price = Tools::ps_round($total_price + $total_ecotax, 2); + } } else @@ -971,18 +973,12 @@ class CartCore extends ObjectModel // If no carrier, select default one if (!$id_carrier) $id_carrier = $this->id_carrier; - if (empty($id_carrier)) - { - $carrier = new Carrier((int)(Configuration::get('PS_CARRIER_DEFAULT')), Configuration::get('PS_LANG_DEFAULT')); - if (($carrier->getShippingMethod() == Carrier::SHIPPING_METHOD_WEIGHT AND (Carrier::checkDeliveryPriceByWeight((int)(Configuration::get('PS_CARRIER_DEFAULT')), $this->getTotalWeight(), $id_zone))) - OR ($carrier->getShippingMethod() == Carrier::SHIPPING_METHOD_PRICE AND (Carrier::checkDeliveryPriceByPrice((int)(Configuration::get('PS_CARRIER_DEFAULT')), $this->getOrderTotal(true, Cart::BOTH_WITHOUT_SHIPPING), $id_zone, (int)($this->id_currency))))) - { + if ($id_carrier && !$this->isCarrierInRange($id_carrier, $id_zone)) + $id_carrier = ''; + + if (empty($id_carrier) && $this->isCarrierInRange(Configuration::get('PS_CARRIER_DEFAULT'), $id_zone)) $id_carrier = (int)(Configuration::get('PS_CARRIER_DEFAULT')); - } - - unset($carrier); - } if (empty($id_carrier)) { @@ -1255,6 +1251,7 @@ class CartCore extends ObjectModel $invoice = new Address((int)($this->id_address_invoice)); $total_tax = $this->getOrderTotal() - $this->getOrderTotal(false); + if ($total_tax < 0) $total_tax = 0; @@ -1540,5 +1537,31 @@ class CartCore extends ObjectModel LEFT JOIN `'._DB_PREFIX_.'cart` ca ON (ca.`id_customer` = cu.`id_customer`) WHERE ca.`id_cart` = '.(int)$id_cart); } + + /** + * isCarrierInRange + * + * Check if the specified carrier is in range + * + * @id_carrier int + * @id_zone int + */ + public function isCarrierInRange($id_carrier, $id_zone) + { + $carrier = new Carrier((int)$id_carrier, Configuration::get('PS_LANG_DEFAULT')); + $is_in_zone = false; + $order_total = $this->getOrderTotal(true, Cart::BOTH_WITHOUT_SHIPPING); + + if (($carrier->getShippingMethod() == Carrier::SHIPPING_METHOD_WEIGHT + AND (Carrier::checkDeliveryPriceByWeight((int)$id_carrier, $this->getTotalWeight(), $id_zone))) + OR ($carrier->getShippingMethod() == Carrier::SHIPPING_METHOD_PRICE + AND (Carrier::checkDeliveryPriceByPrice((int)$id_carrier, $order_total, $id_zone, (int)($this->id_currency))))) + { + $is_in_zone = true; + } + + unset($carrier); + return $is_in_zone; + } } diff --git a/classes/Country.php b/classes/Country.php index 07a4c214c..ce4cad4fe 100644 --- a/classes/Country.php +++ b/classes/Country.php @@ -56,6 +56,9 @@ class CountryCore extends ObjectModel /** @var string Zip Code Format */ public $zip_code_format; + /** @var boolean Display or not the tax incl./tax excl. mention in the front office */ + public $display_tax_label = true; + /** @var boolean Status for delivery */ public $active = true; @@ -63,9 +66,9 @@ class CountryCore extends ObjectModel protected $tables = array ('country', 'country_lang'); - protected $fieldsRequired = array('id_zone', 'id_currency', 'iso_code', 'contains_states', 'need_identification_number'); + protected $fieldsRequired = array('id_zone', 'id_currency', 'iso_code', 'contains_states', 'need_identification_number', 'display_tax_label'); protected $fieldsSize = array('iso_code' => 3); - protected $fieldsValidate = array('id_zone' => 'isUnsignedId', 'id_currency' => 'isUnsignedId', 'call_prefix' => 'isInt', 'iso_code' => 'isLanguageIsoCode', 'active' => 'isBool', 'contains_states' => 'isBool', 'need_identification_number' => 'isBool', 'need_zip_code' => 'isBool', 'zip_code_format' => 'isZipCodeFormat'); + protected $fieldsValidate = array('id_zone' => 'isUnsignedId', 'id_currency' => 'isUnsignedId', 'call_prefix' => 'isInt', 'iso_code' => 'isLanguageIsoCode', 'active' => 'isBool', 'contains_states' => 'isBool', 'need_identification_number' => 'isBool', 'need_zip_code' => 'isBool', 'zip_code_format' => 'isZipCodeFormat', 'display_tax_label' => 'isBool'); protected $fieldsRequiredLang = array('name'); protected $fieldsSizeLang = array('name' => 64); protected $fieldsValidateLang = array('name' => 'isGenericName'); @@ -93,6 +96,7 @@ class CountryCore extends ObjectModel $fields['need_identification_number'] = (int)($this->need_identification_number); $fields['need_zip_code'] = (int)($this->need_zip_code); $fields['zip_code_format'] = $this->zip_code_format; + $fields['display_tax_label'] = $this->display_tax_label; return $fields; } @@ -291,27 +295,27 @@ class CountryCore extends ObjectModel AND `id_lang` = '.(int)$id_lang ); } - + public function isNeedDni() { return (bool)self::isNeedDniByCountryId($this->id); } - + static public function isNeedDniByCountryId($id_country) { return (bool)Db::getInstance()->getValue(' - SELECT `need_identification_number` + SELECT `need_identification_number` FROM `'._DB_PREFIX_.'country` WHERE `id_country` = '.(int)$id_country); } - + static public function containsStates($id_country) { return (bool)Db::getInstance()->getValue(' - SELECT `contains_states` + SELECT `contains_states` FROM `'._DB_PREFIX_.'country` WHERE `id_country` = '.(int)$id_country); } - + } diff --git a/classes/FrontController.php b/classes/FrontController.php index ebf321d0f..638dc188f 100755 --- a/classes/FrontController.php +++ b/classes/FrontController.php @@ -71,7 +71,7 @@ class FrontControllerCore public function init() { global $cookie, $smarty, $cart, $iso, $defaultCountry, $protocol_link, $protocol_content, $link, $css_files, $js_files; - + $css_files = array(); $js_files = array(); @@ -135,7 +135,10 @@ class FrontControllerCore if ($cart->OrderExists()) unset($cookie->id_cart, $cart); /* Delete product of cart, if user can't make an order from his country */ - elseif (intval(Configuration::get('PS_GEOLOCATION_ENABLED')) AND !in_array(strtoupper($cookie->iso_code_country), explode(';', Configuration::get('PS_ALLOWED_COUNTRIES'))) AND $cart->nbProducts() AND intval(Configuration::get('PS_GEOLOCATION_NA_BEHAVIOR')) != -1) + elseif (intval(Configuration::get('PS_GEOLOCATION_ENABLED')) AND + !in_array(strtoupper($cookie->iso_code_country), explode(';', Configuration::get('PS_ALLOWED_COUNTRIES'))) AND + $cart->nbProducts() AND intval(Configuration::get('PS_GEOLOCATION_NA_BEHAVIOR')) != -1 AND + !self::isInWhitelistForGeolocation()) unset($cookie->id_cart, $cart); elseif ($cookie->id_customer != $cart->id_customer OR $cookie->id_lang != $cart->id_lang OR $cookie->id_currency != $cart->id_currency) { @@ -203,6 +206,15 @@ class FrontControllerCore Product::initPricesComputation(); + $display_tax_label = $defaultCountry->display_tax_label; + if ($cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')}) + { + $infos = Address::getCountryAndState((int)($cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')})); + $country = new Country((int)$infos['id_country']); + if (Validate::isLoadedObject($country)) + $display_tax_label = $country->display_tax_label; + } + $smarty->assign(array( 'link' => $link, 'cart' => $cart, @@ -225,6 +237,7 @@ class FrontControllerCore 'shop_name' => Configuration::get('PS_SHOP_NAME'), 'roundMode' => (int)Configuration::get('PS_PRICE_ROUND_MODE'), 'use_taxes' => (int)Configuration::get('PS_TAX'), + 'display_tax_label' => (bool)$display_tax_label, 'vat_management' => (int)Configuration::get('VATNUMBER_MANAGEMENT'), 'opc' => (bool)Configuration::get('PS_ORDER_PROCESS_TYPE'), 'PS_CATALOG_MODE' => (bool)Configuration::get('PS_CATALOG_MODE') @@ -275,7 +288,7 @@ class FrontControllerCore if (Tools::isSubmit('live_edit') AND $ad = Tools::getValue('ad') AND (Tools::getValue('liveToken') == sha1(Tools::getValue('ad')._COOKIE_KEY_))) if (!is_dir(_PS_ROOT_DIR_.DIRECTORY_SEPARATOR.$ad)) die(Tools::displayError()); - + $this->iso = $iso; $this->setMedia(); @@ -284,7 +297,7 @@ class FrontControllerCore /* Display a maintenance page if shop is closed */ protected function displayMaintenancePage() { - + if (!in_array(Tools::getRemoteAddr(), explode(',', Configuration::get('PS_MAINTENANCE_IP')))) { header('HTTP/1.1 503 temporarily overloaded'); @@ -297,7 +310,7 @@ class FrontControllerCore protected function displayRestrictedCountryPage() { global $smarty; - + header('HTTP/1.1 503 temporarily overloaded'); $smarty->display(_PS_THEME_DIR_.'restricted-country.tpl'); exit; @@ -306,7 +319,7 @@ class FrontControllerCore protected function canonicalRedirection() { global $link, $cookie; - + if (Configuration::get('PS_CANONICAL_REDIRECT')) { // Automatically redirect to the canonical URL if needed @@ -392,13 +405,13 @@ class FrontControllerCore public function setMedia() { global $cookie; - + Tools::addCSS(_THEME_CSS_DIR_.'global.css', 'all'); Tools::addJS(array(_PS_JS_DIR_.'tools.js', _PS_JS_DIR_.'jquery/jquery-1.4.4.min.js', _PS_JS_DIR_.'jquery/jquery.easing.1.3.js')); if (Tools::isSubmit('live_edit') AND $ad = Tools::getValue('ad') AND (Tools::getValue('liveToken') == sha1(Tools::getValue('ad')._COOKIE_KEY_))) { Tools::addJS(array( - _PS_JS_DIR_.'jquery/jquery-ui-1.8.10.custom.min.js', + _PS_JS_DIR_.'jquery/jquery-ui-1.8.10.custom.min.js', _PS_JS_DIR_.'jquery/jquery.fancybox-1.3.4.js', _PS_JS_DIR_.'hookLiveEdit.js') ); @@ -453,7 +466,7 @@ class FrontControllerCore if (Configuration::get('PS_JS_THEME_CACHE')) Tools::cccJs(); } - + self::$smarty->assign('css_files', $css_files); self::$smarty->assign('js_files', array_unique($js_files)); self::$smarty->display(_PS_THEME_DIR_.'header.tpl'); diff --git a/classes/Language.php b/classes/Language.php index 4e13a1f80..bd0d2aa60 100644 --- a/classes/Language.php +++ b/classes/Language.php @@ -277,6 +277,7 @@ class LanguageCore extends ObjectModel $langTables[] = $t; Db::getInstance()->Execute('SET @id_lang_default = (SELECT c.`value` FROM `'._DB_PREFIX_.'configuration` c WHERE c.`name` = \'PS_LANG_DEFAULT\' LIMIT 1)'); + $return = true; foreach($langTables as $name) { $fields = ''; @@ -293,8 +294,9 @@ class LanguageCore extends ObjectModel $sql .= '(SELECT `'.$column['Field'].'` FROM `'.$name.'` tl WHERE tl.`id_lang` = @id_lang_default AND tl.`'.$identifier.'` = `'.str_replace('_lang', '', $name).'`.`'.$identifier.'`), '; $sql = rtrim($sql, ', '); $sql .= ' FROM `'._DB_PREFIX_.'lang` CROSS JOIN `'.str_replace('_lang', '', $name).'`) ;'; - Db::getInstance()->Execute(pSQL($sql)); + $return &= Db::getInstance()->Execute(pSQL($sql)); } + return $return; } public static function recurseDeleteDir($dir) diff --git a/classes/Module.php b/classes/Module.php index eb426db1e..932520c06 100644 --- a/classes/Module.php +++ b/classes/Module.php @@ -539,6 +539,7 @@ abstract class ModuleCore */ public static function getNonNativeModuleList() { + $db = Db::getInstance(); $modulesDirOnDisk = Module::getModulesDirOnDisk(); $module_list_xml = _PS_ROOT_DIR_.DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'modules_list.xml'; @@ -552,7 +553,7 @@ abstract class ModuleCore $arrNativeModules[] = '"'.pSQL($module['name']).'"'; } - return Db::getInstance()->ExecuteS(' + return $db->ExecuteS(' SELECT * FROM `'._DB_PREFIX_.'module` m WHERE name NOT IN ('.implode(',',$arrNativeModules).') '); diff --git a/classes/ObjectModel.php b/classes/ObjectModel.php index 3306d1e6b..aa0aafcc8 100644 --- a/classes/ObjectModel.php +++ b/classes/ObjectModel.php @@ -452,7 +452,15 @@ abstract class ObjectModelCore return ((is_array($_FIELDS) AND array_key_exists($key, $_FIELDS)) ? ($htmlentities ? htmlentities($_FIELDS[$key], ENT_QUOTES, 'utf-8') : $_FIELDS[$key]) : $field); } + /** + * TODO: refactor rename all calls to this to validateController + */ public function validateControler($htmlentities = true) + { + return $this->validateController($htmlentities); + } + + public function validateController($htmlentities = true) { $errors = array(); diff --git a/classes/Order.php b/classes/Order.php index 9abf777fb..2fcc7a497 100644 --- a/classes/Order.php +++ b/classes/Order.php @@ -288,17 +288,25 @@ class OrderCore extends ObjectModel $this->total_products -= $productPriceWithoutTax; $this->total_products_wt -= $productPrice; $this->total_shipping = $cart->getOrderShippingCost(); + /* It's temporary fix for 1.3 version... */ if ($orderDetail->product_quantity_discount != '0.000000') $this->total_paid -= ($productPrice + $shippingDiff); else $this->total_paid = $cart->getOrderTotal(); + $this->total_paid_real -= ($productPrice + $shippingDiff); /* Prevent from floating precision issues (total_products has only 2 decimals) */ if ($this->total_products < 0) $this->total_products = 0; + if ($this->total_paid < 0) + $this->total_paid = 0; + + if ($this->total_paid_real < 0) + $this->total_paid_real = 0; + /* Prevent from floating precision issues */ $this->total_paid = number_format($this->total_paid, 2, '.', ''); $this->total_paid_real = number_format($this->total_paid_real, 2, '.', ''); diff --git a/classes/PDF.php b/classes/PDF.php index 4fe6c70f0..24dc60df8 100644 --- a/classes/PDF.php +++ b/classes/PDF.php @@ -278,23 +278,51 @@ class PDFCore extends PDF_PageGroupCore $pdf->SetY(25); $pdf->SetFont(self::fontname(), '', 9); - if (!empty($delivery_address->company)) + + + $ordered_adr_fields = AddressFormat::getOrderedAddressFields($invoice_address->id_country); + + $optional_fields = array( + 'address2' => 1 + , 'company' => 1 + ); + $ignore_fields = array( + 'phone' => 1 + , 'mobile_phone' =>1 + ); + + foreach ($ordered_adr_fields as $adr_line) { - $pdf->Cell($width, 10, Tools::iconv('utf-8', self::encoding(), $delivery_address->company), 0, 'L'); - $pdf->Ln(5); + $line_fields = explode(" ", trim($adr_line)); + $tmp_dlv_vals = array(); + + foreach($line_fields as $field_name) + { + // if not skip + if (!isset($ignore_fields[$field_name])) + { + $tmp_dlv = $delivery_address->{$field_name}; + + if (!((empty($tmp_dlv) || $tmp_dlv == '') && isset($optional_fields[$field_name]))) + { + $tmp_dlv = ($field_name == "country") ? $tmp_dlv.($deliveryState ? ' - '.$deliveryState->name : ''): $tmp_dlv; + $tmp_dlv_vals[] = Tools::iconv('utf-8', self::encoding(), $tmp_dlv); + } + } + } + $str_dlv_vals = implode(" ", $tmp_dlv_vals); + + $need_nl = false; + if (!empty($str_dlv_vals) && $str_dlv_vals != '' && $str_dlv_vals != ' ') + { + $need_nl = true; + $pdf->Cell($width, 10, $str_dlv_vals, 0, 'L'); + } + + if ($need_nl) + $pdf->Ln(5); + } - $pdf->Cell($width, 10, Tools::iconv('utf-8', self::encoding(), $delivery_address->firstname).' '.Tools::iconv('utf-8', self::encoding(), $delivery_address->lastname), 0, 'L'); - $pdf->Ln(5); - $pdf->Cell($width, 10, Tools::iconv('utf-8', self::encoding(), $delivery_address->address1), 0, 'L'); - $pdf->Ln(5); - if (!empty($delivery_address->address2)) - { - $pdf->Cell($width, 10, Tools::iconv('utf-8', self::encoding(), $delivery_address->address2), 0, 'L'); - $pdf->Ln(5); - } - $pdf->Cell($width, 10, $delivery_address->postcode.' '.Tools::iconv('utf-8', self::encoding(), $delivery_address->city), 0, 'L'); - $pdf->Ln(5); - $pdf->Cell($width, 10, Tools::iconv('utf-8', self::encoding(), $delivery_address->country.($deliveryState ? ' - '.$deliveryState->name : '')), 0, 'L'); /* * display order information @@ -403,6 +431,17 @@ class PDFCore extends PDF_PageGroupCore $delivery_address = new Address((int)($order->id_address_delivery)); $deliveryState = $delivery_address->id_state ? new State($delivery_address->id_state) : false; + $ordered_adr_fields = AddressFormat::getOrderedAddressFields($invoice_address->id_country); + + $optional_fields = array( + 'address2' => 1 + , 'company' => 1 + ); + $ignore_fields = array( + 'phone' => 1 + , 'mobile_phone' =>1 + ); + $width = 100; $pdf->SetX(10); @@ -413,30 +452,53 @@ class PDFCore extends PDF_PageGroupCore $pdf->Ln(5); $pdf->SetFont(self::fontname(), '', 9); - if (!empty($delivery_address->company) OR !empty($invoice_address->company)) + + foreach ($ordered_adr_fields as $adr_line) { - $pdf->Cell($width, 10, Tools::iconv('utf-8', self::encoding(), $delivery_address->company), 0, 'L'); - $pdf->Cell($width, 10, Tools::iconv('utf-8', self::encoding(), $invoice_address->company), 0, 'L'); - $pdf->Ln(5); + $line_fields = explode(" ", trim($adr_line)); + + $tmp_inv_vals = array(); + $tmp_dlv_vals = array(); + + foreach($line_fields as $field_name) + { + // if not skip + if (!isset($ignore_fields[$field_name])) + { + $tmp_inv = $invoice_address->{$field_name}; + $tmp_dlv = $delivery_address->{$field_name}; + if (!((empty($tmp_inv) || $tmp_inv == '') && isset($optional_fields[$field_name]))) + { + $tmp_inv = ($field_name == "country") ? $tmp_inv.($deliveryState ? ' - '.$deliveryState->name : ''): $tmp_inv; + $tmp_inv_vals[] = Tools::iconv('utf-8', self::encoding(), $tmp_inv); + } + if (!((empty($tmp_dlv) || $tmp_dlv == '') && isset($optional_fields[$field_name]))) + { + $tmp_dlv = ($field_name == "country") ? $tmp_dlv.($deliveryState ? ' - '.$deliveryState->name : ''): $tmp_dlv; + $tmp_dlv_vals[] = Tools::iconv('utf-8', self::encoding(), $tmp_dlv); + } + } + } + $str_inv_vals = implode(" ", $tmp_inv_vals); + $str_dlv_vals = implode(" ", $tmp_dlv_vals); + + $need_nl = false; + if (!empty($str_dlv_vals) && $str_dlv_vals != '' && $str_dlv_vals != ' ') + { + $need_nl = true; + $pdf->Cell($width, 10, $str_dlv_vals, 0, 'L'); + } + if (!empty($str_inv_vals) && $str_inv_vals != '' && $str_inv_vals != ' ') + { + $need_nl = true; + $pdf->Cell($width, 10, $str_inv_vals, 0, 'L'); + } + + if ($need_nl) + $pdf->Ln(5); + } - $pdf->Cell($width, 10, Tools::iconv('utf-8', self::encoding(), $delivery_address->firstname).' '.Tools::iconv('utf-8', self::encoding(), $delivery_address->lastname), 0, 'L'); - $pdf->Cell($width, 10, Tools::iconv('utf-8', self::encoding(), $invoice_address->firstname).' '.Tools::iconv('utf-8', self::encoding(), $invoice_address->lastname), 0, 'L'); - $pdf->Ln(5); - $pdf->Cell($width, 10, Tools::iconv('utf-8', self::encoding(), $delivery_address->address1), 0, 'L'); - $pdf->Cell($width, 10, Tools::iconv('utf-8', self::encoding(), $invoice_address->address1), 0, 'L'); - $pdf->Ln(5); - if (!empty($invoice_address->address2) OR !empty($delivery_address->address2)) - { - $pdf->Cell($width, 10, Tools::iconv('utf-8', self::encoding(), $delivery_address->address2), 0, 'L'); - $pdf->Cell($width, 10, Tools::iconv('utf-8', self::encoding(), $invoice_address->address2), 0, 'L'); - $pdf->Ln(5); - } - $pdf->Cell($width, 10, $delivery_address->postcode.' '.Tools::iconv('utf-8', self::encoding(), $delivery_address->city), 0, 'L'); - $pdf->Cell($width, 10, $invoice_address->postcode.' '.Tools::iconv('utf-8', self::encoding(), $invoice_address->city), 0, 'L'); - $pdf->Ln(5); - $pdf->Cell($width, 10, Tools::iconv('utf-8', self::encoding(), $delivery_address->country.($deliveryState ? ' - '.$deliveryState->name : '')), 0, 'L'); - $pdf->Cell($width, 10, Tools::iconv('utf-8', self::encoding(), $invoice_address->country.($invoiceState ? ' - '.$invoiceState->name : '')), 0, 'L'); - $pdf->Ln(5); + if (Configuration::get('VATNUMBER_MANAGEMENT') AND !empty($invoice_address->vat_number)) { diff --git a/classes/PaymentModule.php b/classes/PaymentModule.php index 2d8fb2c8c..725e4e0e7 100644 --- a/classes/PaymentModule.php +++ b/classes/PaymentModule.php @@ -367,6 +367,19 @@ abstract class PaymentModuleCore extends Module '{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{email}' => $customer->email, + '{delivery_block_txt}' => $this->_getFormatedAddress($delivery, "\n"), + '{invoice_block_txt}' => $this->_getFormatedAddress($invoice, "\n"), + '{delivery_block_html}' => $this->_getFormatedAddress($delivery, "
", array( + 'firstname' => '%s' + , 'lastname' => '%s' + + )), + '{invoice_block_html}' => $this->_getFormatedAddress($invoice, "
", array( + 'firstname' => '%s' + , 'lastname' => '%s' + + )), + '{delivery_company}' => $delivery->company, '{delivery_firstname}' => $delivery->firstname, '{delivery_lastname}' => $delivery->lastname, @@ -436,6 +449,57 @@ abstract class PaymentModuleCore extends Module } } + /** + * @param Object Address $the_address that needs to be txt formated + * @return String the txt formated address block + */ + private function _getTxtFormatedAddress($the_address) + { + $out = ''; + $adr_fields = AddressFormat::getOrderedAddressFields($the_address->id_country); + $r_values = array(); + foreach($adr_fields as $fields_line) + { + $tmp_values = array(); + foreach (explode(' ', $fields_line) as $field_item) + { + $field_item = trim($field_item); + $tmp_values[] = $the_address->{$field_item}; + } + $r_values[] = implode(' ', $tmp_values); + } + + $out = implode("\n", $r_values); + return $out; + } + + /** + * @param Object Address $the_address that needs to be txt formated + * @return String the txt formated address block + */ + + private function _getFormatedAddress(Address $the_address, $line_sep, $fields_style = array()) + { + $out = ''; + $adr_fields = AddressFormat::getOrderedAddressFields($the_address->id_country); + + $r_values = array(); + + foreach($adr_fields as $fields_line) + { + $tmp_values = array(); + foreach (explode(' ', $fields_line) as $field_item) + { + $field_item = trim($field_item); + $tmp_values[] = (isset($fields_style[$field_item]))? sprintf($fields_style[$field_item], $the_address->{$field_item}) : $the_address->{$field_item}; + } + $r_values[] = implode(' ', $tmp_values); + } + + + $out = implode($line_sep, $r_values); + return $out; + } /** * @param int $id_currency : this parameter is optionnal but on 1.5 version of Prestashop, it will be REQUIRED diff --git a/classes/Product.php b/classes/Product.php index 16454f700..d72d4d0ab 100644 --- a/classes/Product.php +++ b/classes/Product.php @@ -1593,27 +1593,41 @@ class ProductCore extends ObjectModel } $quantity = ($id_cart AND $cart_quantity) ? $cart_quantity : $quantity; $id_currency = (int)(Validate::isLoadedObject($cur_cart) ? $cur_cart->id_currency : ((isset($cookie->id_currency) AND (int)($cookie->id_currency)) ? $cookie->id_currency : Configuration::get('PS_CURRENCY_DEFAULT'))); - if (!$id_address) - $id_address = $cur_cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')}; - if (Tax::excludeTaxeOption()) - $usetax = false; + // retrieve address informations $id_country = (int)Country::getDefaultCountryId(); $id_state = 0; $id_county = 0; - $id_state = 0; - $address_infos = Address::getCountryAndState($id_address); - if ($address_infos['id_country']) + if (!$id_address) { - $id_country = (int)($address_infos['id_country']); - $id_state = (int)($address_infos['id_state']); - $id_county = (int)County::getIdCountyByZipCode($address_infos['id_state'], $address_infos['postcode']); + if ($id_address = $cur_cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')}) + { + $address_infos = Address::getCountryAndState($id_address); + if ($address_infos['id_country']) + { + $id_country = (int)($address_infos['id_country']); + $id_state = (int)($address_infos['id_state']); + $postcode = (int)$address_infos['postcode']; + + $id_county = (int)County::getIdCountyByZipCode($id_state, $postcode); + } + } else if (isset($cookie->id_country)) { + // fetch address from cookie + $id_country = (int)$cookie->id_country; + $id_state = (int)$cookie->id_state; + $postcode = (int)$cookie->postcode; + + $id_county = (int)County::getIdCountyByZipCode($id_state, $postcode); + } } + if (Tax::excludeTaxeOption()) + $usetax = false; + if ($usetax != false AND !empty($address_infos['vat_number']) AND $address_infos['id_country'] != Configuration::get('VATNUMBER_COUNTRY') AND Configuration::get('VATNUMBER_MANAGEMENT')) $usetax = false; @@ -1649,7 +1663,7 @@ class ProductCore extends ObjectModel $product_attribute_label = 'NULL'; else $product_attribute_label = ($id_product_attribute === false ? 'false' : $id_product_attribute); - $cacheId = $id_product.'-'.$id_shop.'-'.$id_currency.'-'.$id_country.'-'.$id_group.'-'.$quantity.'-'.$product_attribute_label.'-'.($use_tax?'1':'0').'-'.$decimals.'-'.($only_reduc?'1':'0').'-'.($use_reduc?'1':'0'); + $cacheId = $id_product.'-'.$id_shop.'-'.$id_currency.'-'.$id_country.'-'.$id_state.'-'.$id_county.'-'.$id_group.'-'.$quantity.'-'.$product_attribute_label.'-'.($use_tax?'1':'0').'-'.$decimals.'-'.($only_reduc?'1':'0').'-'.($use_reduc?'1':'0').'-'.$with_ecotax; if (isset(self::$_prices[$cacheId])) return self::$_prices[$cacheId]; @@ -1658,14 +1672,14 @@ class ProductCore extends ObjectModel $cacheId2 = $id_product.'-'.$id_product_attribute; if (!isset(self::$_pricesLevel2[$cacheId2])) self::$_pricesLevel2[$cacheId2] = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' - SELECT p.`price`, p.`ecotax`, - '.($id_product_attribute ? 'pa.`price`' : 'IFNULL((SELECT pa.price FROM `'._DB_PREFIX_.'product_attribute` pa WHERE id_product = '.(int)($id_product).' AND default_on = 1), 0)').' AS attribute_price + SELECT p.`price`, + '.($id_product_attribute ? 'pa.`price`' : 'IFNULL((SELECT pa.price FROM `'._DB_PREFIX_.'product_attribute` pa WHERE id_product = '.(int)($id_product).' AND default_on = 1), 0)').' AS attribute_price, + '.($id_product_attribute ? 'pa.`ecotax`' : 'p.`ecotax`').' FROM `'._DB_PREFIX_.'product` p '.($id_product_attribute ? 'LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON pa.`id_product_attribute` = '.(int)($id_product_attribute) : '').' WHERE p.`id_product` = '.(int)($id_product)); $result = self::$_pricesLevel2[$cacheId2]; - // Cache for specific prices $cacheId3 = $id_product.'-'.$id_shop.'-'.$id_currency.'-'.$id_country.'-'.$id_group.'-'.$quantity; @@ -2310,12 +2324,12 @@ class ProductCore extends ObjectModel public static function duplicateTags($id_product_old, $id_product_new) { - $resource = Db::getInstance()->ExecuteS('SELECT `id_tag` FROM `'._DB_PREFIX_.'product_tag` WHERE `id_product` = '.(int)($id_product_old)); + $tags = Db::getInstance()->ExecuteS('SELECT `id_tag` FROM `'._DB_PREFIX_.'product_tag` WHERE `id_product` = '.(int)($id_product_old)); if (!Db::getInstance()->NumRows()) return true; $query = 'INSERT INTO `'._DB_PREFIX_.'product_tag` (`id_product`, `id_tag`) VALUES'; - while ($row = Db::getInstance()->nextRow($resource)) - $query .= ' ('.(int)($id_product_new).', '.(int)($row['id_tag']).'),'; + foreach($tags as $tag) + $query .= ' ('.(int)($id_product_new).', '.(int)($tag['id_tag']).'),'; $query = rtrim($query, ','); return Db::getInstance()->Execute($query); } diff --git a/classes/State.php b/classes/State.php index 8843060a0..0bf83e2a8 100644 --- a/classes/State.php +++ b/classes/State.php @@ -185,9 +185,20 @@ class StateCore extends ObjectModel ); } - public static function hasCounties($id_state) - { - return sizeof(County::getCounties((int)$id_state)); - } + public static function hasCounties($id_state) + { + return sizeof(County::getCounties((int)$id_state)); + } + + public static function getIdZone($id_state) + { + if (!Validate::isUnsignedId($id_state)) + die(Tools::displayError()); + + return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' + SELECT `id_zone` + FROM `'._DB_PREFIX_.'state` + WHERE `id_state` = '.(int)($id_state)); + } } diff --git a/classes/Validate.php b/classes/Validate.php index 895974281..cde90a36a 100644 --- a/classes/Validate.php +++ b/classes/Validate.php @@ -251,7 +251,7 @@ class ValidateCore static public function isStateIsoCode($isoCode) { - return preg_match('/^[a-z0-9]{2}((-)[a-z0-9]{1,3})?$/ui', $isoCode); + return preg_match('/^[a-z0-9]{2,3}((-)[a-z0-9]{1,3})?$/ui', $isoCode); } static public function isNumericIsoCode($isoCode) diff --git a/config/config.inc.php b/config/config.inc.php index 2bdbd92d2..1db5f4be8 100644 --- a/config/config.inc.php +++ b/config/config.inc.php @@ -42,8 +42,9 @@ ini_set('upload_max_filesize', '100M'); ini_set('default_charset', 'utf-8'); ini_set('magic_quotes_runtime', 0); -/* Correct Apache charset */ -header('Content-Type: text/html; charset=utf-8'); +// correct Apache charset (except if it's too late +if(!headers_sent()) + header('Content-Type: text/html; charset=utf-8'); /* No settings file? goto installer...*/ if (!file_exists(dirname(__FILE__).'/settings.inc.php')) @@ -58,10 +59,12 @@ require_once(dirname(__FILE__).'/settings.inc.php'); /* Include all defines */ require_once(dirname(__FILE__).'/defines.inc.php'); -/* Defines are not in defines.inc.php file for no conflicts in installer */ -define('_PS_MAGIC_QUOTES_GPC_', get_magic_quotes_gpc()); -define('_PS_MODULE_DIR_', _PS_ROOT_DIR_.'/modules/'); -define('_PS_MYSQL_REAL_ESCAPE_STRING_', function_exists('mysql_real_escape_string')); +if (!defined('_PS_MAGIC_QUOTES_GPC_')) + define('_PS_MAGIC_QUOTES_GPC_', get_magic_quotes_gpc()); +if (!defined('_PS_MODULE_DIR_')) + define('_PS_MODULE_DIR_', _PS_ROOT_DIR_.'/modules/'); +if (!defined('_PS_MYSQL_REAL_ESCAPE_STRING_')) + define('_PS_MYSQL_REAL_ESCAPE_STRING_', function_exists('mysql_real_escape_string')); /* Autoload */ require_once(dirname(__FILE__).'/autoload.php'); diff --git a/config/defines.inc.php b/config/defines.inc.php index 8ffd73c82..116c2b76e 100755 --- a/config/defines.inc.php +++ b/config/defines.inc.php @@ -74,6 +74,8 @@ define('_PS_MAIL_DIR_', _PS_ROOT_DIR_.'/mails/'); define('_PS_ALL_THEMES_DIR_', _PS_ROOT_DIR_.'/themes/'); define('_PS_THEME_DIR_', _PS_ROOT_DIR_.'/themes/'._THEME_NAME_.'/'); define('_PS_IMG_DIR_', _PS_ROOT_DIR_.'/img/'); +if (!defined('_PS_MODULE_DIR_')) + define('_PS_MODULE_DIR_', _PS_ROOT_DIR_.'/modules/'); define('_PS_CAT_IMG_DIR_', _PS_IMG_DIR_.'c/'); define('_PS_STORE_IMG_DIR_', _PS_IMG_DIR_.'st/'); define('_PS_PROD_IMG_DIR_', _PS_IMG_DIR_.'p/'); @@ -95,6 +97,10 @@ define('_PS_PEAR_XML_PARSER_PATH_', _PS_TOOL_DIR_.'pear_xml_parser/'); /* settings php */ define('_PS_TRANS_PATTERN_', '(.*[^\\\\])'); define('_PS_MIN_TIME_GENERATE_PASSWD_', '360'); +if (!defined('_PS_MAGIC_QUOTES_GPC_')) + define('_PS_MAGIC_QUOTES_GPC_', get_magic_quotes_gpc()); +if (!defined('_PS_MYSQL_REAL_ESCAPE_STRING_')) + define('_PS_MYSQL_REAL_ESCAPE_STRING_', function_exists('mysql_real_escape_string')); define('_CAN_LOAD_FILES_', 1); diff --git a/controllers/AddressesController.php b/controllers/AddressesController.php index 370ebe09b..c759f3772 100644 --- a/controllers/AddressesController.php +++ b/controllers/AddressesController.php @@ -51,6 +51,27 @@ class AddressesControllerCore extends FrontController if (!Validate::isLoadedObject($customer)) die(Tools::displayError('Customer not found')); self::$smarty->assign('addresses', $customer->getAddresses((int)(self::$cookie->id_lang))); + + $values = array(); + $customer_address = $customer->getAddresses((int)(self::$cookie->id_lang)); + + foreach($customer_address as $addr_item) + $ordered_fields = AddressFormat::getOrderedAddressFields($addr_item['id_country']); + + self::$smarty->assign('addresses_style', array( + 'company' => 'address_company' + ,'vat_number' => 'address_company' + ,'firstname' => 'address_name' + ,'lastname' => 'address_name' + ,'address1' => 'address_address1' + ,'address2' => 'address_address2' + ,'city' => 'address_city' + ,'country' => 'address_country' + ,'phone' => 'address_phone' + ,'phone_mobile' => 'address_phone_mobile' + ,'alias' => 'address_title' + )); + self::$smarty->assign('ordered_fields', $ordered_fields); } public function displayContent() diff --git a/controllers/AuthController.php b/controllers/AuthController.php index 4fba09685..af064c24d 100644 --- a/controllers/AuthController.php +++ b/controllers/AuthController.php @@ -1,6 +1,6 @@ ssl = true; $this->php_self = 'authentication.php'; - + parent::__construct(); } - + public function preProcess() { parent::preProcess(); - + if (self::$cookie->isLogged() AND !Tools::isSubmit('ajax')) Tools::redirect('my-account.php'); - + if (Tools::getValue('create_account')) { $create_account = 1; @@ -54,7 +54,7 @@ class AuthControllerCore extends FrontController $this->errors[] = Tools::displayError('Invalid e-mail address'); elseif (Customer::customerExists($email)) { - $this->errors[] = Tools::displayError('An account is already registered with this e-mail, please fill in the password or request a new one.'); + $this->errors[] = Tools::displayError('An account is already registered with this e-mail, please fill in the password or request a new one.'); $_POST['email'] = $_POST['email_create']; unset($_POST['email_create']); } @@ -63,6 +63,7 @@ class AuthControllerCore extends FrontController $create_account = 1; self::$smarty->assign('email_create', Tools::safeOutput($email)); $_POST['email'] = $email; + } } @@ -70,7 +71,7 @@ class AuthControllerCore extends FrontController { $create_account = 1; if (Tools::isSubmit('submitAccount')) - self::$smarty->assign('email_create', 1); + self::$smarty->assign('email_create', 1); /* New Guest customer */ if (!Tools::getValue('is_new_customer') AND !Configuration::get('PS_GUEST_CHECKOUT_ENABLED')) $this->errors[] = Tools::displayError('You cannot create a guest account.'); @@ -190,7 +191,7 @@ class AuthControllerCore extends FrontController if (Tools::isSubmit('ajax')) { $return = array( - 'hasError' => !empty($this->errors), + 'hasError' => !empty($this->errors), 'errors' => $this->errors, 'isSaved' => true, 'id_customer' => (int)self::$cookie->id_customer, @@ -215,7 +216,7 @@ class AuthControllerCore extends FrontController if (Tools::isSubmit('ajax')) { $return = array( - 'hasError' => !empty($this->errors), + 'hasError' => !empty($this->errors), 'errors' => $this->errors, 'isSaved' => false, 'id_customer' => 0 @@ -224,7 +225,7 @@ class AuthControllerCore extends FrontController } } } - + if (Tools::isSubmit('SubmitLogin')) { Module::hookExec('beforeAuthentication'); @@ -262,6 +263,7 @@ class AuthControllerCore extends FrontController if (Configuration::get('PS_CART_FOLLOWING') AND (empty(self::$cookie->id_cart) OR Cart::getNbProducts(self::$cookie->id_cart) == 0)) self::$cookie->id_cart = (int)(Cart::lastNoneOrderedCart((int)($customer->id))); /* Update cart address */ + self::$cart->id_carrier = 0; self::$cart->id_address_delivery = Address::getFirstCustomerAddressId((int)($customer->id)); self::$cart->id_address_invoice = Address::getFirstCustomerAddressId((int)($customer->id)); self::$cart->update(); @@ -277,7 +279,7 @@ class AuthControllerCore extends FrontController if (Tools::isSubmit('ajax')) { $return = array( - 'hasError' => !empty($this->errors), + 'hasError' => !empty($this->errors), 'errors' => $this->errors, 'token' => Tools::getToken(false) ); @@ -290,10 +292,10 @@ class AuthControllerCore extends FrontController /* Select the most appropriate country */ if (isset($_POST['id_country']) AND is_numeric($_POST['id_country'])) $selectedCountry = (int)($_POST['id_country']); - /* FIXME : language iso and country iso are not similar, + /* FIXME : language iso and country iso are not similar, * maybe an associative table with country an language can resolve it, * But for now it's a bug ! - * @see : bug #6968 + * @see : bug #6968 * @link:http://www.prestashop.com/bug_tracker/view/6968/ elseif (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { @@ -321,7 +323,7 @@ class AuthControllerCore extends FrontController 'HOOK_CREATE_ACCOUNT_TOP' => Module::hookExec('createAccountTop') )); } - + /* Generate years, months and days */ if (isset($_POST['years']) AND is_numeric($_POST['years'])) $selectedYears = (int)($_POST['years']); @@ -333,7 +335,7 @@ class AuthControllerCore extends FrontController if (isset($_POST['days']) AND is_numeric($_POST['days'])) $selectedDays = (int)($_POST['days']); $days = Tools::dateDays(); - + self::$smarty->assign(array( 'years' => $years, 'sl_year' => (isset($selectedYears) ? $selectedYears : 0), @@ -344,18 +346,18 @@ class AuthControllerCore extends FrontController )); self::$smarty->assign('newsletter', (int)Module::getInstanceByName('blocknewsletter')->active); } - + public function setMedia() { parent::setMedia(); Tools::addCSS(_THEME_CSS_DIR_.'authentication.css'); Tools::addJS(array(_THEME_JS_DIR_.'tools/statesManagement.js', _PS_JS_DIR_.'jquery/jquery-typewatch.pack.js')); } - + public function process() { parent::process(); - + $back = Tools::getValue('back'); $key = Tools::safeOutput(Tools::getValue('key')); if (!empty($key)) @@ -367,7 +369,7 @@ class AuthControllerCore extends FrontController { $countries = Country::getCountries((int)(self::$cookie->id_lang), true); self::$smarty->assign(array( - 'inOrderProcess' => true, + 'inOrderProcess' => true, 'PS_GUEST_CHECKOUT_ENABLED' => Configuration::get('PS_GUEST_CHECKOUT_ENABLED'), 'sl_country' => (int)Tools::getValue('id_country', Configuration::get('PS_COUNTRY_DEFAULT')), 'countries' => $countries @@ -375,12 +377,35 @@ class AuthControllerCore extends FrontController } } } - + public function displayContent() { + $this->processAddressFormat(); + parent::displayContent(); self::$smarty->display(_PS_THEME_DIR_.'authentication.tpl'); } + + protected function processAddressFormat() + { + $selectedCountry = (int)(Configuration::get('PS_COUNTRY_DEFAULT')); + $inv_adr_fields = AddressFormat::getOrderedAddressFields($selectedCountry); + $dlv_adr_fields = AddressFormat::getOrderedAddressFields($selectedCountry); + + $inv_all_fields = array(); + $dlv_all_fields = array(); + + + foreach (array('inv','dlv') as $adr_type) + { + foreach (${$adr_type.'_adr_fields'} as $fields_line) + foreach(explode(' ',$fields_line) as $field_item) + ${$adr_type.'_all_fields'}[] = trim($field_item); + + self::$smarty->assign($adr_type.'_adr_fields', ${$adr_type.'_adr_fields'}); + self::$smarty->assign($adr_type.'_all_fields', ${$adr_type.'_all_fields'}); + + } + } } - diff --git a/controllers/GuestTrackingController.php b/controllers/GuestTrackingController.php index dfe4a7317..b34cba5b4 100644 --- a/controllers/GuestTrackingController.php +++ b/controllers/GuestTrackingController.php @@ -58,7 +58,8 @@ class GuestTrackingControllerCore extends FrontController $products = $order->getProducts(); $customizedDatas = Product::getAllCustomizedDatas((int)($order->id_cart)); Product::addCustomizationPrice($products, $customizedDatas); - + + $this->processAddressFormat($addressDelivery, $addressInvoice); self::$smarty->assign(array( 'shop_name' => Configuration::get('PS_SHOP_NAME'), 'order' => $order, @@ -124,4 +125,15 @@ class GuestTrackingControllerCore extends FrontController self::$smarty->display(_PS_THEME_DIR_.'guest-tracking.tpl'); } + + private function processAddressFormat(Address $delivery, Address $invoice) + { + + $inv_adr_fields = AddressFormat::getOrderedAddressFields($invoice->id_country); + $dlv_adr_fields = AddressFormat::getOrderedAddressFields($delivery->id_country); + + self::$smarty->assign('inv_adr_fields', $inv_adr_fields); + self::$smarty->assign('dlv_adr_fields', $dlv_adr_fields); + + } } diff --git a/controllers/OrderController.php b/controllers/OrderController.php index 0c627667b..da0739fb7 100644 --- a/controllers/OrderController.php +++ b/controllers/OrderController.php @@ -122,6 +122,19 @@ class OrderControllerCore extends ParentOrderController } } + private function processAddressFormat() + { + $delivery = new Address((int)(self::$cart->id_address_delivery)); + $invoice = new Address((int)(self::$cart->id_address_invoice)); + + $inv_adr_fields = AddressFormat::getOrderedAddressFields($invoice->id_country); + $dlv_adr_fields = AddressFormat::getOrderedAddressFields($delivery->id_country); + + self::$smarty->assign('inv_adr_fields', $inv_adr_fields); + self::$smarty->assign('dlv_adr_fields', $dlv_adr_fields); + + } + public function displayContent() { parent::displayContent(); @@ -132,6 +145,7 @@ class OrderControllerCore extends ParentOrderController self::$smarty->display(_PS_THEME_DIR_.'shopping-cart.tpl'); break; case 1: + $this->processAddressFormat(); self::$smarty->display(_PS_THEME_DIR_.'order-address.tpl'); break; case 2: @@ -161,6 +175,7 @@ class OrderControllerCore extends ParentOrderController Tools::redirect('order.php?step=1'); $delivery = new Address((int)(self::$cart->id_address_delivery)); $invoice = new Address((int)(self::$cart->id_address_invoice)); + if ($delivery->deleted OR $invoice->deleted) { if ($delivery->deleted) diff --git a/controllers/OrderDetailController.php b/controllers/OrderDetailController.php index e33ce3f85..a73313bbe 100644 --- a/controllers/OrderDetailController.php +++ b/controllers/OrderDetailController.php @@ -104,6 +104,11 @@ class OrderDetailControllerCore extends FrontController $carrier = new Carrier((int)($order->id_carrier), (int)($order->id_lang)); $addressInvoice = new Address((int)($order->id_address_invoice)); $addressDelivery = new Address((int)($order->id_address_delivery)); + + $inv_adr_fields = AddressFormat::getOrderedAddressFields($addressInvoice->id_country); + $dlv_adr_fields = AddressFormat::getOrderedAddressFields($addressDelivery->id_country); + + if ($order->total_discounts > 0) self::$smarty->assign('total_old', (float)($order->total_paid - $order->total_discounts)); $products = $order->getProducts(); @@ -128,6 +133,8 @@ class OrderDetailControllerCore extends FrontController 'address_invoice' => $addressInvoice, 'invoiceState' => (Validate::isLoadedObject($addressInvoice) AND $addressInvoice->id_state) ? new State((int)($addressInvoice->id_state)) : false, 'address_delivery' => $addressDelivery, + 'inv_adr_fields' => $inv_adr_fields, + 'dlv_adr_fields' => $dlv_adr_fields, 'deliveryState' => (Validate::isLoadedObject($addressDelivery) AND $addressDelivery->id_state) ? new State((int)($addressDelivery->id_state)) : false, 'is_guest' => false, 'messages' => Message::getMessagesByOrderId((int)($order->id)), diff --git a/controllers/OrderOpcController.php b/controllers/OrderOpcController.php index 29e4aa346..aebca1b51 100644 --- a/controllers/OrderOpcController.php +++ b/controllers/OrderOpcController.php @@ -120,6 +120,7 @@ class OrderOpcControllerCore extends ParentOrderController $blockUserInfo = new BlockUserInfo(); } self::$smarty->assign('isVirtualCart', self::$cart->isVirtualCart()); + $this->processAddressFormat(); $this->_assignAddress(); // Wrapping fees $wrapping_fees = (float)(Configuration::get('PS_GIFT_WRAPPING_PRICE')); @@ -265,7 +266,9 @@ class OrderOpcControllerCore extends ParentOrderController public function displayContent() { parent::displayContent(); - + + $this->processAddressFormat(); + self::$smarty->display(_PS_THEME_DIR_.'errors.tpl'); self::$smarty->display(_PS_THEME_DIR_.'order-opc.tpl'); } @@ -446,6 +449,30 @@ class OrderOpcControllerCore extends ParentOrderController return self::$cart->id_carrier; return 0; } + + protected function processAddressFormat() + { + $selectedCountry = (int)(Configuration::get('PS_COUNTRY_DEFAULT')); + $inv_adr_fields = AddressFormat::getOrderedAddressFields($selectedCountry); + $dlv_adr_fields = AddressFormat::getOrderedAddressFields($selectedCountry); + + $inv_all_fields = array(); + $dlv_all_fields = array(); + + foreach (array('inv','dlv') as $adr_type) + { + foreach (${$adr_type.'_adr_fields'} as $fields_line) + foreach(explode(' ',$fields_line) as $field_item) + ${$adr_type.'_all_fields'}[] = trim($field_item); + +// DEBUG echo('
processAddressFormat: inv_all_fields: ' . var_export($inv_all_fields, true) +// DEBUG .'
processAddressFormat: inv_all_fields: ' . var_export($dlv_all_fields, true)); + + self::$smarty->assign($adr_type.'_adr_fields', ${$adr_type.'_adr_fields'}); + self::$smarty->assign($adr_type.'_all_fields', ${$adr_type.'_all_fields'}); + + } + } } diff --git a/controllers/SearchController.php b/controllers/SearchController.php index 12bf6ca8c..133189518 100644 --- a/controllers/SearchController.php +++ b/controllers/SearchController.php @@ -134,7 +134,7 @@ class SearchControllerCore extends FrontController parent::setMedia(); if (!$this->instantSearch AND !$this->ajaxSearch) - Tools::addCSS(_THEME_CSS_DIR_.'product-list.css'); + Tools::addCSS(_THEME_CSS_DIR_.'product_list.css'); } } diff --git a/controllers/StoresController.php b/controllers/StoresController.php index 0a973bf01..d64cf7a9c 100644 --- a/controllers/StoresController.php +++ b/controllers/StoresController.php @@ -73,7 +73,7 @@ class StoresControllerCore extends FrontController $stores = Db::getInstance()->ExecuteS(' SELECT s.*, cl.name country, st.iso_code state, - ('.(int)($multiplicator).' * acos(cos(radians('.(float)(Tools::getValue('latitude')).')) * cos(radians(latitude)) * cos(radians(longitude) - radians('.(float)(Tools::getValue('longitude')).')) + sin(radians('.(float)(Tools::getValue('latitude')).')) * sin(radians(latitude)))) distance + ('.(int)($multiplicator).' * acos(cos(radians('.(float)(Tools::getValue('latitude')).')) * cos(radians(latitude)) * cos(radians(longitude) - radians('.(float)(Tools::getValue('longitude')).')) + sin(radians('.(float)(Tools::getValue('latitude')).')) * sin(radians(latitude)))) distance, cl.id_country id_country FROM '._DB_PREFIX_.'store s LEFT JOIN '._DB_PREFIX_.'country_lang cl ON (cl.id_country = s.id_country) LEFT JOIN '._DB_PREFIX_.'state st ON (st.id_state = s.id_state) @@ -103,7 +103,8 @@ class StoresControllerCore extends FrontController $node = $dom->createElement('marker'); $newnode = $parnode->appendChild($node); $newnode->setAttribute('name', $store['name']); - $address = $store['address1'].(!empty($store['address2']) ? '
'.$store['address2'] : '').'
'.$store['postcode'].' '.$store['city'].', '.$store['state'].'
'.$store['country']; + $address = $this->_processStoreAddress($store); + $other = ''; if (!empty($store['hours'])) { @@ -117,6 +118,8 @@ class StoresControllerCore extends FrontController $days_datas[] = $hours_datas; } $smarty->assign('days_datas', $days_datas); + $smarty->assign('id_country', $store['id_country']); + $other .= self::$smarty->fetch(_PS_THEME_DIR_.'store_infos.tpl'); } @@ -143,6 +146,42 @@ class StoresControllerCore extends FrontController $smarty->assign(array('distance_unit' => $distanceUnit, 'simplifiedStoresDiplay' => $simplifiedStoreLocator, 'stores' => $stores, 'mediumSize' => Image::getSize('medium'))); } + private function _processStoreAddress($store) + { + $ignore_field = array( + 'firstname' =>1 + , 'lastname' =>1 + ); + + $out = ''; + $out_datas = array(); + + $address_datas = AddressFormat::getOrderedAddressFields($store['id_country']); + + foreach ($address_datas as $data_line) + { + $data_fields = explode(' ', $data_line); + $adr_out = array(); + + $data_fields_mod = false; + foreach ($data_fields as $field_item) + { + $field_item = trim($field_item); + if (!isset($ignore_field[$field_item]) && !empty($store[$field_item]) && $store[$field_item] != '') + { + $adr_out[] = $store[$field_item]; + $data_fields_mod = true; + } + } + if ($data_fields_mod) + $out_datas[] = implode(' ', $adr_out); + } + + $out = implode('
', $out_datas); + return $out; + } + + public function process() { parent::process(); diff --git a/css/jquery-ui-1.8.10.custom.css b/css/jquery-ui-1.8.10.custom.css new file mode 100755 index 000000000..fbcaad7c0 --- /dev/null +++ b/css/jquery-ui-1.8.10.custom.css @@ -0,0 +1,573 @@ +/* + * jQuery UI CSS Framework 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { display: none; } +.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } +.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } +.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } +.ui-helper-clearfix { display: inline-block; } +/* required comment for clearfix to work in Opera \*/ +* html .ui-helper-clearfix { height:1%; } +.ui-helper-clearfix { display:block; } +/* end clearfix */ +.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { cursor: default !important; } + + +/* Icons +----------------------------------*/ + +/* states and ../img/jquery-ui */ +.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } + + +/* + * jQuery UI CSS Framework 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px + */ + + +/* Component containers +----------------------------------*/ +.ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1.1em; } +.ui-widget .ui-widget { font-size: 1em; } +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; } +.ui-widget-content { border: 1px solid #dddddd; background: #eeeeee url(../img/jquery-ui/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; } +.ui-widget-content a { color: #333333; } +.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(../img/jquery-ui/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; } +.ui-widget-header a { color: #ffffff; } + +/* Interaction states +----------------------------------*/ +.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(../img/jquery-ui/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; } +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; } +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(../img/jquery-ui/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; } +.ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; } +.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(../img/jquery-ui/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; text-decoration: none; } +.ui-widget :active { outline: none; } + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fed22f; background: #ffe45c url(../img/jquery-ui/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; } +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } +.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(../img/jquery-ui/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; } +.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; } +.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; } +.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } +.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } + +/* Icons +----------------------------------*/ + +/* states and ../img/jquery-ui */ +.ui-icon { width: 16px; height: 16px; background-image: url(../img/jquery-ui/ui-icons_222222_256x240.png); } +.ui-widget-content .ui-icon {background-image: url(../img/jquery-ui/ui-icons_222222_256x240.png); } +.ui-widget-header .ui-icon {background-image: url(../img/jquery-ui/ui-icons_ffffff_256x240.png); } +.ui-state-default .ui-icon { background-image: url(../img/jquery-ui/ui-icons_ef8c08_256x240.png); } +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(../img/jquery-ui/ui-icons_ef8c08_256x240.png); } +.ui-state-active .ui-icon {background-image: url(../img/jquery-ui/ui-icons_ef8c08_256x240.png); } +.ui-state-highlight .ui-icon {background-image: url(../img/jquery-ui/ui-icons_228ef1_256x240.png); } +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(../img/jquery-ui/ui-icons_ffd27a_256x240.png); } + +/* positioning */ +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-off { background-position: -96px -144px; } +.ui-icon-radio-on { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; } +.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; } +.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; } +.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } +.ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; } +.ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } +.ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } +.ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; } +.ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; } + +/* Overlays */ +.ui-widget-overlay { background: #666666 url(../img/jquery-ui/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); } +.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(../img/jquery-ui/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }/* + * jQuery UI Resizable 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Resizable#theming + */ +.ui-resizable { position: relative;} +.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;} +.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } +.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } +.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } +.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } +.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } +.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } +.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } +.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } +.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* + * jQuery UI Selectable 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Selectable#theming + */ +.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; } +/* + * jQuery UI Accordion 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Accordion#theming + */ +/* IE/Win - Fix animation bug - #4615 */ +.ui-accordion { width: 100%; } +.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } +.ui-accordion .ui-accordion-li-fix { display: inline; } +.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } +.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; } +.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; } +.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } +.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; } +.ui-accordion .ui-accordion-content-active { display: block; } +/* + * jQuery UI Autocomplete 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Autocomplete#theming + */ +.ui-autocomplete { position: absolute; cursor: default; } + +/* workarounds */ +* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ + +/* + * jQuery UI Menu 1.8.10 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Menu#theming + */ +.ui-menu { + list-style:none; + padding: 2px; + margin: 0; + display:block; + float: left; +} +.ui-menu .ui-menu { + margin-top: -3px; +} +.ui-menu .ui-menu-item { + margin:0; + padding: 0; + zoom: 1; + float: left; + clear: left; + width: 100%; +} +.ui-menu .ui-menu-item a { + text-decoration:none; + display:block; + padding:.2em .4em; + line-height:1.5; + zoom:1; +} +.ui-menu .ui-menu-item a.ui-state-hover, +.ui-menu .ui-menu-item a.ui-state-active { + font-weight: normal; + margin: -1px; +} +/* + * jQuery UI Button 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Button#theming + */ +.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ +.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ +button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ +.ui-button-icons-only { width: 3.4em; } +button.ui-button-icons-only { width: 3.7em; } + +/*button text element */ +.ui-button .ui-button-text { display: block; line-height: 1.4; } +.ui-button-text-only .ui-button-text { padding: .4em 1em; } +.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } +.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } +.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } +.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } +/* no icon support for input elements, provide padding by default */ +input.ui-button { padding: .4em 1em; } + +/*button icon element(s) */ +.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } +.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } +.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } +.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } +.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } + +/*button sets*/ +.ui-buttonset { margin-right: 7px; } +.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } + +/* workarounds */ +button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ +/* + * jQuery UI Dialog 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Dialog#theming + */ +.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } +.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; } +.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } +.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } +.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } +.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } +.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } +.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } +.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } +.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } +.ui-draggable .ui-dialog-titlebar { cursor: move; } +/* + * jQuery UI Slider 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Slider#theming + */ +.ui-slider { position: relative; text-align: left; } +.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } +.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } + +.ui-slider-horizontal { height: .8em; } +.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } +.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } +.ui-slider-horizontal .ui-slider-range-min { left: 0; } +.ui-slider-horizontal .ui-slider-range-max { right: 0; } + +.ui-slider-vertical { width: .8em; height: 100px; } +.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } +.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } +.ui-slider-vertical .ui-slider-range-min { bottom: 0; } +.ui-slider-vertical .ui-slider-range-max { top: 0; }/* + * jQuery UI Tabs 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Tabs#theming + */ +.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ +.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } +.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; } +.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; } +.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; } +.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } +.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ +.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } +.ui-tabs .ui-tabs-hide { display: none !important; } +/* + * jQuery UI Datepicker 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Datepicker#theming + */ +.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } +.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } +.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } +.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } +.ui-datepicker .ui-datepicker-prev { left:2px; } +.ui-datepicker .ui-datepicker-next { right:2px; } +.ui-datepicker .ui-datepicker-prev-hover { left:1px; } +.ui-datepicker .ui-datepicker-next-hover { right:1px; } +.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } +.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } +.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } +.ui-datepicker select.ui-datepicker-month-year {width: 100%;} +.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-year { width: 49%;} +.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } +.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } +.ui-datepicker td { border: 0; padding: 1px; } +.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } +.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } +.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } + +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { width:auto; } +.ui-datepicker-multi .ui-datepicker-group { float:left; } +.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } +.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } +.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } +.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } +.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } +.ui-datepicker-row-break { clear:both; width:100%; } + +/* RTL support */ +.ui-datepicker-rtl { direction: rtl; } +.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } +.ui-datepicker-rtl .ui-datepicker-group { float:right; } +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } + +/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ +.ui-datepicker-cover { + display: none; /*sorry for IE5*/ + display/**/: block; /*sorry for IE5*/ + position: absolute; /*must have*/ + z-index: -1; /*must have*/ + filter: mask(); /*must have*/ + top: -4px; /*must have*/ + left: -4px; /*must have*/ + width: 200px; /*must have*/ + height: 200px; /*must have*/ +}/* + * jQuery UI Progressbar 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Progressbar#theming + */ +.ui-progressbar { height:2em; text-align: left; } +.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; } \ No newline at end of file diff --git a/img/jquery-ui/ui-bg_diagonals-thick_18_b81900_40x40.png b/img/jquery-ui/ui-bg_diagonals-thick_18_b81900_40x40.png new file mode 100755 index 000000000..954e22dbd Binary files /dev/null and b/img/jquery-ui/ui-bg_diagonals-thick_18_b81900_40x40.png differ diff --git a/img/jquery-ui/ui-bg_diagonals-thick_20_666666_40x40.png b/img/jquery-ui/ui-bg_diagonals-thick_20_666666_40x40.png new file mode 100755 index 000000000..64ece5707 Binary files /dev/null and b/img/jquery-ui/ui-bg_diagonals-thick_20_666666_40x40.png differ diff --git a/img/jquery-ui/ui-bg_flat_10_000000_40x100.png b/img/jquery-ui/ui-bg_flat_10_000000_40x100.png new file mode 100755 index 000000000..abdc01082 Binary files /dev/null and b/img/jquery-ui/ui-bg_flat_10_000000_40x100.png differ diff --git a/img/jquery-ui/ui-bg_glass_100_f6f6f6_1x400.png b/img/jquery-ui/ui-bg_glass_100_f6f6f6_1x400.png new file mode 100755 index 000000000..9b383f4d2 Binary files /dev/null and b/img/jquery-ui/ui-bg_glass_100_f6f6f6_1x400.png differ diff --git a/img/jquery-ui/ui-bg_glass_100_fdf5ce_1x400.png b/img/jquery-ui/ui-bg_glass_100_fdf5ce_1x400.png new file mode 100755 index 000000000..a23baad25 Binary files /dev/null and b/img/jquery-ui/ui-bg_glass_100_fdf5ce_1x400.png differ diff --git a/img/jquery-ui/ui-bg_glass_65_ffffff_1x400.png b/img/jquery-ui/ui-bg_glass_65_ffffff_1x400.png new file mode 100755 index 000000000..42ccba269 Binary files /dev/null and b/img/jquery-ui/ui-bg_glass_65_ffffff_1x400.png differ diff --git a/img/jquery-ui/ui-bg_gloss-wave_35_f6a828_500x100.png b/img/jquery-ui/ui-bg_gloss-wave_35_f6a828_500x100.png new file mode 100755 index 000000000..39d5824d6 Binary files /dev/null and b/img/jquery-ui/ui-bg_gloss-wave_35_f6a828_500x100.png differ diff --git a/img/jquery-ui/ui-bg_highlight-soft_100_eeeeee_1x100.png b/img/jquery-ui/ui-bg_highlight-soft_100_eeeeee_1x100.png new file mode 100755 index 000000000..f1273672d Binary files /dev/null and b/img/jquery-ui/ui-bg_highlight-soft_100_eeeeee_1x100.png differ diff --git a/img/jquery-ui/ui-bg_highlight-soft_75_ffe45c_1x100.png b/img/jquery-ui/ui-bg_highlight-soft_75_ffe45c_1x100.png new file mode 100755 index 000000000..359397acf Binary files /dev/null and b/img/jquery-ui/ui-bg_highlight-soft_75_ffe45c_1x100.png differ diff --git a/img/jquery-ui/ui-icons_222222_256x240.png b/img/jquery-ui/ui-icons_222222_256x240.png new file mode 100755 index 000000000..b273ff111 Binary files /dev/null and b/img/jquery-ui/ui-icons_222222_256x240.png differ diff --git a/img/jquery-ui/ui-icons_228ef1_256x240.png b/img/jquery-ui/ui-icons_228ef1_256x240.png new file mode 100755 index 000000000..c357355aa Binary files /dev/null and b/img/jquery-ui/ui-icons_228ef1_256x240.png differ diff --git a/img/jquery-ui/ui-icons_ef8c08_256x240.png b/img/jquery-ui/ui-icons_ef8c08_256x240.png new file mode 100755 index 000000000..85e63e9f6 Binary files /dev/null and b/img/jquery-ui/ui-icons_ef8c08_256x240.png differ diff --git a/img/jquery-ui/ui-icons_ffd27a_256x240.png b/img/jquery-ui/ui-icons_ffd27a_256x240.png new file mode 100755 index 000000000..e117effa3 Binary files /dev/null and b/img/jquery-ui/ui-icons_ffd27a_256x240.png differ diff --git a/img/jquery-ui/ui-icons_ffffff_256x240.png b/img/jquery-ui/ui-icons_ffffff_256x240.png new file mode 100755 index 000000000..42f8f992c Binary files /dev/null and b/img/jquery-ui/ui-icons_ffffff_256x240.png differ diff --git a/install-dev/controller.js b/install-dev/controller.js index c1bf2f20e..19d14424c 100644 --- a/install-dev/controller.js +++ b/install-dev/controller.js @@ -911,10 +911,12 @@ $(document).ready( } ); $("#loader").ajaxComplete( - function() + function(e, xhr, settings) { $(this).fadeOut(); $(".lockedForAjax").removeAttr("disabled").removeClass("disabled").removeClass("lockedForAjax"); + if (settings.url.substr(0, 17) == 'preactivation.php' && step == 1) + $("#btNext[disabled!=1], #btBack[disabled!=1]").attr("disabled", "disabled").addClass("disabled").addClass("lockedForAjax"); } ); //set actions on clicks diff --git a/install-dev/index.php b/install-dev/index.php index 7a926e89e..2bd4c4c10 100644 --- a/install-dev/index.php +++ b/install-dev/index.php @@ -784,7 +784,7 @@ if ($lm->getIncludeTradFilename())   -

+

@@ -826,10 +826,10 @@ if ($lm->getIncludeTradFilename()) { return strnatcmp($a['version'], $b['version']); } - $countNonNative = 0; - if ($oldversion !== false) + $countNonNative = 0; + if ($oldversion !== false AND !$sameVersions) { - include_once(realpath(INSTALL_PATH.'/../config').'/config.inc.php'); + include_once(realpath(INSTALL_PATH.'/../config').'/defines.inc.php'); $moduleList = Module::getNonNativeModuleList(); $moduleNonNativeLi = '
diff --git a/install-dev/langs/de.php b/install-dev/langs/de.php index ca3adc449..0194a0a97 100644 --- a/install-dev/langs/de.php +++ b/install-dev/langs/de.php @@ -140,7 +140,7 @@ $_LANG['Update is complete!'] = 'Aktualisierung beendet!'; $_LANG['Upgrade: get the latest stable version!'] = 'Aktualisierung: Installieren Sie die neueste Version von PrestaShop'; $_LANG['Verify now!'] = 'Testen der SQL-Verbindung'; $_LANG['Verify system compatibility'] = 'Systemkompatibilität'; -$_LANG['WARNING: For more security, you must delete the \'install\' folder and readme files (readme_fr.txt, readme_en.txt, readme_es.txt).'] = 'VORSICHT: Aus Sicherheitsgründen löschen Sie bitte den Ordner \'/install\' und die readme-Dateien (readme_fr.txt, readme_en.txt, readme_es.txt).'; +$_LANG['WARNING: For more security, you must delete the \'install\' folder and readme files (readme_fr.txt, readme_en.txt, readme_es.txt, readme_de.txt, readme_it.txt, CHANGELOG).'] = 'VORSICHT: Aus Sicherheitsgründen löschen Sie bitte den Ordner \'/install\' und die readme-Dateien (readme_fr.txt, readme_en.txt, readme_es.txt, readme_de.txt, readme_it.txt, CHANGELOG).'; $_LANG['Warning: a manual backup is HIGHLY recommended before continuing!'] = 'Vorsicht: eine manuelle Sicherung ist UNERLÄSSLICH, bevor mit der Aktualisierung der PrestaShop-Anwendung begonnen wird, um jeglichen versehentlichen Datenverlust zu verhindern'; $_LANG['Welcome'] = 'Willkommen'; $_LANG['Welcome to the PrestaShop '.INSTALL_VERSION.' Installer.'] = 'Bienvenue dans l\'installation de PrestaShop '.INSTALL_VERSION; @@ -279,7 +279,7 @@ $_LANG['Link to the validator'] = 'Link zum Validator'; $_LANG['Online Theme Validator'] = 'Online Themenvalidator'; $_LANG['If your theme is not valid, you may experience some problems in your front-office aspect, but don\'t panic ! To solve this, you can make it compatible by correcting the validators errors or by using a theme compatible with '] = 'Sollte Ihr Thema nicht kompatibel sein, könnten einige Probleme im Front-End auftreten. Sie können die Kompatibilität wieder einstellen, indem Sie im Backend Unter Einstellungen die entsprechende Einstellung treffen'; $_LANG['version'] = 'Version'; - +$_LANG['In this aim, use our'] = 'Verwenden Sie dazu unseren'; diff --git a/install-dev/langs/es.php b/install-dev/langs/es.php index b42c3fcc0..17ce653f8 100644 --- a/install-dev/langs/es.php +++ b/install-dev/langs/es.php @@ -138,7 +138,7 @@ $_LANG['Update is complete!'] = '¡Actualización completa!'; $_LANG['Upgrade: get the latest stable version!'] = 'Actualización: instale la última versión de PrestShop'; $_LANG['Verify now!'] = '¡Pruebe ahora!'; $_LANG['Verify system compatibility'] = 'Compatibilidad sistema'; -$_LANG['WARNING: For more security, you must delete the \'install\' folder and readme files (readme_fr.txt, readme_en.txt, readme_es.txt).'] = 'ATENCION : para más seguridad, por favor suprima la carpeta \'/install\' y los archivos readme (readme_fr.txt, readme_en.txt, readme_es.txt)..'; +$_LANG['WARNING: For more security, you must delete the \'install\' folder and readme files (readme_fr.txt, readme_en.txt, readme_es.txt, readme_de.txt, readme_it.txt, CHANGELOG).'] = 'ATENCION : para más seguridad, por favor suprima la carpeta \'/install\' y los archivos readme (readme_fr.txt, readme_en.txt, readme_es.txt, readme_de.txt, readme_it.txt, CHANGELOG)..'; $_LANG['Warning: a manual backup is HIGHLY recommended before continuing!'] = '¡Atención: se recomienda hacer una copia de seguridad manual antes de continuar!'; $_LANG['Welcome'] = 'Bienvenido'; $_LANG['Welcome to the PrestaShop '.INSTALL_VERSION.' Installer.'] = 'Bienvenido a la instalación de PrestaShop '.INSTALL_VERSION; @@ -268,4 +268,15 @@ $_LANG['do not close the window and be patient.'] = 'no cierre la ventana y espe $_LANG['Your update is completed!'] = 'La actualización ha concluido con éxito'; $_LANG['Your shop version is now'] = 'La versión de su tienda ya está'; $_LANG['New features in PrestaShop v'] = 'Nuevas aplicaciones en dans PrestaShop v'; - +$_LANG['Module compatibility'] = 'Compatibilidad Módulos'; +$_LANG['It\'s dangerous to keep non-native modules activated during the update. If you really want to take this risk, uncheck the following box.'] = 'Se desaconseja dejar los módulos no nativos activos durante la actualización. Si realmente desea correr ese riesgo, desactive la siguiente casilla.'; +$_LANG['You will be able to manually reactivate them in your back-office, once the update process has succeeded.'] = 'Después podrá reactivarlos manualmente en el back-office, una vez la actualización haya terminado.'; +$_LANG['Ok, please desactivate the following modules, I will reactivate them later.'] = 'De acuerdo, desactive automáticamente los siguientes módulos, los activaré yo mismo más tarde.'; +$_LANG['Theme compatibility'] = 'Compatibilidad del tema'; +$_LANG['Before updating, you need to check that your theme is compatible with version'] = 'Antes de la actualización, debe comprobar que su tema es compatible con la versión'; +$_LANG['of PrestaShop.'] = 'de PrestaShop'; +$_LANG['Link to the validator'] = 'Link hacia el validador'; +$_LANG['Online Theme Validator'] = 'Validador del tema en línea'; +$_LANG['If your theme is not valid, you may experience some problems in your front-office aspect, but don\'t panic ! To solve this, you can make it compatible by correcting the validators errors or by using a theme compatible with '] = 'Si su tema no es válido, podría tener problemas en la página de su sitio Web, pero no se preocupe, ¡puede hacerlo compatible corrigiendo los errores señalados por el validador o utilizando un tema compatible con la versión!' ; +$_LANG['version'] = 'versión'; +$_LANG['In this aim, use our'] = 'En este objetivo, utilice nuestro'; \ No newline at end of file diff --git a/install-dev/langs/fr.php b/install-dev/langs/fr.php index c4cb53f1e..e83846939 100644 --- a/install-dev/langs/fr.php +++ b/install-dev/langs/fr.php @@ -140,7 +140,7 @@ $_LANG['Update is complete!'] = 'Mise à jour terminée !'; $_LANG['Upgrade: get the latest stable version!'] = 'Mise à jour : installez la dernière version de PrestaShop'; $_LANG['Verify now!'] = 'Tester la connexion'; $_LANG['Verify system compatibility'] = 'Compatibilité système'; -$_LANG['WARNING: For more security, you must delete the \'install\' folder and readme files (readme_fr.txt, readme_en.txt, readme_es.txt).'] = 'ATTENTION : pour plus de sécurité, merci de supprimer le dossier \'/install\' et les fichiers readme (readme_fr.txt, readme_en.txt, readme_es.txt).'; +$_LANG['WARNING: For more security, you must delete the \'install\' folder and readme files (readme_fr.txt, readme_en.txt, readme_es.txt, readme_de.txt, readme_it.txt, CHANGELOG).'] = 'ATTENTION : pour plus de sécurité, merci de supprimer le dossier \'/install\' et les fichiers readme (readme_fr.txt, readme_en.txt, readme_es.txt, readme_de.txt, readme_it.txt, CHANGELOG).'; $_LANG['Warning: a manual backup is HIGHLY recommended before continuing!'] = 'Attention : une sauvegarde manuelle est INDISPENSABLE avant de procéder à la mise à jour de l\'application PrestaShop, cela afin de prévenir toute perte de données accidentelle'; $_LANG['Welcome'] = 'Bienvenue'; $_LANG['Welcome to the PrestaShop '.INSTALL_VERSION.' Installer.'] = 'Bienvenue dans l\'installation de PrestaShop '.INSTALL_VERSION; @@ -241,7 +241,7 @@ $_LANG['Upgrade file'] = 'Fichier de mise à jour'; $_LANG['Modifications to process'] = 'Modifications à prendre en compte'; $_LANG['(major)'] = '(majeure)'; $_LANG['TOTAL'] = 'TOTAL'; -$_LANG['Estimated time to complete the'] = 'Temps estimé pour réaliser la'; +$_LANG['Estimated time to complete the'] = 'Temps estimé pour réaliser les'; $_LANG['modifications:'] = 'modifications :'; $_LANG['minutes'] = 'minutes'; $_LANG['minute'] = 'minute'; @@ -278,7 +278,8 @@ $_LANG['of PrestaShop.'] = 'de PrestaShop'; $_LANG['Link to the validator'] = 'Lien vers le validateur'; $_LANG['Online Theme Validator'] = 'Validateur de Theme en ligne'; $_LANG['If your theme is not valid, you may experience some problems in your front-office aspect, but don\'t panic ! To solve this, you can make it compatible by correcting the validators errors or by using a theme compatible with '] = 'Si votre thème n\'est pas valide, vous pourrez rencontrer quelques problèmes d\'affichage de votre site, mais inutile de paniquer ! Vous pouvez le rendre compatible en corrigeant les erreurs signalées par le validateur ou en utilisant un thème compatible avec la version' ; -$_LANG['version'] = ''; +$_LANG['version'] = 'version'; +$_LANG['In this aim, use our'] = 'Dans ce but, utilisez notre'; diff --git a/install-dev/langs/it.php b/install-dev/langs/it.php index 9e9cf9086..5c72bcc09 100644 --- a/install-dev/langs/it.php +++ b/install-dev/langs/it.php @@ -140,7 +140,7 @@ $_LANG['Update is complete!'] = 'Aggiornamento terminato!'; $_LANG['Upgrade: get the latest stable version!'] = 'Aggiornamento installa l\'ultima versione di PrestaShop'; $_LANG['Verify now!'] = 'Prova la connessione SQL'; $_LANG['Verify system compatibility'] = 'Compatibilità sistema'; -$_LANG['WARNING: For more security, you must delete the \'install\' folder and readme files (readme_fr.txt, readme_en.txt, readme_es.txt).'] = 'ATTENZIONE: per motivi di sicurezza, adesso devi cancellare la cartella \'install\' e i file readme (readme_fr.txt, readme_en.txt, readme_es.txt).'; +$_LANG['WARNING: For more security, you must delete the \'install\' folder and readme files (readme_fr.txt, readme_en.txt, readme_es.txt, readme_de.txt, readme_it.txt, CHANGELOG).'] = 'ATTENZIONE: per motivi di sicurezza, adesso devi cancellare la cartella \'install\' e i file readme (readme_fr.txt, readme_en.txt, readme_es.txt, readme_de.txt, readme_it.txt, CHANGELOG).'; $_LANG['Warning: a manual backup is HIGHLY recommended before continuing!'] = 'Attenzione: E\' FONDAMENTALE un backup manuale prima di continuare l\'aggiornamento dell\'applicazione Prestashop, al fine di evitare la perdita accidentale di dati.'; $_LANG['Welcome'] = 'Benvenuto'; $_LANG['Welcome to the PrestaShop '.INSTALL_VERSION.' Installer.'] = 'Benvenuto nell\'installazione di PrestaShop '.INSTALL_VERSION; @@ -266,4 +266,4 @@ $_LANG['do not close the window and be patient.'] = 'non chiudere la finestra e $_LANG['Your update is completed!'] = 'L\'aggiornamento è completo!'; $_LANG['Your shop version is now'] = 'La tua versione adesso è'; $_LANG['New features in PrestaShop v'] = 'Nuove caratteristiche in PrestaShop v'; - +$_LANG['In this aim, use our'] = 'A questo scopo, utilizzare il nostro'; diff --git a/install-dev/php/alter_cms_block.php b/install-dev/php/alter_cms_block.php index ded5fc023..950650064 100644 --- a/install-dev/php/alter_cms_block.php +++ b/install-dev/php/alter_cms_block.php @@ -28,13 +28,13 @@ function alter_cms_block() { // No one will know if the table does not exist :] Thanks Damien for your solution ;) - DB::getInstance()->Execute('ALTER TABLE `PREFIX_cms_block_lang` CHANGE `id_block_cms` `id_cms_block` INT( 10 ) UNSIGNED NOT NULL'); + DB::getInstance()->Execute('ALTER TABLE `'._DB_PREFIX_.'cms_block_lang` CHANGE `id_block_cms` `id_cms_block` INT( 10 ) UNSIGNED NOT NULL'); - DB::getInstance()->Execute('ALTER TABLE `PREFIX_cms_block` CHANGE `id_block_cms` `id_cms_block` INT( 10 ) UNSIGNED NOT NULL'); + DB::getInstance()->Execute('ALTER TABLE `'._DB_PREFIX_.'cms_block` CHANGE `id_block_cms` `id_cms_block` INT( 10 ) UNSIGNED NOT NULL'); - DB::getInstance()->Execute('ALTER TABLE `PREFIX_cms_block_page` CHANGE `id_block_cms` `id_cms_block` INT( 10 ) UNSIGNED NOT NULL'); + DB::getInstance()->Execute('ALTER TABLE `'._DB_PREFIX_.'cms_block_page` CHANGE `id_block_cms` `id_cms_block` INT( 10 ) UNSIGNED NOT NULL'); - DB::getInstance()->Execute('ALTER TABLE `ps_cms_block_page` CHANGE `id_block_cms_page` `id_cms_block_page` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT'); + DB::getInstance()->Execute('ALTER TABLE `'._DB_PREFIX_.'cms_block_page` CHANGE `id_block_cms_page` `id_cms_block_page` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT'); } diff --git a/install-dev/sql/db.sql b/install-dev/sql/db.sql index 1c4dfaa36..ee1c27881 100644 --- a/install-dev/sql/db.sql +++ b/install-dev/sql/db.sql @@ -361,6 +361,7 @@ CREATE TABLE `PREFIX_country` ( `need_identification_number` tinyint(1) NOT NULL default '0', `need_zip_code` tinyint(1) NOT NULL default '1', `zip_code_format` varchar(12) NOT NULL default '', + `display_tax_label` BOOLEAN NOT NULL, PRIMARY KEY (`id_country`), KEY `country_iso_code` (`iso_code`), KEY `country_` (`id_zone`) @@ -373,13 +374,6 @@ CREATE TABLE `PREFIX_country_lang` ( UNIQUE KEY `country_lang_index` (`id_country`,`id_lang`) ) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; -CREATE TABLE `PREFIX_country_tax` ( - `id_country_tax` int(11) NOT NULL AUTO_INCREMENT, - `id_country` int(11) NOT NULL, - `id_tax_rules_group` int(11) NOT NULL, - PRIMARY KEY (`id_country_tax`) -) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; - CREATE TABLE `PREFIX_currency` ( `id_currency` int(10) unsigned NOT NULL auto_increment, `name` varchar(32) NOT NULL, @@ -1409,8 +1403,8 @@ CREATE TABLE `PREFIX_tab` ( ) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; CREATE TABLE `PREFIX_tab_lang` ( - `id_lang` int(10) unsigned NOT NULL, `id_tab` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL, `name` varchar(32) default NULL, PRIMARY KEY (`id_tab`,`id_lang`) ) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; @@ -1637,3 +1631,10 @@ CREATE TABLE `PREFIX_county_zip_code` ( PRIMARY KEY ( `id_county` , `from_zip_code` , `to_zip_code` ) ) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; +CREATE TABLE `PREFIX_address_format` ( + `id_country` int(10) unsigned NOT NULL, + `format` varchar(255) NOT NULL DEFAULT '', + KEY `country` (`id_country`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + + diff --git a/install-dev/sql/db_settings_lite.sql b/install-dev/sql/db_settings_lite.sql index 02732a6db..c5a4dfe88 100644 --- a/install-dev/sql/db_settings_lite.sql +++ b/install-dev/sql/db_settings_lite.sql @@ -173,7 +173,7 @@ INSERT INTO `PREFIX_configuration` (`id_configuration`, `name`, `value`, `date_a (102, 'PS_DIMENSION_UNIT', 'cm', NOW(), NOW()), (103, 'PS_FORCE_SMARTY_2', '0', NOW(), NOW()), (104, 'PS_GUEST_CHECKOUT_ENABLED', '0', NOW(), NOW()), -(105, 'PS_DISPLAY_SUPPLIERS', '0', NOW(), NOW()), +(105, 'PS_DISPLAY_SUPPLIERS', '1', NOW(), NOW()), (106, 'PS_CATALOG_MODE', '0', NOW(), NOW()), (107, 'PS_GEOLOCATION_WHITELIST', '209.185.108;209.185.253;209.85.238;209.85.238.11;209.85.238.4;216.239.33.96;216.239.33.97;216.239.33.98;216.239.33.99;216.239.37.98;216.239.37.99;216.239.39.98;216.239.39.99;216.239.41.96;216.239.41.97;216.239.41.98;216.239.41.99;216.239.45.4;216.239.46;216.239.51.96;216.239.51.97;216.239.51.98;216.239.51.99;216.239.53.98;216.239.53.99;216.239.57.96;216.239.57.97;216.239.57.98;216.239.57.99;216.239.59.98;216.239.59.99;216.33.229.163;64.233.173.193;64.233.173.194;64.233.173.195;64.233.173.196;64.233.173.197;64.233.173.198;64.233.173.199;64.233.173.200;64.233.173.201;64.233.173.202;64.233.173.203;64.233.173.204;64.233.173.205;64.233.173.206;64.233.173.207;64.233.173.208;64.233.173.209;64.233.173.210;64.233.173.211;64.233.173.212;64.233.173.213;64.233.173.214;64.233.173.215;64.233.173.216;64.233.173.217;64.233.173.218;64.233.173.219;64.233.173.220;64.233.173.221;64.233.173.222;64.233.173.223;64.233.173.224;64.233.173.225;64.233.173.226;64.233.173.227;64.233.173.228;64.233.173.229;64.233.173.230;64.233.173.231;64.233.173.232;64.233.173.233;64.233.173.234;64.233.173.235;64.233.173.236;64.233.173.237;64.233.173.238;64.233.173.239;64.233.173.240;64.233.173.241;64.233.173.242;64.233.173.243;64.233.173.244;64.233.173.245;64.233.173.246;64.233.173.247;64.233.173.248;64.233.173.249;64.233.173.250;64.233.173.251;64.233.173.252;64.233.173.253;64.233.173.254;64.233.173.255;64.68.80;64.68.81;64.68.82;64.68.83;64.68.84;64.68.85;64.68.86;64.68.87;64.68.88;64.68.89;64.68.90.1;64.68.90.10;64.68.90.11;64.68.90.12;64.68.90.129;64.68.90.13;64.68.90.130;64.68.90.131;64.68.90.132;64.68.90.133;64.68.90.134;64.68.90.135;64.68.90.136;64.68.90.137;64.68.90.138;64.68.90.139;64.68.90.14;64.68.90.140;64.68.90.141;64.68.90.142;64.68.90.143;64.68.90.144;64.68.90.145;64.68.90.146;64.68.90.147;64.68.90.148;64.68.90.149;64.68.90.15;64.68.90.150;64.68.90.151;64.68.90.152;64.68.90.153;64.68.90.154;64.68.90.155;64.68.90.156;64.68.90.157;64.68.90.158;64.68.90.159;64.68.90.16;64.68.90.160;64.68.90.161;64.68.90.162;64.68.90.163;64.68.90.164;64.68.90.165;64.68.90.166;64.68.90.167;64.68.90.168;64.68.90.169;64.68.90.17;64.68.90.170;64.68.90.171;64.68.90.172;64.68.90.173;64.68.90.174;64.68.90.175;64.68.90.176;64.68.90.177;64.68.90.178;64.68.90.179;64.68.90.18;64.68.90.180;64.68.90.181;64.68.90.182;64.68.90.183;64.68.90.184;64.68.90.185;64.68.90.186;64.68.90.187;64.68.90.188;64.68.90.189;64.68.90.19;64.68.90.190;64.68.90.191;64.68.90.192;64.68.90.193;64.68.90.194;64.68.90.195;64.68.90.196;64.68.90.197;64.68.90.198;64.68.90.199;64.68.90.2;64.68.90.20;64.68.90.200;64.68.90.201;64.68.90.202;64.68.90.203;64.68.90.204;64.68.90.205;64.68.90.206;64.68.90.207;64.68.90.208;64.68.90.21;64.68.90.22;64.68.90.23;64.68.90.24;64.68.90.25;64.68.90.26;64.68.90.27;64.68.90.28;64.68.90.29;64.68.90.3;64.68.90.30;64.68.90.31;64.68.90.32;64.68.90.33;64.68.90.34;64.68.90.35;64.68.90.36;64.68.90.37;64.68.90.38;64.68.90.39;64.68.90.4;64.68.90.40;64.68.90.41;64.68.90.42;64.68.90.43;64.68.90.44;64.68.90.45;64.68.90.46;64.68.90.47;64.68.90.48;64.68.90.49;64.68.90.5;64.68.90.50;64.68.90.51;64.68.90.52;64.68.90.53;64.68.90.54;64.68.90.55;64.68.90.56;64.68.90.57;64.68.90.58;64.68.90.59;64.68.90.6;64.68.90.60;64.68.90.61;64.68.90.62;64.68.90.63;64.68.90.64;64.68.90.65;64.68.90.66;64.68.90.67;64.68.90.68;64.68.90.69;64.68.90.7;64.68.90.70;64.68.90.71;64.68.90.72;64.68.90.73;64.68.90.74;64.68.90.75;64.68.90.76;64.68.90.77;64.68.90.78;64.68.90.79;64.68.90.8;64.68.90.80;64.68.90.9;64.68.91;64.68.92;66.249.64;66.249.65;66.249.66;66.249.67;66.249.68;66.249.69;66.249.70;66.249.71;66.249.72;66.249.73;66.249.78;66.249.79;72.14.199;8.6.48', NOW(), NOW()), (108, 'PS_LOGS_BY_EMAIL', '5', NOW(), NOW()), @@ -270,57 +270,57 @@ INSERT INTO `PREFIX_zone` (`id_zone`, `name`, `active`) VALUES (1, 'Europe', 1),(2, 'North America', 1),(3, 'Asia', 1),(4, 'Africa', 1), (5, 'Oceania', 1),(6, 'South America', 1),(7, 'Europe (out E.U)', 1),(8, 'Centrale America/Antilla', 1); -INSERT INTO `PREFIX_country` (`id_country`, `id_zone`, `iso_code`, `call_prefix`, `active`, `contains_states`, `need_identification_number`, `need_zip_code`, `zip_code_format`) VALUES -(1, 1, 'DE', 49, 1, 0, 0, 1, 'NNNNN'),(2, 1, 'AT', 43, 1, 0, 0, 1, 'NNNN'),(3, 1, 'BE', 32, 1, 0, 0, 1, 'NNNN'),(4, 2, 'CA', 1, 1, 1, 0, 1, 'LNL NLN'),(5, 3, 'CN', 86, 1, 0, 0, 1, 'NNNNNN'), -(6, 1, 'ES', 34, 1, 0, 1, 1, 'NNNNN'),(7, 1, 'FI', 358, 1, 0, 0, 1, 'NNNNN'),(8, 1, 'FR', 33, 1, 0, 0, 1, 'NNNNN'),(9, 1, 'GR', 30, 1, 0, 0, 1, 'NNNNN'),(10, 1, 'IT', 39, 1, 0, 0, 1, 'NNNNN'), -(11, 3, 'JP', 81, 1, 0, 0, 1, 'NNN-NNNN'),(12, 1, 'LU', 352, 1, 0, 0, 1, 'NNNN'),(13, 1, 'NL', 31, 1, 0, 0, 1, 'NNNN LL'),(14, 1, 'PL', 48, 1, 0, 0, 1, 'NN-NNN'), -(15, 1, 'PT', 351, 1, 0, 0, 1, 'NNNN NNN'),(16, 1, 'CZ', 420, 1, 0, 0, 1, 'NNN NN'),(17, 1, 'GB', 44, 1, 0, 0, 1, ''),(18, 1, 'SE', 46, 1, 0, 0, 1, 'NNN NN'), -(19, 7, 'CH', 41, 1, 0, 0, 1, 'NNNN'),(20, 1, 'DK', 45, 1, 0, 0, 1, 'NNNN'),(21, 2, 'US', 1, 1, 1, 0, 1, 'NNNNN'),(22, 3, 'HK', 852, 1, 0, 0, 0, ''),(23, 1, 'NO', 47, 1, 0, 0, 1, 'NNNN'), -(24, 5, 'AU', 61, 1, 0, 0, 1, 'NNNN'),(25, 3, 'SG', 65, 1, 0, 0, 1, 'NNNNNN'),(26, 1, 'IE', 353, 1, 0, 0, 1, ''),(27, 5, 'NZ', 64, 1, 0, 0, 1, 'NNNN'),(28, 3, 'KR', 82, 1, 0, 0, 1, 'NNN-NNN'), -(29, 3, 'IL', 972, 1, 0, 0, 1, 'NNNNN'),(30, 4, 'ZA', 27, 1, 0, 0, 1, 'NNNN'),(31, 4, 'NG', 234, 1, 0, 0, 1, ''),(32, 4, 'CI', 225, 1, 0, 0, 1, ''),(33, 4, 'TG', 228, 1, 0, 0, 1, ''), -(34, 6, 'BO', 591, 1, 0, 0, 1, ''),(35, 4, 'MU', 230, 1, 0, 0, 1, ''),(36, 1, 'RO', 40, 1, 0, 0, 1, 'NNNNNN'),(37, 1, 'SK', 421, 1, 0, 0, 1, 'NNN NN'),(38, 4, 'DZ', 213, 1, 0, 0, 1, 'NNNNN'), -(39, 2, 'AS', 0, 1, 0, 0, 1, ''),(40, 7, 'AD', 376, 1, 0, 0, 1, 'CNNN'),(41, 4, 'AO', 244, 1, 0, 0, 0, ''),(42, 8, 'AI', 0, 1, 0, 0, 1, ''),(43, 2, 'AG', 0, 1, 0, 0, 1, ''), -(44, 6, 'AR', 54, 1, 1, 0, 1, 'LNNNN'),(45, 3, 'AM', 374, 1, 0, 0, 1, 'NNNN'),(46, 8, 'AW', 297, 1, 0, 0, 1, ''),(47, 3, 'AZ', 994, 1, 0, 0, 1, 'CNNNN'),(48, 2, 'BS', 0, 1, 0, 0, 1, ''), -(49, 3, 'BH', 973, 1, 0, 0, 1, ''),(50, 3, 'BD', 880, 1, 0, 0, 1, 'NNNN'),(51, 2, 'BB', 0, 1, 0, 0, 1, 'CNNNNN'),(52, 7, 'BY', 0, 1, 0, 0, 1, 'NNNNNN'),(53, 8, 'BZ', 501, 1, 0, 0, 0, ''), -(54, 4, 'BJ', 229, 1, 0, 0, 0, ''),(55, 2, 'BM', 0, 1, 0, 0, 1, ''),(56, 3, 'BT', 975, 1, 0, 0, 1, ''),(57, 4, 'BW', 267, 1, 0, 0, 1, ''),(58, 6, 'BR', 55, 1, 0, 0, 1, 'NNNNN-NNN'), -(59, 3, 'BN', 673, 1, 0, 0, 1, 'LLNNNN'),(60, 4, 'BF', 226, 1, 0, 0, 1, ''),(61, 3, 'MM', 95, 1, 0, 0, 1, ''),(62, 4, 'BI', 257, 1, 0, 0, 1, ''),(63, 3, 'KH', 855, 1, 0, 0, 1, 'NNNNN'), -(64, 4, 'CM', 237, 1, 0, 0, 1, ''),(65, 4, 'CV', 238, 1, 0, 0, 1, 'NNNN'),(66, 4, 'CF', 236, 1, 0, 0, 1, ''),(67, 4, 'TD', 235, 1, 0, 0, 1, ''),(68, 6, 'CL', 56, 1, 0, 0, 1, 'NNN-NNNN'), -(69, 6, 'CO', 57, 1, 0, 0, 1, 'NNNNNN'),(70, 4, 'KM', 269, 1, 0, 0, 1, ''),(71, 4, 'CD', 242, 1, 0, 0, 1, ''),(72, 4, 'CG', 243, 1, 0, 0, 1, ''),(73, 8, 'CR', 506, 1, 0, 0, 1, 'NNNNN'), -(74, 7, 'HR', 385, 1, 0, 0, 1, 'NNNNN'),(75, 8, 'CU', 53, 1, 0, 0, 1, ''),(76, 1, 'CY', 357, 1, 0, 0, 1, 'NNNN'),(77, 4, 'DJ', 253, 1, 0, 0, 1, ''),(78, 8, 'DM', 0, 1, 0, 0, 1, ''), -(79, 8, 'DO', 0, 1, 0, 0, 1, ''),(80, 3, 'TL', 670, 1, 0, 0, 1, ''),(81, 6, 'EC', 593, 1, 0, 0, 1, 'CNNNNNN'),(82, 4, 'EG', 20, 1, 0, 0, 0, ''),(83, 8, 'SV', 503, 1, 0, 0, 1, ''), -(84, 4, 'GQ', 240, 1, 0, 0, 1, ''),(85, 4, 'ER', 291, 1, 0, 0, 1, ''),(86, 1, 'EE', 372, 1, 0, 0, 1, 'NNNNN'),(87, 4, 'ET', 251, 1, 0, 0, 1, ''),(88, 8, 'FK', 0, 1, 0, 0, 1, 'LLLL NLL'), -(89, 7, 'FO', 298, 1, 0, 0, 1, ''),(90, 5, 'FJ', 679, 1, 0, 0, 1, ''),(91, 4, 'GA', 241, 1, 0, 0, 1, ''),(92, 4, 'GM', 220, 1, 0, 0, 1, ''),(93, 3, 'GE', 995, 1, 0, 0, 1, 'NNNN'), -(94, 4, 'GH', 233, 1, 0, 0, 1, ''),(95, 8, 'GD', 0, 1, 0, 0, 1, ''),(96, 7, 'GL', 299, 1, 0, 0, 1, ''),(97, 7, 'GI', 350, 1, 0, 0, 1, ''),(98, 8, 'GP', 590, 1, 0, 0, 1, ''), -(99, 8, 'GU', 0, 1, 0, 0, 1, ''),(100, 8, 'GT', 502, 1, 0, 0, 1, ''),(101, 7, 'GG', 0, 1, 0, 0, 1, 'LLN NLL'),(102, 4, 'GN', 224, 1, 0, 0, 1, ''),(103, 4, 'GW', 245, 1, 0, 0, 1, ''), -(104, 6, 'GY', 592, 1, 0, 0, 1, ''),(105, 8, 'HT', 509, 1, 0, 0, 1, ''),(106, 5, 'HM', 0, 1, 0, 0, 1, ''),(107, 7, 'VA', 379, 1, 0, 0, 1, 'NNNNN'),(108, 8, 'HN', 504, 1, 0, 0, 1, ''), -(109, 7, 'IS', 354, 1, 0, 0, 1, 'NNN'),(110, 3, 'IN', 91, 1, 0, 0, 1, 'NNN NNN'),(111, 3, 'ID', 62, 1, 0, 0, 1, 'NNNNN'),(112, 3, 'IR', 98, 1, 0, 0, 1, 'NNNNN-NNNNN'), -(113, 3, 'IQ', 964, 1, 0, 0, 1, 'NNNNN'),(114, 7, 'IM', 0, 1, 0, 0, 1, 'CN NLL'),(115, 8, 'JM', 0, 1, 0, 0, 1, ''),(116, 7, 'JE', 0, 1, 0, 0, 1, 'CN NLL'),(117, 3, 'JO', 962, 1, 0, 0, 1, ''), -(118, 3, 'KZ', 7, 1, 0, 0, 1, 'NNNNNN'),(119, 4, 'KE', 254, 1, 0, 0, 1, ''),(120, 7, 'KI', 686, 1, 0, 0, 1, ''),(121, 3, 'KP', 850, 1, 0, 0, 1, ''),(122, 3, 'KW', 965, 1, 0, 0, 1, ''), -(123, 3, 'KG', 996, 1, 0, 0, 1, ''),(124, 3, 'LA', 856, 1, 0, 0, 1, ''),(125, 1, 'LV', 371, 1, 0, 0, 1, 'C-NNNN'),(126, 3, 'LB', 961, 1, 0, 0, 1, ''),(127, 4, 'LS', 266, 1, 0, 0, 1, ''), -(128, 4, 'LR', 231, 1, 0, 0, 1, ''),(129, 4, 'LY', 218, 1, 0, 0, 1, ''),(130, 1, 'LI', 423, 1, 0, 0, 1, 'NNNN'),(131, 1, 'LT', 370, 1, 0, 0, 1, 'NNNNN'),(132, 3, 'MO', 853, 1, 0, 0, 0, ''), -(133, 7, 'MK', 389, 1, 0, 0, 1, ''),(134, 4, 'MG', 261, 1, 0, 0, 1, ''),(135, 4, 'MW', 265, 1, 0, 0, 1, ''),(136, 3, 'MY', 60, 1, 0, 0, 1, 'NNNNN'),(137, 3, 'MV', 960, 1, 0, 0, 1, ''), -(138, 4, 'ML', 223, 1, 0, 0, 1, ''),(139, 1, 'MT', 356, 1, 0, 0, 1, 'LLL NNNN'),(140, 5, 'MH', 692, 1, 0, 0, 1, ''),(141, 8, 'MQ', 596, 1, 0, 0, 1, ''),(142, 4, 'MR', 222, 1, 0, 0, 1, ''), -(143, 1, 'HU', 36, 1, 0, 0, 1, 'NNNN'),(144, 4, 'YT', 262, 1, 0, 0, 1, ''),(145, 2, 'MX', 52, 1, 0, 0, 1, 'NNNNN'),(146, 5, 'FM', 691, 1, 0, 0, 1, ''),(147, 7, 'MD', 373, 1, 0, 0, 1, 'C-NNNN'), -(148, 7, 'MC', 377, 1, 0, 0, 1, '980NN'),(149, 3, 'MN', 976, 1, 0, 0, 1, ''),(150, 7, 'ME', 382, 1, 0, 0, 1, 'NNNNN'),(151, 8, 'MS', 0, 1, 0, 0, 1, ''),(152, 4, 'MA', 212, 1, 0, 0, 1, 'NNNNN'), -(153, 4, 'MZ', 258, 1, 0, 0, 1, ''),(154, 4, 'NA', 264, 1, 0, 0, 1, ''),(155, 5, 'NR', 674, 1, 0, 0, 1, ''),(156, 3, 'NP', 977, 1, 0, 0, 1, ''),(157, 8, 'AN', 599, 1, 0, 0, 1, ''), -(158, 5, 'NC', 687, 1, 0, 0, 1, ''),(159, 8, 'NI', 505, 1, 0, 0, 1, 'NNNNNN'),(160, 4, 'NE', 227, 1, 0, 0, 1, ''),(161, 5, 'NU', 683, 1, 0, 0, 1, ''),(162, 5, 'NF', 0, 1, 0, 0, 1, ''), -(163, 5, 'MP', 0, 1, 0, 0, 1, ''),(164, 3, 'OM', 968, 1, 0, 0, 1, ''),(165, 3, 'PK', 92, 1, 0, 0, 1, ''),(166, 5, 'PW', 680, 1, 0, 0, 1, ''),(167, 3, 'PS', 0, 1, 0, 0, 1, ''), -(168, 8, 'PA', 507, 1, 0, 0, 1, 'NNNNNN'),(169, 5, 'PG', 675, 1, 0, 0, 1, ''),(170, 6, 'PY', 595, 1, 0, 0, 1, ''),(171, 6, 'PE', 51, 1, 0, 0, 1, ''),(172, 3, 'PH', 63, 1, 0, 0, 1, 'NNNN'), -(173, 5, 'PN', 0, 1, 0, 0, 1, 'LLLL NLL'),(174, 8, 'PR', 0, 1, 0, 0, 1, 'NNNNN'),(175, 3, 'QA', 974, 1, 0, 0, 1, ''),(176, 4, 'RE', 262, 1, 0, 0, 1, ''),(177, 7, 'RU', 7, 1, 0, 0, 1, 'NNNNNN'), -(178, 4, 'RW', 250, 1, 0, 0, 1, ''),(179, 8, 'BL', 0, 1, 0, 0, 1, ''),(180, 8, 'KN', 0, 1, 0, 0, 1, ''),(181, 8, 'LC', 0, 1, 0, 0, 1, ''),(182, 8, 'MF', 0, 1, 0, 0, 1, ''), -(183, 8, 'PM', 508, 1, 0, 0, 1, ''),(184, 8, 'VC', 0, 1, 0, 0, 1, ''),(185, 5, 'WS', 685, 1, 0, 0, 1, ''),(186, 7, 'SM', 378, 1, 0, 0, 1, 'NNNNN'),(187, 4, 'ST', 239, 1, 0, 0, 1, ''), -(188, 3, 'SA', 966, 1, 0, 0, 1, ''),(189, 4, 'SN', 221, 1, 0, 0, 1, ''),(190, 7, 'RS', 381, 1, 0, 0, 1, 'NNNNN'),(191, 4, 'SC', 248, 1, 0, 0, 1, ''),(192, 4, 'SL', 232, 1, 0, 0, 1, ''), -(193, 1, 'SI', 386, 1, 0, 0, 1, 'C-NNNN'),(194, 5, 'SB', 677, 1, 0, 0, 1, ''),(195, 4, 'SO', 252, 1, 0, 0, 1, ''),(196, 8, 'GS', 0, 1, 0, 0, 1, 'LLLL NLL'),(197, 3, 'LK', 94, 1, 0, 0, 1, 'NNNNN'), -(198, 4, 'SD', 249, 1, 0, 0, 1, ''),(199, 8, 'SR', 597, 1, 0, 0, 1, ''),(200, 7, 'SJ', 0, 1, 0, 0, 1, ''),(201, 4, 'SZ', 268, 1, 0, 0, 1, ''),(202, 3, 'SY', 963, 1, 0, 0, 1, ''), -(203, 3, 'TW', 886, 1, 0, 0, 1, 'NNNNN'),(204, 3, 'TJ', 992, 1, 0, 0, 1, ''),(205, 4, 'TZ', 255, 1, 0, 0, 1, ''),(206, 3, 'TH', 66, 1, 0, 0, 1, 'NNNNN'),(207, 5, 'TK', 690, 1, 0, 0, 1, ''), -(208, 5, 'TO', 676, 1, 0, 0, 1, ''),(209, 6, 'TT', 0, 1, 0, 0, 1, ''),(210, 4, 'TN', 216, 1, 0, 0, 1, ''),(211, 7, 'TR', 90, 1, 0, 0, 1, 'NNNNN'),(212, 3, 'TM', 993, 1, 0, 0, 1, ''), -(213, 8, 'TC', 0, 1, 0, 0, 1, 'LLLL NLL'),(214, 5, 'TV', 688, 1, 0, 0, 1, ''),(215, 4, 'UG', 256, 1, 0, 0, 1, ''),(216, 1, 'UA', 380, 1, 0, 0, 1, 'NNNNN'),(217, 3, 'AE', 971, 1, 0, 0, 1, ''), -(218, 6, 'UY', 598, 1, 0, 0, 1, ''),(219, 3, 'UZ', 998, 1, 0, 0, 1, ''),(220, 5, 'VU', 678, 1, 0, 0, 1, ''),(221, 6, 'VE', 58, 1, 0, 0, 1, ''),(222, 3, 'VN', 84, 1, 0, 0, 1, 'NNNNNN'), -(223, 2, 'VG', 0, 1, 0, 0, 1, 'CNNNN'),(224, 2, 'VI', 0, 1, 0, 0, 1, ''),(225, 5, 'WF', 681, 1, 0, 0, 1, ''),(226, 4, 'EH', 0, 1, 0, 0, 1, ''),(227, 3, 'YE', 967, 1, 0, 0, 1, ''), -(228, 4, 'ZM', 260, 1, 0, 0, 1, ''),(229, 4, 'ZW', 263, 1, 0, 0, 1, ''),(230, 7, 'AL', 355, 1, 0, 0, 1, 'NNNN'),(231, 3, 'AF', 93, 1, 0, 0, 0, ''),(232, 5, 'AQ', 0, 1, 0, 0, 1, ''), -(233, 1, 'BA', 387, 1, 0, 0, 1, ''),(234, 5, 'BV', 0, 1, 0, 0, 1, ''),(235, 5, 'IO', 0, 1, 0, 0, 1, 'LLLL NLL'),(236, 1, 'BG', 359, 1, 0, 0, 1, 'NNNN'),(237, 8, 'KY', 0, 1, 0, 0, 1, ''), -(238, 3, 'CX', 0, 1, 0, 0, 1, ''),(239, 3, 'CC', 0, 1, 0, 0, 1, ''),(240, 5, 'CK', 682, 1, 0, 0, 1, ''),(241, 6, 'GF', 594, 1, 0, 0, 1, ''),(242, 5, 'PF', 689, 1, 0, 0, 1, ''), -(243, 5, 'TF', 0, 1, 0, 0, 1, ''),(244, 7, 'AX', 0, 1, 0, 0, 1, 'NNNNN'); +INSERT INTO `PREFIX_country` (`id_country`, `id_zone`, `iso_code`, `call_prefix`, `active`, `contains_states`, `need_identification_number`, `need_zip_code`, `zip_code_format`, `display_tax_label`) VALUES +(1, 1, 'DE', 49, 1, 0, 0, 1, 'NNNNN', 1),(2, 1, 'AT', 43, 1, 0, 0, 1, 'NNNN', 1),(3, 1, 'BE', 32, 1, 0, 0, 1, 'NNNN', 1),(4, 2, 'CA', 1, 1, 1, 0, 1, 'LNL NLN', 0),(5, 3, 'CN', 86, 1, 0, 0, 1, 'NNNNNN', 1), +(6, 1, 'ES', 34, 1, 0, 1, 1, 'NNNNN', 1),(7, 1, 'FI', 358, 1, 0, 0, 1, 'NNNNN', 1),(8, 1, 'FR', 33, 1, 0, 0, 1, 'NNNNN', 1),(9, 1, 'GR', 30, 1, 0, 0, 1, 'NNNNN', 1),(10, 1, 'IT', 39, 1, 0, 0, 1, 'NNNNN', 1), +(11, 3, 'JP', 81, 1, 0, 0, 1, 'NNN-NNNN', 1),(12, 1, 'LU', 352, 1, 0, 0, 1, 'NNNN', 1),(13, 1, 'NL', 31, 1, 0, 0, 1, 'NNNN LL', 1),(14, 1, 'PL', 48, 1, 0, 0, 1, 'NN-NNN', 1), +(15, 1, 'PT', 351, 1, 0, 0, 1, 'NNNN NNN', 1),(16, 1, 'CZ', 420, 1, 0, 0, 1, 'NNN NN', 1),(17, 1, 'GB', 44, 1, 0, 0, 1, '', 1),(18, 1, 'SE', 46, 1, 0, 0, 1, 'NNN NN', 1), +(19, 7, 'CH', 41, 1, 0, 0, 1, 'NNNN', 1),(20, 1, 'DK', 45, 1, 0, 0, 1, 'NNNN', 1),(21, 2, 'US', 1, 1, 1, 0, 1, 'NNNNN', 0),(22, 3, 'HK', 852, 1, 0, 0, 0, '', 1),(23, 1, 'NO', 47, 1, 0, 0, 1, 'NNNN', 1), +(24, 5, 'AU', 61, 1, 0, 0, 1, 'NNNN', 1),(25, 3, 'SG', 65, 1, 0, 0, 1, 'NNNNNN', 1),(26, 1, 'IE', 353, 1, 0, 0, 1, '', 1),(27, 5, 'NZ', 64, 1, 0, 0, 1, 'NNNN', 1),(28, 3, 'KR', 82, 1, 0, 0, 1, 'NNN-NNN', 1), +(29, 3, 'IL', 972, 1, 0, 0, 1, 'NNNNN', 1),(30, 4, 'ZA', 27, 1, 0, 0, 1, 'NNNN', 1),(31, 4, 'NG', 234, 1, 0, 0, 1, '', 1),(32, 4, 'CI', 225, 1, 0, 0, 1, '', 1),(33, 4, 'TG', 228, 1, 0, 0, 1, '', 1), +(34, 6, 'BO', 591, 1, 0, 0, 1, '', 1),(35, 4, 'MU', 230, 1, 0, 0, 1, '', 1),(36, 1, 'RO', 40, 1, 0, 0, 1, 'NNNNNN', 1),(37, 1, 'SK', 421, 1, 0, 0, 1, 'NNN NN', 1),(38, 4, 'DZ', 213, 1, 0, 0, 1, 'NNNNN', 1), +(39, 2, 'AS', 0, 1, 0, 0, 1, '', 1),(40, 7, 'AD', 376, 1, 0, 0, 1, 'CNNN', 1),(41, 4, 'AO', 244, 1, 0, 0, 0, '', 1),(42, 8, 'AI', 0, 1, 0, 0, 1, '', 1),(43, 2, 'AG', 0, 1, 0, 0, 1, '', 1), +(44, 6, 'AR', 54, 1, 1, 0, 1, 'LNNNN', 1),(45, 3, 'AM', 374, 1, 0, 0, 1, 'NNNN', 1),(46, 8, 'AW', 297, 1, 0, 0, 1, '', 1),(47, 3, 'AZ', 994, 1, 0, 0, 1, 'CNNNN', 1),(48, 2, 'BS', 0, 1, 0, 0, 1, '', 1), +(49, 3, 'BH', 973, 1, 0, 0, 1, '', 1),(50, 3, 'BD', 880, 1, 0, 0, 1, 'NNNN', 1),(51, 2, 'BB', 0, 1, 0, 0, 1, 'CNNNNN', 1),(52, 7, 'BY', 0, 1, 0, 0, 1, 'NNNNNN', 1),(53, 8, 'BZ', 501, 1, 0, 0, 0, '', 1), +(54, 4, 'BJ', 229, 1, 0, 0, 0, '', 1),(55, 2, 'BM', 0, 1, 0, 0, 1, '', 1),(56, 3, 'BT', 975, 1, 0, 0, 1, '', 1),(57, 4, 'BW', 267, 1, 0, 0, 1, '', 1),(58, 6, 'BR', 55, 1, 0, 0, 1, 'NNNNN-NNN', 1), +(59, 3, 'BN', 673, 1, 0, 0, 1, 'LLNNNN', 1),(60, 4, 'BF', 226, 1, 0, 0, 1, '', 1),(61, 3, 'MM', 95, 1, 0, 0, 1, '', 1),(62, 4, 'BI', 257, 1, 0, 0, 1, '', 1),(63, 3, 'KH', 855, 1, 0, 0, 1, 'NNNNN', 1), +(64, 4, 'CM', 237, 1, 0, 0, 1, '', 1),(65, 4, 'CV', 238, 1, 0, 0, 1, 'NNNN', 1),(66, 4, 'CF', 236, 1, 0, 0, 1, '', 1),(67, 4, 'TD', 235, 1, 0, 0, 1, '', 1),(68, 6, 'CL', 56, 1, 0, 0, 1, 'NNN-NNNN', 1), +(69, 6, 'CO', 57, 1, 0, 0, 1, 'NNNNNN', 1),(70, 4, 'KM', 269, 1, 0, 0, 1, '', 1),(71, 4, 'CD', 242, 1, 0, 0, 1, '', 1),(72, 4, 'CG', 243, 1, 0, 0, 1, '', 1),(73, 8, 'CR', 506, 1, 0, 0, 1, 'NNNNN', 1), +(74, 7, 'HR', 385, 1, 0, 0, 1, 'NNNNN', 1),(75, 8, 'CU', 53, 1, 0, 0, 1, '', 1),(76, 1, 'CY', 357, 1, 0, 0, 1, 'NNNN', 1),(77, 4, 'DJ', 253, 1, 0, 0, 1, '', 1),(78, 8, 'DM', 0, 1, 0, 0, 1, '', 1), +(79, 8, 'DO', 0, 1, 0, 0, 1, '', 1),(80, 3, 'TL', 670, 1, 0, 0, 1, '', 1),(81, 6, 'EC', 593, 1, 0, 0, 1, 'CNNNNNN', 1),(82, 4, 'EG', 20, 1, 0, 0, 0, '', 1),(83, 8, 'SV', 503, 1, 0, 0, 1, '', 1), +(84, 4, 'GQ', 240, 1, 0, 0, 1, '', 1),(85, 4, 'ER', 291, 1, 0, 0, 1, '', 1),(86, 1, 'EE', 372, 1, 0, 0, 1, 'NNNNN', 1),(87, 4, 'ET', 251, 1, 0, 0, 1, '', 1),(88, 8, 'FK', 0, 1, 0, 0, 1, 'LLLL NLL', 1), +(89, 7, 'FO', 298, 1, 0, 0, 1, '', 1),(90, 5, 'FJ', 679, 1, 0, 0, 1, '', 1),(91, 4, 'GA', 241, 1, 0, 0, 1, '', 1),(92, 4, 'GM', 220, 1, 0, 0, 1, '', 1),(93, 3, 'GE', 995, 1, 0, 0, 1, 'NNNN', 1), +(94, 4, 'GH', 233, 1, 0, 0, 1, '', 1),(95, 8, 'GD', 0, 1, 0, 0, 1, '', 1),(96, 7, 'GL', 299, 1, 0, 0, 1, '', 1),(97, 7, 'GI', 350, 1, 0, 0, 1, '', 1),(98, 8, 'GP', 590, 1, 0, 0, 1, '', 1), +(99, 8, 'GU', 0, 1, 0, 0, 1, '', 1),(100, 8, 'GT', 502, 1, 0, 0, 1, '', 1),(101, 7, 'GG', 0, 1, 0, 0, 1, 'LLN NLL', 1),(102, 4, 'GN', 224, 1, 0, 0, 1, '', 1),(103, 4, 'GW', 245, 1, 0, 0, 1, '', 1), +(104, 6, 'GY', 592, 1, 0, 0, 1, '', 1),(105, 8, 'HT', 509, 1, 0, 0, 1, '', 1),(106, 5, 'HM', 0, 1, 0, 0, 1, '', 1),(107, 7, 'VA', 379, 1, 0, 0, 1, 'NNNNN', 1),(108, 8, 'HN', 504, 1, 0, 0, 1, '', 1), +(109, 7, 'IS', 354, 1, 0, 0, 1, 'NNN', 1),(110, 3, 'IN', 91, 1, 0, 0, 1, 'NNN NNN', 1),(111, 3, 'ID', 62, 1, 0, 0, 1, 'NNNNN', 1),(112, 3, 'IR', 98, 1, 0, 0, 1, 'NNNNN-NNNNN', 1), +(113, 3, 'IQ', 964, 1, 0, 0, 1, 'NNNNN', 1),(114, 7, 'IM', 0, 1, 0, 0, 1, 'CN NLL', 1),(115, 8, 'JM', 0, 1, 0, 0, 1, '', 1),(116, 7, 'JE', 0, 1, 0, 0, 1, 'CN NLL', 1),(117, 3, 'JO', 962, 1, 0, 0, 1, '', 1), +(118, 3, 'KZ', 7, 1, 0, 0, 1, 'NNNNNN', 1),(119, 4, 'KE', 254, 1, 0, 0, 1, '', 1),(120, 7, 'KI', 686, 1, 0, 0, 1, '', 1),(121, 3, 'KP', 850, 1, 0, 0, 1, '', 1),(122, 3, 'KW', 965, 1, 0, 0, 1, '', 1), +(123, 3, 'KG', 996, 1, 0, 0, 1, '', 1),(124, 3, 'LA', 856, 1, 0, 0, 1, '', 1),(125, 1, 'LV', 371, 1, 0, 0, 1, 'C-NNNN', 1),(126, 3, 'LB', 961, 1, 0, 0, 1, '', 1),(127, 4, 'LS', 266, 1, 0, 0, 1, '', 1), +(128, 4, 'LR', 231, 1, 0, 0, 1, '', 1),(129, 4, 'LY', 218, 1, 0, 0, 1, '', 1),(130, 1, 'LI', 423, 1, 0, 0, 1, 'NNNN', 1),(131, 1, 'LT', 370, 1, 0, 0, 1, 'NNNNN', 1),(132, 3, 'MO', 853, 1, 0, 0, 0, '', 1), +(133, 7, 'MK', 389, 1, 0, 0, 1, '', 1),(134, 4, 'MG', 261, 1, 0, 0, 1, '', 1),(135, 4, 'MW', 265, 1, 0, 0, 1, '', 1),(136, 3, 'MY', 60, 1, 0, 0, 1, 'NNNNN', 1),(137, 3, 'MV', 960, 1, 0, 0, 1, '', 1), +(138, 4, 'ML', 223, 1, 0, 0, 1, '', 1),(139, 1, 'MT', 356, 1, 0, 0, 1, 'LLL NNNN', 1),(140, 5, 'MH', 692, 1, 0, 0, 1, '', 1),(141, 8, 'MQ', 596, 1, 0, 0, 1, '', 1),(142, 4, 'MR', 222, 1, 0, 0, 1, '', 1), +(143, 1, 'HU', 36, 1, 0, 0, 1, 'NNNN', 1),(144, 4, 'YT', 262, 1, 0, 0, 1, '', 1),(145, 2, 'MX', 52, 1, 0, 0, 1, 'NNNNN', 1),(146, 5, 'FM', 691, 1, 0, 0, 1, '', 1),(147, 7, 'MD', 373, 1, 0, 0, 1, 'C-NNNN', 1), +(148, 7, 'MC', 377, 1, 0, 0, 1, '980NN', 1),(149, 3, 'MN', 976, 1, 0, 0, 1, '', 1),(150, 7, 'ME', 382, 1, 0, 0, 1, 'NNNNN', 1),(151, 8, 'MS', 0, 1, 0, 0, 1, '', 1),(152, 4, 'MA', 212, 1, 0, 0, 1, 'NNNNN', 1), +(153, 4, 'MZ', 258, 1, 0, 0, 1, '', 1),(154, 4, 'NA', 264, 1, 0, 0, 1, '', 1),(155, 5, 'NR', 674, 1, 0, 0, 1, '', 1),(156, 3, 'NP', 977, 1, 0, 0, 1, '', 1),(157, 8, 'AN', 599, 1, 0, 0, 1, '', 1), +(158, 5, 'NC', 687, 1, 0, 0, 1, '', 1),(159, 8, 'NI', 505, 1, 0, 0, 1, 'NNNNNN', 1),(160, 4, 'NE', 227, 1, 0, 0, 1, '', 1),(161, 5, 'NU', 683, 1, 0, 0, 1, '', 1),(162, 5, 'NF', 0, 1, 0, 0, 1, '', 1), +(163, 5, 'MP', 0, 1, 0, 0, 1, '', 1),(164, 3, 'OM', 968, 1, 0, 0, 1, '', 1),(165, 3, 'PK', 92, 1, 0, 0, 1, '', 1),(166, 5, 'PW', 680, 1, 0, 0, 1, '', 1),(167, 3, 'PS', 0, 1, 0, 0, 1, '', 1), +(168, 8, 'PA', 507, 1, 0, 0, 1, 'NNNNNN', 1),(169, 5, 'PG', 675, 1, 0, 0, 1, '', 1),(170, 6, 'PY', 595, 1, 0, 0, 1, '', 1),(171, 6, 'PE', 51, 1, 0, 0, 1, '', 1),(172, 3, 'PH', 63, 1, 0, 0, 1, 'NNNN', 1), +(173, 5, 'PN', 0, 1, 0, 0, 1, 'LLLL NLL', 1),(174, 8, 'PR', 0, 1, 0, 0, 1, 'NNNNN', 1),(175, 3, 'QA', 974, 1, 0, 0, 1, '', 1),(176, 4, 'RE', 262, 1, 0, 0, 1, '', 1),(177, 7, 'RU', 7, 1, 0, 0, 1, 'NNNNNN', 1), +(178, 4, 'RW', 250, 1, 0, 0, 1, '', 1),(179, 8, 'BL', 0, 1, 0, 0, 1, '', 1),(180, 8, 'KN', 0, 1, 0, 0, 1, '', 1),(181, 8, 'LC', 0, 1, 0, 0, 1, '', 1),(182, 8, 'MF', 0, 1, 0, 0, 1, '', 1), +(183, 8, 'PM', 508, 1, 0, 0, 1, '', 1),(184, 8, 'VC', 0, 1, 0, 0, 1, '', 1),(185, 5, 'WS', 685, 1, 0, 0, 1, '', 1),(186, 7, 'SM', 378, 1, 0, 0, 1, 'NNNNN', 1),(187, 4, 'ST', 239, 1, 0, 0, 1, '', 1), +(188, 3, 'SA', 966, 1, 0, 0, 1, '', 1),(189, 4, 'SN', 221, 1, 0, 0, 1, '', 1),(190, 7, 'RS', 381, 1, 0, 0, 1, 'NNNNN', 1),(191, 4, 'SC', 248, 1, 0, 0, 1, '', 1),(192, 4, 'SL', 232, 1, 0, 0, 1, '', 1), +(193, 1, 'SI', 386, 1, 0, 0, 1, 'C-NNNN', 1),(194, 5, 'SB', 677, 1, 0, 0, 1, '', 1),(195, 4, 'SO', 252, 1, 0, 0, 1, '', 1),(196, 8, 'GS', 0, 1, 0, 0, 1, 'LLLL NLL', 1),(197, 3, 'LK', 94, 1, 0, 0, 1, 'NNNNN', 1), +(198, 4, 'SD', 249, 1, 0, 0, 1, '', 1),(199, 8, 'SR', 597, 1, 0, 0, 1, '', 1),(200, 7, 'SJ', 0, 1, 0, 0, 1, '', 1),(201, 4, 'SZ', 268, 1, 0, 0, 1, '', 1),(202, 3, 'SY', 963, 1, 0, 0, 1, '', 1), +(203, 3, 'TW', 886, 1, 0, 0, 1, 'NNNNN', 1),(204, 3, 'TJ', 992, 1, 0, 0, 1, '', 1),(205, 4, 'TZ', 255, 1, 0, 0, 1, '', 1),(206, 3, 'TH', 66, 1, 0, 0, 1, 'NNNNN', 1),(207, 5, 'TK', 690, 1, 0, 0, 1, '', 1), +(208, 5, 'TO', 676, 1, 0, 0, 1, '', 1),(209, 6, 'TT', 0, 1, 0, 0, 1, '', 1),(210, 4, 'TN', 216, 1, 0, 0, 1, '', 1),(211, 7, 'TR', 90, 1, 0, 0, 1, 'NNNNN', 1),(212, 3, 'TM', 993, 1, 0, 0, 1, '', 1), +(213, 8, 'TC', 0, 1, 0, 0, 1, 'LLLL NLL', 1),(214, 5, 'TV', 688, 1, 0, 0, 1, '', 1),(215, 4, 'UG', 256, 1, 0, 0, 1, '', 1),(216, 1, 'UA', 380, 1, 0, 0, 1, 'NNNNN', 1),(217, 3, 'AE', 971, 1, 0, 0, 1, '', 1), +(218, 6, 'UY', 598, 1, 0, 0, 1, '', 1),(219, 3, 'UZ', 998, 1, 0, 0, 1, '', 1),(220, 5, 'VU', 678, 1, 0, 0, 1, '', 1),(221, 6, 'VE', 58, 1, 0, 0, 1, '', 1),(222, 3, 'VN', 84, 1, 0, 0, 1, 'NNNNNN', 1), +(223, 2, 'VG', 0, 1, 0, 0, 1, 'CNNNN', 1),(224, 2, 'VI', 0, 1, 0, 0, 1, '', 1),(225, 5, 'WF', 681, 1, 0, 0, 1, '', 1),(226, 4, 'EH', 0, 1, 0, 0, 1, '', 1),(227, 3, 'YE', 967, 1, 0, 0, 1, '', 1), +(228, 4, 'ZM', 260, 1, 0, 0, 1, '', 1),(229, 4, 'ZW', 263, 1, 0, 0, 1, '', 1),(230, 7, 'AL', 355, 1, 0, 0, 1, 'NNNN', 1),(231, 3, 'AF', 93, 1, 0, 0, 0, '', 1),(232, 5, 'AQ', 0, 1, 0, 0, 1, '', 1), +(233, 1, 'BA', 387, 1, 0, 0, 1, '', 1),(234, 5, 'BV', 0, 1, 0, 0, 1, '', 1),(235, 5, 'IO', 0, 1, 0, 0, 1, 'LLLL NLL', 1),(236, 1, 'BG', 359, 1, 0, 0, 1, 'NNNN', 1),(237, 8, 'KY', 0, 1, 0, 0, 1, '', 1), +(238, 3, 'CX', 0, 1, 0, 0, 1, '', 1),(239, 3, 'CC', 0, 1, 0, 0, 1, '', 1),(240, 5, 'CK', 682, 1, 0, 0, 1, '', 1),(241, 6, 'GF', 594, 1, 0, 0, 1, '', 1),(242, 5, 'PF', 689, 1, 0, 0, 1, '', 1), +(243, 5, 'TF', 0, 1, 0, 0, 1, '', 1),(244, 7, 'AX', 0, 1, 0, 0, 1, 'NNNNN', 1); INSERT INTO `PREFIX_country_lang` (`id_country`, `id_lang`, `name`) VALUES (1, 1, 'Germany'),(1, 2, 'Allemagne'),(1, 3, 'Alemania'),(2, 1, 'Austria'),(2, 2, 'Autriche'),(2, 3, 'Austria'), @@ -1026,3 +1026,13 @@ INSERT INTO `PREFIX_stock_mvt_reason_lang` (`id_stock_mvt_reason`, `id_lang`, `n (5, 4, 'Auffüllung'), (5, 5, 'Riassortimento'); +INSERT INTO `PREFIX_address_format` (`id_country`, `format`) +(SELECT `id_country` as id_country, 'firstname lastname\ncompany\nvat_number\naddress1\naddress2\npostcode city\ncountry\nphone' as format FROM `PREFIX_country`); + +UPDATE `PREFIX_address_format` set `format`='firstname lastname +company +address1 +address2 +city state postcode +country +phone' where `id_country`=21; diff --git a/install-dev/sql/upgrade/1.4.1.0.sql b/install-dev/sql/upgrade/1.4.1.0.sql index 25f06680d..02f24d81e 100755 --- a/install-dev/sql/upgrade/1.4.1.0.sql +++ b/install-dev/sql/upgrade/1.4.1.0.sql @@ -2,9 +2,9 @@ SET NAMES 'utf8'; INSERT INTO `PREFIX_hook` (`name`, `title`, `description`, `position`, `live_edit`) VALUES ('afterSaveAdminMeta', 'After save configuration in AdminMeta', 'After save configuration in AdminMeta', 0, 0); -INSERT INTO `PREFIX_hook_module` (`id_module`, `id_hook`, `position`) VALUES +INSERT INTO `PREFIX_hook_module` (`id_module`, `id_hook`, `position`) VALUES ( -(SELECT `id_module` FROM `PREFIX_module` WHERE `name` = 'blockcategories'), +(SELECT `id_module` FROM `PREFIX_module` WHERE `name` = 'blockcategories'), (SELECT `id_hook` FROM `PREFIX_hook` WHERE `name` = 'afterSaveAdminMeta'), 1 ); @@ -23,7 +23,28 @@ ALTER TABLE `PREFIX_connections` CHANGE `ip_address` `ip_address` BIGINT NULL DE UPDATE `PREFIX_meta_lang` SET `title` = 'Angebote', `keywords` = 'besonders, Angebote', `url_rewrite` = 'angebote' WHERE url_rewrite = 'preise-fallen'; -ALTER TABLE `PREFIX_order_detail` +ALTER TABLE `PREFIX_country` ADD `display_tax_label` BOOLEAN NOT NULL DEFAULT '1'; +DROP TABLE IF EXISTS `PREFIX_country_tax`; + +ALTER TABLE `PREFIX_order_detail` CHANGE `product_quantity_in_stock` `product_quantity_in_stock` INT(10) NOT NULL DEFAULT '0'; +CREATE TABLE `PREFIX_address_format` ( + `id_country` int(10) unsigned NOT NULL, + `format` varchar(255) NOT NULL DEFAULT '', + KEY `country` (`id_country`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +INSERT INTO `PREFIX_address_format` (`id_country`, `format`) +(SELECT `id_country` as id_country, 'firstname lastname\ncompany\nvat_number\naddress1\naddress2\npostcode city\ncountry\nphone' as format FROM PREFIX_country); + +UPDATE `PREFIX_address_format` set `format`='firstname lastname +company +address1 +address2 +city state postcode +country +phone' where `id_country`=21; + /* PHP:alter_cms_block(); */; + diff --git a/install-dev/sql/upgrade/1.4.1.1.sql b/install-dev/sql/upgrade/1.4.1.1.sql new file mode 100644 index 000000000..1314c3cac --- /dev/null +++ b/install-dev/sql/upgrade/1.4.1.1.sql @@ -0,0 +1,4 @@ +SET NAMES 'utf8'; + +ALTER TABLE `PREFIX_tab_lang` MODIFY `id_lang` int(10) unsigned NOT NULL AFTER `id_tab`; + diff --git a/js/tinymce.inc.js b/js/tinymce.inc.js index 4b50a1f55..5f037c764 100644 --- a/js/tinymce.inc.js +++ b/js/tinymce.inc.js @@ -1,7 +1,9 @@ tinyMCE.init({ - mode : "textareas", + mode : "specific_textareas", theme : "advanced", skin:"cirkuit", + editor_selector : "rte", + editor_deselector : "noEditor", plugins : "safari,pagebreak,style,table,advimage,advlink,inlinepopups,media,contextmenu,paste,fullscreen,xhtmlxtras,preview", // Theme options theme_advanced_buttons1 : "newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect", diff --git a/localization/br.xml b/localization/br.xml index e4bc3ce2c..4e4324b1c 100644 --- a/localization/br.xml +++ b/localization/br.xml @@ -23,6 +23,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -31,4 +60,3 @@ - diff --git a/mails/de/lang.php b/mails/de/lang.php index 15e319363..0e558b915 100644 --- a/mails/de/lang.php +++ b/mails/de/lang.php @@ -2,38 +2,38 @@ global $_LANGMAIL; $_LANGMAIL = array(); -$_LANGMAIL['Welcome!'] = ''; -$_LANGMAIL['Message from contact form'] = ''; -$_LANGMAIL['Your message has been correctly sent'] = ''; -$_LANGMAIL['New credit slip regarding your order'] = ''; -$_LANGMAIL['Virtual product to download'] = ''; -$_LANGMAIL['Fwd: Customer message'] = ''; -$_LANGMAIL['Your guest account has been transformed to customer account'] = ''; -$_LANGMAIL['Package in transit'] = ''; +$_LANGMAIL['Welcome!'] = 'Willkommen!'; +$_LANGMAIL['Message from contact form'] = 'Nachricht aus dem Kontaktformular'; +$_LANGMAIL['Your message has been correctly sent'] = 'Ihre Nachricht ist korrekt gesendet worden'; +$_LANGMAIL['New credit slip regarding your order'] = 'Neuer Gutschein zu Ihrer Bestellung'; +$_LANGMAIL['Virtual product to download'] = 'Virtuelles Produkt zum Downloaden'; +$_LANGMAIL['Fwd: Customer message'] = 'Fwd: Kundennachricht'; +$_LANGMAIL['Your guest account has been transformed to customer account'] = 'Ihr Gast-Konto wurde in ein Kunden-Konto umgewandelt'; +$_LANGMAIL['Package in transit'] = 'Paket auf dem Weg'; $_LANGMAIL['[Log'] = ''; -$_LANGMAIL['Order confirmation'] = ''; -$_LANGMAIL['Message from a customer'] = ''; -$_LANGMAIL['New message regarding your order'] = ''; -$_LANGMAIL['Your order return state has changed'] = ''; -$_LANGMAIL['Your password'] = ''; -$_LANGMAIL['Password query confirmation'] = ''; -$_LANGMAIL['An answer to your message is available'] = ''; -$_LANGMAIL['New voucher regarding your order'] = ''; -$_LANGMAIL['Happy birthday!'] = ''; -$_LANGMAIL['Newsletter confirmation'] = ''; -$_LANGMAIL['Newsletter voucher'] = ''; -$_LANGMAIL['Your wishlist\\\'s link'] = ''; -$_LANGMAIL['Message from '] = ''; -$_LANGMAIL[' $subject'] = ''; -$_LANGMAIL['Your cart and your discount'] = ''; -$_LANGMAIL['Thanks for your order'] = ''; -$_LANGMAIL['You are one of our best customers'] = ''; -$_LANGMAIL['We miss you'] = ''; -$_LANGMAIL['Product available'] = ''; -$_LANGMAIL['Product out of stock'] = ''; -$_LANGMAIL['Error reporting from your PayPal module'] = ''; -$_LANGMAIL['Congratulations!'] = ''; -$_LANGMAIL['Referral Program'] = ''; -$_LANGMAIL['A friend sent you a link to'] = ''; +$_LANGMAIL['Order confirmation'] = 'Bestellungsbestätigung'; +$_LANGMAIL['Message from a customer'] = 'Nachricht eines Kunden'; +$_LANGMAIL['New message regarding your order'] = 'Neue Nachricht zu Ihrer Bestellung'; +$_LANGMAIL['Your order return state has changed'] = 'Ihr Bestellrücksendungsstatus hat sich geändert'; +$_LANGMAIL['Your password'] = 'Ihr Kennwort'; +$_LANGMAIL['Password query confirmation'] = 'Bestätigung der Kennwortanfrage'; +$_LANGMAIL['An answer to your message is available'] = 'Es steht eine Antwort auf Ihre Nachricht zur Verfügung'; +$_LANGMAIL['New voucher regarding your order'] = 'Neuer Gutschein zu Ihrer Bestellung'; +$_LANGMAIL['Happy birthday!'] = 'Alles Gute zum Geburtstag!'; +$_LANGMAIL['Newsletter confirmation'] = 'Newsletter-Bestätigung'; +$_LANGMAIL['Newsletter voucher'] = 'Newsletter-Gutschein'; +$_LANGMAIL['Your wishlist\\\'s link'] = 'Ihr Wunschlisten-Link'; +$_LANGMAIL['Message from '] = 'Nachricht von'; +$_LANGMAIL[' $subject'] = '$subject'; +$_LANGMAIL['Your cart and your discount'] = 'Ihr Warenkorb und Ihr Rabatt'; +$_LANGMAIL['Thank you for your order.'] = 'Danke für Ihre Bestellung.'; +$_LANGMAIL['You are one of our best customers!'] = 'Sind sind einer unserer besten Kunden!'; +$_LANGMAIL['We miss you!'] = 'Wir vermissen Sie!'; +$_LANGMAIL['Product available'] = 'Produkt verfügbar'; +$_LANGMAIL['Product out of stock'] = 'Produkt ausverkauft'; +$_LANGMAIL['Error reporting from your PayPal module'] = 'Fehlerbericht aus Ihrem PayPal Modul'; +$_LANGMAIL['Congratulations!'] = 'Herzlichen Glückwunsch!'; +$_LANGMAIL['Referral Program'] = 'Empfehlungsprogramm'; +$_LANGMAIL['A friend sent you a link to'] = 'Ein Freund hat Ihnen einen Link gesandt zu'; ?> \ No newline at end of file diff --git a/mails/fr/order_conf.html b/mails/fr/order_conf.html index 06f03e982..e044acb6a 100644 --- a/mails/fr/order_conf.html +++ b/mails/fr/order_conf.html @@ -90,25 +90,10 @@ - {delivery_company} -
{delivery_firstname} {delivery_lastname} -
{delivery_address1} -
{delivery_address2} -
{delivery_city} {delivery_postal_code} -
{delivery_country} {delivery_state} -
{delivery_phone} -
{delivery_other} + {delivery_block_html} - {invoice_company} -
{invoice_vat_number} -
{invoice_firstname} {invoice_lastname} -
{invoice_address1} -
{invoice_address2} -
{invoice_city} {invoice_postal_code} -
{invoice_country} {invoice_state} -
{invoice_phone} -
{invoice_other} + {invoice_block_html} diff --git a/mails/fr/order_conf.txt b/mails/fr/order_conf.txt index 39d534c04..c5581b8e3 100644 --- a/mails/fr/order_conf.txt +++ b/mails/fr/order_conf.txt @@ -17,25 +17,10 @@ Livraison Transporteur : {carrier} Adresse de livraison : - - {delivery_company} - {delivery_firstname} {delivery_lastname} - {delivery_address1} - {delivery_address2} - {delivery_postal_code} {delivery_city} - {delivery_country} {delivery_state} - {delivery_other} + {delivery_block_txt} Adresse de facturation : - - {invoice_company} - {invoice_vat_number} - {invoice_firstname} {invoice_lastname} - {invoice_address1} - {invoice_address2} - {invoice_postal_code} {invoice_city} - {invoice_country} {invoice_state} - {invoice_other} + {invoice_block_txt} Vous pouvez accéder au suivi de votre commande et télécharger votre facture dans "Historique des commandes" de la rubrique "Mon compte" sur notre site. Si vous avez un compte invité, vous pouvez suivre votre commande à cette adresse: {shop_url}guest-tracking.php diff --git a/modules/authorizeaim/config.xml b/modules/authorizeaim/config.xml index 49a46920b..38282953c 100755 --- a/modules/authorizeaim/config.xml +++ b/modules/authorizeaim/config.xml @@ -4,8 +4,9 @@ Authorize.net AIM (Advanced Integration Method) 1.0 Receive payment with Authorize.net - + PrestaShop payments_gateways 1 1 + us \ No newline at end of file diff --git a/modules/birthdaypresent/es.php b/modules/birthdaypresent/es.php index 3ba2fb053..b193021ef 100644 --- a/modules/birthdaypresent/es.php +++ b/modules/birthdaypresent/es.php @@ -4,7 +4,7 @@ global $_MODULE; $_MODULE = array(); $_MODULE['<{birthdaypresent}prestashop>birthdaypresent_c2796655c25e1b0b8582716036aece08'] = 'Regalo de cumpleaños'; $_MODULE['<{birthdaypresent}prestashop>birthdaypresent_d1f5899bf2af57ed816390d9d740daf6'] = 'Haga a sus clientes regalos de cumpleaños automáticamente'; -$_MODULE['<{birthdaypresent}prestashop>birthdaypresent_42f95f1b218dda65c23c52fcb205f1ed'] = 'Cree un vale descuento para los clientes que celebren su cumpleaños y que pueda usarse una sola vez'; +$_MODULE['<{birthdaypresent}prestashop>birthdaypresent_ccfcf858237a83953c1ac03b5abde35e'] = 'Crear un bono para los clientes que celebran su cumpleaños y que tiene por lo menos un pedido válido'; $_MODULE['<{birthdaypresent}prestashop>birthdaypresent_4d3d769b812b6faa6b76e1a8abaece2d'] = 'Activo'; $_MODULE['<{birthdaypresent}prestashop>birthdaypresent_52292d2f9c39936bc72fbd47a3060df3'] = 'Adicionalemente, debe establecer una regla CRON que pida el archivo'; $_MODULE['<{birthdaypresent}prestashop>birthdaypresent_f7e78e04cba74c610354e91e622cc105'] = 'todos los días'; @@ -24,5 +24,5 @@ $_MODULE['<{birthdaypresent}prestashop>birthdaypresent_7b6ac3f2cdb42a4462ff7ca3c $_MODULE['<{birthdaypresent}prestashop>birthdaypresent_410008089d5bb723438103a84d48a59c'] = 'Para alcanzar este objetivo usted puede organizar:'; $_MODULE['<{birthdaypresent}prestashop>birthdaypresent_3e788301a1b0ce341aa5ce15bc520545'] = 'Operaciones puntuales: recompensas comerciales (ofertas especiales personalizadas, producto o servicios ofrecidos), recompensas no comerciales (prioridad en el envío de un pedido o de un producto), recompensas pecuniarias (enlaces, cupones del descuento, prioridad en el reembolso...).'; $_MODULE['<{birthdaypresent}prestashop>birthdaypresent_f299b58558601a85c98a2d1d7867d523'] = 'Operaciones sostenibles: las tarjetas de fidelidad o de puntos, que no sólo justifican la comunicación entre el comerciante y el cliente, pero también ofrecen ventajas a los clientes (ofertas, descuentos privados).'; -$_MODULE['<{birthdaypresent}prestashop>birthdaypresent_2ac84f3e753fa299ebe4a6dfe57f1d9c'] = 'Estas operaciones animan a los clientes a comprar y también a volver a la tienda virtual regularmente.'; -$_MODULE['<{birthdaypresent}prestashop>birthdaypresent_38241c5ab16ef8f1ba73460ecd0469e8'] = '¡Su regalo de cumpleaños!'; +$_MODULE['<{birthdaypresent}prestashop>birthdaypresent_d434c183a411611f50fa7e121b0f6565'] = 'Estas operaciones animan a los clientes a comprar y también a volver a su tienda en línea frecuentemente.'; +$_MODULE['<{birthdaypresent}prestashop>birthdaypresent_d46bd07675d08116e85f8a4c7866de53'] = '¡Su regalo de cumpleaños!'; diff --git a/modules/birthdaypresent/fr.php b/modules/birthdaypresent/fr.php index 33811254b..8f83d2582 100644 --- a/modules/birthdaypresent/fr.php +++ b/modules/birthdaypresent/fr.php @@ -4,6 +4,7 @@ global $_MODULE; $_MODULE = array(); $_MODULE['<{birthdaypresent}prestashop>birthdaypresent_c2796655c25e1b0b8582716036aece08'] = 'Cadeau d\'anniversaire'; $_MODULE['<{birthdaypresent}prestashop>birthdaypresent_d1f5899bf2af57ed816390d9d740daf6'] = 'Offrez automatiquement à vos clients des cadeaux d\'anniversaire'; +$_MODULE['<{birthdaypresent}prestashop>birthdaypresent_ccfcf858237a83953c1ac03b5abde35e'] = 'Créer un bon de réduction pour les clients fêtant leur anniversaire et ayant au moins une commande valide'; $_MODULE['<{birthdaypresent}prestashop>birthdaypresent_4d3d769b812b6faa6b76e1a8abaece2d'] = 'Actif'; $_MODULE['<{birthdaypresent}prestashop>birthdaypresent_52292d2f9c39936bc72fbd47a3060df3'] = 'De plus, vous devez installer une règle CRON qui appellera le fichier'; $_MODULE['<{birthdaypresent}prestashop>birthdaypresent_f7e78e04cba74c610354e91e622cc105'] = 'chaque jour'; @@ -23,3 +24,5 @@ $_MODULE['<{birthdaypresent}prestashop>birthdaypresent_7b6ac3f2cdb42a4462ff7ca3c $_MODULE['<{birthdaypresent}prestashop>birthdaypresent_410008089d5bb723438103a84d48a59c'] = 'Pour y parvenir, plusieurs moyens existent :'; $_MODULE['<{birthdaypresent}prestashop>birthdaypresent_3e788301a1b0ce341aa5ce15bc520545'] = 'Les opérations ponctuelles : les récompenses marchandes (offres promotionnelles ciblées et personnalisées, cadeaux -produit ou service offert-), les récompenses non marchandes (traitement prioritaire d\'une commande ou d\'un produit), les récompenses pécuniaires (bons d\'achat, de réduction, de remboursement). '; $_MODULE['<{birthdaypresent}prestashop>birthdaypresent_f299b58558601a85c98a2d1d7867d523'] = 'Les opérations pérennes : (carte de fidélité, points de fidélité) qui non seulement justifient la communication marchand-clients, et aussi offre des avantages aux clients (offres privatives, réductions).'; +$_MODULE['<{birthdaypresent}prestashop>birthdaypresent_d434c183a411611f50fa7e121b0f6565'] = 'Ces opérations encouragent les clients à acheter et aussi à revenir sur votre boutique en ligne régulièrement.'; +$_MODULE['<{birthdaypresent}prestashop>birthdaypresent_d46bd07675d08116e85f8a4c7866de53'] = 'Votre cadeau d\'anniversaire !'; diff --git a/modules/blockcart/blockcart.php b/modules/blockcart/blockcart.php index d8bab8caa..4a5085117 100644 --- a/modules/blockcart/blockcart.php +++ b/modules/blockcart/blockcart.php @@ -1,6 +1,6 @@ displayName = $this->l('Cart block'); $this->description = $this->l('Adds a block containing the customer\'s shopping cart.'); } - + public function smartyAssigns(&$smarty, &$params) { global $errors, $cookie; @@ -62,7 +62,7 @@ class BlockCart extends Module } else $taxCalculationMethod = Group::getDefaultPriceDisplayMethod(); - + $useTax = !($taxCalculationMethod == PS_TAX_EXC); $products = $params['cart']->getProducts(true); @@ -72,13 +72,13 @@ class BlockCart extends Module $wrappingCost = (float)($params['cart']->getOrderTotal($useTax, Cart::ONLY_WRAPPING)); $totalToPay = $params['cart']->getOrderTotal($useTax); - + if ($useTax AND Configuration::get('PS_TAX_DISPLAY') == 1) { $totalToPayWithoutTaxes = $params['cart']->getOrderTotal(false); $smarty->assign('tax_cost', Tools::displayPrice($totalToPay - $totalToPayWithoutTaxes, $currency)); } - + $smarty->assign(array( 'products' => $products, 'customizedDatas' => Product::getAllCustomizedDatas((int)($params['cart']->id)), @@ -88,7 +88,7 @@ class BlockCart extends Module 'nb_total_products' => (int)($nbTotalProducts), 'shipping_cost' => Tools::displayPrice($params['cart']->getOrderTotal($useTax, Cart::ONLY_SHIPPING), $currency), 'show_wrapping' => $wrappingCost > 0 ? true : false, - 'show_tax' => (int)(Configuration::get('PS_TAX_DISPLAY')) == 1 ? true : false, + 'show_tax' => (int)(Configuration::get('PS_TAX_DISPLAY') == 1 && $smarty->getConfigVars('use_taxes')), 'wrapping_cost' => Tools::displayPrice($wrappingCost, $currency), 'product_total' => Tools::displayPrice($params['cart']->getOrderTotal($useTax, Cart::BOTH_WITHOUT_SHIPPING), $currency), 'total' => Tools::displayPrice($totalToPay, $currency), @@ -125,7 +125,7 @@ class BlockCart extends Module
'.$this->l('Settings').' - +
@@ -134,7 +134,7 @@ class BlockCart extends Module

'.$this->l('Activate AJAX mode for cart (compatible with the default theme)').'

- +
'; @@ -157,11 +157,10 @@ class BlockCart extends Module { if (Configuration::get('PS_CATALOG_MODE')) return; - + global $smarty; $smarty->assign('order_page', strpos($_SERVER['PHP_SELF'], 'order') !== false); $this->smartyAssigns($smarty, $params); - return $this->display(__FILE__, 'blockcart.tpl'); } @@ -174,20 +173,21 @@ class BlockCart extends Module { if (Configuration::get('PS_CATALOG_MODE')) return; - + global $smarty; $this->smartyAssigns($smarty, $params); $res = $this->display(__FILE__, 'blockcart-json.tpl'); return $res; } - + public function hookHeader() { if (Configuration::get('PS_CATALOG_MODE')) return; - + Tools::addCSS(($this->_path).'blockcart.css', 'all'); if ((int)(Configuration::get('PS_BLOCK_CART_AJAX'))) Tools::addJS(($this->_path).'ajax-cart.js'); } } + diff --git a/modules/blockcart/blockcart.tpl b/modules/blockcart/blockcart.tpl index c2c70f46f..e109bd1ad 100644 --- a/modules/blockcart/blockcart.tpl +++ b/modules/blockcart/blockcart.tpl @@ -40,13 +40,13 @@ var removingLinkText = '{l s='remove this product from my cart' mod='blockcart'

{l s='Cart' mod='blockcart'} {if $ajax_allowed} -   -   +   +   {/if}

-
+
{$cart_qties} {l s='products' mod='blockcart'} 1}style="display:none"{/if}>{l s='product' mod='blockcart'} @@ -54,7 +54,7 @@ var removingLinkText = '{l s='remove this product from my cart' mod='blockcart' {l s='(empty)' mod='blockcart'}
-
+
{if $products}
{foreach from=$products item='product' name='myLoop'} @@ -126,7 +126,7 @@ var removingLinkText = '{l s='remove this product from my cart' mod='blockcart' {l s='Total' mod='blockcart'} {$total}

- {if $use_taxes} + {if $use_taxes && $display_tax_label == 1} {if $priceDisplay == 0}

{l s='Prices are tax included' mod='blockcart'} diff --git a/modules/blockcart/config.xml b/modules/blockcart/config.xml index 369dd3946..1446659d9 100755 --- a/modules/blockcart/config.xml +++ b/modules/blockcart/config.xml @@ -8,4 +8,5 @@ front_office_features 1 1 + \ No newline at end of file diff --git a/modules/blockcms/es.php b/modules/blockcms/es.php index ceb467527..88027002e 100755 --- a/modules/blockcms/es.php +++ b/modules/blockcms/es.php @@ -40,7 +40,7 @@ $_MODULE['<{blockcms}prestashop>blockcms_903d12e7aa8c380c290b78c1898e01b7'] = 'U $_MODULE['<{blockcms}prestashop>blockcms_92fc29650a0f9dd3fca4e5de1845f78b'] = 'Debe elegir al menos una página o subcategoría para crear un bloque CMS'; $_MODULE['<{blockcms}prestashop>blockcms_5e75cbfbfd02a7b2fab0ed21505e811b'] = 'Página CMS o subcategoría no válidos'; $_MODULE['<{blockcms}prestashop>blockcms_420d575844f77db5299065080d9c237f'] = 'Nombre del bloque demasiado largo'; -$_MODULE['<{blockcms}prestashop>blockcms_c12d11dfdaf316576221cf4319fbd7fc'] = 'id del bloque cms no válida'; +$_MODULE['<{blockcms}prestashop>blockcms_ede67d50014846cb8bb1b00d5fde77be'] = ' id_cms_block no válido'; $_MODULE['<{blockcms}prestashop>blockcms_05b51791a83d3cef29ad68b70d48d131'] = 'Activación footer no válida'; $_MODULE['<{blockcms}prestashop>blockcms_5dab5acc3c6a2a7e87e8d8926a2c763e'] = 'Está tratando de suprimir un bloque cms que no existe'; $_MODULE['<{blockcms}prestashop>blockcms_138218281781fd0d938a140892d7386c'] = 'Edición de links CMS a pie de página con éxito'; diff --git a/modules/blockcms/fr.php b/modules/blockcms/fr.php index 9b6bf43a3..e66b46b55 100755 --- a/modules/blockcms/fr.php +++ b/modules/blockcms/fr.php @@ -40,7 +40,7 @@ $_MODULE['<{blockcms}prestashop>blockcms_903d12e7aa8c380c290b78c1898e01b7'] = 'E $_MODULE['<{blockcms}prestashop>blockcms_92fc29650a0f9dd3fca4e5de1845f78b'] = 'Vous devez choisir au moins une page ou sous-catégorie pour créer un bloc CMS'; $_MODULE['<{blockcms}prestashop>blockcms_5e75cbfbfd02a7b2fab0ed21505e811b'] = 'Page CMS ou sous-catégorie invalide'; $_MODULE['<{blockcms}prestashop>blockcms_420d575844f77db5299065080d9c237f'] = 'Nom du bloc trop long'; -$_MODULE['<{blockcms}prestashop>blockcms_c12d11dfdaf316576221cf4319fbd7fc'] = 'id_block_cms invalide'; +$_MODULE['<{blockcms}prestashop>blockcms_ede67d50014846cb8bb1b00d5fde77be'] = 'id_cms_block invalide'; $_MODULE['<{blockcms}prestashop>blockcms_05b51791a83d3cef29ad68b70d48d131'] = 'Footer activation invalide'; $_MODULE['<{blockcms}prestashop>blockcms_5dab5acc3c6a2a7e87e8d8926a2c763e'] = 'Vous essayez de supprimer un block cms inexistant'; $_MODULE['<{blockcms}prestashop>blockcms_138218281781fd0d938a140892d7386c'] = 'Édition des liens CMS en pied de page réussie'; diff --git a/modules/blocklanguages/config.xml b/modules/blocklanguages/config.xml index 588c2c32a..249efb240 100755 --- a/modules/blocklanguages/config.xml +++ b/modules/blocklanguages/config.xml @@ -8,4 +8,5 @@ front_office_features 0 1 + \ No newline at end of file diff --git a/modules/blocklayered/blocklayered.js b/modules/blocklayered/blocklayered.js index 2c5cff54e..e696b029f 100644 --- a/modules/blocklayered/blocklayered.js +++ b/modules/blocklayered/blocklayered.js @@ -84,19 +84,46 @@ function reloadContent() ajaxLoaderOn = 1; } - ajaxQuery = $.ajax( + data = $('#layered_form').serialize(); + $('.layered_slider').each( function () { + data += '&'+$(this).attr('id')+'='+$(this).slider('values', 0)+'_'+$(this).slider('values', 1); + }); + +ajaxQuery = $.ajax( { type: 'GET', url: baseDir + 'modules/blocklayered/blocklayered-ajax.php', - data: $('#layered_form').serialize(), + data: data, + dataType: 'json', success: function(result) { - $('#layered_block_left').after($(result)[0]).remove(); - $('#product_list').html($(result)[1]); + $('#layered_block_left').after('

').remove(); + $('#tmp_layered_block_left').html(result.filtersBlock).attr('id', 'layered_block_left'); + + $('#product_list').html(result.productList).html(); $('#product_list').css('opacity', '1'); ajaxLoaderOn = 0; } }); ajaxQueries.push(ajaxQuery); -} \ No newline at end of file +} + +/* +function initSlider(type, min, max, values, unit) +{ + $('#layered_'+type+'_slider').slider({ + range: true, + min: min, + max: max, + values: [ values[0], values[1]], + slide: function( event, ui ) { + $('#layered_'+type+'_range').html(ui.values[ 0 ] + unit + ' - ' + ui.values[ 1 ] + unit); + }, + stop: function () { + reloadContent(); + } + }); + $('#layered_'+type+'_range').html($('#layered_'+type+'_slider').slider('values', 0 ) +unit+'-'+$('#layered_'+type+'_slider').slider('values', 1)+unit ); +} +*/ \ No newline at end of file diff --git a/modules/blocklayered/blocklayered.php b/modules/blocklayered/blocklayered.php index df960fe1c..633a3b7a2 100644 --- a/modules/blocklayered/blocklayered.php +++ b/modules/blocklayered/blocklayered.php @@ -30,6 +30,9 @@ if (!defined('_CAN_LOAD_FILES_')) class BlockLayered extends Module { + + private $products ; + public function __construct() { $this->name = 'blocklayered'; @@ -46,7 +49,6 @@ class BlockLayered extends Module public function install() { if ($result = parent::install() AND $this->registerHook('leftColumn') AND $this->registerHook('header') - AND $this->registerHook('addProduct') AND $this->registerHook('updateProduct') AND $this->registerHook('deleteProduct') AND $this->registerHook('categoryAddition') AND $this->registerHook('categoryUpdate') AND $this->registerHook('categoryDeletion')) { Configuration::updateValue('PS_LAYERED_NAVIGATION_CHECKBOXES', 1); @@ -60,13 +62,12 @@ class BlockLayered extends Module { /* Delete all configurations */ Configuration::deleteByName('PS_LAYERED_NAVIGATION_CHECKBOXES'); - return parent::uninstall(); } public function hookLeftColumn($params) { - return $this->generateFilters(); + return $this->generateFiltersBlock($this->getSelectedFilters()); } public function hookRightColumn($params) @@ -77,36 +78,22 @@ class BlockLayered extends Module public function hookHeader($params) { Tools::addJS(($this->_path).'blocklayered.js'); + Tools::addJS(_PS_JS_DIR_.'jquery/jquery-ui-1.8.10.custom.min.js'); Tools::addCSS(($this->_path).'blocklayered.css', 'all'); + Tools::addCSS(_PS_CSS_DIR_.'jquery-ui-1.8.10.custom.css', 'all'); + } - - public function hookAddProduct($params) - { - $this->rebuildLayeredCache(array((int)$params['product']->id)); - } - - public function hookUpdateProduct($params) - { - Db::getInstance()->Execute('DELETE FROM '._DB_PREFIX_.'layered_cache WHERE id_product = '.(int)$params['product']->id.' LIMIT 1'); - $this->rebuildLayeredCache(array((int)$params['product']->id)); - } - - public function hookDeleteProduct($params) - { - Db::getInstance()->Execute('DELETE FROM '._DB_PREFIX_.'layered_cache WHERE id_product = '.(int)$params['product']->id.' LIMIT 1'); - } - + public function hookCategoryAddition($params) { - Db::getInstance()->Execute('ALTER TABLE `'._DB_PREFIX_.'layered_cache` ADD `c'.(int)$params['category']->id.'` TINYINT UNSIGNED NOT NULL DEFAULT \'0\''); - Configuration::updateValue('PS_LAYERED_COLUMNS', Configuration::get('PS_LAYERED_COLUMNS').',c'.(int)$params['category']->id); $this->rebuildLayeredCache(array(), array((int)$params['category']->id)); } public function hookCategoryUpdate($params) { /* The category status might (active, inactive) have changed, we have to update the layered cache table structure */ - if (!$params['category']->active) + /* +if (!$params['category']->active) $this->hookCategoryDeletion($params); else { @@ -119,27 +106,23 @@ class BlockLayered extends Module if (!Db::getInstance()->getRow('SELECT id_layered_category FROM `'._DB_PREFIX_.'layered_category` WHERE id_category = '.(int)$params['category']->id)) $this->rebuildLayeredCache(array(), array((int)$params['category']->id)); } +*/ } public function hookCategoryDeletion($params) { Db::getInstance()->Execute('DELETE FROM '._DB_PREFIX_.'layered_category WHERE id_category = '.(int)$params['category']->id); - $oneRow = Db::getInstance()->getRow('SELECT * FROM `'._DB_PREFIX_.'layered_cache`'); - if (isset($oneRow['c'.(int)$params['category']->id])) - { - Db::getInstance()->Execute('ALTER TABLE `'._DB_PREFIX_.'layered_cache` DROP `c'.(int)$params['category']->id.'`'); - Configuration::updateValue('PS_LAYERED_COLUMNS', str_replace(',c'.(int)$params['category']->id, '', Configuration::get('PS_LAYERED_COLUMNS'))); - } } public function getContent() { + $html = ''; if (Tools::isSubmit('submitLayeredCache')) { $this->rebuildLayeredStructure(); $this->rebuildLayeredCache(); - echo ' + $html .= '
'.$this->l('Layered navigation database was initialized successfully').' @@ -147,21 +130,20 @@ class BlockLayered extends Module } elseif (Tools::isSubmit('submitLayeredSettings')) { - echo ' + $html .= '
'.$this->l('Settings saved successfully').'
'; } - echo ' + $html .= '

'.$this->l('Layered navigation').'

- -

'.$this->l('This module is in beta version and will be improved in PrestaShop v1.4.1').'


+

'.$this->l('This module is in beta version and will be improved').'


- '.$this->l('10 upcoming improvements in PrestaShop v1.4.1').' + '.$this->l('10 upcoming improvements').'
    -
  1. '.$this->l('Real-time refresh of the cache table').'
  2. +
  3. '.$this->l('Real-time refresh of the cache table').'
  4. '.$this->l('Additional filters (prices, weight)').'
  5. '.$this->l('Ability to manage filters by category in the module configuration').'
  6. '.$this->l('Ability to hide filter groups with no values and filter values with 0 products').'
  7. @@ -186,22 +168,161 @@ class BlockLayered extends Module '.$this->l('Cache initialization').'
    -

    '.$this->l('When do you have to initialize the cache?').'

    -
      -
    • '.$this->l('Before using this module for the first time').'
    • -
    • '.$this->l('You add/update/delete').' '.$this->l('a feature or a feature value').'
    • -
    • '.$this->l('You add/update/delete').' '.$this->l('an attribute group or an attribute value').'
    • -
    • '.$this->l('You update one or more feature values for a product').'
    • -
    +

    '.$this->l('Before using this module for the first time you have to initialize the cache').'

    '.$this->l('Warning: This could take several minutes.').'

    '.$this->l('If you do not, this cache table might become larger and larger (less efficient), and all the new choices (attributes, features) will not be offered to your visitors.').'

'; + return $html; } - public function generateFilters($selectedFilters = array()) + private function getSelectedFilters() + { + $id_parent = (int)Tools::getValue('id_category', Tools::getValue('id_category_layered', 1)); + if ($id_parent == 1) + return; + + /* Analyze all the filters selected by the user and store them into a tab */ + $selectedFilters = array('category' => array(), 'manufacturer' => array(), 'quantity' => array(), 'condition' => array()); + foreach ($_GET AS $key => $value) + { + if (substr($key, 0, 8) == 'layered_') + { + preg_match('/^(.*)_[0-9|new|used|refurbished|slider]+$/', substr($key, 8, strlen($key) - 8), $res); + if (isset($res[1])) + { + $tmpTab = explode('_', $value); + $value = $tmpTab[0]; + $id_key = false; + if (isset($tmpTab[1])) + $id_key = $tmpTab[1]; + if ($res[1] == 'condition' AND in_array($value, array('new', 'used', 'refurbished'))) + $selectedFilters['condition'][] = $value; + elseif ($res[1] == 'quantity' AND (!$value OR $value == 1)) + $selectedFilters['quantity'][] = $value; + elseif (in_array($res[1], array('id_attribute_group', 'category', 'id_feature', 'manufacturer'))) + { + if (!isset($selectedFilters[$res[1].($id_key ? '_'.$id_key : '')])) + $selectedFilters[$res[1].($id_key ? '_'.$id_key : '')] = array(); + $selectedFilters[$res[1].($id_key ? '_'.$id_key : '')][] = (int)$value; + } + elseif (in_array($res[1], array('weight'))) + $selectedFilters[$res[1]] = $tmpTab; + } + } + } + return $selectedFilters; + } + + public function getProductByFilters($selectedFilters = array()) + { + global $cookie; + + if (!empty($this->products)) + return $this->products; + + /* If the current category isn't defined of if it's homepage, we have nothing to display */ + $id_parent = (int)Tools::getValue('id_category', Tools::getValue('id_category_layered', 1)); + if ($id_parent == 1) + return; + + if (!sizeof($selectedFilters['category'])) + $selectedFilters['category'][] = $id_parent; + + $queryFilters = ''; + + foreach ($selectedFilters AS $key => $filterValues) + { + if (!sizeof($filterValues)) + continue; + + preg_match('/^(.*[^_0-9])/', $key, $res); + $key = $res[1]; + + switch ($key) + { + case 'id_feature': + $queryFilters .= ' AND p.id_product IN ( SELECT id_product FROM '._DB_PREFIX_.'feature_product fp WHERE '; + foreach ($filterValues AS $filterValue) + $queryFilters .= 'fp.`id_feature_value` = '.(int)$filterValue.' OR '; + $queryFilters = rtrim($queryFilters, 'OR ').')'; + break; + case 'id_attribute_group': + $queryFilters .= ' AND p.id_product IN ( SELECT pa.`id_product` + FROM `ps_product_attribute_combination` pac + LEFT JOIN `ps_product_attribute` pa + ON (pa.`id_product_attribute` = pac.`id_product_attribute`) WHERE '; + + foreach ($filterValues AS $filterValue) + $queryFilters .= 'pac.`id_attribute` = '.(int)$filterValue.' OR '; + $queryFilters = rtrim($queryFilters, 'OR ').')'; + break; + case 'category': + $parent = new category($id_parent); + if (!sizeof($selectedFilters['category'])) + $queryFilters .= ' AND p.id_product IN ( SELECT id_product FROM '._DB_PREFIX_.'category_product cp + LEFT JOIN ps_category c ON (c.id_category = cp.id_category) + WHERE 1 AND c.nleft >= parent->nleft AND c.nright <= parent->nright'; + else + { + $queryFilters .= ' AND p.id_product IN ( SELECT id_product FROM '._DB_PREFIX_.'category_product cp WHERE 1 AND cp.`id_category` = '.(int)$id_parent; + if (sizeof($selectedFilters['category'])) + $queryFilters .= ' OR '; + foreach ($selectedFilters['category'] AS $id_category) + $queryFilters .= 'cp.`id_category` = '.(int)$id_category.' OR '; + $queryFilters = rtrim($queryFilters, 'OR ').')'; + } + break; + + case 'quantity': + if (sizeof($selectedFilters['quantity']) == 2) + break; + $queryFilters .= ' AND p.quantity '.(!$selectedFilters['quantity'][0] ? '=' : '>').' 0'; + break; + + case 'manufacturer': + $queryFilters .= ' AND p.id_manufacturer IN ('.implode($selectedFilters['manufacturer'], ',').')'; + break; + + case 'condition': + if (sizeof($selectedFilters['condition']) == 3) + break; + $queryFilters .= ' AND p.condition IN ('; + foreach ($selectedFilters['condition'] AS $cond) + $queryFilters .= '\''.$cond.'\','; + $queryFilters = rtrim($queryFilters, ',').')'; + break; + + case 'weight': + $queryFilters .= ' AND p.`weight` BETWEEN '.(float)$selectedFilters['weight'][0].' AND '.(float)$selectedFilters['weight'][1]; + break; + } + } + //id_category_layered = current displayed category + if (!sizeof($selectedFilters['category'])) + $queryFilters .= ' AND p.id_product IN ( + SELECT id_product FROM '._DB_PREFIX_.'category_product cp + WHERE cp.`id_category` = '.(int)$id_parent.')'; + + $sql = ' + SELECT p.id_product, p.out_of_stock, p.available_for_order, p.quantity, p.id_category_default, p.customizable, p.show_price, p.`weight`, + p.ean13, pl.available_later, pl.description_short, pl.link_rewrite, pl.name, i.id_image, il.legend, m.name manufacturer_name, p.condition, p.id_manufacturer, + DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 AS new + FROM '._DB_PREFIX_.'product p + LEFT JOIN '._DB_PREFIX_.'product_lang pl ON (pl.id_product = p.id_product) + LEFT JOIN '._DB_PREFIX_.'image i ON (i.id_product = p.id_product AND i.cover = 1) + LEFT JOIN '._DB_PREFIX_.'image_lang il ON (i.id_image = il.id_image AND il.id_lang = '.(int)($cookie->id_lang).') + LEFT JOIN '._DB_PREFIX_.'manufacturer m ON (m.id_manufacturer = p.id_manufacturer) + WHERE pl.id_lang = '.(int)$cookie->id_lang.$queryFilters; + + $this->products = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($sql); + + return $this->products; + } + + public function generateFiltersBlock($selectedFilters = array()) { global $smarty, $link, $cookie; @@ -215,29 +336,57 @@ class BlockLayered extends Module $category = new Category((int)$id_parent); $subCategories = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' - SELECT c.id_category, c.id_parent + SELECT c.id_category, c.id_parent, cl.name FROM '._DB_PREFIX_.'category c - WHERE c.nleft > '.(int)$category->nleft.' and c.nright <= '.(int)$category->nright.' AND c.active = 1 + LEFT JOIN '._DB_PREFIX_.'category_lang cl ON (cl.id_category = c.id_category) + WHERE c.nleft > '.(int)$category->nleft.' and c.nright <= '.(int)$category->nright.' AND c.active = 1 AND c.id_parent = '.(int)$category->id.' AND cl.id_lang = '.(int)$cookie->id_lang.' ORDER BY c.position ASC'); - $oneRow = Db::getInstance()->getRow('SELECT * FROM '._DB_PREFIX_.'layered_cache'); - if (!$oneRow) - return; - - $whereC = ' AND (c'.(int)$id_parent.' = 1 OR '; - $queryProduct = ', c'.(int)$id_parent; + $whereC = ' cp.`id_category` = '.(int)$id_parent.' OR '; foreach ($subCategories AS $subcategory) - if (isset($oneRow['c'.(int)$subcategory['id_category']])) - { - $whereC .= ' c'.(int)$subcategory['id_category'].' = 1 OR '; - $queryProduct .= ', c'.(int)$subcategory['id_category']; - $selectedFilters['category'][] = (int)$subcategory['id_category']; - } + $whereC .= ' cp.`id_category` = '.(int)$subcategory['id_category'].' OR '; + $whereC = rtrim($whereC, 'OR ').')'; - + $productsSQL = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT p.`id_product`, p.`condition`, p.`id_manufacturer`, p.`quantity`, p.`weight`, + (SELECT GROUP_CONCAT(`id_category`) FROM `'._DB_PREFIX_.'category_product` cp WHERE cp.`id_product` = p.`id_product`) as ids_cat, + (SELECT GROUP_CONCAT(`id_feature_value`) FROM `'._DB_PREFIX_.'feature_product` fp WHERE fp.`id_product` = p.`id_product`) as ids_feat, + (SELECT GROUP_CONCAT(DISTINCT(pac.`id_attribute`)) + FROM `'._DB_PREFIX_.'product_attribute_combination` pac + LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON (pa.`id_product_attribute` = pac.`id_product_attribute`) + WHERE pa.`id_product` = p.`id_product` ) as ids_attr + FROM '._DB_PREFIX_.'product p + WHERE p.`active` = 1 AND p.`id_product` IN ( SELECT id_product FROM `'._DB_PREFIX_.'category_product` cp WHERE'.$whereC, false); + + $products = array(); + $db = Db::getInstance(); + $weight = array(); + while ($product = $db->nextRow($productsSQL)) + { + $row = array(); + foreach ($product AS $key => $value) + { + if($key == 'ids_feat') + $row['f'] = explode(',', $value); + if($key == 'ids_attr') + $row['a'] = explode(',', $value); + if($key == 'ids_cat') + $row['c'] = explode(',', $value); + if($key == 'weight') + $weight[] = $value; + } + + $row['id_manufacturer'] = (int)$product['id_manufacturer']; + $row['quantity'] = (bool)$product['quantity']; + $row['condition'] = $product['condition']; + $row['weight'] = $product['weight']; + $products[(int)$product['id_product']] = $row; + } + /* Get the filters for the current category */ $filters = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('SELECT * FROM '._DB_PREFIX_.'layered_category WHERE id_category = '.(int)$id_parent); $filterBlocks = $f = $a = array(); + foreach ($filters AS $filter) { $filterBlocks[(int)$filter['position']]['type_lite'] = $filter['type']; @@ -253,11 +402,7 @@ class BlockLayered extends Module FROM '._DB_PREFIX_.'feature_value fv LEFT JOIN '._DB_PREFIX_.'feature_value_lang fvl ON (fvl.id_feature_value = fv.id_feature_value) WHERE (fv.custom IS NULL OR fv.custom = 0) AND fv.id_feature = '.(int)$filterBlocks[(int)$filter['position']]['id_key'].' AND fvl.id_lang = '.(int)$cookie->id_lang); - - foreach ($filterBlocks[(int)$filter['position']]['SQLvalues'] AS $key => $value) - if (isset($oneRow['f'.(int)$value['id_feature_value']])) - $queryProduct .= ', f'.(int)$value['id_feature_value']; - + break; case 'id_attribute_group': @@ -267,36 +412,11 @@ class BlockLayered extends Module SELECT al.id_attribute, al.name, a.color FROM '._DB_PREFIX_.'attribute a LEFT JOIN '._DB_PREFIX_.'attribute_lang al ON (al.id_attribute = a.id_attribute) - WHERE a.id_attribute_group = '.(int)$filterBlocks[(int)$filter['position']]['id_key'].' AND al.id_lang = '.(int)$cookie->id_lang); - - foreach ($filterBlocks[(int)$filter['position']]['SQLvalues'] AS $value) - if (isset($oneRow['a'.(int)$value['id_attribute']])) - $queryProduct .= ', a'.(int)$value['id_attribute']; - + WHERE a.id_attribute_group = '.(int)$filterBlocks[(int)$filter['position']]['id_key'].' AND al.id_lang = '.(int)$cookie->id_lang); break; } } - - $productsSQL = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' - SELECT lc.id_product, p.condition, p.id_manufacturer, p.quantity'.$queryProduct.' - FROM '._DB_PREFIX_.'layered_cache lc - INNER JOIN '._DB_PREFIX_.'product p ON (p.id_product = lc.id_product) - WHERE 1 '.$whereC, false); - $products = array(); - $db = Db::getInstance(); - while ($product = $db->nextRow($productsSQL)) - { - $row = array(); - foreach ($product AS $key => $value) - if ($value == 1) - $row[$key] = true; - $row['id_manufacturer'] = (int)$product['id_manufacturer']; - $row['quantity'] = (bool)$product['quantity']; - $row['condition'] = $product['condition']; - $products[(int)$product['id_product']] = $row; - } - /* Get the feature block names & values */ if (sizeof($f)) { @@ -304,13 +424,12 @@ class BlockLayered extends Module SELECT id_feature, name FROM '._DB_PREFIX_.'feature_lang WHERE id_lang = '.(int)$cookie->id_lang.' AND id_feature IN ('.implode(',', $f).')'); - $fNameByID = array(); foreach ($fNames AS $fName) $fNameByID[(int)$fName['id_feature']] = $fName['name']; } - /* Get the feature block names & values */ + /* Get the attribute block names & values */ if (sizeof($a)) { $aNames = Db::getInstance()->ExecuteS(' @@ -327,40 +446,36 @@ class BlockLayered extends Module $colorGroups[(int)$aName['id_attribute_group']] = true; } } - + foreach ($filterBlocks AS &$filterBlock) { if ($filterBlock['type_lite'] == 'category') { $filterBlock['name'] = $this->l('Categories'); + $c = array(); + foreach ($subCategories AS $subCat) + { + $c[] = (int)$subCat['id_category']; + $filterBlock['values'][(int)$subCat['id_category']]['name'] = $subCat['name']; + + //init the number of product in this category + if (!isset($filterBlock['values'][(int)$subCat['id_category']]['nbr'])) + $filterBlock['values'][(int)$subCat['id_category']]['nbr'] = 0; + + //check if the category is selected and set to true + if (isset($selectedFilters['category']) AND in_array($subCat['id_category'], $selectedFilters['category'])) + $filterBlock['values'][(int)$subCat['id_category']]['checked'] = true; + } + $productCat = $this->filterProducts($products, $selectedFilters, 'category'); - $filterCategories = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' - SELECT c.id_category, c.id_parent, cl.name, - (SELECT GROUP_CONCAT(c2.id_category) FROM '._DB_PREFIX_.'category c2 WHERE c2.active = 1 AND c2.nleft > c.nleft and c2.nright < c.nright) subcategories - FROM '._DB_PREFIX_.'category c - LEFT JOIN '._DB_PREFIX_.'category_lang cl ON (cl.id_category = c.id_category) - WHERE c.active = 1 AND c.id_parent = '.(int)$category->id.' AND cl.id_lang = '.(int)$cookie->id_lang.' - ORDER BY c.position ASC'); - - foreach ($filterCategories AS $filterCategory) - { - $filterBlock['values'][(int)$filterCategory['id_category']]['name'] = method_exists('Category', 'hideCategoryPosition') ? Category::hideCategoryPosition($filterCategory['name']) : $filterCategory['name']; - if (!isset($filterBlock['values'][(int)$filterCategory['id_category']]['n'])) - $filterBlock['values'][(int)$filterCategory['id_category']]['n'] = 0; - if (isset($selectedFilters['category']) AND in_array($filterCategory['id_category'], $selectedFilters['category'])) - $filterBlock['values'][(int)$filterCategory['id_category']]['checked'] = true; - + //count nbr product in category + foreach ($c AS $idSubCategory) foreach ($productCat AS $product) - { - $tmpTab = explode(',', $filterCategory['subcategories']); - $tmpTab[] = (int)$filterCategory['id_category']; - foreach ($tmpTab AS $idSubCategory) - if (isset($product['c'.(int)$idSubCategory])) - $filterBlock['values'][(int)$filterCategory['id_category']]['n']++; - } - } + if(in_array($idSubCategory, $product['c'])) + $filterBlock['values'][(int)$idSubCategory]['nbr']++; + } elseif ($filterBlock['type_lite'] == 'id_feature') { @@ -368,23 +483,24 @@ class BlockLayered extends Module $filterBlock['values'] = array(); $productFeat = $this->filterProducts($products, $selectedFilters, 'id_feature_'.(int)$filterBlock['id_key']); - + foreach ($filterBlock['SQLvalues'] AS $value) - { + { foreach ($productFeat AS $product) - if (isset($product['f'.$value['id_feature_value']])) + { + if (in_array($value['id_feature_value'], $product['f'])) { $filterBlock['values'][(int)$value['id_feature_value']]['name'] = $value['value']; - if (!isset($filterBlock['values'][(int)$value['id_feature_value']]['n'])) - $filterBlock['values'][(int)$value['id_feature_value']]['n'] = 0; - $filterBlock['values'][(int)$value['id_feature_value']]['n']++; + if (!isset($filterBlock['values'][(int)$value['id_feature_value']]['nbr'])) + $filterBlock['values'][(int)$value['id_feature_value']]['nbr'] = 0; + $filterBlock['values'][(int)$value['id_feature_value']]['nbr']++; } - foreach ($products AS $product) - if (isset($product['f'.$value['id_feature_value']]) AND !isset($filterBlock['values'][(int)$value['id_feature_value']])) + if (in_array($value['id_feature_value'], $product['f']) AND !isset($filterBlock['values'][(int)$value['id_feature_value']])) { $filterBlock['values'][(int)$value['id_feature_value']]['name'] = $value['value']; - $filterBlock['values'][(int)$value['id_feature_value']]['n'] = 0; + $filterBlock['values'][(int)$value['id_feature_value']]['nbr'] = 0; } + } if (isset($selectedFilters['id_feature_'.(int)$filterBlock['id_key']]) AND in_array((int)$value['id_feature_value'].'_'.(int)$filterBlock['id_key'], $selectedFilters['id_feature_'.(int)$filterBlock['id_key']])) $filterBlock['values'][(int)$value['id_feature_value']]['checked'] = true; } @@ -398,24 +514,25 @@ class BlockLayered extends Module $filterBlock['values'] = array(); $productsAttr = $this->filterProducts($products, $selectedFilters, 'id_attribute_group_'.(int)$filterBlock['id_key']); - + foreach ($filterBlock['SQLvalues'] AS $value) { foreach ($productsAttr AS $product) - if (isset($product['a'.$value['id_attribute']])) + { + if(in_array($value['id_attribute'], $product['a'])) { $filterBlock['values'][(int)$value['id_attribute']]['name'] = $value['name']; $filterBlock['values'][(int)$value['id_attribute']]['color'] = $value['color']; - if (!isset($filterBlock['values'][(int)$value['id_attribute']]['n'])) - $filterBlock['values'][(int)$value['id_attribute']]['n'] = 0; - $filterBlock['values'][(int)$value['id_attribute']]['n']++; + if (!isset($filterBlock['values'][(int)$value['id_attribute']]['nbr'])) + $filterBlock['values'][(int)$value['id_attribute']]['nbr'] = 0; + $filterBlock['values'][(int)$value['id_attribute']]['nbr']++; } - foreach ($products AS $product) if (isset($product['a'.$value['id_attribute']]) AND !isset($filterBlock['values'][(int)$value['id_attribute']])) { $filterBlock['values'][(int)$value['id_attribute']]['name'] = $value['name']; - $filterBlock['values'][(int)$value['id_attribute']]['n'] = 0; + $filterBlock['values'][(int)$value['id_attribute']]['nbr'] = 0; } + } if (isset($selectedFilters['id_attribute_group_'.(int)$filterBlock['id_key']]) AND in_array((int)$value['id_attribute'].'_'.(int)$filterBlock['id_key'], $selectedFilters['id_attribute_group_'.(int)$filterBlock['id_key']])) $filterBlock['values'][(int)$value['id_attribute']]['checked'] = true; } @@ -425,16 +542,17 @@ class BlockLayered extends Module { $filterBlock['name'] = $this->l('Condition'); $filterBlock['values'] = array( - 'new' => array('name' => $this->l('New'), 'n' => 0), - 'used' => array('name' => $this->l('Used'), 'n' => 0), - 'refurbished' => array('name' => $this->l('Refurbished'), 'n' => 0)); + 'new' => array('name' => $this->l('New'), 'nbr' => 0), + 'used' => array('name' => $this->l('Used'), 'nbr' => 0), + 'refurbished' => array('name' => $this->l('Refurbished'), 'nbr' => 0)); $productCond = $this->filterProducts($products, $selectedFilters, 'condition'); + foreach ($filterBlock['values'] AS $conditionKey => &$condition) { foreach ($productCond AS $product) if ($product['condition'] == $conditionKey) - $condition['n']++; + $condition['nbr']++; if (isset($selectedFilters['condition']) AND in_array($conditionKey, $selectedFilters['condition'])) $condition['checked'] = true; } @@ -443,14 +561,16 @@ class BlockLayered extends Module { $filterBlock['name'] = $this->l('Availability'); $filterBlock['values'] = array( - '1' => array('name' => $this->l('In stock'), 'n' => 0), - '0' => array('name' => $this->l('Not available'), 'n' => 0)); + '1' => array('name' => $this->l('In stock'), 'nbr' => 0), + '0' => array('name' => $this->l('Not available'), 'nbr' => 0)); + $productQuant = $this->filterProducts($products, $selectedFilters, 'quantity'); + foreach ($filterBlock['values'] AS $quantKey => &$quantity) { foreach ($productQuant AS $product) if ($product['quantity'] == $quantKey) - $quantity['n']++; + $quantity['nbr']++; if (isset($selectedFilters['quantity']) AND in_array($quantKey, $selectedFilters['quantity'])) $quantity['checked'] = true; } @@ -458,40 +578,58 @@ class BlockLayered extends Module elseif ($filterBlock['type_lite'] == 'manufacturer') { $filterBlock['name'] = $this->l('Manufacturer'); - - $productsManuf = $this->filterProducts($products, $selectedFilters, 'manufacturer'); $man = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' SELECT DISTINCT(p.id_manufacturer), m.name FROM '._DB_PREFIX_.'product p LEFT JOIN '._DB_PREFIX_.'manufacturer m ON (m.id_manufacturer = p.id_manufacturer) WHERE p.id_product IN ('.implode(',', array_keys($products)).') AND p.id_manufacturer != 0'); + + $productsManuf = $this->filterProducts($products, $selectedFilters, 'manufacturer'); foreach ($man AS $manufacturer) { $filterBlock['values'][(int)$manufacturer['id_manufacturer']]['name'] = $manufacturer['name']; - if (!isset($filterBlock['values'][(int)$manufacturer['id_manufacturer']]['n'])) - $filterBlock['values'][(int)$manufacturer['id_manufacturer']]['n'] = 0; + if (!isset($filterBlock['values'][(int)$manufacturer['id_manufacturer']]['nbr'])) + $filterBlock['values'][(int)$manufacturer['id_manufacturer']]['nbr'] = 0; foreach ($productsManuf AS $product) if ($product['id_manufacturer'] == $manufacturer['id_manufacturer']) - $filterBlock['values'][(int)$manufacturer['id_manufacturer']]['n']++; + $filterBlock['values'][(int)$manufacturer['id_manufacturer']]['nbr']++; if (isset($selectedFilters['manufacturer']) AND in_array($manufacturer['id_manufacturer'], $selectedFilters['manufacturer'])) $filterBlock['values'][(int)$manufacturer['id_manufacturer']]['checked'] = true; } } + elseif ($filterBlock['type_lite'] == 'weight') + { + if (max($weight) != min($weight)) + { + $filterBlock['name'] = $this->l('Weight'); + $filterBlock['slider'] = true; + $filterBlock['max'] = max($weight); + $filterBlock['min'] = min($weight); + if (isset($selectedFilters['weight'])) + $filterBlock['values'] = array($selectedFilters['weight'][0], $selectedFilters['weight'][1]); + else + $filterBlock['values'] = array(min($weight), max($weight)); + $filterBlock['unit'] = Configuration::get('PS_WEIGHT_UNIT'); + } + else + unset($selectedFilters['weight']); + } } $nFilters = 0; foreach ($selectedFilters AS $filters) $nFilters += sizeof($filters); - + $smarty->assign(array( 'layered_use_checkboxes' => (int)Configuration::get('PS_LAYERED_NAVIGATION_CHECKBOXES'), 'id_category_layered' => (int)$id_parent, 'selected_filters' => $selectedFilters, 'n_filters' => (int)$nFilters, + 'nbr_filterBlocks' => sizeof($filterBlocks), 'filters' => $filterBlocks)); - + return $smarty->fetch(_PS_MODULE_DIR_.$this->name.'/blocklayered.tpl'); } @@ -499,118 +637,20 @@ class BlockLayered extends Module { global $smarty, $cookie; - /* Analyze all the filters selected by the user and store them into a tab */ - $filters = array('category' => array(), 'manufacturer' => array(), 'quantity' => array(), 'condition' => array()); - foreach ($_GET AS $key => $value) - if (substr($key, 0, 8) == 'layered_') - { - preg_match('/^(.*)_[0-9|new|used|refurbished]+$/', substr($key, 8, strlen($key) - 8), $res); - if (isset($res[1])) - { - $tmpTab = explode('_', $value); - $value = $tmpTab[0]; - $id_key = false; - if (isset($tmpTab[1])) - $id_key = $tmpTab[1]; - if ($res[1] == 'condition' AND in_array($value, array('new', 'used', 'refurbished'))) - $filters['condition'][] = $value; - elseif ($res[1] == 'quantity' AND (!$value OR $value == 1)) - $filters['quantity'][] = $value; - elseif (in_array($res[1], array('id_attribute_group', 'category', 'id_feature', 'manufacturer'))) - { - if (!isset($filters[$res[1].($id_key ? '_'.$id_key : '')])) - $filters[$res[1].($id_key ? '_'.$id_key : '')] = array(); - $filters[$res[1].($id_key ? '_'.$id_key : '')][] = (int)$value; - } - } - } + $selectedFilters = $this->getSelectedFilters(); + + $products = $this->getProductByFilters($selectedFilters); - $queryFilters = ''; - foreach ($filters AS $key => $filterValues) - { - if (!sizeof($filterValues)) - continue; - - preg_match('/^(.*[^_0-9])/', $key, $res); - $key = $res[1]; - - switch ($key) - { - case 'id_feature': - $queryFilters .= ' AND ('; - foreach ($filterValues AS $filterValue) - $queryFilters .= 'lc.f'.(int)$filterValue.' = 1 OR '; - $queryFilters = rtrim($queryFilters, 'OR ').')'; - break; - - case 'id_attribute_group': - $queryFilters .= ' AND ('; - foreach ($filterValues AS $filterValue) - $queryFilters .= 'lc.a'.(int)$filterValue.' = 1 OR '; - $queryFilters = rtrim($queryFilters, 'OR ').')'; - break; - - case 'category': - $queryFilters .= ' AND (lc.c'.(int)Tools::getValue('id_category_layered').' = 1 OR '; - foreach ($filters['category'] AS $id_category) - { - $category = new Category((int)$id_category); - if (Validate::isLoadedObject($category)) - { - $subCategories = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' - SELECT c.id_category, c.id_parent - FROM '._DB_PREFIX_.'category c - WHERE c.nleft >= '.(int)$category->nleft.' and c.nright <= '.(int)$category->nright.' AND c.active = 1 - ORDER BY c.position ASC'); - - foreach ($subCategories AS $subCategory) - $queryFilters .= 'lc.c'.(int)$subCategory['id_category'].' = 1 OR '; - } - } - $queryFilters = rtrim($queryFilters, 'OR ').')'; - break; - - case 'quantity': - if (sizeof($filters['quantity']) == 2) - break; - $queryFilters .= ' AND p.quantity '.(!$filters['quantity'][0] ? '=' : '>').' 0'; - break; - - case 'manufacturer': - $queryFilters .= ' AND p.id_manufacturer IN ('.implode($filters['manufacturer'], ',').')'; - break; - - case 'condition': - if (sizeof($filters['condition']) == 3) - break; - $queryFilters .= ' AND p.condition IN ('; - foreach ($filters['condition'] AS $cond) - $queryFilters .= '\''.$cond.'\','; - $queryFilters = rtrim($queryFilters, ',').')'; - break; - } - } - - if (!sizeof($filters['category'])) - $queryFilters .= ' AND (lc.c'.(int)Tools::getValue('id_category_layered').' = 1)'; - $products = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' - SELECT p.id_product, p.out_of_stock, p.available_for_order, p.quantity, p.id_category_default, p.customizable, p.show_price, - p.ean13, pl.available_later, pl.description_short, pl.link_rewrite, pl.name, i.id_image, il.legend, m.name manufacturer_name, - DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 AS new - FROM '._DB_PREFIX_.'layered_cache lc - LEFT JOIN '._DB_PREFIX_.'product p ON (p.id_product = lc.id_product) - LEFT JOIN '._DB_PREFIX_.'product_lang pl ON (pl.id_product = p.id_product) - LEFT JOIN '._DB_PREFIX_.'image i ON (i.id_product = p.id_product AND i.cover = 1) - LEFT JOIN '._DB_PREFIX_.'image_lang il ON (i.id_image = il.id_image AND il.id_lang = '.(int)($cookie->id_lang).') - LEFT JOIN '._DB_PREFIX_.'manufacturer m ON (m.id_manufacturer = p.id_manufacturer) - WHERE pl.id_lang = '.(int)$cookie->id_lang.$queryFilters); - $products = Product::getProductsProperties((int)$cookie->id_lang, $products); - + $smarty->assign('products', $products); - + /* We are sending an array in jSon to the .js controller, it will update both the filters and the products zones */ - return '
'.$this->generateFilters($filters).'
'.$smarty->fetch(_PS_THEME_DIR_.'product-list.tpl').'
'; + return Tools::jsonEncode(array( + 'filtersBlock' => $this->generateFiltersBlock($selectedFilters), + 'productList' => $smarty->fetch(_PS_THEME_DIR_.'product-list.tpl') + )); + // return '
'.$this->generateFiltersBlock($selectedFilters).'
'.$smarty->fetch(_PS_THEME_DIR_.'product-list.tpl').'
'; } public function rebuildLayeredStructure() @@ -618,59 +658,6 @@ class BlockLayered extends Module @set_time_limit(0); @ini_set('memory_limit', '64M'); - /* Delete and re-create the products cache table */ - Db::getInstance()->Execute('DROP TABLE IF EXISTS '._DB_PREFIX_.'layered_cache'); - $createTable = 'CREATE TABLE `'._DB_PREFIX_.'layered_cache` (`id_product` INT UNSIGNED NOT NULL,'; - $confValue = 'id_product,'; - - /* Add the missing feature values columns */ - $featureValues = Db::getInstance()->ExecuteS(' - SELECT fv.id_feature_value - FROM '._DB_PREFIX_.'feature_product fp - LEFT JOIN '._DB_PREFIX_.'feature_value fv ON (fv.id_feature_value = fp.id_feature_value) - LEFT JOIN '._DB_PREFIX_.'product p ON (p.id_product = fp.id_product) - WHERE (fv.custom IS NULL OR fv.custom = 0) AND p.active = 1 - GROUP BY fv.id_feature_value'); - - /* Add the missing attribute values columns */ - $attributeValues = Db::getInstance()->ExecuteS(' - SELECT pac.id_attribute - FROM '._DB_PREFIX_.'product_attribute_combination pac - LEFT JOIN '._DB_PREFIX_.'product_attribute pa ON (pa.id_product_attribute = pac.id_product_attribute) - LEFT JOIN '._DB_PREFIX_.'product p ON (p.id_product = pa.id_product) - WHERE p.active = 1 - GROUP BY pac.id_attribute'); - - /* Add the missing categories columns */ - $categories = Db::getInstance()->ExecuteS(' - SELECT cp.id_category - FROM '._DB_PREFIX_.'category_product cp - LEFT JOIN '._DB_PREFIX_.'category c ON (c.id_category = cp.id_category) - LEFT JOIN '._DB_PREFIX_.'product p ON (p.id_product = cp.id_product) - WHERE p.active = 1 AND c.active = 1 - GROUP BY cp.id_category'); - - foreach ($featureValues AS $featureValue) - { - $createTable .= '`f'.(int)$featureValue['id_feature_value'].'` TINYINT(1) UNSIGNED NOT NULL DEFAULT \'0\','; - $confValue .= 'f'.(int)$featureValue['id_feature_value'].','; - } - - foreach ($attributeValues AS $attributeValue) - { - $createTable .= '`a'.(int)$attributeValue['id_attribute'].'` TINYINT(1) UNSIGNED NOT NULL DEFAULT \'0\','; - $confValue .= 'a'.(int)$attributeValue['id_attribute'].','; - } - - foreach ($categories AS $category) - { - $createTable .= '`c'.(int)$category['id_category'].'` TINYINT(1) UNSIGNED NOT NULL DEFAULT \'0\','; - $confValue .= 'c'.(int)$category['id_category'].','; - } - - Configuration::updateValue('PS_LAYERED_COLUMNS', rtrim($confValue, ',')); - Db::getInstance()->Execute($createTable.' PRIMARY KEY (`id_product`)) ENGINE=MyISAM CHARSET=latin1'); - /* Delete and re-create the layered categories table */ Db::getInstance()->Execute('DROP TABLE IF EXISTS '._DB_PREFIX_.'layered_category'); Db::getInstance()->Execute(' @@ -678,7 +665,7 @@ class BlockLayered extends Module `id_layered_category` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `id_category` INT(10) UNSIGNED NOT NULL, `id_value` INT(10) UNSIGNED NOT NULL DEFAULT \'0\', - `type` ENUM(\'category\',\'id_feature\',\'id_attribute_group\',\'quantity\',\'condition\',\'manufacturer\') NOT NULL, + `type` ENUM(\'category\',\'id_feature\',\'id_attribute_group\',\'quantity\',\'condition\',\'manufacturer\',\'weight\') NOT NULL, `position` INT(10) UNSIGNED NOT NULL, PRIMARY KEY (`id_layered_category`), KEY `id_category` (`id_category`,`type`) @@ -732,15 +719,6 @@ class BlockLayered extends Module WHERE c.active = 1'.(sizeof($categoriesIds) ? ' AND cp.id_category IN ('.implode(',', $categoriesIds).')' : '').' AND p.active = 1'.(sizeof($productsIds) ? ' AND p.id_product IN ('.implode(',', $productsIds).')' : '').' AND (fv.custom IS NULL OR fv.custom = 0) GROUP BY p.id_product', false); - /* Get all the columns to fill */ - $columns = explode(',', Configuration::get('PS_LAYERED_COLUMNS')); - - /* We do not need to build the query for products when we are just updating the layered_category table */ - if (!sizeof($categoriesIds)) - { - $query = 'INSERT INTO `'._DB_PREFIX_.'layered_cache` VALUES '; - $values = ''; - } while ($product = $db->nextRow($result)) { $a = $c = $f = array(); @@ -751,27 +729,6 @@ class BlockLayered extends Module if (!empty($product['features'])) $f = array_flip(explode(',', $product['features'])); - /* We do not need to build the query for products when we are just updating the layered_category table */ - if (!sizeof($categoriesIds)) - { - $values .= '('; - $n = 0; - foreach ($columns AS $column) - { - if (!$n) - $values .= (int)$product['id_product'].','; - else - { - if (isset(${$column{0}}[ltrim($column, $column{0})])) - $values .= '1,'; - else - $values .= '0,'; - } - $n++; - } - $values = rtrim($values, ',').'),'; - } - $queryCategory = 'INSERT INTO '._DB_PREFIX_.'layered_category (id_category, id_value, type, position) VALUES '; $toInsert = false; foreach ($c AS $id_category => $category) @@ -816,20 +773,32 @@ class BlockLayered extends Module $queryCategory .= '('.(int)$id_category.',NULL,\'condition\','.(int)$nCategories[(int)$id_category]++.'),'; $toInsert = true; } + if (!isset($doneCategories[(int)$id_category]['w'])) + { + $doneCategories[(int)$id_category]['w'] = true; + $queryCategory .= '('.(int)$id_category.',NULL,\'weight\','.(int)$nCategories[(int)$id_category]++.'),'; + $toInsert = true; + } + /* +if (!isset($doneCategories[(int)$id_category]['p'])) + { + $doneCategories[(int)$id_category]['p'] = true; + $queryCategory .= '('.(int)$id_category.',NULL,\'price\','.(int)$nCategories[(int)$id_category]++.'),'; + $toInsert = true; + } +*/ } if ($toInsert) Db::getInstance()->Execute(rtrim($queryCategory, ',')); } - - /* We do not need to build the query for products when we are just updating the layered_category table */ - if (!sizeof($categoriesIds)) - $db->Execute($query.rtrim($values, ',')); } function filterProducts($products, $selectedFilters, $excludeType = false) { $productsToKeep = array(); - $filterByLetter = array('id_attribute_group' => 'a', 'id_feature' => 'f', 'category' => 'c', 'manufacturer' => 'id_manufacturer', 'quantity' => 'quantity', 'condition' => 'condition'); + $filterByLetter = array('id_attribute_group' => 'a', 'id_feature' => 'f', 'category' => 'c', 'manufacturer' => 'id_manufacturer', + 'quantity' => 'quantity', 'condition' => 'condition', 'weight' => 'weight', 'price' => 'price'); + foreach ($selectedFilters AS $type => $filters) { if ($type == $excludeType OR !sizeof($filters)) @@ -841,15 +810,18 @@ class BlockLayered extends Module switch ($type) { + case 'category': + foreach ($products AS $k => $product) + if($filter = Tools::getValue('id_category_layered')) + $productsToKeep[] = (int)$k; + //don't break me case 'id_attribute_group': case 'id_feature': - case 'category': foreach ($products AS $k => $product) foreach ($filters AS $filter) - if (isset($product[$filterByLetter[$type].(int)$filter])) + if (in_array($filter, $product[$filterByLetter[$type]])) $productsToKeep[] = (int)$k; break; - case 'manufacturer': case 'condition': case 'quantity': @@ -858,6 +830,14 @@ class BlockLayered extends Module if ($product[$filterByLetter[$type]] == $filter) $productsToKeep[] = (int)$k; break; + case 'weight': + case 'price': + $min = $filters[0]; + $max = $filters[1]; + foreach ($products AS $k => $product) + if((float)$min <= (float)$product[$filterByLetter[$type]] AND (float)$product[$filterByLetter[$type]] <= (float)$max) + $productsToKeep[] = (int)$k; + break; } foreach ($products AS $k => $product) diff --git a/modules/blocklayered/blocklayered.tpl b/modules/blocklayered/blocklayered.tpl index b1e868b82..2f750abd6 100644 --- a/modules/blocklayered/blocklayered.tpl +++ b/modules/blocklayered/blocklayered.tpl @@ -25,6 +25,7 @@ *} +{if $nbr_filterBlocks != 0}

{l s='Catalog' mod='blocklayered'}

@@ -35,17 +36,28 @@ {l s='Enabled filters:' mod='blocklayered'}
    {foreach from=$selected_filters key=filter_type item=filter_values} - {foreach from=$filter_values item=filter_value} - {foreach from=$filters item=filter} - {if $filter.type == $filter_type && isset($filter.values)} - {foreach from=$filter.values key=id_value item=value} - {if $id_value == $filter_value} -
  • x {$filter.name|escape:html:'UTF-8'}{l s=':'} {$value.name|escape:html:'UTF-8'}
  • - {/if} - {/foreach} - {/if} - {/foreach} - {/foreach} + {foreach from=$filter_values item=filter_value name=f_values} + {foreach from=$filters item=filter} + {if $filter.type == $filter_type && isset($filter.values)} + {if isset($filter.slider) && $smarty.foreach.f_values.first} +
  • + - {$filter.name|escape:html:'UTF-8'}{l s=':'} + {$filter.values[0]|escape:html:'UTF-8'}{$filter.unit|escape:html:'UTF-8'} - + {$filter.values[1]|escape:html:'UTF-8'}{$filter.unit|escape:html:'UTF-8'} +
  • + {else} + {foreach from=$filter.values key=id_value item=value} + {if $id_value == $filter_value} +
  • + x + {$filter.name|escape:html:'UTF-8'}{l s=':'} {$value.name|escape:html:'UTF-8'} +
  • + {/if} + {/foreach} + {/if} + {/if} + {/foreach} + {/foreach} {/foreach}
@@ -57,17 +69,63 @@ v
    - {foreach from=$filter.values key=id_value item=value} - - {if isset($filter.is_color_group) && $filter.is_color_group} - - {if isset($value.checked) && $value.checked}{/if} - {else} - {if $layered_use_checkboxes} {/if} - {/if} - - - {/foreach} + {if !isset($filter.slider)} + {foreach from=$filter.values key=id_value item=value} + + {if isset($filter.is_color_group) && $filter.is_color_group} + + {if isset($value.checked) && $value.checked}{/if} + {else} + {if $layered_use_checkboxes} + + {/if} + {/if} + + + {/foreach} + {else} + +
    + + + {/if}
{/if} @@ -89,4 +147,5 @@


{l s='Loading...' mod='blocklayered'}

+{/if} \ No newline at end of file diff --git a/modules/blocklayered/config.xml b/modules/blocklayered/config.xml index 033afe08e..7b53b0efd 100644 --- a/modules/blocklayered/config.xml +++ b/modules/blocklayered/config.xml @@ -8,4 +8,5 @@ front_office_features 1 1 + \ No newline at end of file diff --git a/modules/ekomi/config.xml b/modules/ekomi/config.xml index 9df9cf8ea..b82534953 100644 --- a/modules/ekomi/config.xml +++ b/modules/ekomi/config.xml @@ -2,10 +2,11 @@ ekomi eKomi - 0.8 + 1.0 Adds a eKomi block advertising_marketing 1 1 - \ No newline at end of file + + diff --git a/modules/ekomi/ekomi.php b/modules/ekomi/ekomi.php index e885091f0..f74c5e01f 100755 --- a/modules/ekomi/ekomi.php +++ b/modules/ekomi/ekomi.php @@ -34,7 +34,7 @@ class Ekomi extends Module { $this->name = 'ekomi'; $this->tab = 'advertising_marketing'; - $this->version = 0.8; + $this->version = 1.0; parent::__construct(); @@ -108,9 +108,8 @@ class Ekomi extends Module public function hookNewOrder($params) { - global $cookie; if (!Configuration::get('PS_EKOMI_EMAIL')) - return false; + return true; /* Email generation */ $subject = '[Ekomi-Prestashop] '.Configuration::get('PS_SHOP_NAME'); @@ -122,8 +121,8 @@ class Ekomi extends Module ); /* Email sending */ - if (!Mail::Send((int)($cookie->id_lang), 'ekomi', $subject, $templateVars, Configuration::get('PS_EKOMI_EMAIL'), NULL, $params['customer']->email, Configuration::get('PS_SHOP_NAME'), NULL, NULL, dirname(__FILE__).'/mails/')) - return false; + if (!Mail::Send(1, 'ekomi', $subject, $templateVars, Configuration::get('PS_EKOMI_EMAIL'), NULL, $params['customer']->email, Configuration::get('PS_SHOP_NAME'), NULL, NULL, dirname(__FILE__).'/mails/')) + return true; return true; } } diff --git a/modules/ekomi/es.php b/modules/ekomi/es.php index 65dd79b50..0dbc27f4a 100644 --- a/modules/ekomi/es.php +++ b/modules/ekomi/es.php @@ -8,7 +8,10 @@ $_MODULE['<{ekomi}prestashop>ekomi_f4d1ea475eaa85102e2b4e6d95da84bd'] = 'Confirm $_MODULE['<{ekomi}prestashop>ekomi_c888438d14855d7d96a2724ee9c306bd'] = 'Configuración actualizada'; $_MODULE['<{ekomi}prestashop>ekomi_f4f70727dc34561dfde1a3c529b6205c'] = 'Configuración'; $_MODULE['<{ekomi}prestashop>ekomi_597b9cfa17df5ac4e2a4b1f4b6de347a'] = 'configuración eKomi'; -$_MODULE['<{ekomi}prestashop>ekomi_c48c140af813696592daafbabe6d8b9f'] = 'script eKomi'; $_MODULE['<{ekomi}prestashop>ekomi_c4fda5e26d4854b8718850c90694a54c'] = 'eKomi por e-mail'; +$_MODULE['<{ekomi}prestashop>ekomi_c48c140af813696592daafbabe6d8b9f'] = 'script eKomi'; +$_MODULE['<{ekomi}prestashop>ekomi_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Mostrar'; +$_MODULE['<{ekomi}prestashop>ekomi_b9f5c797ebbf55adccdd8539a65a0241'] = 'Ocultar'; +$_MODULE['<{ekomi}prestashop>ekomi_ccf7919cbd0248b0f86a8c39f74da5d0'] = 'Mostrar o no el bloque (los pedidos serán enviados a eKomi independientemente de que usted elija ocultar o mostrar el bloque).'; $_MODULE['<{ekomi}prestashop>ekomi_0767b05248fcba405524f792944858ef'] = 'Por favor, rellene el formulario con los datos básicos que eKomi le da.'; $_MODULE['<{ekomi}prestashop>ekomi_c9cc8cce247e49bae79f15173ce97354'] = 'Guardar'; diff --git a/modules/hipay/es.php b/modules/hipay/es.php index 3d317fd16..c3e42de87 100644 --- a/modules/hipay/es.php +++ b/modules/hipay/es.php @@ -19,12 +19,15 @@ $_MODULE['<{hipay}prestashop>hipay_527557971b02f68ead6a278fb96ac396'] = 'vérifi $_MODULE['<{hipay}prestashop>hipay_1c5f361b20c116ab2324e28b1ac54e12'] = 'Su tienda no está en línea'; $_MODULE['<{hipay}prestashop>hipay_66170e45eb6eb71c35fc3b259a866ff7'] = 'La categoría de productos Hipay no está configurada para cada ID del sitio web'; $_MODULE['<{hipay}prestashop>hipay_1a1a01512e42b64541ed9b1f43a56036'] = 'imposible recuperar las categorías Hipay. Vea el diario de errores para más información.'; -$_MODULE['<{hipay}prestashop>hipay_8f19eb452ad0295c45ca62a099f10dc6'] = 'Hipay es una cartera electrónica segura que le ofrece una paleta de herramientas y de aplicaciones para facturar difertentes tipos de contenidos y de servicios: contenidos numéricos, descargas, bienes físicos... sin necesidad de negociar con un banco y sin gastos técnicos. '; -$_MODULE['<{hipay}prestashop>hipay_e5ac60a0713182096ea3f9590f101b25'] = 'Simple y gratuita, la implementación de la solución Hipay constituye una ventaja para un sitio de venta en línea que desea impulsarse en Europa: pagos seguros con tarjetas internacionales, soluciones de pago locales, transferencias bancarias...'; -$_MODULE['<{hipay}prestashop>hipay_01ad06b7c5887516f56ff824278feb67'] = 'Nota : Para reenvolsar integramente una transacción, vaya al sitio www.hipay.com, en la gestión de venta Hipay/gestión de las ventas.'; +$_MODULE['<{hipay}prestashop>hipay_74e0ddca931daefcd88f3c118e8eb0f1'] = 'Hipay es un monedero electrónico seguro que tiene el aval bancario europeo. Hipay le ofrece muchas posibilidades, sin necesidad de negociar con un banco. Fácil y de uso gratuito, la solución Hipay constituye una real ventaja para los sitios de venta en línea que desean expandirse por Europa: pagos seguros con tarjetas internacionales, soluciones locales de pago, transferencias bancarias ...'; +$_MODULE['<{hipay}prestashop>hipay_01ad06b7c5887516f56ff824278feb67'] = 'Nota : Para reenbolsar integramente una transacción, vaya al sitio www.hipay.com, en la gestión de venta Hipay/gestión de las ventas.'; $_MODULE['<{hipay}prestashop>hipay_254f642527b45bc260048e30704edb39'] = 'Configuración'; +$_MODULE['<{hipay}prestashop>hipay_d86590564b22be4d3b242472722bf969'] = 'La configuración de Hipay es muy fácil y funciona en 3 pasos'; $_MODULE['<{hipay}prestashop>hipay_f21850b58e4866b30f7d3724cc29edb1'] = 'Acceder a su espacio de venta Hipay'; $_MODULE['<{hipay}prestashop>hipay_dc32882bf2b1893d53aeaaa862c46d5c'] = 'Crear una cuenta Hipay'; +$_MODULE['<{hipay}prestashop>hipay_04c85eb0ee32a3a352e80c9bce37b038'] = 'Activar la solución Hipay en su PrestaShop, ¡es gratis!'; +$_MODULE['<{hipay}prestashop>hipay_b7ce0a1dce723a074049b88fb22dbb4d'] = 'Disfrutar de precios especiales en las transacciones a través de PrestaShop '; +$_MODULE['<{hipay}prestashop>hipay_7667c2b31b9980267cb526ed2f0d235d'] = 'poniéndose en contacto con nuestro departamento de ventas'; $_MODULE['<{hipay}prestashop>hipay_08bd40c7543007ad06e4fce31618f6ec'] = 'Cuenta Hipay'; $_MODULE['<{hipay}prestashop>hipay_9596f310ab4657258496ab217d3b5d85'] = 'real / producción'; $_MODULE['<{hipay}prestashop>hipay_aeda5c9c68fbc42071d76a8d2b3d73e8'] = 'test'; diff --git a/modules/hipay/fr.php b/modules/hipay/fr.php index 4f40bd2be..1836bab15 100644 --- a/modules/hipay/fr.php +++ b/modules/hipay/fr.php @@ -22,8 +22,12 @@ $_MODULE['<{hipay}prestashop>hipay_1a1a01512e42b64541ed9b1f43a56036'] = 'Impossi $_MODULE['<{hipay}prestashop>hipay_74e0ddca931daefcd88f3c118e8eb0f1'] = 'Hipay est un portefeuille électronique sécurisé et possédant l\'agrément bancaire européen. Hipay vous offre de nombreuses possibilités sans avoir besoin de négocier avec une banque. Facile et gratuite, l’implémentation de la solution Hipay constitue un véritable atout pour un site e-commerce qui souhaite se développer en Europe : paiements sécurisés par cartes internationales, solutions de paiement locales, virements bancaires...'; $_MODULE['<{hipay}prestashop>hipay_01ad06b7c5887516f56ff824278feb67'] = 'Note : Pour rembourser intégralement une transaction, veuillez vous rendre sur le site www.hipay.com, dans la gestion marchande Hipay/gestion des ventes.'; $_MODULE['<{hipay}prestashop>hipay_254f642527b45bc260048e30704edb39'] = 'Configuration'; +$_MODULE['<{hipay}prestashop>hipay_d86590564b22be4d3b242472722bf969'] = 'La configuration de Hipay est vraiment facile et fonctionne en 3 étapes'; $_MODULE['<{hipay}prestashop>hipay_f21850b58e4866b30f7d3724cc29edb1'] = 'Accédez à votre espace marchand Hipay'; $_MODULE['<{hipay}prestashop>hipay_dc32882bf2b1893d53aeaaa862c46d5c'] = 'Créez un compte Hipay'; +$_MODULE['<{hipay}prestashop>hipay_04c85eb0ee32a3a352e80c9bce37b038'] = 'Activer la solution Hipay dans votre PrestaShop, c\'est gratuit !'; +$_MODULE['<{hipay}prestashop>hipay_b7ce0a1dce723a074049b88fb22dbb4d'] = 'Profitez de tarifs préférentiels sur les transactions via Prestashop en'; +$_MODULE['<{hipay}prestashop>hipay_7667c2b31b9980267cb526ed2f0d235d'] = 'contactant notre département des ventes'; $_MODULE['<{hipay}prestashop>hipay_08bd40c7543007ad06e4fce31618f6ec'] = 'Compte Hipay'; $_MODULE['<{hipay}prestashop>hipay_9596f310ab4657258496ab217d3b5d85'] = 'réel / production'; $_MODULE['<{hipay}prestashop>hipay_aeda5c9c68fbc42071d76a8d2b3d73e8'] = 'test'; diff --git a/modules/loyalty/es.php b/modules/loyalty/es.php index 813171975..9ef0a0b71 100644 --- a/modules/loyalty/es.php +++ b/modules/loyalty/es.php @@ -48,6 +48,7 @@ $_MODULE['<{loyalty}prestashop>loyalty_928666bdf20510dfa5c58393b77f1798'] = 'Val $_MODULE['<{loyalty}prestashop>loyalty_a9be824aae4f2381a27b7c699b1e041e'] = 'En espera de validación'; $_MODULE['<{loyalty}prestashop>loyalty_78945de8de090e90045d299651a68a9b'] = 'Disponibles'; $_MODULE['<{loyalty}prestashop>loyalty_4cb08bf5ad3d3c7b010dde725a078b28'] = 'Convertidos'; +$_MODULE['<{loyalty}prestashop>loyalty_df05c2db84dacb19b599b489bf3963db'] = 'No disponible en los descuentos'; $_MODULE['<{loyalty}prestashop>loyalty_01371a1d58e9234c0b9dbc08cf54fa8b'] = 'No válidos en descuentos'; $_MODULE['<{loyalty}prestashop>loyalty_d95cf4ab2cbf1dfb63f066b50558b07d'] = 'Mi cuenta:'; $_MODULE['<{loyalty}prestashop>loyalty_c540093e64d84440025b2d8201f04336'] = 'Mis puntos recompensa'; diff --git a/modules/loyalty/fr.php b/modules/loyalty/fr.php index ad8b0c86c..a905233a6 100644 --- a/modules/loyalty/fr.php +++ b/modules/loyalty/fr.php @@ -48,6 +48,7 @@ $_MODULE['<{loyalty}prestashop>loyalty_928666bdf20510dfa5c58393b77f1798'] = 'Val $_MODULE['<{loyalty}prestashop>loyalty_a9be824aae4f2381a27b7c699b1e041e'] = 'En attente de validation'; $_MODULE['<{loyalty}prestashop>loyalty_78945de8de090e90045d299651a68a9b'] = 'Disponibles'; $_MODULE['<{loyalty}prestashop>loyalty_4cb08bf5ad3d3c7b010dde725a078b28'] = 'Déjà convertis'; +$_MODULE['<{loyalty}prestashop>loyalty_df05c2db84dacb19b599b489bf3963db'] = 'Non disponible sur les remises'; $_MODULE['<{loyalty}prestashop>loyalty_01371a1d58e9234c0b9dbc08cf54fa8b'] = 'Non valables sur les promotions'; $_MODULE['<{loyalty}prestashop>loyalty_d95cf4ab2cbf1dfb63f066b50558b07d'] = 'Mon compte'; $_MODULE['<{loyalty}prestashop>loyalty_c540093e64d84440025b2d8201f04336'] = 'Mes points de fidélité'; diff --git a/modules/mondialrelay/es.php b/modules/mondialrelay/es.php index 94ea02e4d..638f478d2 100644 --- a/modules/mondialrelay/es.php +++ b/modules/mondialrelay/es.php @@ -48,6 +48,7 @@ $_MODULE['<{mondialrelay}prestashop>mondialrelay_90b95ae88150c6a34c4129dc4f1ebbd $_MODULE['<{mondialrelay}prestashop>mondialrelay_c15b40b8c535191f6f0b6f9beaced3cf'] = 'Seguro complementario N4'; $_MODULE['<{mondialrelay}prestashop>mondialrelay_b67a442fff3ca0a03ea253b0668f946d'] = 'Seguro complementario N5'; $_MODULE['<{mondialrelay}prestashop>mondialrelay_33cbd0d8b6476501f55a8320481ec0f1'] = 'Lista de países :'; +$_MODULE['<{mondialrelay}prestashop>mondialrelay_aef71ba4fd060dea2e2c76d1b5076caf'] = 'Puede elegir varios países pulsando Ctrl mientras selecciona los países'; $_MODULE['<{mondialrelay}prestashop>mondialrelay_0309a6c666a7a803fdb9db95de71cf01'] = 'Francia'; $_MODULE['<{mondialrelay}prestashop>mondialrelay_6c1674d14bf5f95742f572cddb0641a7'] = 'Bélgica'; $_MODULE['<{mondialrelay}prestashop>mondialrelay_06630c890abadde9228ea818ce52b621'] = 'Luxemburgo'; @@ -120,6 +121,7 @@ $_MODULE['<{mondialrelay}prestashop>mondialrelay_6c530987d533793b0f25fb18807b69c $_MODULE['<{mondialrelay}prestashop>mondialrelay_3d2da0d2e731d59465a92f13216cf82d'] = 'La página señas'; $_MODULE['<{mondialrelay}prestashop>mondialrelay_06b3355cd8a61603396c7e453bdb1025'] = 'Dirección vacía: ¿está seguro de haber introducio una dirección válida en la página Señas?'; $_MODULE['<{mondialrelay}prestashop>mondialrelay_2f84f9d5731852c4d07d52ef0badc42e'] = 'Problemas para obtener las direcciones de servicio web MondialRelay: los servidores de Mondial Relay pueden estar fuera de servicio'; +$_MODULE['<{mondialrelay}prestashop>mondialrelay_016854c68c7122b18d89ff0f5e40502b'] = 'No hay Punto de entrega cerca de su domicilio, por favor cambie su dirección o utilice otro modo de transporte'; $_MODULE['<{mondialrelay}prestashop>mondialrelay_21034ae6d01a83e702839a72ba8a77b0'] = '(sin IVA)'; $_MODULE['<{mondialrelay}prestashop>mondialrelay_1f87346a16cf80c372065de3c54c86d9'] = '(IVA incluido)'; $_MODULE['<{mondialrelay}prestashop>mondialrelay_e7a6ca4e744870d455a57b644f696457'] = '¡Gratis!'; diff --git a/modules/productcomments/productcomments.tpl b/modules/productcomments/productcomments.tpl index 5b04b5b8c..c3733db0c 100644 --- a/modules/productcomments/productcomments.tpl +++ b/modules/productcomments/productcomments.tpl @@ -55,7 +55,7 @@
{$c.name|escape:'html':'UTF-8'}
{section loop=6 step=1 start=1 name=average} - + {/section}
{/foreach} diff --git a/modules/productcomments/products-comparison.tpl b/modules/productcomments/products-comparison.tpl index ed9980d86..5c0e2fdd8 100755 --- a/modules/productcomments/products-comparison.tpl +++ b/modules/productcomments/products-comparison.tpl @@ -62,9 +62,9 @@ {foreach from=$list_ids_product item=id_product} {assign var='tab_grade' value=$product_grades[$grade_id]} - {if $tab_grade[$id_product]} + {if isset($tab_grade[$id_product]) AND $tab_grade[$id_product]} {section loop=6 step=1 start=1 name=average} - + {/section} {else} - @@ -79,7 +79,7 @@ {l s='Average' mod='productcomments'} {foreach from=$list_ids_product item=id_product} - {if $list_product_average[$id_product]} + {if isset($list_product_average[$id_product]) AND $list_product_average[$id_product]} {section loop=6 step=1 start=1 name=average} {/section} @@ -94,7 +94,7 @@   {foreach from=$list_ids_product item=id_product} - {if $product_comments[$id_product]} + {if isset($product_comments[$id_product]) AND $product_comments[$id_product]} {l s='view comments' mod='productcomments'} {/if} + diff --git a/themes/prestashop/order-detail.tpl b/themes/prestashop/order-detail.tpl index 9a6d73c29..4b8549e6a 100644 --- a/themes/prestashop/order-detail.tpl +++ b/themes/prestashop/order-detail.tpl @@ -78,25 +78,28 @@
  • {l s='Invoice'}
  • - {if $address_invoice->company}
  • {$address_invoice->company|escape:'htmlall':'UTF-8'}
  • {/if} -
  • {$address_invoice->firstname|escape:'htmlall':'UTF-8'} {$address_invoice->lastname|escape:'htmlall':'UTF-8'}
  • -
  • {$address_invoice->address1|escape:'htmlall':'UTF-8'}
  • - {if $address_invoice->address2}
  • {$address_invoice->address2|escape:'htmlall':'UTF-8'}
  • {/if} -
  • {$address_invoice->postcode|escape:'htmlall':'UTF-8'} {$address_invoice->city|escape:'htmlall':'UTF-8'}
  • -
  • {$address_invoice->country|escape:'htmlall':'UTF-8'}{if $invoiceState} - {$invoiceState->name|escape:'htmlall':'UTF-8'}{/if}
  • - {if $address_invoice->phone}
  • {$address_invoice->phone|escape:'htmlall':'UTF-8'}
  • {/if} - {if $address_invoice->phone_mobile}
  • {$address_invoice->phone_mobile|escape:'htmlall':'UTF-8'}
  • {/if} + {foreach from=$inv_adr_fields name=inv_loop item=field_item} + {if $field_item eq "company" && isset($address_invoice->company)}
  • {$address_invoice->company|escape:'htmlall':'UTF-8'}
  • + {elseif $field_item eq "address2" && $address_invoice->address2}
  • {$address_invoice->address2|escape:'htmlall':'UTF-8'}
  • + {elseif $field_item eq "phone_mobile" && $address_invoice->phone_mobile}
  • {$address_invoice->phone_mobile|escape:'htmlall':'UTF-8'}
  • + {else} + {assign var=address_words value=" "|explode:$field_item} +
  • {foreach from=$address_words item=word_item name="word_loop"}{if !$smarty.foreach.word_loop.first} {/if}{$address_invoice->$word_item|escape:'htmlall':'UTF-8'}{/foreach}
  • + {/if} + + {/foreach}
  • {l s='Delivery'}
  • - {if $address_delivery->company}
  • {$address_delivery->company|escape:'htmlall':'UTF-8'}
  • {/if} -
  • {$address_delivery->firstname|escape:'htmlall':'UTF-8'} {$address_delivery->lastname|escape:'htmlall':'UTF-8'}
  • -
  • {$address_delivery->address1|escape:'htmlall':'UTF-8'}
  • - {if $address_delivery->address2}
  • {$address_delivery->address2|escape:'htmlall':'UTF-8'}
  • {/if} -
  • {$address_delivery->postcode|escape:'htmlall':'UTF-8'} {$address_delivery->city|escape:'htmlall':'UTF-8'}
  • -
  • {$address_delivery->country|escape:'htmlall':'UTF-8'}{if $deliveryState} - {$deliveryState->name|escape:'htmlall':'UTF-8'}{/if}
  • - {if $address_delivery->phone}
  • {$address_delivery->phone|escape:'htmlall':'UTF-8'}
  • {/if} - {if $address_delivery->phone_mobile}
  • {$address_delivery->phone_mobile|escape:'htmlall':'UTF-8'}
  • {/if} + {foreach from=$dlv_adr_fields name=dlv_loop item=field_item} + {if $field_item eq "company" && isset($address_delivery->company)}
  • {$address_delivery->company|escape:'htmlall':'UTF-8'}
  • + {elseif $field_item eq "address2" && $address_delivery->address2}
  • {$address_delivery->address2|escape:'htmlall':'UTF-8'}
  • + {elseif $field_item eq "phone_mobile" && $address_delivery->phone_mobile}
  • {$address_delivery->phone_mobile|escape:'htmlall':'UTF-8'}
  • + {else} + {assign var=address_words value=" "|explode:$field_item} +
  • {foreach from=$address_words item=word_item name="word_loop"}{if !$smarty.foreach.word_loop.first} {/if}{$address_delivery->$word_item|escape:'htmlall':'UTF-8'}{/foreach}
  • + {/if} + {/foreach}
{$HOOK_ORDERDETAILDISPLAYED} {if !$is_guest}
{/if} diff --git a/themes/prestashop/order-opc-new-account.tpl b/themes/prestashop/order-opc-new-account.tpl index 16685d70b..8618e2e89 100644 --- a/themes/prestashop/order-opc-new-account.tpl +++ b/themes/prestashop/order-opc-new-account.tpl @@ -180,50 +180,48 @@

{/if}

{l s='Delivery address'}

+ {foreach from=$dlv_all_fields item=field_name} + {if $field_name eq "company"}

- -

- - - {l s='DNI / NIF / NIE'} -

+ {elseif $field_name eq "firstname"}

*

+ {elseif $field_name eq "lastname"}

*

+ {elseif $field_name eq "address1"}

*

+ {elseif $field_name eq "address2"}

+ {elseif $field_name eq "postcode"}

*

+ {elseif $field_name eq "city"}

*

+ {elseif $field_name eq "country"}

*

+ {elseif $field_name eq "vat_number"} + + {/if} + {/foreach} +

+ + + {l s='DNI / NIF / NIE'} +

- +

@@ -262,10 +274,13 @@

{l s='Invoice address'}

+ {foreach from=$inv_all_fields item=field_name} + {if $field_name eq "company"}

+ {elseif $field_name eq "vat_number"} @@ -492,7 +492,7 @@ var fieldRequired = '{l s='Please fill in all required fields' js=1}';
  • {assign var='key' value='pictures_'|cat:$product->id|cat:'_'|cat:$field.id_customization_field} {if isset($pictures.$key)}{/if} diff --git a/themes/prestashop/shopping-cart.tpl b/themes/prestashop/shopping-cart.tpl index 98f89a9b6..f61a6b3cd 100644 --- a/themes/prestashop/shopping-cart.tpl +++ b/themes/prestashop/shopping-cart.tpl @@ -85,12 +85,12 @@ {if $use_taxes} {if $priceDisplay} - {l s='Total products (tax excl.):'} + {l s='Total products'}{if $display_tax_label} {l s='(tax excl.)'}{/if}{l s=':'} {displayPrice price=$total_products} {else} - {l s='Total products (tax incl.):'} + {l s='Total products'}{if $display_tax_label} {l s='(tax incl.)'}{/if}{l s=':'} {displayPrice price=$total_products_wt} {/if} @@ -104,9 +104,9 @@ {if $use_taxes} {if $priceDisplay} - {l s='Total vouchers (tax excl.):'} + {l s='Total vouchers'}{if $display_tax_label} {l s='(tax excl.)'}{/if}{l s=':'} {else} - {l s='Total vouchers (tax incl.):'} + {l s='Total vouchers'}{if $display_tax_label} {l s='(tax incl.)'}{/if}{l s=':'} {/if} {else} {l s='Total vouchers:'} @@ -128,9 +128,9 @@ {if $use_taxes} {if $priceDisplay} - {l s='Total gift-wrapping (tax excl.):'} + {l s='Total gift-wrapping'}{if $display_tax_label} {l s='(tax excl.)'}{/if}{l s=':'} {else} - {l s='Total gift-wrapping (tax incl.):'} + {l s='Total gift-wrapping'}{if $display_tax_label} {l s='(tax incl.)'}{/if}{l s=':'} {/if} {else} {l s='Total gift-wrapping:'} @@ -151,12 +151,12 @@ {if $use_taxes} {if $priceDisplay} - {l s='Total shipping (tax excl.):'} + {l s='Total shipping'}{if $display_tax_label} {l s='(tax excl.)'}{/if}{l s=':'} {displayPrice price=$shippingCostTaxExc} {else} - {l s='Total shipping (tax incl.):'} + {l s='Total shipping'}{if $display_tax_label} {l s='(tax incl.)'}{/if}{l s=':'} {displayPrice price=$shippingCost} {/if} diff --git a/themes/prestashop/store_infos.tpl b/themes/prestashop/store_infos.tpl index e6499112f..0072ee847 100644 --- a/themes/prestashop/store_infos.tpl +++ b/themes/prestashop/store_infos.tpl @@ -38,7 +38,7 @@ {foreach $days_datas as $one_day} - + {/foreach} diff --git a/themes/prestashop/stores.tpl b/themes/prestashop/stores.tpl index 7d18ed6cd..43ffedc75 100644 --- a/themes/prestashop/stores.tpl +++ b/themes/prestashop/stores.tpl @@ -27,6 +27,8 @@ {capture name=path}{l s='Our stores'}{/capture} {include file="$tpl_dir./breadcrumb.tpl"} + +

    {l s='Our stores'}

    {if $simplifiedStoresDiplay} @@ -94,4 +96,4 @@
    {l s=$one_day['day']}{$one_day['day']} {$one_day['hours']}
    {l s='Distance'}
    -{/if} \ No newline at end of file +{/if} diff --git a/tools/smarty/cache/index.php b/tools/smarty/cache/index.php new file mode 100644 index 000000000..15aba8204 --- /dev/null +++ b/tools/smarty/cache/index.php @@ -0,0 +1,11 @@ +'; +$_ERRORS['4803e6b9e63dabf04de980788d6a13c4'] = 'línea'; $_ERRORS['49bd922182bd3518641589e3077eacd3'] = 'El enlace con la base de datos no se puede establecer'; +$_ERRORS['b75318064af89cff0f4d413341cc3833'] = 'ese fabricante no existe'; +$_ERRORS['00522631569606c5dcb3cd8e23f79b90'] = 'fabricante seleccionado no válido'; $_ERRORS['bc54287d97c88a98f594dc488a334e89'] = 'Máximo permitido:'; +$_ERRORS['bfbc475ebfb3b560ee71e24a9e621109'] = 'longitud máxima:'; +$_ERRORS['f3c983bbd9fc0f3abb77f93b5e3c3383'] = 'mcrypt no está activado en el servidor'; $_ERRORS['ea030df6cb392bef66cde22c94578ae4'] = 'Servidor de media #1 no válido'; $_ERRORS['32d841e578ff7560bbaeda96f5328e9e'] = 'Servidor de media #2 no válido'; $_ERRORS['63ae8982fa76c668cbfc774ccf083d26'] = 'Servidor de media #3 no válido'; $_ERRORS['366da0581c44d3c179e44f532b693eab'] = 'Falta la IP Memcached '; $_ERRORS['5f3a91561e3c6b3be2b251467d9596d1'] = 'Falta el puerto Memcached '; $_ERRORS['c21db1e62daf45d19a389bd3d0d8daa9'] = 'Fata el peso Memcached '; +$_ERRORS['f55cdaa9ea87c6ebeeb7b4acf31635af'] = 'el mensaje no puede estar vacío'; +$_ERRORS['7ca482310b2e993b9ab1a74d1d4e1582'] = 'el mensaje no es válido (HTML no autorizado)'; +$_ERRORS['1b72aed8e84b91d73896efd48cf1a4e0'] = 'Cantidad mínima'; +$_ERRORS['708d2bfb476ba46221602d549f0e7a4d'] = 'la categoría ID no existe'; +$_ERRORS['d570a58190669915bafad65fd9402fc6'] = 'Faltan algunos elementos, no es posible renovar su pedido'; +$_ERRORS['e074201be2c2605dbd174d84cb556ce8'] = 'la ID del pedido es desconocida'; +$_ERRORS['8b80d4b6307990874b832cc15a92e5a3'] = 'Algunos parámetros han desaparecido.'; +$_ERRORS['e8f638d8907833cbcead6ba01dd2a954'] = 'Debe aparecer como a continuación:'; $_ERRORS['5965a3d0f70ea8682584bf446584d6dc'] = 'Nombre demasiado largo'; +$_ERRORS['4b198aa15f6cc8f56488d924b18fa888'] = 'ningún carrito encontrado con este ID:'; $_ERRORS['ed9b5732158eef63ac4d236e04101d2b'] = 'Ninguna moneda para el módulo de pago'; $_ERRORS['6f775dff2aa88bce2301e5d5309c5f7e'] = 'No hay moneda por defecto'; +$_ERRORS['c2492c52caab207d21da2c0decd8a405'] = 'elementos no encontrados'; +$_ERRORS['f787618e514c038851726224d7e4421e'] = 'fichero no seleccionado'; +$_ERRORS['1b599bf89c1bf4f8640ef31f3acb9f40'] = 'archivo no especificado'; $_ERRORS['cb20447a4bf5ff9bec717ec68a357a93'] = 'Motor de gráfico no seleccionado'; $_ERRORS['ccacacd12f75e1ab3f9ce3e234ed5777'] = 'Motor de cuadro no seleccionado'; $_ERRORS['6a8f39c3861bfa5111a88d9c76df6993'] = 'No hay factura disponible'; +$_ERRORS['0e63e5844a0255aeb0cee434263552ae'] = 'ninguna factura encontrada con este ID:'; $_ERRORS['e21c3c406358073b38d481fd3d88221c'] = 'No se ha encontrado factura'; +$_ERRORS['f59b67acbc1ca8ecad71a742f5e43b09'] = 'Ningún pedido encontrado con este ID:'; +$_ERRORS['083d9cdf06cdc52892e3bbf7ff5494b6'] = 'No Id de la devolución del pedido'; $_ERRORS['d107b93e0404a9ec3a24c3b797b63fff'] = 'No se ha encontrado orde de pedido'; $_ERRORS['e3ac5a39682f9b3a09f6063f714ffc48'] = 'No hay modo de pago disponble'; $_ERRORS['8912e1863fe81af9cabd76f5de9e7495'] = 'No hay producto o cantidad seleccionados'; @@ -170,29 +301,56 @@ $_ERRORS['7f3f9fec825792f2b728db9d55078e80'] = 'No hay ninguna cantidad seleccio $_ERRORS['6f3455d187a23443796efdcbe044096b'] = 'No hay impuesto'; $_ERRORS['a9839ad48cf107667f73bad1d651f2ca'] = 'No hay ninguna plantilla'; $_ERRORS['eddeabd79f8ca673d888fa2ffe9cf69a'] = 'No hay se encuentra plantilla para el módulo'; +$_ERRORS['25723bba0086a38394001a8ca41e9126'] = 'valores no válidos para excepciones del campo'; +$_ERRORS['32b361bc532ac43976956d37c0d5fc1c'] = 'no hay zona que corresponda a su dirección'; +$_ERRORS['378f2b22734553a38505b1f8f0d48ccb'] = 'cantidad nula'; +$_ERRORS['9211c38458f969f18498096a400a2214'] = 'el objeto no puede cargarse'; +$_ERRORS['5ca4012f9738274ebeb214a961f1c829'] = 'el objeto no puede cargarse (no hay login o no es válido)'; +$_ERRORS['56b207f28525081cec398738b3d25225'] = 'el objeto no puede cargarse (no se encuentra)'; $_ERRORS['27ab5a6a3e4b4cb32f0484a1f93d5f64'] = 'Solamente una parte de las imágenes se ha regenerado, la conexión con el servidor ha expirado antes del final.'; +$_ERRORS['86eb7a8a11e8d60cc214c71970f11c11'] = 'ID de pedido necesaria'; $_ERRORS['b08d3867be98e6fff3233cd40ab8134a'] = 'Creación de pedido fallida'; +$_ERRORS['0b85d79bd7e582c805ec82e3b7f6293e'] = 'el pedido no es válido actualmente'; +$_ERRORS['24909e87dc242b9dd539e10609b8b050'] = 'pedido no encontrado'; +$_ERRORS['a9b3e2b8011bb175d3b1bcd318584080'] = 'devolución de pedido no confirmada'; +$_ERRORS['891f03e0e989696eb5e499ce5bbfe277'] = 'devolución de pedido no encontrada'; $_ERRORS['988585c9a6318ab5872bbb7f256f6fb8'] = 'Pack corrupto: unidad de precio errónea'; $_ERRORS['d29668efafb8068ad1ee29de5f9a0b88'] = 'Error de interpretación en módulo(s)'; +$_ERRORS['55124c4465a9478df5fd59ff3017433a'] = 'la contraseña y la confirmación no coinciden'; +$_ERRORS['986641245e5ef77f951298aa30a5616f'] = 'la contraseña está vacía'; +$_ERRORS['47be05698f8dd87bb445ceefce6abd0d'] = 'la contraseña es obligatoria'; +$_ERRORS['e09f0eb3c67b7504a545899ebc961542'] = 'contraseña demasiado larga'; $_ERRORS['0bb143edd97aa63ec014e68b3bb4f82f'] = 'Por favor, acepte los términos del servicio'; +$_ERRORS['4b9fa5f1ff63eb63f4f42277ce26f17c'] = 'por favor, elija un idioma y un tema'; +$_ERRORS['3ad0eb10b0de3e0a4720c88034944d78'] = 'Necesita elegir al menos un atributo'; $_ERRORS['c1f25211403ec7459f265788cdbee403'] = 'Rellene por favor todos los campos requeridos, después guarde la personalización.'; +$_ERRORS['6310db462253eb49efa3709d8591defc'] = 'por favor, rellene el campo de búsqueda'; +$_ERRORS['1b41b4dbfa03ca395fd87cc19b3d06b3'] = 'intente abrir una sesión si la tiene'; $_ERRORS['3a65f932fe23b8ca8eb70bffe2b215bf'] = 'Por favor, seleccione un tipo de descuento (importe o porcentaje)'; +$_ERRORS['a09c2526d0dffdc36787664f45dd9d8d'] = 'por favor, seleccione un tema en la lista'; $_ERRORS['eef627ca3bead3c1ada77104ae218d75'] = 'Por favor, seleccione al menos un contenido para importar.'; +$_ERRORS['5a05003a54c39aba291858c3e45d0de0'] = 'Debe especificar una divisa para este vale descuento'; $_ERRORS['8e4b5b9003a1e89146ecd623f76f4179'] = 'Por favor, defina una profundidad repertorio'; $_ERRORS['f2ee6211fd44afca2f01ee2d1031d0e5'] = 'Por favor, inscríbase para ver formas de pago'; +$_ERRORS['f996dce5bdfb1b1094e41cf996c5fdae'] = 'por favor, especifique la URL del módulo'; $_ERRORS['a05b582431bd7063de0623ef76b14c73'] = 'Por favor, especifique prioridades'; -$_ERRORS['3d825cbfa93b2c0e9ea93bbcab328fe0'] = 'Código postal'; +$_ERRORS['27e12c3c443d7165ab71cd376a3b3f10'] = 'introduzca su código postal'; +$_ERRORS['c22042ba6792cfe142bf63f5a8c50ae8'] = 'producto no disponible actualmente'; $_ERRORS['f1cdcf26d9787f078f7fc0e0645858d7'] = 'Error fatal Prestashop: no hay soporte utf-8. Por favor, compruebe la configuración de su servidor.'; +$_ERRORS['350bf1d858bae55fa9c344b39ea9afcd'] = 'no se puede cargar el producto'; +$_ERRORS['fe22b7cb2de47c8eafec2ad82fada9dd'] = 'Debe crearse el producto antes de añadir posibilidades de personalización'; +$_ERRORS['96a2d573cabb2e5b3d6164140d28e8da'] = 'debe crearse el producto antes de añadir características'; +$_ERRORS['dfbe69c6d9568ecb0e65e7b32ed92a3a'] = 'producto no encontrado'; +$_ERRORS['8f18cd66e999d9695f53141a15b47292'] = 'valor de la reducción no es válido'; $_ERRORS['467366059d7d7c743a4d0971363a8d66'] = 'Limitado a ciertas catagorías'; $_ERRORS['772911becd336c843ab09a1d4b4f66c0'] = 'Limitado a ciertos productos'; $_ERRORS['83d41d7e6f25cd9be1e48204697fe0c9'] = 'El link reescrito para'; $_ERRORS['087193a0e83ba92c73396e2e6082ee89'] = 'Por favor, seleccione al menos un módulo para descolgar'; $_ERRORS['edeb9e20655b946e4bee4ac44a6c0a7f'] = 'El servidor no dispone de permisos para la escritura'; $_ERRORS['5d7cc18ef21285f980cbada9adb9df5c'] = 'La conexión al servidor expiró, la filigrana no se ha podido aplicar a todas las imígenes.'; -$_ERRORS['d570a58190669915bafad65fd9402fc6'] = 'Faltan algunos elementos, no es posible renovar su pedido'; -$_ERRORS['8b80d4b6307990874b832cc15a92e5a3'] = 'Algunos parámetros han desaparecido.'; $_ERRORS['721b2acc2e54e77e36654bbc42a0747a'] = 'Lo sentimos, actualmente las copias de seguridad solo soportan bases de datos MySQL. Usted esta usando'; $_ERRORS['c45319ee556dc43ba15523c539c7e9d4'] = 'Lo sentimos, no es posible renovar su pedido'; +$_ERRORS['c3f365ea3ae0b35b814493fc72ff0458'] = 'el proveedor no existe'; $_ERRORS['19a99b7aed449fbbedc3ce65483d6a3a'] = 'La pestaña no puede encontrarse'; $_ERRORS['cae059a6bd57c0b7d289ce097c060ba6'] = 'El archivo de la pestaña no puede encontrarse'; $_ERRORS['e9192643ed3b0619fcd8347015806e2a'] = 'El nombre de la tabla no es válido:'; @@ -203,24 +361,50 @@ $_ERRORS['d139abab2541129dfae24c733635104c'] = 'El archivo se ha subido parcialm $_ERRORS['723c870c1b443e052e290bd96f46e977'] = 'El siguiente campo no es válido según el método de validación'; $_ERRORS['59e3d45dc17f2e9fc4caac2f887bd075'] = 'La función'; $_ERRORS['8227e4867a9388488b04ea32665bcc18'] = 'El directorio de módulos debe ser escribible'; +$_ERRORS['418e2586ee498c46f6375e9a0008517c'] = 'el detalle del pedido devuelto no es válido'; +$_ERRORS['e7a58e52e848f513c3e9185d34d61a50'] = 'la devolución del pedido no es válida'; +$_ERRORS['deccf4daff483f5f31a2e19482f56d32'] = 'el importe total de su pedido no es suficiente o su vale no puede utilizarse con estos productos'; $_ERRORS['2031a6bfe5f5bed90694c02868ebf2ed'] = 'El parámetro'; $_ERRORS['2d30f823fe8f59bbcbec1fec853e4549'] = 'La fecha límite ha expirado. '; $_ERRORS['082dfb8fc5e3d1fed89956a67eed23cd'] = '¡El número de envío solo se puede fijar una vez que se ha enviado el pedido!'; $_ERRORS['92cfc43b8b3cf7a964f2ef24fd22f8df'] = 'No hay módulos en su tienda de Prestashop. Utilice la pestaã módulos para activarlos o visite nuestra web para descargar módulos adicionales.'; +$_ERRORS['3c9a4f1e91ee7bb51c29bdc9362077fe'] = 'no hay ninguna cuenta registrada con este email'; +$_ERRORS['2e857abc0ea5d7f97522254ca00c18bb'] = 'no hay suficiente producto en stock'; +$_ERRORS['59382adebc7f0d65c42fe773d443e4c7'] = 'el código ISO ya exite en otro idioma'; $_ERRORS['61eaad60c84d4d2a5b3afcc3751c5635'] = 'Este Código postal ya se está usando.'; +$_ERRORS['4649093d4d10aa95a212636f146c47fd'] = 'esa cuenta no existe'; +$_ERRORS['a56b6c43645970e79a8098df1dfc9746'] = 'esa dirección no puede ser borrada'; +$_ERRORS['08b2765dc6c449c903f8b30ac7e55f91'] = 'esta dirección no es válida'; +$_ERRORS['baafbb73bdf562b2dcbd2c4b807f758e'] = 'esa dirección no se encuentra en una zona válida'; $_ERRORS['71f4f008985ea6abc73e89a668e15197'] = 'Este atributo ya existe'; $_ERRORS['e22a6ea51eb74bee7acaa4acf2846c7b'] = 'Esta combinación ya existe.'; +$_ERRORS['044ef92a14ceaaba24382a72ca0267ae'] = 'este país requiere la selección de un Estado'; $_ERRORS['8562db06e3931e51ac8c456b56088b02'] = 'Este cliente no existe.'; +$_ERRORS['350e5d76b60ae887c90d55e2fb23fdc5'] = 'Este descuento no es aplicable a esa categoría de producto'; +$_ERRORS['f8279a73d35437427d4c77e28828c5fc'] = 'este email no está registrado'; $_ERRORS['e0a602c130d12d57cd4ca2a8b9240917'] = 'Este archivo puede ser escrito:'; $_ERRORS['c9615dc36879116ef8c5f1ab08543191'] = 'Este archivo ya no existe'; +$_ERRORS['b60be6e4c0df15343a7cdafccb174159'] = 'Este módulo no puede ser trasplantado a este hook.'; $_ERRORS['a44f9463879b845e1ad2c45e75aebd18'] = 'Este módulo ya ha sido instalado:'; +$_ERRORS['aa508f3bd17074b8941571083de1350e'] = 'este módulo ya está copiado en este hook'; $_ERRORS['ae38c419414887fa47b7f5a811e5f42d'] = 'Este módulo ya ha sido desinstalado:'; +$_ERRORS['e8be55bf3a30501aef09d2e74de97976'] = 'este nombre ya existe'; +$_ERRORS['b74c118d823d908d653cfbf1c877ae55'] = 'esta nombre ya está utilizado por otra lista'; $_ERRORS['1347119d36ae31564a89763f21476c1a'] = 'Este producto no existe en nuestra tienda.'; $_ERRORS['38d5595927b80b331239ef904341b07c'] = 'Este producto ha sido eliminado'; $_ERRORS['28c993bca90a1f5a4510d3a21ca2b705'] = 'Este estado está actualmente en uso'; $_ERRORS['1b7e32fd6ed56569d8557947ccf095a6'] = 'Este estado no se encuentra en este país'; $_ERRORS['5af5f631f774a71445e3028253874394'] = 'Esta tienda no ha aceptado su nuevo pedido'; $_ERRORS['e944542bcbbbd7851918e6e7e81b4d8a'] = 'Esta regla fiscal no se puede guardar.'; +$_ERRORS['7df7cede74e46f3db6b15097bc0def56'] = 'este vale de descuento sólo puede utilizarse en esta divisa:'; +$_ERRORS['f31c6bd22c7b96ca912b03f72ba9da24'] = 'este vale de descuento ya fue utilizado o está desactivado'; +$_ERRORS['be0caf91a9818eb72c4b365ac169fba8'] = 'este vale de descuento ha caducado (fecha de utilización sobrepasada)'; +$_ERRORS['e9d528fd77aaf898ebb763f124a1fd1d'] = 'este vale de descuento ha caducado'; +$_ERRORS['d0f1560c5d1b13b1e64fa87a301dd83b'] = 'este vale de descuento ya está usado en su carrito'; +$_ERRORS['5f42bae6298b1656297e184ecd359f22'] = 'este vale no puede acumularse con otros productos en descuento o marcados en ventas'; +$_ERRORS['bc9679730b07cd7d0e813dab08efd415'] = 'este vale de descuento no puede acumularse con otros vales'; +$_ERRORS['596c0b7077b7a2619c64c8c3c40142b9'] = 'este vale de descuento ya no es válido'; +$_ERRORS['546212fa1d2694600b976add6bf722f7'] = 'hasta categorías'; $_ERRORS['3d064d5efb6cf2ed52cf72bfef7c7db2'] = 'Para utilizar CacheFS, la carpeta'; $_ERRORS['488d2e9e9b539c0ff188844a062afa48'] = 'Para utilizar Memcached, debe instalar la extensión Memcached PECL en su servidor:'; $_ERRORS['9d0af39694637f8184020a6193a3943c'] = 'La reescritura de URL automática no ha podido generar un valor por defecto para:'; @@ -229,283 +413,96 @@ $_ERRORS['d906ff9d856174f452e62e5dbdb83f11'] = 'Imposible mostrar el producto de $_ERRORS['ee659eedee80f24fcff876dd3a39beed'] = 'Imposible cargar los parámetros, faltan combinaciones o el objeto no puede cargarse.'; $_ERRORS['8efa6e7b170391f3cfad56768743a030'] = 'Imposible abrir el directorio de copia de seguridad'; $_ERRORS['107b871b48c2c55155eb6849e38171c3'] = 'Imposible abrir el archivo de copia de seguridad'; +$_ERRORS['a478ec266116342449ae1705c79d5cc2'] = 'tipo de archivo desconocido'; +$_ERRORS['199ce43a3993a1f7d261c09127b9f2fa'] = 'cliente desconocido'; $_ERRORS['109715467b74bd66639faa5673f707c1'] = 'Error desconocido'; $_ERRORS['6caa562e65259532d1188b06a1147c34'] = 'El campo Url debe rellenarse al menos en el idioma por defecto o en inglés.'; $_ERRORS['deec1d85e431dfa0f76e48cfd764f8d5'] = 'Número de IVA desconocido'; $_ERRORS['059d29a2088bcf0b9bae76a11f3a07e3'] = 'El servicio de validación del IVA no se encuentra disponible'; $_ERRORS['a09ed6c60eb3213939cecb4c580813cd'] = 'Válido para la totalidad del catálogo'; +$_ERRORS['3e41a372995c92f9d28c3d73a45dd24b'] = 'se necesita un nombre para la característica'; +$_ERRORS['a568861476b45633c728e35a155b8121'] = 'función de validación no encontrada'; +$_ERRORS['3221017ca72a4fd2f8d083d9a2f585d2'] = 'el vale usado anteriormente no puede acumularse con otros descuentos'; +$_ERRORS['57e53d0590482b22c7810a968e35e649'] = 'vale descuento incorrecto'; $_ERRORS['de5213079199a0da311533b8654b6723'] = 'Imposible regenerar su contraseña con los datos dados'; +$_ERRORS['17b47060583191452b3d4455820673c9'] = 'Identificación errónea'; $_ERRORS['db80d36a89df4c527c779b722bb039f8'] = 'Categoría errónea'; $_ERRORS['2d926c42da8b8f9a808161df413cae5e'] = 'Feche de inicio / fin errónea'; -$_ERRORS['17b47060583191452b3d4455820673c9'] = 'Identificación errónea'; +$_ERRORS['de10fc28511b894f704c1a67fcff7b4f'] = 'ya tiene la máxima cantidad disponible para este producto'; $_ERRORS['db4c57ec9dc07e5858740dac2954afe0'] = 'Puede deshabilitar esta función en esta página'; $_ERRORS['12f9d32c39e630c928e001370285712c'] = 'Solo puede regenerar su contraseña cada'; -$_ERRORS['052800f7397d4c12924faa83534c62f0'] = 'No se puede desactivar o eliminar la cuenta del último administrador.'; $_ERRORS['2f236f9450ce8714611e468181064659'] = 'No puede cambiar el estado del idioma por defecto'; +$_ERRORS['367cff6e64cd67b345fc1e32bb9c081b'] = 'no puede crear una cuenta invitado'; $_ERRORS['f6eef841ad92e89ad56eadb17a242596'] = 'No puede suprimir un país. Si n quiere que esté disponible para los clientes, por favor, inhabilítelo.'; +$_ERRORS['ec5f6f7f65190788d12ef16ab6135009'] = 'no puede suprimir todos'; $_ERRORS['e5403f88992848e3b3f3f92bf015e8e2'] = 'No puede eliminar el grupo por defecto'; $_ERRORS['052800f7397d4c12924faa83534c62f0'] = 'No puede desactivar o suprimir la última cuenta administrador'; $_ERRORS['f5d44b60e38b28d19549bb7a107654ca'] = 'No puede suprimir su propia cuenta'; $_ERRORS['cc7fe0548f3832b01e1d4ce466b99b4c'] = 'No se puede establecer este idioma como lengua materna porque no está disponible'; +$_ERRORS['bcb79c6d8176d7b079f5db1eaf4f4579'] = 'ya no puede utilizar este vale de descuento'; +$_ERRORS['02883940f7330dcb8abf2f0abe6cb529'] = 'no puede usar este vale'; +$_ERRORS['66fd32189ae65313e153fa8711d061cc'] = 'No se ha identificado correctamente'; +$_ERRORS['ba2bfa3216ea97ec1e454239610d089a'] = 'no tiene acceso a esta categoría'; +$_ERRORS['a5df8bfce318a15ea55f18082b9b56c0'] = 'no tiene acceso a este producto'; $_ERRORS['81349d7b857695302c8a17e4382c5032'] = 'No tiene permiso para'; -$_ERRORS['68f608519f1015caf55d76b1d571a58b'] = 'No tiene autorización para añadir nada aquí'; $_ERRORS['68f608519f1015caf55d76b1d571a58b'] = 'No tiene autorización para añadir aquí'; -$_ERRORS['03596501a6ce61f5a66dc0146fbab03e'] = 'No tiene permiso para borrar nada aquí'; $_ERRORS['03596501a6ce61f5a66dc0146fbab03e'] = 'No tiene autorización para borrar aquí'; -$_ERRORS['2406c65c7d678cfca3aad1233c50283a'] = 'No tiene autorización para editar nada aquí'; -$_ERRORS['2406c65c7d678cfca3aad1233c50283a'] = 'No tiene permiso para editar aquí'; $_ERRORS['2406c65c7d678cfca3aad1233c50283a'] = 'No tiene permiso para editar nada aquí'; $_ERRORS['c111be82444b7eed2d979636db454ce9'] = 'No tiene permiso para acceder aquí'; $_ERRORS['47333d045283f5001e24238995bd4d76'] = 'No ha seleccionado las tablas'; $_ERRORS['e16d739521610f6bcae4a092380e8370'] = 'Ha alcanzado el número máximo de descargas autorizado.'; -$_ERRORS['66fd32189ae65313e153fa8711d061cc'] = 'No se ha identificado correctamente'; +$_ERRORS['27ac5352d430b82c99157e2dc13a96e3'] = 'ha seleccionado un estado para un país que no tiene estados'; $_ERRORS['b5e7cc688920a94a5ec3c5bdd0144bef'] = 'Debe aceptar las condiciones generales de venta'; -$_ERRORS['577c8acd6847e0a8fc64911123f2ec1f'] = 'Debe definir al menos un servidor SMTP y un puerto SMTP. Si no los conoce utilice la función email.'; -$_ERRORS['d14e88e2344c5dba06dad332a7f74726'] = 'Debe elegir un transportista'; -$_ERRORS['39916f579f264041641c122e68e545d5'] = 'Debe indicar al menos un número de teléfono'; -$_ERRORS['ae0e822b6fad0de61c231ef188997e92'] = 'Se necesita un producto para borrar una alerta'; +$_ERRORS['a6bff806eca0f27ddc2118218517e690'] = 'debe añadir'; +$_ERRORS['251db6b140bc5b3adcbe0c5efadb3c7d'] = 'debe añadir al menos un atributo'; $_ERRORS['0d15d3afa8c174934ff0e43ce3b99bd3'] = 'Debe identificarse para administrar sus alertas'; $_ERRORS['16a23698e7cf5188ce1c07df74298076'] = 'Debe identificarse para administrar su lista de deseos.'; -$_ERRORS['3ad0eb10b0de3e0a4720c88034944d78'] = 'Necesita elegir al menos un atributo'; -$_ERRORS['b0ffc4925401f6f4edb038f5ca954937'] = 'Debe identificarse'; -$_ERRORS['5a05003a54c39aba291858c3e45d0de0'] = 'Debe especificar una divisa para este vale descuento'; -$_ERRORS['c7cd7ecd5b19e01f74cad32af30c9ac4'] = 'Debe tener por lo menos un empleado en el grupo de administradores.'; -$_ERRORS['cec4bc8f225e9d54b6674a56e57f0aa2'] = 'En algunos segundos lo enviaremos de nuevo a su carrito'; -$_ERRORS['413744b7b47ee60e054c5a5309a2d62f'] = 'No tiene autorización para validar el pedido por razones de seguridad.'; -$_ERRORS['e97135dccb96dc5aa7cf4f97bc06a36d'] = 'Su cuenta no está autorizada.'; -$_ERRORS['6a2c60a8e4aa4da5cc4a041111325aed'] = 'Su código postal es incorrecto'; -$_ERRORS['702f5592024f4a807d5bd1b145c93300'] = '\'desde:\' formato de fecha no válido(aaaa-mm-dd)'; -$_ERRORS['2a0fad646bb2694202cbd53ce9dcf3f8'] = '\'hasta:\' formato de fecha válido(aaaa-mm-dd)'; -$_ERRORS['08de2fdaabcd120b8ca1388d21179921'] = 'acceso denegado'; -$_ERRORS['4ee13cb828cde6949c31c24478a6069b'] = 'ya existe una cuenta para este email'; -$_ERRORS['c40e77fb4435d6520a59d8778c771b74'] = 'Ya existe una cuenta con esta dirección email, por favor indique el campo contraseña o solicite una nueva'; -$_ERRORS['86de674d7405670db52e79ec1665b0b1'] = 'una dirección situada en un país que tiene estados/ porvincias debe tener un estado /provincia seleccionadornrn'; -$_ERRORS['d8f4f69d48a199f1c406d3e821b7828a'] = 'se ha producido un error antes de enviar el mensaje'; -$_ERRORS['bc33aa1314e7dcd3472db72472b909b2'] = 'se ha producido un error al borrar'; -$_ERRORS['8eccd648c123a09bcf8520fea052861d'] = 'se ha producido un error mientras se eliminaba el producto'; -$_ERRORS['200cb26c2479e770241b1c62ccfb8e08'] = 'se ha producido un error mientras se eliminaba la personalización del producto'; -$_ERRORS['472266472e3353d32d8a8ffa25c60154'] = 'se ha producido un error mientras se borraba la imagen'; -$_ERRORS['7f2673e88a2cf04ce4e559cdf1b30277'] = 'se ha producido un error mientras se borraba la imagen'; -$_ERRORS['126cda4380a615cc5b6a1ec82a0279a9'] = 'se ha producido un error al cambiar su contraseña '; -$_ERRORS['b75af4f9852325bd359a42c6934628f7'] = 'se ha producido un error mientras se agragaban productos al pack'; -$_ERRORS['0c58058923630a64ce3f415a07cbb00d'] = 'se ha producido un error mientras se añadían tags'; -$_ERRORS['ae831e16712dd5e3b49c1f10c1d4f3c0'] = 'se ha producido un error durante el cambio de estado o no se pudo enviar el email al cliente'; -$_ERRORS['46322d321a112dd4b0e506bbe2a6ae63'] = 'se ha producido un error durante la copia hacia la carpeta de los módulos'; -$_ERRORS['e96841b0cb2396574006c1e17a45abec'] = 'Se ha producido un error al copiar las imágenes'; -$_ERRORS['92e7a89759bc4c89fd49c01ccc40ac0a'] = 'se ha producido un error al copiar las imágenes'; -$_ERRORS['4394d1d8b46b1bda301906799facabfb'] = 'se ha producido un error mientras se copiaba la imagen \"sin imagen a la carpeta de categorías'; -$_ERRORS['710baf79c732eeca4b84da42231149db'] = 'se ha producido un error mientras se copiaba la imagen \"sin imagen a la carpeta de fabricantes'; -$_ERRORS['f91076c86d5b061f8de6510676a80842'] = 'se ha producido un error mientras se copiaba la imagen \"sin imagen a la carpeta de productos'; -$_ERRORS['ec531fd2b656df91f11e8f94b2bd2f9b'] = 'se ha producido un error mientras se creaba el archivo'; -$_ERRORS['f100c143763d1b027a3e4cb77df9d1b7'] = 'se ha producido un error mientras se creaban campos personalizados'; -$_ERRORS['2c092e2d230d9d1d6b2d68c5ef83b13c'] = 'se ha producido un error mientras se creaba el objeto'; -$_ERRORS['ab044c6afbb0298ece38b35deee72dfc'] = 'se ha producido un error al crear su cuenta'; -$_ERRORS['e92c1fa650792e8d5516b18eaea7782b'] = 'se ha producido un error al crear su email'; -$_ERRORS['733353593d8c19873e2e6a6dff659705'] = 'se ha produicido un error al suprimir la devolución del producto'; -$_ERRORS['42c7641733e2026a7baf5d94327fd340'] = 'se ha producido un error mientras se borraba el módulo del hook'; -$_ERRORS['f90676e0d2061813a868bc9d86c4d982'] = 'se ha producido un error al borrar la imagen'; -$_ERRORS['dea9b328f904f025e4031bf8dfb7b392'] = 'se ha producido un error al moven la selección'; -$_ERRORS['78fd3fe8e01d0707107ced7ade92d23d'] = 'se ha producido un error mientras se enlazaban objetos'; -$_ERRORS['03c123f62aad70a9533f5049cf3af959'] = 'se ha producido un error al enlazar esta dirección con el pedido'; -$_ERRORS['1abb803362db30f39c0f96aa96f949e5'] = 'se ha producido un error al cargar el objeto'; -$_ERRORS['bf94a83d80c2e2090d57dc51a01f6270'] = 'se ha producido un error mientras se cargaba la imagen del objeto'; -$_ERRORS['456feb8dce71d8e16be444ebd0bb2278'] = 'se ha producido un error mientras se redimensionaba la imagen'; -$_ERRORS['dff48ad0921b0f91304e11f85f50ed82'] = 'se ha producido un error mientras se cambiaba el tamaño de la imagen \"sin imagen en la carpeta de categorías'; -$_ERRORS['cf5bd273b92a22ca5ba7088301d95f5d'] = 'se ha producido un error mientras se cambiaba el tamaño de la imagen \"sin imagen en la carpeta de fabricantes'; -$_ERRORS['ac363d5ac61b17b8e77798a2af5e3d21'] = 'se ha producido un error mientras se cambiaba el tamaño de la imagen \"sin imagen en la carpeta de productos'; -$_ERRORS['ddccb08d56c9ba148a1e395c2a0901df'] = 'se ha producido un error cuando se enviaba el emeil al cliente'; -$_ERRORS['d814b0ff8722719194d0bfdf3f489a97'] = 'se ha producido un error al enviar el mensaje'; -$_ERRORS['fe40ffc8cf596487324e6b486e6b64c4'] = 'se ha producido un error mientras se copiaba el módulo al hook'; -$_ERRORS['bc435919f2e9c5fcd6b9a308d32d40cd'] = 'se ha producido un error mientras se actualizaba el cliente'; -$_ERRORS['cb46295650e6e2a53d528e353546c2a5'] = 'se ha producido un error mientras se actualizaban los parámetros de la personalización'; -$_ERRORS['cfb0a6025f8279ec130db5d2883ead88'] = 'se ha producido un error mientras se actualizaban los parámetros de la personalización de la configuración'; -$_ERRORS['1c5c687f849bde6efe2a53c9128c0b28'] = 'se ha porducido un error mientras se actualizaban las tasas (no se pudo cargar el objeto)'; -$_ERRORS['10d1c684b919604f1e5e353b274160e5'] = 'se ha producido un error mientras se subía la imagen'; -$_ERRORS['9ddf236daae81f831ccf3c0bfe9751e5'] = 'se ha producido un error mientras se actualizaba el objeto'; -$_ERRORS['d0d7be740453db2f5974fdbb9dc35b61'] = 'se ha producido un error mientras se actualizaba la cantidad'; -$_ERRORS['63a3342bcb133c141890746783007eaa'] = 'se ha producido un error mientras se actualizaba el estado'; -$_ERRORS['cc7e699f0084632117f35dc294d29f16'] = 'se ha producido un error mientras se actualizaba el estado del objeto'; -$_ERRORS['6b9041eb853a3cf9b47f13f53b70f51a'] = 'se ha producido un error durante la actualización de la dirección'; -$_ERRORS['700c53d8cec1b1e9cf6c247944126166'] = 'se ha producido un error durante la actualización de su carrito'; -$_ERRORS['5636dd80d3968f9b1ce4400bd71c5a7a'] = 'se ha producido un error al subir la imagen'; -$_ERRORS['26e6e2aef679da0451f05fb535ac40d7'] = 'se ha producido un error durante el envío del archivo'; -$_ERRORS['420530ab27ece9fef8cc0b6835e65d31'] = 'se ha producido un error, su mensaje no se ha enviado, contacte con su administrador sistema por favor'; -$_ERRORS['179bdae10ca983dd1cf9cd1a4bf4f20a'] = 'El archivo no se puede descargar a partir de PrestaShop.com'; -$_ERRORS['44205a67121fcca5ffa925d1ed77b65e'] = 'el archivo no puede extraerse'; -$_ERRORS['9072e6a7f1693ef1fb211f2f6dc56d02'] = 'atirbuto de precio necesario'; -$_ERRORS['d4e6d6c42bf3eb807b8778255a4ce415'] = 'autenticación errónea '; -$_ERRORS['c8e61b851c4a858374ad46b1171b16ec'] = 'no se puede acceder al fichero de configuración'; -$_ERRORS['3d35aa7e75c2f7467f45b4fa1c8bf8a9'] = 'no se puede añadir imagen porque el producto no está añadido'; -$_ERRORS['18ed633d86ed8181bded16b1876a3b5a'] = 'no se puede añadir este producto ya que el vale no autoriza descuentos adicionales'; -$_ERRORS['a10355b14c8fd0613fe244471fde55d7'] = 'no se pueden usar vales de descuento si es gratis'; -$_ERRORS['cf325676512d19d8150c0244327926df'] = 'No se puede copiar'; -$_ERRORS['f783b48ba9193ecd51ea751e5a660d05'] = 'No se puede guardar'; -$_ERRORS['7098d49878bbd102b13038a748125e27'] = 'imposible suprimir esta lista de deseos'; -$_ERRORS['82f5cfff9540e141216195b59dddd594'] = 'no se puede encontrar el pedido'; -$_ERRORS['2e137a3c6a2d7fe7ddefedcf88b00b2e'] = 'no se puede encontrar este pedido'; -$_ERRORS['e6dd0a104290b74d3a75ea4debf7209c'] = 'no se puede encontrar la identificación de devolución del pedido'; -$_ERRORS['755b1a1425434ccaece6d0c1306041be'] = 'no se puede cargar el objeto'; -$_ERRORS['d9d6b43c4f9a63d35aa7b382be2a21ae'] = 'no se puede enviar un email'; -$_ERRORS['708d2bfb476ba46221602d549f0e7a4d'] = 'la categoría ID no existe'; -$_ERRORS['3862efce9647cdbdb704436703a7863a'] = 'Imposible mover la categoría aquí'; -$_ERRORS['07769d17f9ccd3b90a8d5cb54a5c5609'] = 'la categoría no existe'; -$_ERRORS['70f4b635847038d056e33959821a7a66'] = 'caracteres máximos'; -$_ERRORS['1d112c010ef14e32e478b36aca8d3414'] = 'config.xml en su carpeta de tema no es un archivo xml válido'; -$_ERRORS['e0d4da0607fb1793b6e1d348c36d52cb'] = 'Falta config.xml en el archivo de su tema'; -$_ERRORS['6364b8f0fcf00c1fedb76a7a7b7ad03e'] = 'No se ha creado el archivo config.xml del tema para esta versión de PrestaShop'; -$_ERRORS['e6b214cab4477a7bd120bc996f06734c'] = 'el cliente debe estar al menos en un grupo'; -$_ERRORS['28ca4ab8455ffa19e6f0577aefa9f1c9'] = 'cliente no encontrado'; -$_ERRORS['2d23b982e03f3e2ff37a0833033fb8bd'] = 'fecha especificada no válida'; -$_ERRORS['56ed19a8b705ff0da23d026ebce133b5'] = 'se debe marcar el grupo por defecto del cliente'; -$_ERRORS['5a0d4dfcb49e88c4c62d91e3e66daef5'] = 'descripción: longitud > a 400 por idioma'; -$_ERRORS['6c54cd18100e48c389b901d9f4ea68dc'] = 'no existe en base'; -$_ERRORS['637976ed39a990f58f8a3650eac0ff08'] = 'el email es obligatorio'; -$_ERRORS['f0dc0fa07b13965fe5a95fa37166c4e7'] = 'el email está vacío'; -$_ERRORS['5c45af89733d6bfc7b11d818a21b656d'] = 'editar algo aquí'; -$_ERRORS['176780e430fd1917c37223ceabf05bf8'] = 'el empleado no existe o la contraseña es errónea'; -$_ERRORS['84efcaf0f7505b66ffa58affc581d9a6'] = 'se ha producido un error al enviar el email'; -$_ERRORS['45b265ac5c8263b366d29cdd5d63b187'] = 'se ha producido un error al actualizar el carrito'; -$_ERRORS['c200140aea36e1efbf655fabf3f3b59e'] = 'error al crear imagen adicional'; -$_ERRORS['1a80f28eca93f30e2e333b6432890c10'] = 'se ha producido un error al extraer el módulo (puede tratarse un un fichero corrupto)'; -$_ERRORS['1391c1ff3846b38862bbfc43938b8270'] = 'error al subir la imagen; cambie la configuración del servidor'; -$_ERRORS['c791e58067fc99ef9fdb95bace661815'] = 'el error con su cuenta y su nueva contraseña no se puede enviar a su email, avísenos utilizando el formulario de contacto'; -$_ERRORS['06e3d36fa30cea095545139854ad1fb9'] = 'campo'; -$_ERRORS['1cd6f2b0848e672cb987e15e0598a144'] = 'por idioma'; -$_ERRORS['1b073c8ca6b9aabf07935221e17b7c42'] = 'la lista de parámetros no es válida'; -$_ERRORS['0c01b89a049f95e9eb10cfeb2a2901f0'] = 'el hook no puede cargarse'; -$_ERRORS['2c5a3ea86d2f2f29d953d1a3d034a417'] = 'número de identificación incorrecto o ya utilizado'; -$_ERRORS['c4ae3afc5d4c01919142f8b39cc5c1c5'] = 'formato de imagen no reconocida; use los formatos: gif, .jpg, .png'; -$_ERRORS['2ab146a83f61d2896a472f52f353b321'] = 'formato de imagen no reconocida, use el formato: .ico'; -$_ERRORS['b417662bce6671781c5285afe872056a'] = 'imagen demasiado grande'; -$_ERRORS['660785e5dba40753e78220c416e70513'] = 'imagen de archivo. Por favor, compruebe las autorizaciones de escritura en el archivo'; -$_ERRORS['1dc171c83c2ba64a6a311a8a011339ee'] = 'imposible borrar el atributo'; -$_ERRORS['1fc1a89592aae3815ddb10a44762cac3'] = 'imposible borrar los atributos'; -$_ERRORS['2194e5264b4e11db918b9d1d428ab68f'] = 'imposible incluir atributos por defecto'; -$_ERRORS['beab08f29e61dd1802f7fcd23b41931d'] = 'imposible actualizar la información'; -$_ERRORS['13b5bfe96f3e2fe411c9f66f4a582adf'] = 'en'; -$_ERRORS['f9c7939a8397ee022fefee2bdb3407af'] = 'URL incorrecta'; -$_ERRORS['918eafd2a5ffd2824a394ce7bf1c4df4'] = 'fecha de nacimiento incorrecta'; -$_ERRORS['8fcbbf39880091c7fdc5a2658d7c8b9f'] = 'empresa de transporte incorrecta o no válida'; -$_ERRORS['a902b4022653cd6f6d874bf596c811b8'] = 'cliente no válido'; -$_ERRORS['6e659c47c94d1e1dc7121859f43fb2b0'] = 'dirección email no válida'; -$_ERRORS['99099c3c11a7638335f047fd4199c9fa'] = 'mensaje de regalo no válido'; -$_ERRORS['dd6b089a49908d671c3e9cc8dc5899ae'] = 'mensaje incorrecto'; -$_ERRORS['996a45aa702d041706f6388d54c53b12'] = 'pedido no válido'; -$_ERRORS['cba0b206627d45fbf0ae707e20d4a38f'] = 'contraseña incorrecta'; -$_ERRORS['84b743161b37970484b524af38ef588a'] = 'rango incorrecto'; -$_ERRORS['a328aae6eaecda76cb31c7347cb926f6'] = 'ID de grupo de regla fiscal no válido, necesita un grupo con este ID'; -$_ERRORS['607e1d854783c8229998ac2b5b6923d3'] = 'ficha no válida'; -$_ERRORS['f5d5ae2070effc7b3eee52adc882bb6b'] = 'factura no encontrada'; -$_ERRORS['6b9cc232bf4044274ec42062b60736fb'] = 'las facturas están desactivadas en esta tienda'; -$_ERRORS['2dd3ed3563a4e175ad6f9c20ca5173af'] = 'está depreciado y se suprimirá en la próxima versión'; -$_ERRORS['edc25f8d24586711fa2282b1b93b1f83'] = 'vacío para el idioma por defecto'; -$_ERRORS['8ae0cb74f9724518e1ce68c503377002'] = 'es incorrecto'; -$_ERRORS['ee66f9c9930cb33d2a5dde9b240d3f7e'] = 'es necesario'; -$_ERRORS['07e7c062b3c2cba35ce57885454c0f8d'] = 'es necesario en el pedido para validarlo'; -$_ERRORS['4e377ef9ed6efd76fbf2441eb124862f'] = 'es demasiado largo'; -$_ERRORS['1555da21cb82e9f383dd1fd5aebf32a7'] = 'es demasiado largo'; -$_ERRORS['e389fb6a0b1d8aba957ef5bd33929e86'] = 'etiqueta de campos no válida'; -$_ERRORS['6cf73576720519e739771a4fa489410b'] = 'no se encuentra el idioma'; -$_ERRORS['ba2a9c6c8c77e03f83ef8bf543612275'] = 'longitud >'; -$_ERRORS['4803e6b9e63dabf04de980788d6a13c4'] = 'línea'; -$_ERRORS['b75318064af89cff0f4d413341cc3833'] = 'ese fabricante no existe'; -$_ERRORS['00522631569606c5dcb3cd8e23f79b90'] = 'fabricante seleccionado no válido'; -$_ERRORS['bfbc475ebfb3b560ee71e24a9e621109'] = 'longitud máxima:'; -$_ERRORS['f3c983bbd9fc0f3abb77f93b5e3c3383'] = 'mcrypt no está activado en el servidor'; -$_ERRORS['f55cdaa9ea87c6ebeeb7b4acf31635af'] = 'el mensaje no puede estar vacío'; -$_ERRORS['7ca482310b2e993b9ab1a74d1d4e1582'] = 'el mensaje no es válido (HTML no autorizado)'; -$_ERRORS['ff30d300e1e8810211e29bb092decdf1'] = 'minuto(s)'; -$_ERRORS['c07d1d742561121e6abd49450947c187'] = 'El módulo no se puede cargar'; -$_ERRORS['1f1ea9a83dab5b3fc4d3be37fc7fc771'] = 'debe fijarse'; -$_ERRORS['a9b036d3e91d53892d6a67c31327e456'] = 'debe poseer los derechos de escritura'; -$_ERRORS['412e78628d9b033b54bb0e387e6e40f3'] = 'nombre para característica'; -$_ERRORS['4b198aa15f6cc8f56488d924b18fa888'] = 'ningún carrito encontrado con este ID:'; -$_ERRORS['c2492c52caab207d21da2c0decd8a405'] = 'elementos no encontrados'; -$_ERRORS['f787618e514c038851726224d7e4421e'] = 'fichero no seleccionado'; -$_ERRORS['1b599bf89c1bf4f8640ef31f3acb9f40'] = 'archivo no especificado'; -$_ERRORS['0e63e5844a0255aeb0cee434263552ae'] = 'ninguna factura encontrada con este ID:'; -$_ERRORS['f59b67acbc1ca8ecad71a742f5e43b09'] = 'Ningún pedido encontrado con este ID:'; -$_ERRORS['083d9cdf06cdc52892e3bbf7ff5494b6'] = 'No Id de la devolución del pedido'; -$_ERRORS['25723bba0086a38394001a8ca41e9126'] = 'valores no válidos para excepciones del campo'; -$_ERRORS['32b361bc532ac43976956d37c0d5fc1c'] = 'no hay zona que corresponda a su dirección'; -$_ERRORS['378f2b22734553a38505b1f8f0d48ccb'] = 'cantidad nula'; -$_ERRORS['9211c38458f969f18498096a400a2214'] = 'el objeto no puede cargarse'; -$_ERRORS['5ca4012f9738274ebeb214a961f1c829'] = 'el objeto no puede cargarse (no hay login o no es válido)'; -$_ERRORS['56b207f28525081cec398738b3d25225'] = 'el objeto no puede cargarse (no se encuentra)'; -$_ERRORS['e074201be2c2605dbd174d84cb556ce8'] = 'la ID del pedido es desconocida'; -$_ERRORS['86eb7a8a11e8d60cc214c71970f11c11'] = 'ID de pedido necesaria'; -$_ERRORS['0b85d79bd7e582c805ec82e3b7f6293e'] = 'el pedido no es válido actualmente'; -$_ERRORS['24909e87dc242b9dd539e10609b8b050'] = 'pedido no encontrado'; -$_ERRORS['a9b3e2b8011bb175d3b1bcd318584080'] = 'devolución de pedido no confirmada'; -$_ERRORS['891f03e0e989696eb5e499ce5bbfe277'] = 'devolución de pedido no encontrada'; -$_ERRORS['55124c4465a9478df5fd59ff3017433a'] = 'la contraseña y la confirmación no coinciden'; -$_ERRORS['986641245e5ef77f951298aa30a5616f'] = 'la contraseña está vacía'; -$_ERRORS['47be05698f8dd87bb445ceefce6abd0d'] = 'la contraseña es obligatoria'; -$_ERRORS['e09f0eb3c67b7504a545899ebc961542'] = 'contraseña demasiado larga'; -$_ERRORS['4b9fa5f1ff63eb63f4f42277ce26f17c'] = 'por favor, elija un idioma y un tema'; -$_ERRORS['6310db462253eb49efa3709d8591defc'] = 'por favor, rellene el campo de búsqueda'; -$_ERRORS['a09c2526d0dffdc36787664f45dd9d8d'] = 'por favor, seleccione un tema en la lista'; -$_ERRORS['f996dce5bdfb1b1094e41cf996c5fdae'] = 'por favor, especifique la URL del módulo'; -$_ERRORS['27e12c3c443d7165ab71cd376a3b3f10'] = 'introduzca su código postal'; -$_ERRORS['3221017ca72a4fd2f8d083d9a2f585d2'] = 'el vale usado anteriormente no puede acumularse con otros descuentos'; -$_ERRORS['350bf1d858bae55fa9c344b39ea9afcd'] = 'no se puede cargar el producto'; -$_ERRORS['c22042ba6792cfe142bf63f5a8c50ae8'] = 'producto no disponible actualmente'; -$_ERRORS['fe22b7cb2de47c8eafec2ad82fada9dd'] = 'Debe crearse el producto antes de añadir posibilidades de personalización'; -$_ERRORS['96a2d573cabb2e5b3d6164140d28e8da'] = 'debe crearse el producto antes de añadir características'; -$_ERRORS['dfbe69c6d9568ecb0e65e7b32ed92a3a'] = 'producto no encontrado'; -$_ERRORS['1b72aed8e84b91d73896efd48cf1a4e0'] = 'Cantidad mínima'; -$_ERRORS['8f18cd66e999d9695f53141a15b47292'] = 'valor de la reducción no es válido'; -$_ERRORS['c3f365ea3ae0b35b814493fc72ff0458'] = 'el proveedor no existe'; -$_ERRORS['1b921ec32b4bac52d8801f4e196f79c6'] = 'la imagen de la bandera y de la no-imagen son necesarias'; -$_ERRORS['418e2586ee498c46f6375e9a0008517c'] = 'el detalle del pedido devuelto no es válido'; -$_ERRORS['e7a58e52e848f513c3e9185d34d61a50'] = 'la devolución del pedido no es válida'; -$_ERRORS['deccf4daff483f5f31a2e19482f56d32'] = 'el importe total de su pedido no es suficiente o su vale no puede utilizarse con estos productos'; -$_ERRORS['3c9a4f1e91ee7bb51c29bdc9362077fe'] = 'no hay ninguna cuenta registrada con este email'; -$_ERRORS['2e857abc0ea5d7f97522254ca00c18bb'] = 'no hay suficiente producto en stock'; -$_ERRORS['59382adebc7f0d65c42fe773d443e4c7'] = 'el código ISO ya exite en otro idioma'; -$_ERRORS['4649093d4d10aa95a212636f146c47fd'] = 'esa cuenta no existe'; -$_ERRORS['a56b6c43645970e79a8098df1dfc9746'] = 'esa dirección no puede ser borrada'; -$_ERRORS['baafbb73bdf562b2dcbd2c4b807f758e'] = 'esa dirección no se encuentra en una zona válida'; -$_ERRORS['08b2765dc6c449c903f8b30ac7e55f91'] = 'esta dirección no es válida'; -$_ERRORS['044ef92a14ceaaba24382a72ca0267ae'] = 'este país requiere la selección de un Estado'; -$_ERRORS['350e5d76b60ae887c90d55e2fb23fdc5'] = 'Este descuento no es aplicable a esa categoría de producto'; -$_ERRORS['f8279a73d35437427d4c77e28828c5fc'] = 'este email no está registrado'; -$_ERRORS['aa508f3bd17074b8941571083de1350e'] = 'este módulo ya está copiado en este hook'; -$_ERRORS['e8be55bf3a30501aef09d2e74de97976'] = 'este nombre ya existe'; -$_ERRORS['b74c118d823d908d653cfbf1c877ae55'] = 'esta nombre ya está utilizado por otra lista'; -$_ERRORS['7df7cede74e46f3db6b15097bc0def56'] = 'este vale de descuento sólo puede utilizarse en esta divisa:'; -$_ERRORS['f31c6bd22c7b96ca912b03f72ba9da24'] = 'este vale de descuento ya fue utilizado o está desactivado'; -$_ERRORS['e9d528fd77aaf898ebb763f124a1fd1d'] = 'este vale de descuento ha caducado'; -$_ERRORS['be0caf91a9818eb72c4b365ac169fba8'] = 'este vale de descuento ha caducado (fecha de utilización sobrepasada)'; -$_ERRORS['d0f1560c5d1b13b1e64fa87a301dd83b'] = 'este vale de descuento ya está usado en su carrito'; -$_ERRORS['596c0b7077b7a2619c64c8c3c40142b9'] = 'este vale de descuento ya no es válido'; -$_ERRORS['5f42bae6298b1656297e184ecd359f22'] = 'este vale no puede acumularse con otros productos en descuento o marcados en ventas'; -$_ERRORS['bc9679730b07cd7d0e813dab08efd415'] = 'este vale de descuento no puede acumularse con otros vales'; -$_ERRORS['546212fa1d2694600b976add6bf722f7'] = 'hasta categorías'; -$_ERRORS['1b41b4dbfa03ca395fd87cc19b3d06b3'] = 'intente abrir una sesión si la tiene'; -$_ERRORS['a478ec266116342449ae1705c79d5cc2'] = 'tipo de archivo desconocido'; -$_ERRORS['199ce43a3993a1f7d261c09127b9f2fa'] = 'cliente desconocido'; -$_ERRORS['3e41a372995c92f9d28c3d73a45dd24b'] = 'se necesita un nombre para la característica'; -$_ERRORS['a568861476b45633c728e35a155b8121'] = 'función de validación no encontrada'; -$_ERRORS['57e53d0590482b22c7810a968e35e649'] = 'vale descuento incorrecto'; -$_ERRORS['db5bf82f326c6332a2c3dc1b0dd4598e'] = 'se reescribió como'; -$_ERRORS['de10fc28511b894f704c1a67fcff7b4f'] = 'ya tiene la máxima cantidad disponible para este producto'; -$_ERRORS['367cff6e64cd67b345fc1e32bb9c081b'] = 'no puede crear una cuenta invitado'; -$_ERRORS['ec5f6f7f65190788d12ef16ab6135009'] = 'no puede suprimir todos'; -$_ERRORS['02883940f7330dcb8abf2f0abe6cb529'] = 'no puede usar este vale'; -$_ERRORS['bcb79c6d8176d7b079f5db1eaf4f4579'] = 'ya no puede utilizar este vale de descuento'; -$_ERRORS['ba2bfa3216ea97ec1e454239610d089a'] = 'no tiene acceso a esta categoría'; -$_ERRORS['a5df8bfce318a15ea55f18082b9b56c0'] = 'no tiene acceso a este producto'; -$_ERRORS['27ac5352d430b82c99157e2dc13a96e3'] = 'ha seleccionado un estado para un país que no tiene estados'; -$_ERRORS['251db6b140bc5b3adcbe0c5efadb3c7d'] = 'debe añadir al menos un atributo'; +$_ERRORS['d14e88e2344c5dba06dad332a7f74726'] = 'Debe elegir un transportista'; $_ERRORS['58ac247e63d629fd85e0376c1c42d783'] = 'debe elegir un tema'; +$_ERRORS['577c8acd6847e0a8fc64911123f2ec1f'] = 'Debe definir al menos un servidor SMTP y un puerto SMTP. Si no los conoce utilice la función email.'; +$_ERRORS['ae0e822b6fad0de61c231ef188997e92'] = 'Se necesita un producto para borrar una alerta'; +$_ERRORS['b0ffc4925401f6f4edb038f5ca954937'] = 'Debe identificarse'; +$_ERRORS['39916f579f264041641c122e68e545d5'] = 'Debe indicar al menos un número de teléfono'; $_ERRORS['ddd4e7f16c2032d59cb4fb4b86576bc5'] = 'debe seleccionar al menos un elemento para borrar'; $_ERRORS['9a1b45494c0c551941b71b67c5c01d3e'] = 'debe seleccionar al menos un grupo'; $_ERRORS['b30545c7b2d429352b9afdd85be810c7'] = 'debe especificar un nombre'; $_ERRORS['b1367942aa02ea8c9d4aa07cdf5e473c'] = 'necesita al menos un objeto'; $_ERRORS['d4430672c8b3c123ae5f4c2f4b5b458d'] = 'se necesita al menos un producto'; -$_ERRORS['a6bff806eca0f27ddc2118218517e690'] = 'debe añadir'; +$_ERRORS['c7cd7ecd5b19e01f74cad32af30c9ac4'] = 'Debe tener por lo menos un empleado en el grupo de administradores.'; +$_ERRORS['cec4bc8f225e9d54b6674a56e57f0aa2'] = 'En algunos segundos lo enviaremos de nuevo a su carrito'; +$_ERRORS['413744b7b47ee60e054c5a5309a2d62f'] = 'No tiene autorización para validar el pedido por razones de seguridad.'; +$_ERRORS['e97135dccb96dc5aa7cf4f97bc06a36d'] = 'Su cuenta no está autorizada.'; $_ERRORS['0f41d0742e01e4f68e506d9526916ca9'] = 'Su actual contraseña no corresponde con la actual'; +$_ERRORS['6a2c60a8e4aa4da5cc4a041111325aed'] = 'Su código postal es incorrecto'; $_ERRORS['e10ed1f81b51bd4c7f86eeb84bcd1359'] = 'zip no está instalado en su servidor. Solicite más información a su proveedor.'; +$_ERRORS['3d825cbfa93b2c0e9ea93bbcab328fe0'] = 'Código postal'; +$_ERRORS['702f5592024f4a807d5bd1b145c93300'] = '\'desde:\' formato de fecha no válido(aaaa-mm-dd)'; +$_ERRORS['2a0fad646bb2694202cbd53ce9dcf3f8'] = '\'hasta:\' formato de fecha válido(aaaa-mm-dd)'; +$_ERRORS['179bdae10ca983dd1cf9cd1a4bf4f20a'] = 'El archivo no se puede descargar a partir de PrestaShop.com'; +$_ERRORS['70f4b635847038d056e33959821a7a66'] = 'caracteres máximos'; +$_ERRORS['e0d4da0607fb1793b6e1d348c36d52cb'] = 'Falta config.xml en el archivo de su tema'; +$_ERRORS['1d112c010ef14e32e478b36aca8d3414'] = 'config.xml en su carpeta de tema no es un archivo xml válido'; +$_ERRORS['6364b8f0fcf00c1fedb76a7a7b7ad03e'] = 'No se ha creado el archivo config.xml del tema para esta versión de PrestaShop'; +$_ERRORS['5a0d4dfcb49e88c4c62d91e3e66daef5'] = 'descripción: longitud > a 400 por idioma'; +$_ERRORS['6c54cd18100e48c389b901d9f4ea68dc'] = 'no existe en base'; +$_ERRORS['06e3d36fa30cea095545139854ad1fb9'] = 'campo'; +$_ERRORS['1cd6f2b0848e672cb987e15e0598a144'] = 'por idioma'; +$_ERRORS['1b073c8ca6b9aabf07935221e17b7c42'] = 'la lista de parámetros no es válida'; +$_ERRORS['660785e5dba40753e78220c416e70513'] = 'imagen de archivo. Por favor, compruebe las autorizaciones de escritura en el archivo'; +$_ERRORS['13b5bfe96f3e2fe411c9f66f4a582adf'] = 'en'; +$_ERRORS['2dd3ed3563a4e175ad6f9c20ca5173af'] = 'está depreciado y se suprimirá en la próxima versión'; +$_ERRORS['edc25f8d24586711fa2282b1b93b1f83'] = 'vacío para el idioma por defecto'; +$_ERRORS['8ae0cb74f9724518e1ce68c503377002'] = 'es incorrecto'; +$_ERRORS['07e7c062b3c2cba35ce57885454c0f8d'] = 'es necesario en el pedido para validarlo'; +$_ERRORS['ee66f9c9930cb33d2a5dde9b240d3f7e'] = 'es necesario'; +$_ERRORS['1555da21cb82e9f383dd1fd5aebf32a7'] = 'es demasiado largo'; +$_ERRORS['4e377ef9ed6efd76fbf2441eb124862f'] = 'es demasiado largo'; +$_ERRORS['ff30d300e1e8810211e29bb092decdf1'] = 'minuto(s)'; +$_ERRORS['c07d1d742561121e6abd49450947c187'] = 'El módulo no se puede cargar'; +$_ERRORS['1f1ea9a83dab5b3fc4d3be37fc7fc771'] = 'debe fijarse'; +$_ERRORS['a9b036d3e91d53892d6a67c31327e456'] = 'debe poseer los derechos de escritura'; +$_ERRORS['710baf79c732eeca4b84da42231149db'] = 'se ha producido un error mientras se copiaba la imagen \"sin imagen a la carpeta de fabricantes'; +$_ERRORS['412e78628d9b033b54bb0e387e6e40f3'] = 'nombre para característica'; +$_ERRORS['db5bf82f326c6332a2c3dc1b0dd4598e'] = 'se reescribió como'; ?> \ No newline at end of file diff --git a/translations/es/fields.php b/translations/es/fields.php index b2b993f8c..cc9ead31a 100644 --- a/translations/es/fields.php +++ b/translations/es/fields.php @@ -21,6 +21,7 @@ $_FIELDS['Address_f7a42fe7211f98ac7a60a285ac3a9e87'] = 'teléfono'; $_FIELDS['Address_2df2ca5cf808744c2977e4073f6b59c8'] = 'teléfono móvil'; $_FIELDS['Address_da602f0b162fccbf6b150cfcfc7a7379'] = 'borrado'; $_FIELDS['Address_d56f5e97524d5d1ad77ec197ae11dad0'] = 'dni'; +$_FIELDS['AddressFormat_1ddcb92ade31c8fbd370001f9b29a7d9'] = 'formato'; $_FIELDS['Alias_06a943c59f33a34bb5924aaf72cd2995'] = 'buscar'; $_FIELDS['Alias_724874d1be77f450a09b305fc1534afb'] = 'alias'; $_FIELDS['Alias_c76a5e84e4bdee527e274ea30c680d79'] = 'activo'; @@ -107,6 +108,7 @@ $_FIELDS['Country_0fac5b779177ce96171a0b7d6f686200'] = 'tiene_estados'; $_FIELDS['Country_1a1ca79d4710078f654cd88b3311a80a'] = 'necesita_número_identificación'; $_FIELDS['Country_1034ac1cb822c1e040fe45ffc028f38d'] = 'requiere_código_postal'; $_FIELDS['Country_37f577d6d447ff0743d74245446223b3'] = 'formato_código_postal'; +$_FIELDS['Country_514b22ce3e77a7badaf3da0c712e64d5'] = 'display_tax_label'; $_FIELDS['Country_b068931cc450442b63f5b3d276ea4297'] = 'nombre'; $_FIELDS['County_b068931cc450442b63f5b3d276ea4297'] = 'nombre'; $_FIELDS['County_c4da098c369f77a70643fa52972677be'] = 'id_estado'; @@ -507,7 +509,7 @@ $_FIELDS['TaxRule_4fa58935f89ba281fd16309ceff69571'] = 'id_impuesto'; $_FIELDS['TaxRule_4d69e396aeb3f372cbcead6c5c72c295'] = 'comportamiento_estado'; $_FIELDS['TaxRule_2784d0e1605d73000473b7fe51adfe2f'] = 'comportamiento_condado'; $_FIELDS['TaxRulesGroup_b068931cc450442b63f5b3d276ea4297'] = 'nombre'; -$_FIELDS['Webservice_c76a5e84e4bdee527e274ea30c680d79'] = 'activación'; +$_FIELDS['WebserviceKey_c76a5e84e4bdee527e274ea30c680d79'] = 'activo'; $_FIELDS['Zone_b068931cc450442b63f5b3d276ea4297'] = 'nombre'; $_FIELDS['Zone_c76a5e84e4bdee527e274ea30c680d79'] = 'activo'; diff --git a/translations/fr/admin.php b/translations/fr/admin.php index aa752170d..f08d0515b 100644 --- a/translations/fr/admin.php +++ b/translations/fr/admin.php @@ -392,11 +392,15 @@ $_LANGADM['AdminCountries93cba07454f06a4a960172bbd6e2a435'] = 'Oui'; $_LANGADM['AdminCountriesbafd7322c6e97d25b6299b5d6fe8920b'] = 'Non'; $_LANGADM['AdminCountries881e132cc7aae22327a99e24c73cbe34'] = 'Format du code postal :'; $_LANGADM['AdminCountriesf986c3dfa3c510d15d32b59e2e83e037'] = 'Code postal national (L pour une lettre, N pour un chiffre et C pour le code ISO du pays), ex: NNNNN pour la France. Pas de vérification si indéfini.'; +$_LANGADM['AdminCountriesa314046def218cebb078f190756b0a4a'] = 'Format de l\'adresse:'; +$_LANGADM['AdminCountries56786257187682b9f7b150f70bb4f06f'] = 'Reinitialiser'; +$_LANGADM['AdminCountries131c433617ff1b8049b3eb81ea350fa9'] = 'Champs possibles:'; $_LANGADM['AdminCountries24a23d787190f2c4812ff9ab11847a72'] = 'Statut :'; $_LANGADM['AdminCountriesb9f5c797ebbf55adccdd8539a65a0241'] = 'Désactivé'; $_LANGADM['AdminCountriesd42225935a374f1249f2a45ebed00772'] = 'Activé ou désactivé'; $_LANGADM['AdminCountriescef82d41923398076fb06d463541d707'] = 'Contient des états :'; $_LANGADM['AdminCountries09545da0018af8fd4d2725858aa9b26d'] = 'Requiert un numéro d\'identification fiscale ?'; +$_LANGADM['AdminCountries187dc89384a93e0bd008a5d1ec2339b6'] = 'Afficher le label de la taxe :'; $_LANGADM['AdminCountries38fb7d24e0d60a048f540ecb18e13376'] = 'Enregistrer'; $_LANGADM['AdminCountries19f823c6453c2b1ffd09cb715214813d'] = 'Champs requis'; $_LANGADM['AdminCountyb718adec73e04ce3ec720dd11a06a308'] = 'ID'; @@ -973,14 +977,6 @@ $_LANGADM['AdminHome96b0141273eabab320119c467cdcaf17'] = 'Total'; $_LANGADM['AdminHome004bf6c9a40003140292e97330236c53'] = 'Action'; $_LANGADM['AdminHome3ec365dd533ddb7ef3d1c111186ce872'] = 'Détails'; $_LANGADM['AdminHome4ff2e716a7d06ce5274b4090b39abad3'] = 'Voir'; -$_LANGADM['AdminHome0da89ee79009e87aead2eb080363b016'] = 'PrestaShop'; -$_LANGADM['AdminHomea464a23a5d761bc777e341865df58878'] = 'Découvrez le dernier guide officiel :'; -$_LANGADM['AdminHome0e38139d4dbdb2df76aea516cabe3418'] = 'Guide utilisateur PrestaShop 1.4'; -$_LANGADM['AdminHome0fc75709621519dfa4730a0da953a784'] = 'Documentation technique'; -$_LANGADM['AdminHomecee29d02d7ad25fd9176ecbc904da1dd'] = 'Participez au forum Prestashop & découvrez une communauté active'; -$_LANGADM['AdminHome900edb9167aaeeee689f86dcf6161a85'] = 'Aller à forums.prestashop.com'; -$_LANGADM['AdminHome00b15e76a26c64855d9c2f192aeca395'] = 'Améliorez votre Boutique avec de nouveaux templates & modules'; -$_LANGADM['AdminHome6ff90eb1e2b56a58dd748d793eaa1d07'] = 'Aller à addons.prestashop.com'; $_LANGADM['AdminImageResize148a7944a02795af69b75371060bdf47'] = 'Redimensionnement d\'image'; $_LANGADM['AdminImageResize69a9a68872d80d068d8bc7b85db92a79'] = 'Vous devez définir, à l\'aide de votre souris, quelle zone utiliser pour générer chacun des types de miniature.'; $_LANGADM['AdminImageResizee1b148c77b02601d08472ba7bfd274b0'] = 'Format des vignettes'; @@ -1410,6 +1406,7 @@ $_LANGADM['AdminModulesd88946b678e4c2f251d4e292e8142291'] = 'Référencement - S $_LANGADM['AdminModules8b875b0fceeb6000f40332b9e0c8df36'] = 'Transporteur & Logistique'; $_LANGADM['AdminModules5f17a788546ddb43236732f8b0bdfd7e'] = 'Diaporamas'; $_LANGADM['AdminModulesa8b87a22bdd589f5d056645941a01841'] = 'Guides d\'Achats'; +$_LANGADM['AdminModulescc50be8368055ce40af5f926b8ba5eef'] = 'Place de marché'; $_LANGADM['AdminModules222e1825c6eb93a516fba01be7861ddd'] = 'Réseaux Sociaux'; $_LANGADM['AdminModules3182ea023795eb83ed0ce3beea5beb73'] = 'Autres Modules'; $_LANGADM['AdminModules551746895fb66f979bce758992475bfc'] = 'aucun fichier selectionné'; @@ -2818,6 +2815,7 @@ $_LANGADM['AdminTranslationsd946d62db22cb9f9323968f8aac95e3f'] = 'E-mails pour l $_LANGADM['AdminTranslations25b5edb5545ada0f1b14e96fa8cd8743'] = 'E-mails des Thèmes :'; $_LANGADM['AdminTranslations46e89640babbc6a0e52599a92a6c13b4'] = 'e-mails'; $_LANGADM['AdminTranslations5ded3a65f6bb72028722f9d904ffb3cc'] = 'E-mails des modules dans le thème :'; +$_LANGADM['AdminTranslations338ff312cb917883ec15e66638f5e05f'] = 'Traduction du sujet du mail non trouvé dans'; $_LANGADM['AdminTranslations8520f9009d0bf191644cdd52e3a5f329'] = 'Impossible d\'écrire le fichier de langue pour les objets de mails, le chemin d\'accès est :'; $_LANGADM['AdminTranslations8a09d048735283dbc609ba0f9f705ed1'] = 'Traductions des modules'; $_LANGADM['AdminTranslations52d83d7ed502b33d300a8c0af2c5b455'] = 'Liste des themes - Cliquez pour accéder aux traductions du thème:'; @@ -2890,7 +2888,7 @@ $_LANGADM['AdminTabb85b9d2e7e1153bd3d5a4bb0f57d347b'] = 'Duplication réussie'; $_LANGADM['AdminTab4402aa7e384266cd7d0350c1cc9a0123'] = 'Traduction ajoutée avec succés mais la langue n\'a pu être créée'; $_LANGADM['AdminTab2aa80a00e1c76b0c14ef567e0e322a0e'] = 'Module réinitialisé avec succès'; $_LANGADM['AdminTab40606a2d55f7c33c732f1d3c1b5b1e66'] = 'Module supprimé avec succès'; -$_LANGADM['AdminTab9c2b5aa34cafb3efe958e0a712e0efda'] = 'Pack de configuration importé avec succès'; +$_LANGADM['AdminTab0c6992101fe78e4f1ae3f391c485de29'] = 'Pack de localisation importé avec succès'; $_LANGADM['AdminTabd4fecde5ac83b59cc690fd4d26d79abe'] = 'Remboursement effectué'; $_LANGADM['AdminTab0557fa923dcee4d0f86b1409f5c2167f'] = 'Retour'; $_LANGADM['AdminTab630f6dc397fe74e52d5189e2c80f282b'] = 'Retour à la liste'; @@ -2957,8 +2955,11 @@ $_LANGADM['index8642a2f37a5d42b54ce53b1fbdd1583f'] = 'paniers'; $_LANGADM['index13348442cc6a27032d2b4aa28b75a5d3'] = 'Recherche'; $_LANGADM['index4f32a32dea642737580dd71cdfd8d3c0'] = 'Accès rapide'; $_LANGADM['index53cd939ae14e33855274e17a3c411fdd'] = 'Pour des raisons de sécurité, vous devez :'; -$_LANGADM['index362b56674d07160fab60725a927bbf13'] = 'supprimer le dossier /install'; +$_LANGADM['index362b56674d07160fab60725a927bbf13'] = 'supprimé le dossier /install'; $_LANGADM['index7286baef44d09300636a4b99c533523c'] = 'Temps de chargement :'; +$_LANGADM['indexbbaff12800505b22a853e8b7f4eb6a22'] = 'Contact'; +$_LANGADM['index3e937d04c1c83492260a33d926ca587c'] = 'Bug Tracker'; +$_LANGADM['indexe6a7f8a2f42cc35979973da8dfb10720'] = 'Forum'; $_LANGADM['indexeed2839c1e3e5f7069ed03b2f6d4c6dd'] = 'Panneau d\'administration'; $_LANGADM['indexdb26e10564e958809d798e8048fcbc0a'] = 'Clé de sécurité invalide'; $_LANGADM['indexa4da6f31ab268a5310bc475e63ab92db'] = 'Je comprends les risques et je veux afficher la page'; diff --git a/translations/fr/errors.php b/translations/fr/errors.php index ca013c84e..673a93888 100644 --- a/translations/fr/errors.php +++ b/translations/fr/errors.php @@ -92,6 +92,7 @@ $_ERRORS['b9c1228a8e8c3412befae5d854508114'] = 'Une commande a déjà été pass $_ERRORS['b046e4164fe05012960e96896b7b0c34'] = 'L\'archive ne peut pas pas être téléchargée sur prestashop.com'; $_ERRORS['44205a67121fcca5ffa925d1ed77b65e'] = 'l\'archive ne peut être extraite'; $_ERRORS['db7a282fcab155c89c9324ff799d8140'] = 'Assignez une page cms de conditions générales de vente si vous voulez qu\'elle soit lue'; +$_ERRORS['f94e94bb4c446057b120c97904b89a09'] = 'Nom de la pièce jointe requis'; $_ERRORS['9072e6a7f1693ef1fb211f2f6dc56d02'] = 'prix requis pour l\'attribut'; $_ERRORS['d4e6d6c42bf3eb807b8778255a4ce415'] = 'échec lors de l\'authentification'; $_ERRORS['6262d9cbf1b6649b8a9433a0fa2db8e0'] = 'Le dossier de backup n\'existe pas'; @@ -119,11 +120,13 @@ $_ERRORS['e6dd0a104290b74d3a75ea4debf7209c'] = 'impossible de trouver le bon de $_ERRORS['dd4d1297d25682ad76576b1fcf4c61ee'] = 'Impossible de générer un avoir'; $_ERRORS['ff58a216e0c3ac9c33b0aa035a161dd8'] = 'Impossible de générer un bon de réduction'; $_ERRORS['e325f16a2ee86d0c775898dec73af2d1'] = 'Impossible d\'installer le module'; +$_ERRORS['b06ce341f078da6f2e891c64a9fa72d1'] = 'Impossible de charger le pack de localisation (à partir de prestashop.com et de votre dossier \"localization\" local)'; $_ERRORS['17e7c6636cffbefd820d9556e18c370a'] = 'Impossible de charger l\'objet module'; $_ERRORS['755b1a1425434ccaece6d0c1306041be'] = 'chargement impossible de l\'objet'; $_ERRORS['2194e5264b4e11db918b9d1d428ab68f'] = 'impossible de créer les attributs par défaut '; $_ERRORS['2af5ce4c568e80f9dc6bbdb0de5e8ec0'] = 'Impossible de modifier les fichiers de configuration'; $_ERRORS['e07269088946aa33a280b8c05529b46c'] = 'Impossible de récupérer le flux !'; +$_ERRORS['a258f8e051c4e2508a6cc3ecd39d2807'] = 'Impossible d\'analyser les monnaies du flux XML.'; $_ERRORS['485b638d795fe1d171e10ee16076dc62'] = 'Impossible de restocker la quantité du produit'; $_ERRORS['e173c4ebb66df7502542a9e7d2ced180'] = 'Impossible de lire le fichier CSV'; $_ERRORS['36757394a699878de6f0e51f203d1ee7'] = 'Impossible de parcourir le répertoire racine'; @@ -355,6 +358,7 @@ $_ERRORS['10f237be40b3205ba97da9b89d290c30'] = 'Impossible de sélectionner la b $_ERRORS['d2bbf245e9591814fe994df3cae95964'] = 'Le fichier est vide'; $_ERRORS['40f9f62de5a8ccf912bc1cd19d515dd2'] = 'Le fichier est trop volumineux.'; $_ERRORS['d139abab2541129dfae24c733635104c'] = 'Le fichier a été partiellement transféré'; +$_ERRORS['723c870c1b443e052e290bd96f46e977'] = 'Le champ suivant n\'est pas valide selon la méthode de validation'; $_ERRORS['59e3d45dc17f2e9fc4caac2f887bd075'] = 'La fonction'; $_ERRORS['8227e4867a9388488b04ea32665bcc18'] = 'Le répertoire du module doit avoir les droits d\'écriture'; $_ERRORS['418e2586ee498c46f6375e9a0008517c'] = 'le détail du retour produit est invalide'; diff --git a/translations/fr/pdf.php b/translations/fr/pdf.php index 0de24912c..88555851d 100644 --- a/translations/fr/pdf.php +++ b/translations/fr/pdf.php @@ -57,7 +57,7 @@ $_LANGPDF['PDF_invoice42c26bf38ece1dcd27aca8c6f8c076ed'] = 'Détails de taxe'; $_LANGPDF['PDF_invoice4b78ac8eb158840e9638a3aeb26c4a9d'] = 'Taxe'; $_LANGPDF['PDF_invoicecd6576cc33506a6c44e2debbde5c14d9'] = 'Total HT'; $_LANGPDF['PDF_invoiceb602e0d0c6a72053d0a5be60cb2f8126'] = 'Taxe totale'; -$_LANGPDF['PDF_invoicee92cfa244b5eb9025d07522080468445'] = 'Écotaxe'; +$_LANGPDF['PDF_invoicefe1218d355367ae728ae5bf4bbf0019e'] = 'Ecotaxe TTC'; $_LANGPDF['PDF_invoiceae5c2883df7651730799e1036984a6a3'] = 'Total TTC'; $_LANGPDF['PDF_invoice068f80c7519d0528fb08e82137a72131'] = 'Produits'; $_LANGPDF['PDF_invoice914419aa32f04011357d3b604a86d7eb'] = 'Transporteur';