修正箇所は二つのファイル,3箇所です.
(1)lib/moodlelib.php
a) function can_use_html_editor()
function can_use_html_editor() {
global $USER, $CFG;
if (!empty($USER->htmleditor) and !empty($CFG->htmleditor)) {
if (check_browser_version('MSIE', 5.5)) {
return 'MSIE';
// (FS_TEST): ここから追加
} else if (check_browser_version('Chrome', 0)) { // ex) Chrome/6.0.472.59 -> 6
return 'Gecko'; // Chrome...
} else if (check_browser_version('Safari', 0)) { // ex) AppelWebKit/533 -> 533
return 'Safari';
// (FS_TEST): ここまで追加
} else if (check_browser_version('Gecko', 20030516)) {
return 'Gecko';
}
}
return false;
}
b) function check_browser_version()
case 'Safari': /// Safari
// Look for AppleWebKit, excluding strings with OmniWeb, Shiira and SimbianOS
if (strpos($agent, 'OmniWeb')) { // Reject OmniWeb
return false;
} elseif (strpos($agent, 'Shiira')) { // Reject Shiira
return false;
} elseif (strpos($agent, 'SimbianOS')) { // Reject SimbianOS
return false;
// (FS_TEST): ここから追加
} elseif (strpos($agent, 'iPhone')) { // iPhone, iPad, iPod touch
return false;
} elseif (strpos($agent, 'Chrome')) {
return false;
// (FS_TEST): ここまで追加
}
if (preg_match("/AppleWebKit\/([0-9]+)/i", $agent, $match)) {
if (version_compare($match[1], $version) >= 0) {
return true;
}
}
break;
// (FS_TEST): ここから追加
case 'Chrome': /// Chrome
if (preg_match("/Chrome\/([0-9]+)/i", $agent, $match)) {
if ($match[1] >= $version) {
return true;
}
}
break;
// (FS_TEST): ここまで追加
}
return false;
}
(2) lib/editor/htmlarea/htmlarea.php
// FIXME!!! this should return false for IE < 5.5
HTMLArea.checkSupportedBrowser = function() {
if (HTMLArea.is_gecko) {
if (navigator.productSub < 20021201) {
alert("You need at least Mozilla-1.3 Alpha.\n" +
"Sorry, your Gecko is not supported.");
return false;
}
if (navigator.productSub < 20030210) {
// (FS_TEST): ここからコメントアウト
// alert("Mozilla < 1.3 Beta is not supported!\n" +
// "I'll try, though, but it might not work.");
// (FS_TEST): ここから追加
if (!navigator.userAgent.match("AppleWebKit")) {
alert("Mozilla < 1.3 Beta is not supported!\n" +
"I'll try, though, but it might not work.");
}
// (FS_TEST): ここまで追加
}
}
if(HTMLArea.is_safari) {
// (FS_TEST): ここから修正
// return false;
return 'HTMLArea.is_gecko';
// (FS_TEST): ここまで修正
}
return HTMLArea.is_gecko || HTMLArea.is_ie;
};
ChromeはGeckoと互換性が高く,$_SERVER['HTTP_USER_AGENT']にも'Gecko'の文字を含むのでChrome専用のブラウザ種別識別を入れる必要は無いのですが,将来的に非互換性が明らかになった場合に対処できるようにcheck_browser_version()に追加しました.
can_use_html_eitor()に追加したChromeとSafariのバージョンチェックですが,0 としていることで全てのバージョンでHTMLエディタを利用可能としています.私の手元には最新版しかありませんので,古いバージョンで動作するかどうかはわかりません.もし古いバージョンで動作しない場合はご連絡下さい.