インストーラ改修(1) システムメッセージ表示

CandyCaneのインストーラプラグインを改修してみます。
ベースソースは、昨日時点の http://thechaw.com/candycane/source/ です。


まずは、ふと気づいた
 「コントローラで $this->Session->setFlash()してるはずのメッセージがテンプレートで表示されていない」


訂正:以下の改修でエラーになる場合があります。
プラグインのレイアウトを読み込まなくなりました・・・
現在、訂正版改修調査中です。


原因判明。
セッション保管設定をdatabaseにしてたのが原因でした。

	Configure::write('Session.save', 'database');

 セッションstart→DB設定がない→・・・? でなにやら別ルートに陥っていた模様です。
 
phpやcakeに設定していれば、問題ありません。



ビューあるいはレイアウト側に、セッションFlashがないのだろうと検討で、ソース確認。

layouts/install.ctpに、それらしきコメントアウトがあります。

        <div id="main">
            <div id="install">
            <?php
                //$layout->sessionFlash();
                echo $content_for_layout;
            ?>
            </div>
        </div>


ほぼ全画面で表示が必要なので、レイアウトに入れた方がよいでしょう。


メッセージ表示のための、改修差分

--- a/app/plugins/install/views/layouts/install.ctp
+++ b/app/plugins/install/views/layouts/install.ctp
@@ -23,6 +23,8 @@

         <div id="main">
             <div id="install">
+               <?php $session->flash(); ?>
+


これだけだと、表示メッセージが地味なので、CakePHP本線のCSSも追加しました。

--- a/app/plugins/install/vendors/css/install.css
+++ b/app/plugins/install/vendors/css/install.css
@@ -12,3 +12,45 @@

 .install #footer { background: none; color: #444; }
 .install #footer a { color: #444; }
+
+/* Notices and Errors */
+div.message {
+       clear: both;
+       color: #900;
+       font-size: 140%;
+       font-weight: bold;
+       margin: 1em 0;
+}
+div.error-message {
+       clear: both;
+       color: #900;
+       font-weight: bold;
+}


以上で、こんな感じでメッセージが出るようになります。