AjaxのPOSTでevalScriptsをtrueにして返ってくるJavascriptそのもののレスポンスが、IE7だと何度やってもエラーが出てしまう。Javascriptそのまま(関数生成しないもの)を実行できないとかってのは知っていたが、やはり何をやってもだめだ。Firefoxは、優等生。何をやってもOKでした。(何をやってもって変ですが)
で、同じ行で何度もエラーが出るのでcompされていないmootoolsで再度読み直してエラー行を見てみた。そうしたら、何となくこんな事をやっているようだ。
headerを見てJavascript(jsファイル)でなかったら、<script>タグ内を読んでまとめて実行する。headerを見てJavascriptだったらそのまま読み込んで同じように事を行う。
結局、headerを吐いて生Javascriptで解決した。ん?でもここまで書いていてもう一度確認してみたくなった。読み込むところが変?
Fireboardの投稿時のプレビューの文字化けは、バージョンがあがって初めて投稿したときに知っていたのですが、何か悪い物でもみてしまったかのようにすぐ投稿のボタンを押した覚えがあります。ぉぃ それからは、いつもプレビューしませんでした。<=臭い物にフタ。忙しいし・・・。
さて、今回投稿にあったので見てみました。Javascriptがらみだろうと思っていましたが、やはりそうでした。
Root/components/com_fireboard/template/defaults/js/bojForumCore.js
var content = escape(content);
を
var content = encodeURIComponent(content);
に変更します。そしてさらに
Root/components/com_fireboard/fireboard.php
$message = urldecode(utf8_decode($msgpreview));
//$message = str_replace("_@fb@_", "\n", $message);
$msgbody = smile::smileReplace( $message , 0, _CLEXUSPM_LIVEPATH, $ClexusPMconfig->show_smiles);
$msgbody = smile::htmlwrap($msgbody, $fbConfig['wrap']);
header("Content-Type: text/html; charset=utf-8");
echo utf8_encode($msgbody);
を
$message = rawurldecode($msgpreview);
//$message = str_replace("_@fb@_", "\n", $message);
$msgbody = smile::smileReplace( $message , 0, _CLEXUSPM_LIVEPATH, $ClexusPMconfig->show_smiles);
$msgbody = smile::htmlwrap($msgbody, $fbConfig['wrap']);
header("Content-Type: text/html; charset=utf-8");
echo $msgbody;
に変更します。
以前に他のCMSでも同じようなことがありました。英語圏だとescapeを使われることが多いのかな・・・。
Joomla!1.5では、管理画面上部にPreviewボタンがありますが、Joomla!1.0.xではありません。管理画面に絶えず表示されていて欲しい物のひとつですよね。Joomla! Franceで配布されている「QuickLink Preview」モジュールを使えばJoomla!1.0.xでもプレビューボタンが表示されます。
Joomla!fr のQuickLink Previewページ
インストールは、通常のモジュールのインストールと同じです。
インストールしたら、モジュール>管理用モジュール>Previewを開き、公開をクリックしポジションをheaderにすると管理画面上部のメニューが並んでいる位置に現れます。並び方がおかしいときは、モジュール一覧画面で順序を上げ下げすればOKです。クリックすると別ウィンドウでサイトを表示してくれます。Joomla!1.0.xでは、ログアウトしないとプレビューできないので簡単なモジュールではありますが、かなり便利です。お試しあれ。