リソースの追加/ディレクトリの表示のフォルダ内一覧表示
(1)mod/resource/type/directory/resource.class.php,ソースリストの一番トップ
<?php // $Id: resource.class.php,v 1.34.2.2 2007/11/08 05:36:21 toyomoyo Exp $
// ここから追加
$sortorderfilelist = optional_param('sortorderfilelist', 0, PARAM_INT);
if ($sortorderfilelist < 1) {
if (isset($_SESSION['sortorderfilelist'])) $sortorderfilelist = $_SESSION['sortorderfilelist'];
else $sortorderfilelist = 1;
} else $_SESSION['sortorderfilelist'] = $sortorderfilelist;
// ここまで追加
class resource_directory extends resource_base {
(2)同上,function display(): 40行近辺
function display() {
global $CFG;
global $sortorderfilelist; // ( (追加)/// Set up generic stuff first, including checking for access
parent::display();/// Set up some shorthand variables
$cm = $this->cm;
$course = $this->course;
$resource = $this->resource;
(3)同上,113行近辺
if (trim(strip_tags($resource->summary))) {
print_simple_box(format_text($resource->summary, FORMAT_MOODLE, $formatoptions, $course->id), "center");
print_spacer(10,10);
}// $files = get_directory_list("$CFG->dataroot/$relativepath", array($CFG->moddata, 'backupdata'), false, true, true);
// ここから追加
$dirs = get_directory_list("$CFG->dataroot/$relativepath", array($CFG->moddata, 'backupdata'), false, true, false);
$files = get_directory_list("$CFG->dataroot/$relativepath", array($CFG->moddata, 'backupdata'), false, false, true);
$dirlist = $filelist = array();
foreach ($dirs as $file) {
switch ($sortorderfilelist) {
case 3: case 4:
$sortkeystr = strftime('%Y%m%d%H%M%S', fs_filemtime("$CFG->dataroot/$relativepath/$file"));
break;
case 5: case 6:
$sortkeystr = strval(get_directory_size("$CFG->dataroot/$relativepath/$file"));
break;
case 1: case 2: default:
$sortkeystr = $file;
break;
}
$dirlist['0'.$file] = $sortkeystr;
// $dirlist["0"]が$dirlist[0]になってしまうため'0'を付けて$dirlist["00"]とする.
}
foreach ($files as $file) {
switch ($sortorderfilelist) {
case 3: case 4:
$sortkeystr = strftime('%Y%m%d%H%M%S', fs_filemtime("$CFG->dataroot/$relativepath/$file"));
break;
case 5: case 6:
$sortkeystr = strval(fs_filesize("$CFG->dataroot/$relativepath/$file"));
break;
default:
$sortkeystr = $file; break;
}
$filelist['0'.$file] = $sortkeystr;
// $filelist["0"]が$filelist[0]になってしまうため'0'を付けて$filelist["00"]とする.
}
// ここまで追加
// if (!$files) {
if (empty($dirlist) && empty($filelist)) {
print_heading(get_string("nofilesyet"));
print_footer($course);
exit;
}
print_simple_box_start("center", "", "", '0' );$strftime = get_string('strftimedatetime');
$strname = get_string("name");
$strsize = get_string("size");
$strmodified = get_string("modified");
$strfolder = get_string("folder");
$strfile = get_string("file");
// ここから追加
$reloadurl = "<a href=\"view.php?id={$cm->id}&subdir=".rawurlencode($subdir)."&";
$strname .= " (";
$strname .= $sortorderfilelist == 1 ? "▲/" : $reloadurl."sortorderfilelist=1\">▲</a>/";
$strname .= $sortorderfilelist == 2 ? "▼)" : $reloadurl."sortorderfilelist=2\">▼</a>)";
$strmodified .= " (";
$strmodified .= $sortorderfilelist == 3 ? "▲/" : $reloadurl."sortorderfilelist=3\">▲</a>/";
$strmodified .= $sortorderfilelist == 4 ? "▼)" : $reloadurl."sortorderfilelist=4\">▼</a>)";
$strsize .= " (";
$strsize .= $sortorderfilelist == 5 ? "▲/" : $reloadurl."sortorderfilelist=5\">▲</a>/";
$strsize .= $sortorderfilelist == 6 ? "▼)" : $reloadurl."sortorderfilelist=6\">▼</a>)";
// ここまで追加echo '<table cellpadding="4" cellspacing="1" class="files" summary="">';
echo "<tr><th class=\"header name\" scope=\"col\">$strname</th>".
"<th align=\"right\" colspan=\"2\" class=\"header size\" scope=\"col\">$strsize</th>".
"<th align=\"right\" class=\"header date\" scope=\"col\">$strmodified</th>".
"</tr>";
// foreach ($files as $file) {
// ここから追加
switch ($sortorderfilelist) {
case 2: case 4: case 6: arsort($dirlist); arsort($filelist); break;
case 3: case 5: default: asort($dirlist); asort($filelist); break;
}
$files = $dirlist + $filelist; // 同名のフォルダとファイルは作成不可なので重複してもOK
foreach ($files as $file => $dummy) {
$file = substr($file, 1); // 頭のダミーの'0'を取り除く
// ここまで追加
if (is_dir("$CFG->dataroot/$relativepath/$file")) { // Must be a directory
$icon = "folder.gif";
$relativeurl = "/view.php?blah";
$filesize = display_size(get_directory_size("$CFG->dataroot/$relativepath/$file"));
以上で良いはずです.色々な修正を並行して行ったため,Subversionから正確な差分を得られませんでした.何かおかしなことがあったら報告して下さい.