OSDN Git Service

- fixed bug "ethna i18n" command did not work when Smarty delimiter was changed.
authorYoshinari Takaoka <mumumu@mumumu.org>
Fri, 16 Oct 2009 16:40:34 +0000 (01:40 +0900)
committerYoshinari Takaoka <mumumu@mumumu.org>
Fri, 16 Oct 2009 16:40:34 +0000 (01:40 +0900)
CHANGES
class/Ethna_Renderer.php
class/Renderer/Ethna_Renderer_Smarty.php
skel/etc.ini.php

diff --git a/CHANGES b/CHANGES
index ccd2090..65c4a2d 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -32,6 +32,7 @@
 - Ethna_MailSender にて、メール送信に問題がある場合の設定として 'mail_func_workaround' を追加
 -- この値を true に設定すると、メールヘッダの改行コードを一律 CRLF にする処理を回避する
 -- $mail = new Ethna_MailSender(); $mail->setOption(array('mail_func_workaround')); でも設定可能
+- Smarty の設定(現在はデリミタのみ)を [appid]-ini.php に書くことが出来るようにした
 
 *** bug fix
 
@@ -58,6 +59,7 @@
 - Ethna_Plugin_Logwriter の debug_backtrace の一部が取得できず、E_NOTICE が出るバグを修正 (thanks: http://www.remix.gr.jp/)
 - cli 環境で Ethna_Session::start を叩いたときに $_SERVER 変数がないために E_NOTICE が出る問題を修正
 - PHP 5.3.0 で新設された E_DEPRECATED を ON にすると Fatal Error が起きるバグを修正 (#18418)
+- Smartyのデリミタを変更している場合にi18nコマンドが機能しないバグを修正 (#18668)
 
 ** 2.5.0-preview4
 
index ded414d..6e98367 100644 (file)
@@ -29,6 +29,9 @@ class Ethna_Renderer
     /** @var    object  Ethna_Controller    controllerオブジェクト($controllerの省略形) */
     var $ctl;
 
+    /** @var    array   [appid]-ini.phpのレンダラ設定 */
+    var $config;
+
     /** @var    string  template directory  */
     var $template_dir;
 
@@ -58,6 +61,8 @@ class Ethna_Renderer
         $this->template = null;
         $this->prop = array();
         $this->plugin_registry = array();
+        $config = $this->ctl->getConfig();
+        $this->config = $config->get('renderer'); 
     }
 
     /**
index 75979a4..f176af8 100644 (file)
@@ -34,6 +34,8 @@ class Ethna_Renderer_Smarty extends Ethna_Renderer
         
         $this->engine =& new Smarty;
         
+        // ディレクトリ関連は Controllerによって実行時に設定
+        // TODO: iniファイルによって上書き可にするかは要検討
         $template_dir = $controller->getTemplatedir();
         $compile_dir = $controller->getDirectory('template_c');
 
@@ -43,7 +45,18 @@ class Ethna_Renderer_Smarty extends Ethna_Renderer
         $this->engine->compile_dir = $this->compile_dir;
         $this->engine->compile_id = md5($this->template_dir);
 
-        // 一応がんばってみる
+        //  デリミタは Ethna_Config を見る
+        $smarty_config = isset($this->config['smarty'])
+                       ? $this->config['smarty']
+                       : array();
+        if (array_key_exists('left_delimiter', $smarty_config)) {
+            $this->engine->left_delimiter = $smarty_config['left_delimiter'];
+        }
+        if (array_key_exists('right_delimiter', $smarty_config)) {
+            $this->engine->right_delimiter = $smarty_config['right_delimiter'];
+        }
+
+        // コンパイルディレクトリは必須なので一応がんばってみる
         if (is_dir($this->engine->compile_dir) === false) {
             Ethna_Util::mkdir($this->engine->compile_dir, 0755);
         }
index 48e4369..96c1c2e 100644 (file)
@@ -82,6 +82,14 @@ $config = array(
     // mail 
     //'mail_func_workaround' => false,
 
+    // Smarty
+    //'renderer' => array(
+    //    'smarty' => array(
+    //        'left_delimiter' => '{',
+    //        'right_delimiter' => '}',
+    //    ),
+    //),
+
     // csrf
     // 'csrf' => 'Session',
 );