この画面でファイル名の左側のチェックボックスをチェックし,「リネーム」を選んでも添付した図の左下図のように「を下記の名前にリネーム」と,オリジナルのファイル名が表示されませんでした.もちろん,リネームもできませんでした.
この原因はどうやら,lib/editor/htmlarea/coursefiles.phpの123行目,
function set_rename(strfile) {
この.file.が抜けているのが原因だと思います.皆さんの環境では如何でしょうか?var upper = window.parent.document;
// upper.getElementById('irename').value = strfile;
upper.getElementById('irename').file.value = strfile;
return true;
}// upper.getElementById('irename').value = strfile;
upper.getElementById('irename').file.value = strfile;
return true;
チェックボックスをOnにすると,そのファイル名をJavascriptのset_rename()を呼んで親のフォームの,
<td><form id="irename" method="post" action="/mech/moodle/lib/editor/htmlarea/coursefiles.php" target="fbrowser">
<input type="hidden" name="id" value="13" />
<input type="hidden" name="wdir" value="" />
<input type="hidden" name="file" value="" />
<input type="hidden" name="action" value="rename" />
<input type="hidden" name="sesskey" value="rhYaacFFrF" />
<input name="btnRename" type="submit" id="btnRename" value="リネーム" /></form></td>
このfileの値を書き換えているようです.ところが現状のset_rename()ではfileのvalueを書き換えていない.その結果,actionであるlib/editor/htmlarea/coursefiles.phpの引数としてfile=で渡されるべきファイル名が空白のままであることで,<input type="hidden" name="id" value="13" />
<input type="hidden" name="wdir" value="" />
<input type="hidden" name="file" value="" />
<input type="hidden" name="action" value="rename" />
<input type="hidden" name="sesskey" value="rhYaacFFrF" />
<input name="btnRename" type="submit" id="btnRename" value="リネーム" /></form></td>
echo " <input type=\"hidden\" name=\"oldname\" value=\"$file\" />\n";
このoldnameの値も空白.その結果,実際にリネームする際にオリジナルのファイル名が空白のまま処理に入ってしまうようです.処理が三段階になっているため追い掛けるのが億劫で,いままで無視していました.とりあえず上記の修正(赤い箇所)を行うことでIEでも,添付した図の右下図のようにフォルダとファイル名を正しくリネームできることを確認しました.