From 5cbb6138bfe0e60aa536897239174ab6cf352bc2 Mon Sep 17 00:00:00 2001 From: lLefevre Date: Mon, 4 Jun 2012 14:13:08 +0000 Subject: [PATCH] [*] BO : add method for import translations tabs git-svn-id: http://dev.prestashop.com/svn/v1/branches/1.5.x@15832 b9a71923-0436-4b27-9f14-aed3839534dd --- .../admin/AdminTranslationsController.php | 41 ++++++++++++++++++- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/controllers/admin/AdminTranslationsController.php b/controllers/admin/AdminTranslationsController.php index 2299dbd08..f4eeabfe3 100644 --- a/controllers/admin/AdminTranslationsController.php +++ b/controllers/admin/AdminTranslationsController.php @@ -473,7 +473,8 @@ class AdminTranslationsControllerCore extends AdminController // Move the old file theme in the new folder foreach ($themes_selected as $theme_name) - copy($theme_file_old, str_replace($name_default_theme, $theme_name, $theme_file_old)); + if (file_exists($theme_file_old)) + copy($theme_file_old, str_replace($name_default_theme, $theme_name, $theme_file_old)); if ($deleted_old_theme) @unlink($theme_file_old); @@ -481,6 +482,41 @@ class AdminTranslationsControllerCore extends AdminController } } + /** + * Add new translations tabs by code ISO + * + * @param array $iso_code + * @param array $files + */ + public function addNewTabs($iso_code, $files) + { + foreach ($files as $file) + { + // Check if file is a file theme + if (preg_match('#^translations\/'.$iso_code.'\/tabs.php#Ui', $file['filename'], $matches) && Validate::isLanguageIsoCode($iso_code)) + { + // Include array width new translations tabs + $tabs = include _PS_ROOT_DIR_.DIRECTORY_SEPARATOR.$file['filename']; + + foreach ($tabs as $class_name => $translations) + { + // Get instance of this tab by class name + $tab = Tab::getInstanceFromClassName($class_name); + + //Check if class name exists + if (isset($tab->class_name) && !empty($tab->class_name)) + { + $id_lang = Language::getIdByIso($iso_code); + $tab->name[(int)$id_lang] = pSQL($translations); + + // Update this tab + $tab->update(); + } + } + } + } + } + public function submitImportLang() { if (!isset($_FILES['file']['tmp_name']) || !$_FILES['file']['tmp_name']) @@ -488,13 +524,14 @@ class AdminTranslationsControllerCore extends AdminController else { $gz = new Archive_Tar($_FILES['file']['tmp_name'], true); - $iso_code = str_replace('.gzip', '', $_FILES['file']['name']); + $iso_code = str_replace(array('.tar.gz', '.gzip'), '', $_FILES['file']['name']); $themes_selected = Tools::getValue('theme', array(self::DEFAULT_THEME_NAME)); $files_list = $gz->listContent(); if ($gz->extract(_PS_TRANSLATIONS_DIR_.'../', false)) { $this->checkAndAddMailsFiles($iso_code, $files_list); $this->checkAndAddThemesFiles($files_list, $themes_selected); + $this->addNewTabs($iso_code, $files_list); if (Validate::isLanguageFileName($_FILES['file']['name'])) { if (!Language::checkAndAddLanguage($iso_code))