From e4eed6e63ada0c68357199da97ea80307472259e Mon Sep 17 00:00:00 2001 From: fBrignoli Date: Wed, 28 Mar 2012 15:28:29 +0000 Subject: [PATCH] // PDF override git-svn-id: http://dev.prestashop.com/svn/v1/branches/1.5.x@14342 b9a71923-0436-4b27-9f14-aed3839534dd --- classes/Translate.php | 28 ++++++++++--------- classes/pdf/HTMLTemplate.php | 22 +-------------- classes/pdf/HTMLTemplateDeliverySlip.php | 2 +- classes/pdf/HTMLTemplateOrderReturn.php | 3 +- classes/pdf/HTMLTemplateOrderSlip.php | 5 ++-- classes/pdf/HTMLTemplateSupplyOrderForm.php | 8 ++++-- controllers/admin/AdminInvoicesController.php | 26 +++++++++++------ 7 files changed, 45 insertions(+), 49 deletions(-) diff --git a/classes/Translate.php b/classes/Translate.php index c3927ca2c..13f1f6f81 100644 --- a/classes/Translate.php +++ b/classes/Translate.php @@ -184,24 +184,26 @@ class TranslateCore global $_LANGPDF; $iso = Context::getContext()->language->iso_code; - if (!Validate::isLanguageIsoCode($iso)) - throw PrestaShopException('Invalid iso lang!'); - $filename = _PS_THEME_DIR_.'pdf/lang/'.$iso.'.php'; + if (!Validate::isLangIsoCode($iso)) + Tools::displayError(sprintf('Invalid iso lang (%s)', Tools::safeOutput($iso))); - if (Tools::file_exists_cache($filename)) - @include_once($filename); + $override_i18n_file = _PS_THEME_DIR_.'pdf/lang/'.$iso.'.php'; + $i18n_file = _PS_TRANSLATIONS_DIR_.$iso.'/pdf.php'; + if (file_exists($override_i18n_file)) + $i18n_file = $override_i18n_file; - $key = 'PDF'.md5($string); - $lang_array = $_LANGPDF; + if (!include($i18n_file)) + Tools::displayError(sprintf('Cannot include PDF translation language file : %s', $i18n_file)); - $msg = $string; - if (is_array($lang_array) && key_exists($key, $lang_array)) - $msg = $lang_array[$key]; - elseif (is_array($lang_array) && key_exists(Tools::strtolower($key), $lang_array)) - $msg = $lang_array[Tools::strtolower($key)]; + if (!isset($_LANGPDF) || !is_array($_LANGPDF)) + return str_replace('"', '"', $string); - return $msg; + $key = md5(str_replace('\'', '\\\'', $string)); + + $str = (key_exists('PDF'.$key, $_LANGPDF) ? $_LANGPDF['PDF'.$key] : $string); + + return $str; } } diff --git a/classes/pdf/HTMLTemplate.php b/classes/pdf/HTMLTemplate.php index b6120885c..c59c6c03f 100755 --- a/classes/pdf/HTMLTemplate.php +++ b/classes/pdf/HTMLTemplate.php @@ -177,27 +177,7 @@ abstract class HTMLTemplateCore */ protected static function l($string) { - $iso = Context::getContext()->language->iso_code; - - if (!Validate::isLangIsoCode($iso)) - Tools::displayError(sprintf('Invalid iso lang (%s)', Tools::safeOutput($iso))); - - $override_i18n_file = _PS_THEME_DIR_.'pdf/lang/'.$iso.'.php'; - $i18n_file = _PS_TRANSLATIONS_DIR_.$iso.'/pdf.php'; - if (file_exists($override_i18n_file)) - $i18n_file = $override_i18n_file; - - if (!include($i18n_file)) - Tools::displayError(sprintf('Cannot include PDF translation language file : %s', $i18n_file)); - - if (!isset($_LANGPDF) || !is_array($_LANGPDF)) - return str_replace('"', '"', $string); - - $key = md5(str_replace('\'', '\\\'', $string)); - - $str = (key_exists('PDF'.$key, $_LANGPDF) ? $_LANGPDF['PDF'.$key] : $string); - - return $str; + return Translate::getPdfTranslation($string); } } diff --git a/classes/pdf/HTMLTemplateDeliverySlip.php b/classes/pdf/HTMLTemplateDeliverySlip.php index 9e94ac15c..87b9ca792 100755 --- a/classes/pdf/HTMLTemplateDeliverySlip.php +++ b/classes/pdf/HTMLTemplateDeliverySlip.php @@ -70,7 +70,7 @@ class HTMLTemplateDeliverySlipCore extends HTMLTemplate 'order_invoice' => $this->order_invoice )); - return $this->smarty->fetch(_PS_THEME_DIR_.'/pdf/delivery-slip.tpl'); + return $this->smarty->fetch($this->getTemplate('delivery-slip')); } /** diff --git a/classes/pdf/HTMLTemplateOrderReturn.php b/classes/pdf/HTMLTemplateOrderReturn.php index f8db992c3..caac09842 100755 --- a/classes/pdf/HTMLTemplateOrderReturn.php +++ b/classes/pdf/HTMLTemplateOrderReturn.php @@ -71,7 +71,7 @@ class HTMLTemplateOrderReturnCore extends HTMLTemplate 'invoice_address' => $formatted_invoice_address, 'shop_address' => AddressFormat::generateAddress($this->address, array(), '
', ' ') )); - return $this->smarty->fetch(_PS_THEME_DIR_.'/pdf/order-return.tpl'); + return $this->smarty->fetch($this->getTemplate('order-return')); } /** @@ -92,3 +92,4 @@ class HTMLTemplateOrderReturnCore extends HTMLTemplate return 'invoices.pdf'; } } + diff --git a/classes/pdf/HTMLTemplateOrderSlip.php b/classes/pdf/HTMLTemplateOrderSlip.php index 835d3d1e4..1d4731664 100644 --- a/classes/pdf/HTMLTemplateOrderSlip.php +++ b/classes/pdf/HTMLTemplateOrderSlip.php @@ -110,7 +110,7 @@ class HTMLTemplateOrderSlipCore extends HTMLTemplateInvoice 'tax_tab' => '', )); - return $this->smarty->fetch(_PS_THEME_DIR_.'/pdf/order-slip.tpl'); + return $this->smarty->fetch($this->getTemplate('order-slip')); } /** @@ -130,4 +130,5 @@ class HTMLTemplateOrderSlipCore extends HTMLTemplateInvoice { return 'order-slip-'.sprintf('%06d', $this->order_slip->id).'.pdf'; } -} \ No newline at end of file +} + diff --git a/classes/pdf/HTMLTemplateSupplyOrderForm.php b/classes/pdf/HTMLTemplateSupplyOrderForm.php index 0b79c70c4..b18b67aad 100644 --- a/classes/pdf/HTMLTemplateSupplyOrderForm.php +++ b/classes/pdf/HTMLTemplateSupplyOrderForm.php @@ -72,7 +72,8 @@ class HTMLTemplateSupplyOrderFormCore extends HTMLTemplate 'tax_order_summary' => $tax_order_summary, 'currency' => $currency, )); - return $this->smarty->fetch(_PS_THEME_DIR_.'/pdf/supply-order.tpl'); + + return $this->smarty->fetch($this->getTemplate('supply-order')); } /** @@ -135,7 +136,7 @@ class HTMLTemplateSupplyOrderFormCore extends HTMLTemplate 'shop_name' => $shop_name )); - return $this->smarty->fetch(_PS_THEME_DIR_.'/pdf/supply-order-header.tpl'); + return $this->smarty->fetch($this->getTemplate('supply-order-header')); } /** @@ -155,7 +156,7 @@ class HTMLTemplateSupplyOrderFormCore extends HTMLTemplate 'shop_details' => Configuration::get('PS_SHOP_DETAILS'), 'free_text' => $free_text, )); - return $this->smarty->fetch(_PS_THEME_DIR_.'/pdf/supply-order-footer.tpl'); + return $this->smarty->fetch($this->getTemplate('supply-order-footer')); } /** @@ -188,3 +189,4 @@ class HTMLTemplateSupplyOrderFormCore extends HTMLTemplate $supply_order->total_ti = Tools::ps_round($supply_order->total_ti, 2); } } + diff --git a/controllers/admin/AdminInvoicesController.php b/controllers/admin/AdminInvoicesController.php index ac5eccb08..d9ad39e8f 100644 --- a/controllers/admin/AdminInvoicesController.php +++ b/controllers/admin/AdminInvoicesController.php @@ -260,16 +260,26 @@ class AdminInvoicesControllerCore extends AdminController 'name' => 'invoice' ) ); - $d = dir(_PS_THEME_DIR_.'/pdf/'); - while (false !== ($entry = $d->read())) + + $templates_override = $this->getInvoicesModelsFromDir(_PS_THEME_DIR_.'pdf/'); + $templates_default = $this->getInvoicesModelsFromDir(_PS_PDF_DIR_); + + foreach (array_merge($templates_default, $templates_override) as $template) { - if (preg_match('`^(invoice-[a-z0-9]+)\.tpl$`', $entry, $matches)) - $models[] = array( - 'value' => $matches[1], - 'name' => $matches[1] - ); + $template_name = basename($template, '.tpl'); + $models[] = array('value' => $template_name, 'name' => $template_name); } - $d->close(); return $models; } + + protected function getInvoicesModelsFromDir($directory) + { + $templates = array(); + + if (is_dir($directory)) + $templates = glob($directory.'invoice-*.tpl'); + + return $templates; + } } +