問題は$mformで表示するHTMLarea(取り合えずフォーラム)とprint_textarea()で表示するHTMLarea(主にWiki)が混在している点にあります.
htmlarea.cssでfloat:left;を指定すると,$mformを使っているものはOKなのですが,print_textarea()で表示しているものはNGになる.
実は$mform(PEAR:QuickForm)で<style>を指定できることが判明しました.たとえば以下のような感じ.
$mform->addElement('html', '<style type="text/css">.htmlarea .toolbar {float:left !important}</style>');
$mform->addElement('htmleditor', 'message', get_string('message', 'forum'), array('cols'=>50, 'rows'=>30));
addElement('htmleditor')を使用している箇所が少ないか,print_textarea()が少ないか,ですね.
いまgrepで調べてみたら,どちらも多い...QuickFormが45箇所,print_textareaが73箇所.どちらをとるか.
答えは意外に簡単でした.なぜ悩んだのだろう.print_textarea()自体に手を入れてしまえば良いのでした.
-
htmlarea.cssにfloat:left;を追加.
-
fullscreen.phpではfloat:left;をfloat:none;に変更.
-
print_textarea()の末尾でfloat:none;に変更.
これでいまのところ何とかなりそうです.つまり修正は三箇所で済みます.
lib/weblib.phpのfunction print_textarea()の末尾に,
if ($usehtmleditor) {
// Show shortcuts button if HTML editor is in use, but only if JavaScript is enabled (MDL-9556)
$str .= '<script type="text/javascript">
//<![CDATA[
document.write(\''.addslashes_js(editorshortcutshelpbutton()).'\');
//]]>
</script>';
}
$str .= '<style type="text/css"> .htmlarea .toolbar {float:none !important}</style>';
if ($return) {
return $str;
}
echo $str;
}
を追加.これで,Wiki,QuickMailのHTMLエディタ右端に生じるおかしな白い領域は消えました.他にもprint_textarea()を使っている箇所がありますが,症状が出るもの出ないもの(メンテナンスモードのメッセージ入力エリアは手を加えなくても問題なしでした)どちらにも対応できそうです.
Trackerに追記してきます.