2015年5月27日(水曜日)

古いCMS環境を最新ブラウザで使うための改造

カテゴリー: - ookubo @ 19時00分00秒

顧客サービス部の 大久保 正彦 と申します。このブログには初登場です。これからどうぞ、お見知りおきください。今日は、少し技術寄りの話題提供をしてみようと思います。

弊社の業務の中で、『CMSのブログ編集画面を、最新のブラウザで開いたらWYSIWYGエディタが使えなくて困っている』状況に対応する案件が最近ありました。この問題に対して、CMSのコードを改造することによって第一の壁となっていた部分を解決できましたので、その内容を紹介します。

対象のCMS環境

  • CMS本体: XOOPS Cube Legacy 2.1.7
  • ブログモジュール: WordPress ME for XOOPS 0.5.0RC-Final
  • ブログ編集画面のWYSIWYGエディタ: SPAW Editor - web based WYSIWYG editorの SPAW PHP v.1.2.3 (2006-11-16) [ライセンス: GPL]

問題の調査と対応

  • [1] 対象環境のCMS「XOOPS Cube Legacy」に最新のブラウザでアクセスしてブログ編集画面を開いたところ、たしかにWYSIWYGエディタの部品などが全く表示されません。このままではブログ編集時にHTMLソースを手打ちする必要があり、更新の手間、億劫さが増してしまいます。
  • [2] そこで、CMSが各ブラウザに対して出力するブログ編集画面のHTMLソースを調査したところ、次のような差があると確認できました。
    • [2-a] WYSIWYGエディタが使用できるブラウザに対しては、WYSIWYGエディタ「SPAW Editor」を表示するための行 (<script>〜</script>) がCMSから送られてきている
    • [2-b] 最新のブラウザに対しては、上記の行がCMSから送られてきていない
  • [3] 次に、CMSの中で[2]のブラウザ判別動作を行っている部分を調査。この動作を行っているのは、WYSIWYGエディタ「SPAW Editor」に含まれるPHPファイル ./class/util.class.php の、下記の画像で示した function checkBrowser() の部分だと分かりました。おそらくこのブラウザ判別は、ブログ編集画面にアクセスしてきたブラウザが、「SPAW Editor」の動作確認が取れているブラウザかどうかを見分けるために、実装されているのでしょう。
    util.class.php
  • [4] ブラウザの種類やバージョンを示す情報はUser-Agentと呼ばれ、ウェブサーバ側では環境変数HTTP_USER_AGENTから取得可能です。最新のブラウザのこの値を調べた結果を、本記事の末尾に参考資料として付けておきます。なにしろ、WYSIWYGエディタ「SPAW Editor」の今回のバージョンは、2006年にリリースされたもの。たとえばGoogle Chromeの最初のバージョンは2008年リリースだそうなので、当時存在しないGoogle ChromeのUser-Agentを識別できないのは、ある意味当然ですね。
  • [5] 今回は、最新のブラウザの主要なものに対して、[2-b]ではなく[2-a]のように必要な行をとにかく送信するよう、WYSIWYGエディタ「SPAW Editor」のブラウザ判別動作を改造してみることにします。上記の画像にある ./class/util.class.php の45行目と46行目の間に、最新のブラウザからのアクセスの場合にも function checkBrowser() がtrueを返すよう、次のコードを挿入しました。
    	elseif (ereg("Chrome",$browser))
    	{
    		return true;
    	}
    	elseif (ereg("Firefox",$browser))
    	{
    		return true;
    	}
    	elseif (ereg("Safari",$browser))
    	{
    		return true;
    	}
    	elseif (ereg("Trident",$browser))
    	{
    		return true;
    	}
    
  • [6] [5]の改造を施したブログ編集画面へ、最新のブラウザ (Chrome, Firefox, Safari, IE11) でアクセスしてみますと、WYSIWYGエディタ「SPAW Editor」が表示されるようになっていることが確認できます。

以上で、「WYSIWYGエディタが表示されない」という、対象のCMS環境と最新のブラウザの組み合わせで起こっていた問題は解決できました!

ただしこの改造は、最新のブラウザの上でWYSIWYGエディタ「SPAW Editor」が当時の設計通りに動作するかどうかについては、全くノータッチ。最新のブラウザでこのWYSIWYGエディタを使ってみて、動作がおかしい部分があったなら、それはもう、年々状況が変化するウェブの世界にて、古いCMS環境を使い続けていることの結果ですので仕方がないかなと思います。

参考資料: 最新ブラウザのUser-Agent一覧 (2015/05/27時点)

ブラウザ名 (OS) User-Agent
Google Chrome (Windows) Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36
Firefox (Windows) Mozilla/5.0 (Windows NT 6.1; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0
Internet Explorer (Windows) Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; MAFSJS; rv:11.0) like Gecko
Google Chrome (OS X) Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36
Firefox (OS X) Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:38.0) Gecko/20100101 Firefox/38.0
Safari (OS X) Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/600.6.3 (KHTML, like Gecko) Version/8.0.6 Safari/600.6.3
Google Chrome (Linux Mint) Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36
Firefox (Linux Mint) Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0

コメント

このコメントのRSS

この投稿には、まだコメントが付いていません

コメントの投稿

ごめんなさい、現在コメントを付けることは出来ません

16 queries. 0.043 sec.
Powered by WordPress Module based on WordPress ME & WordPress