MDL-22805, new renderer component moodle_file_tree_viewer, remove file_tree_viewer...
authorDongsheng Cai <unoter@gmail.com>
Wed, 16 Jun 2010 08:07:42 +0000 (08:07 +0000)
committerDongsheng Cai <unoter@gmail.com>
Wed, 16 Jun 2010 08:07:42 +0000 (08:07 +0000)
files/files_ajax.php
files/index.php
files/module.js [new file with mode: 0644]
lang/en/repository.php
lib/outputcomponents.php
lib/outputrenderers.php
lib/outputrequirementslib.php
mod/folder/view.php

index bfa318c..146f1e6 100755 (executable)
@@ -43,6 +43,7 @@ if (!confirm_sesskey()) {
 }
 
 $action     = optional_param('action', 'list', PARAM_ALPHA);
+$fileurl    = optional_param('fileurl', '', PARAM_URL);
 $filename   = optional_param('filename', '', PARAM_FILE);
 $filearea   = optional_param('filearea', 'user_draft', PARAM_ALPHAEXT);
 $filepath   = optional_param('filepath', '/', PARAM_PATH);
@@ -54,6 +55,43 @@ $newfilename = optional_param('newfilename', '', PARAM_FILE);
 $user_context = get_context_instance(CONTEXT_USER, $USER->id);
 
 switch ($action) {
+// used by course file tree viewer
+case 'getfiletree':
+    $browser = get_file_browser();
+    $url = new moodle_url($fileurl);
+    $params = $url->params();
+    // fix empty value
+    foreach ($params as $key=>$value) {
+        if ($value==='') {
+            $params[$key] = null;
+        }
+    }
+    $fileinfo = $browser->get_file_info(get_context_instance_by_id($params['contextid']), $params['filearea'], $params['itemid'], $params['filepath']);
+    $children = $fileinfo->get_children();
+    $tree = array();
+    foreach ($children as $child) {
+        $filedate = $child->get_timemodified();
+        $filesize = $child->get_filesize();
+        $mimetype = $child->get_mimetype();
+        $params = $child->get_params();
+        $url = new moodle_url('/files/index.php', $params);
+        $fileitem = array(
+                'params'=>$params,
+                'filename'=>$child->get_visible_name(),
+                'filedate'=>$filedate ? userdate($filedate) : '',
+                'filesize'=>$filesize ? display_size($filesize) : '',
+                );
+        if ($child->is_directory()) {
+            $fileitem['isdir'] = true;
+            $fileitem['url'] = $url->out();
+        } else {
+            $fileitem['url'] = $child->get_url();
+        }
+        $tree[] = $fileitem;
+    }
+    echo json_encode($tree);
+
+    break;
 case 'dir':
     $data = new stdclass;
     file_get_user_area_folders($itemid, $filepath, $data, $filearea);
index ef45bf8..ff34276 100644 (file)
 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
 
 /**
- * Temporary file manager for all moodle files. To be replaced by something much better.
+ * Moodle file tree viewer based on YUI2 Treeview
  *
  * @package    moodlecore
  * @subpackage file
- * @copyright  1999 onwards Martin Dougiamas (http://dougiamas.com)
+ * @copyright  2010 Dongsheng Cai <dongsheng@moodle.com>
  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 
 require('../config.php');
-require_once($CFG->libdir.'/filelib.php');
-require_once($CFG->libdir.'/adminlib.php');
 
 $courseid   = optional_param('id', 0, PARAM_INT);
 
@@ -36,9 +34,6 @@ $itemid     = optional_param('itemid', -1, PARAM_INT);
 $filepath   = optional_param('filepath', '', PARAM_PATH);
 $filename   = optional_param('filename', '', PARAM_FILE);
 
-$newdirname = optional_param('newdirname', '', PARAM_FILE);
-$delete     = optional_param('delete', 0, PARAM_BOOL);
-
 if ($courseid) {
     $course = $DB->get_record('course', array('id'=>$courseid), '*', MUST_EXIST);
     $context = get_context_instance(CONTEXT_COURSE, $course->id, MUST_EXIST);
@@ -75,270 +70,27 @@ if ($filename === '') {
     $filename = null;
 }
 
-$error = '';
-
 $browser = get_file_browser();
 
 $file_info = $browser->get_file_info($context, $filearea, $itemid, $filepath, $filename);
 
-/// process actions
-if ($file_info and $file_info->is_directory() and $file_info->is_writable() and $newdirname !== '' and data_submitted() and confirm_sesskey()) {
-    if ($newdir_info = $file_info->create_directory($newdirname, $USER->id)) {
-        $params = $newdir_info->get_params();
-        redirect(new moodle_url('index.php', $params));
-    } else {
-        $error = "Could not create new dir"; // TODO: localise
-    }
-}
-
-if ($file_info and $file_info->is_directory() and $file_info->is_writable() and isset($_FILES['newfile']) and data_submitted() and confirm_sesskey()) {
-    $file = $_FILES['newfile'];
-    $newfilename = clean_param($file['name'], PARAM_FILE);
-    if (is_uploaded_file($_FILES['newfile']['tmp_name'])) {
-        try {
-            if ($newfile = $file_info->create_file_from_pathname($newfilename, $_FILES['newfile']['tmp_name'], $USER->id)) {
-                $params = $file_info->get_params();
-                redirect(new moodle_url('index.php', $params));
-
-            } else {
-                $error = "Could not create upload file"; // TODO: localise
-            }
-        } catch (file_exception $e) {
-            $error = "Exception: Could not create upload file"; // TODO: localise
-        }
-    }
-}
-
-if ($file_info and $delete) {
-    if (!data_submitted() or !confirm_sesskey()) {
-        $params = $file_info->get_params();
-        $params = array_merge($params, array('delete'=>1));
-        $PAGE->set_url("/files/index.php", $params);
-        $PAGE->set_title("$SITE->shortname: " .get_string('files'));
-        $PAGE->set_heading($SITE->fullname);
-        echo $OUTPUT->header();
-        echo $OUTPUT->notification(get_string('deletecheckwarning').': '.$file_info->get_visible_name());
-        $parent_info = $file_info->get_parent();
-
-        $optionsno  = $parent_info->get_params();
-        $optionsyes = $file_info->get_params();
-        $optionsyes['delete'] = 1;
-        $optionsyes['sesskey'] = sesskey();
-
-        echo $OUTPUT->confirm(get_string('deletecheckfiles'), new moodle_url( 'index.php', $optionsyes),  new moodle_url('index.php', $optionsno));
-        echo $OUTPUT->footer();
-        die;
-    }
-
-    if ($parent_info = $file_info->get_parent() and $parent_info->is_writable()) {
-        if (!$file_info->delete()) {
-            $error = "Could not delete file!"; // TODO: localise
-        }
-        $params = $parent_info->get_params();
-        redirect(new moodle_url('index.php', $params));
-    }
-}
-
-
-/// print dir listing
-html_header($context, $file_info);
-
-if ($error !== '') {
-    echo $OUTPUT->notification($error);
-}
-
-displaydir($file_info);
-
-if ($file_info and $file_info->is_directory() and $file_info->is_writable()) {
-    echo '<br />';
-
-    echo '<form action="index.php" method="post"><div>';
-    echo '<input type="hidden" name="contextid" value="'.$contextid.'" />';
-    echo '<input type="hidden" name="filearea" value="'.$filearea.'" />';
-    echo '<input type="hidden" name="itemid" value="'.$itemid.'" />';
-    echo '<input type="hidden" name="filepath" value="'.s($filepath).'" />';
-    echo '<input type="hidden" name="filename" value="'.s($filename).'" />';
-    echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
-    echo '<input type="text" name="newdirname" value="" />';
-    echo '<input type="submit" value="'.get_string('makeafolder').'" />';
-    echo '</div></form>';
-
-    echo '<br />';
-
-    echo '<form enctype="multipart/form-data" method="post" action="index.php"><div>';
-    echo '<input type="hidden" name="contextid" value="'.$contextid.'" />';
-    echo '<input type="hidden" name="filearea" value="'.$filearea.'" />';
-    echo '<input type="hidden" name="itemid" value="'.$itemid.'" />';
-    echo '<input type="hidden" name="filepath" value="'.s($filepath).'" />';
-    echo '<input type="hidden" name="filename" value="'.s($filename).'" />';
-    echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
-    echo '<input name="newfile" type="file" />';
-    echo '<input type="submit" value="'.get_string('uploadafile').'" />';
-    echo '</div></form>';
-}
-
-html_footer();
-
-/// UI functions /////////////////////////
-
-function html_footer() {
-    global $OUTPUT;
-    echo '</td></tr></table>';
-    echo $OUTPUT->footer();
-}
-
-function html_header($context, $file_info){
-    global $CFG, $SITE, $PAGE, $OUTPUT;
-
-    $strfiles = get_string("files");
-    if ($context->contextlevel == CONTEXT_MODULE) {
-        $PAGE->set_pagelayout('incourse');
-    } else if ($context->contextlevel == CONTEXT_COURSE) {
-        $PAGE->set_pagelayout('course');
-    } else {
-        $PAGE->set_pagelayout('admin');
-    }
-    $PAGE->navbar->add($strfiles);
-    $PAGE->set_url("/files/index.php", $file_info->get_params());
-    $PAGE->set_title("$SITE->shortname: $strfiles");
-    $PAGE->set_heading($SITE->fullname);
-    echo $OUTPUT->header();
-
-    echo "<table border=\"0\" style=\"margin-left:auto;margin-right:auto\" cellspacing=\"3\" cellpadding=\"3\" width=\"740\">";
-    echo "<tr>";
-    echo "<td colspan=\"2\">";
-}
-
-/// FILE FUNCTIONS ///////////////////////////////////////////////////////////
-
-function print_cell($alignment='center', $text='&nbsp;', $class='') {
-    if ($class) {
-        $class = ' class="'.$class.'"';
-    }
-    echo '<td align="'.$alignment.'" style="white-space:nowrap "'.$class.'>'.$text.'</td>';
+$strfiles = get_string("files");
+if ($context->contextlevel == CONTEXT_MODULE) {
+    $PAGE->set_pagelayout('incourse');
+} else if ($context->contextlevel == CONTEXT_COURSE) {
+    $PAGE->set_pagelayout('course');
+} else {
+    $PAGE->set_pagelayout('admin');
 }
 
-function displaydir($file_info) {
-    global $CFG, $OUTPUT;
-
-    $children = $file_info->get_children();
-    $parent_info = $file_info->get_parent();
-
-    $strname     = get_string('name');
-    $strsize     = get_string('size');
-    $strmodified = get_string('modified');
-    $strfolder   = get_string('folder');
-    $strfile     = get_string('file');
-    $strdownload = get_string('download');
-    $strdelete   = get_string('delete');
-    $straction   = get_string('action');
-
-    $path = array();
-    $params = $file_info->get_params_rawencoded();
-    $params = implode('&amp;', $params);
-    $path[] = $file_info->get_visible_name();
-
-    $level = $parent_info;
-    while ($level) {
-        $params = $level->get_params_rawencoded();
-        $params = implode('&amp;', $params);
-        $path[] = '<a href="index.php?'.$params.'">'.$level->get_visible_name().'</a>';
-        $level = $level->get_parent();
-    }
-
-    $path = array_reverse($path);
-
-    $path = implode (' / ', $path);
-    echo $path. ' /';
-
-    echo "<div>";
-    echo "<hr/>";
-    echo "<table border=\"0\" cellspacing=\"2\" cellpadding=\"2\" width=\"740\" class=\"files\">";
-    echo "<tr>";
-    echo "<th class=\"header\" scope=\"col\"></th>";
-    echo "<th class=\"header name\" scope=\"col\">$strname</th>";
-    echo "<th class=\"header size\" scope=\"col\">$strsize</th>";
-    echo "<th class=\"header date\" scope=\"col\">$strmodified</th>";
-    echo "<th class=\"header commands\" scope=\"col\">$straction</th>";
-    echo "</tr>\n";
-
-    $parentwritable = $file_info->is_writable();
-
-    if ($parent_info) {
-        $params = $parent_info->get_params_rawencoded();
-        $params = implode('&amp;', $params);
+$PAGE->navbar->add($strfiles);
+$PAGE->set_url("/files/index.php", $file_info->get_params());
+$PAGE->set_title("$SITE->shortname: $strfiles");
+$PAGE->set_heading($SITE->fullname);
+echo $OUTPUT->header();
 
-        echo "<tr class=\"folder\">";
-        print_cell();
-        print_cell('left', '<a href="index.php?'.$params.'"><img src="'.$OUTPUT->pix_url('f/parent') . '" class="icon" alt="" />&nbsp;'.get_string('parentfolder').'</a>', 'name');
-        print_cell();
-        print_cell();
-        print_cell();
+echo $OUTPUT->box_start();
+echo $OUTPUT->moodle_file_tree_viewer($context->id, $filearea, $itemid, $filepath);
+echo $OUTPUT->box_end();
 
-        echo "</tr>";
-    }
-
-    if ($children) {
-        foreach ($children as $child_info) {
-            $filename = $child_info->get_visible_name();
-            $filesize = $child_info->get_filesize();
-            $filesize = $filesize ? display_size($filesize) : '';
-            $filedate = $child_info->get_timemodified();
-            $filedate = $filedate ? userdate($filedate) : '';
-
-            $mimetype = $child_info->get_mimetype();
-
-            $params = $child_info->get_params_rawencoded();
-            $params = implode('&amp;', $params);
-
-            if ($child_info->is_directory()) {
-
-                echo "<tr class=\"folder\">";
-                print_cell();
-                print_cell("left", "<a href=\"index.php?$params\"><img src=\"" . $OUTPUT->pix_url('f/folder') . "\" class=\"icon\" alt=\"$strfolder\" />&nbsp;".s($filename)."</a>", 'name');
-                print_cell("right", $filesize, 'size');
-                print_cell("right", $filedate, 'date');
-                if ($parentwritable) {
-                    print_cell("right", "<a href=\"index.php?$params&amp;sesskey=".sesskey()."&amp;delete=1\"><img src=\"" . $OUTPUT->pix_url('t/delete') . "\" class=\"iconsmall\" alt=\"$strdelete\" /></a>", 'command');
-                } else {
-                    print_cell();
-                }
-                echo "</tr>";
-
-            } else {
-
-                if ($downloadurl = $child_info->get_url(true)) {
-                    $downloadurl = "&nbsp;<a href=\"$downloadurl\" title=\"" . get_string('downloadfile') . "\"><img src=\"" . $OUTPUT->pix_url('t/down') . "\" class=\"iconsmall\" alt=\"$strdownload\" /></a>";
-                } else {
-                    $downloadurl = '';
-                }
-
-                if ($viewurl = $child_info->get_url()) {
-                    $viewurl = "&nbsp;".$OUTPUT->action_link($viewurl, "<img src=\"" . $OUTPUT->pix_url('t/preview') . "\" class=\"iconsmall\" alt=\"$strfile\" />&nbsp;",
-                        new popup_action('click', $viewurl, 'display', array('height' => 480, 'width' => 640)));
-                } else {
-                    $viewurl = '';
-                }
-
-
-
-                echo "<tr class=\"file\">";
-                print_cell();
-                print_cell("left", "<img src=\"" . $OUTPUT->pix_url(file_mimetype_icon($mimetype)) . "\" class=\"icon\" alt=\"$strfile\" />&nbsp;".s($filename).$downloadurl.$viewurl, 'name');
-                print_cell("right", $filesize, 'size');
-                print_cell("right", $filedate, 'date');
-                if ($parentwritable) {
-                    print_cell("right", "<a href=\"index.php?$params&amp;sesskey=".sesskey()."&amp;delete=1\"><img src=\"" . $OUTPUT->pix_url('t/delete') . "\" class=\"iconsmall\" alt=\"$strdelete\" /></a>", 'command');
-                } else {
-                    print_cell();
-                }
-                echo "</tr>";
-            }
-        }
-    }
-
-    echo "</table>";
-    echo "</div>";
-    echo "<hr/>";
-
-}
+echo $OUTPUT->footer();
diff --git a/files/module.js b/files/module.js
new file mode 100644 (file)
index 0000000..8ffc89e
--- /dev/null
@@ -0,0 +1,76 @@
+// File Tree Viewer
+// Author: Dongsheng Cai <dongsheng@moodle.com>
+M.core_filetree = {
+    y3: null,
+    api: M.cfg.wwwroot+'/files/files_ajax.php',
+    request: function(url, node, cb) {
+        var api = this.api + '?action=getfiletree';
+        var params = [];
+        params['fileurl'] = url;
+        var scope = this;
+        params['sesskey']=M.cfg.sesskey;
+        var cfg = {
+            method: 'POST',
+            on: {
+                complete: function(id,o,p) {
+                    try {
+                        var data = this.y3.JSON.parse(o.responseText);
+                    } catch(e) {
+                        alert(e.toString());
+                        return;
+                    }
+                    console.info(data);
+                    if (data && data.length==0) {
+                        node.isLeaf = true;
+                    } else {
+                        for (i in data) {
+                            var mynode = {
+                                label: data[i].filename,
+                                href: data[i].url
+                            };
+                            var tmp = new YAHOO.widget.TextNode(mynode, node, false);
+                            if (data[i].isdir) {
+                                tmp.isLeaf = false;
+                            } else {
+                                tmp.isLeaf = true;
+                                tmp.target = '_blank';
+                            }
+                        }
+                    }
+                    cb();
+                }
+            },
+            arguments: {
+                scope: scope
+            },
+            headers: {
+                'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
+            },
+            data: build_querystring(params),
+            context: this
+        };
+        this.y3.io(api, cfg);
+    },
+    init : function(Y, options){
+        var tree = new YAHOO.widget.TreeView('course-file-tree-view');
+        tree.setDynamicLoad(this.dynload);
+        tree.subscribe("clickEvent", this.onclick);
+        var root = tree.getRoot();
+        var children = root.children;
+        for (i in children) {
+            if (children[i].className == 'file-tree-folder') {
+                children[i].isLeaf = false;
+            } else {
+                children[i].isLeaf = true;
+            }
+        }
+        tree.render();
+        this.y3 = Y;
+    }, 
+    dynload: function(node, oncompletecb) {
+        M.core_filetree.request(node.href, node, oncompletecb);
+    },
+    onclick: function(e) {
+        YAHOO.util.Event.preventDefault(e); 
+    }
+}
index e7e0527..61b6365 100644 (file)
@@ -114,6 +114,7 @@ $string['manageurl'] = 'Manage';
 $string['manageuserrepository'] = 'Manage individual repository';
 $string['noenter'] = 'Nothing entered';
 $string['nofilesattached'] = 'No files attached';
+$string['nofilesavailable'] = 'No files available';
 $string['nomorefiles'] = 'No more attachments allowed';
 $string['nopathselected'] = 'No destination path select yet (double click tree node to select)';
 $string['nopermissiontoaccess'] = 'No permission to access this repository';
index 8c900f2..5d0e247 100644 (file)
@@ -36,18 +36,18 @@ interface renderable {
 }
 
 /**
- * Data structure representing a file tree viewer
+ * Data structure representing a area file tree viewer
  *
  * @copyright 2010 Dongsheng Cai
  * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  * @since     Moodle 2.0
  */
-class file_tree_viewer implements renderable {
+class area_file_tree_viewer implements renderable {
     public $dir;
     public $result;
     public $filearea;
     /**
-     * Constructor of file_tree_viewer class
+     * Constructor of area_file_tree_viewer class
      * @param int $contextid
      * @param string $area, file area
      * @param int $itemid
@@ -86,6 +86,66 @@ class file_tree_viewer implements renderable {
     }
 }
 
+/**
+ * Data structure representing a general moodle file tree viewer
+ *
+ * @copyright 2010 Dongsheng Cai
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ * @since     Moodle 2.0
+ */
+class moodle_file_tree_viewer implements renderable {
+    public $tree;
+    public $path;
+    /**
+     * Constructor of moodle_file_tree_viewer class
+     * @param int $contextid
+     * @param string $area, file area
+     * @param int $itemid
+     * @param string $urlbase, file serving url base
+     */
+    public function __construct($contextid, $filearea, $itemid, $filepath) {
+        global $CFG, $OUTPUT;
+        $this->tree = array();
+        $browser = get_file_browser();
+        $fileinfo = $browser->get_file_info(get_context_instance_by_id($contextid), $filearea, $itemid, $filepath);
+        $children = $fileinfo->get_children();
+        $parent_info = $fileinfo->get_parent();
+
+        $level = $parent_info;
+        $this->path = array();
+        while ($level) {
+            $params = $level->get_params();
+            $url = new moodle_url('/files/index.php', $params);
+            $this->path[] = html_writer::link($url->out(false), $level->get_visible_name());
+            $level = $level->get_parent();
+        }
+        $this->path = array_reverse($this->path);
+        $this->path[] = $fileinfo->get_visible_name();
+
+        foreach ($children as $child) {
+            $filedate = $child->get_timemodified();
+            $filesize = $child->get_filesize();
+            $mimetype = $child->get_mimetype();
+            $params = $child->get_params();
+            $url = new moodle_url('/files/index.php', $params);
+            $fileitem = array(
+                    'params'=>$params,
+                    'filename'=>$child->get_visible_name(),
+                    'filedate'=>$filedate ? userdate($filedate) : '',
+                    'filesize'=>$filesize ? display_size($filesize) : ''
+                    );
+            if ($child->is_directory()) {
+                $fileitem['isdir'] = true;
+                $fileitem['url'] = $url->out(false);
+            } else {
+                $fileitem['url'] = $child->get_url();
+            }
+            $this->tree[] = $fileitem;
+        }
+
+    }
+}
+
 /**
  * Data structure representing a file picker.
  *
@@ -2467,10 +2527,10 @@ class image_gallery implements renderable {
         if ($this->grouping !== null) {
             $image->link['rel'] .= "[{$this->grouping}]";
         }
-        
+
         $image->thumb['src'] = new moodle_url($thumburl);
         $image->thumb['alt'] = $alt;
-        
+
         $this->images[] = $image;
     }
 }
index fd4088e..8de63e2 100644 (file)
@@ -1769,11 +1769,61 @@ class core_renderer extends renderer_base {
         return html_writer::tag('a', $output, $attributes);
     }
 
+
+    /**
+     * General moodle file tree viwer
+     *
+     * <pre>
+     * $OUTPUT->moodle_file_tree_viewer($contextid, $filearea, $itemid, $filepath);
+     * </pre>
+     *
+     * @param int $contextid
+     * @param string $area
+     * @param int $itemid
+     * @param string $filepath
+     * @return string HTML fragment
+     */
+    public function moodle_file_tree_viewer($contextid, $filearea, $itemid, $filepath) {
+        $tree = new moodle_file_tree_viewer($contextid, $filearea, $itemid, $filepath);
+        return $this->render($tree);
+    }
+    public function render_moodle_file_tree_viewer(moodle_file_tree_viewer $tree) {
+        $html = '<div>';
+        foreach($tree->path as $path) {
+            $html .= $path;
+            $html .= ' / ';
+        }
+        $html .= '</div>';
+
+        $html .= '<div id="course-file-tree-view" class="filemanager-container">';
+        if (empty($tree->tree)) {
+            $html .= get_string('nofilesavailable', 'repository');
+        } else {
+            $this->page->requires->js_init_call('M.core_filetree.init');
+            $html .= '<ul>';
+            foreach($tree->tree as $node) {
+                $link_attributes = array();
+                if (!empty($node['isdir'])) {
+                    $class = ' class="file-tree-folder"';
+                } else {
+                    $class = ' class="file-tree-file"';
+                    $link_attributes['target'] = '_blank';
+                }
+                $html .= '<li '.$class.'>';
+                $html .= html_writer::link($node['url'], $node['filename'], $link_attributes);
+                $html .= '</li>';
+            }
+            $html .= '</ul>';
+        }
+        $html .= '</div>';
+        return $html;
+    }
+
     /**
-     * Print the file tree viewer
+     * Print the area file tree viewer
      *
      * <pre>
-     * $OUTPUT->file_tree_viewer($contextid, $filearea, $itemid, $urlbase);
+     * $OUTPUT->area_file_tree_viewer($contextid, $filearea, $itemid, $urlbase);
      * </pre>
      *
      * @param int $contextid
@@ -1782,17 +1832,17 @@ class core_renderer extends renderer_base {
      * @param string $urlbase
      * @return string HTML fragment
      */
-    public function file_tree_viewer($contextid, $area, $itemid, $urlbase='') {
-        $tree = new file_tree_viewer($contextid, $area, $itemid, $urlbase);
+    public function area_file_tree_viewer($contextid, $area, $itemid, $urlbase='') {
+        $tree = new area_file_tree_viewer($contextid, $area, $itemid, $urlbase);
         return $this->render($tree);
     }
 
     /**
-     * Internal implementation of file tree viewer rendering.
-     * @param file_tree_viewer $tree
+     * Internal implementation of area file tree viewer rendering.
+     * @param area_file_tree_viewer $tree
      * @return string
      */
-    public function render_file_tree_viewer(file_tree_viewer $tree) {
+    public function render_area_file_tree_viewer(area_file_tree_viewer $tree) {
         $this->page->requires->js_init_call('M.mod_folder.init_tree', array(true));
         $html = '';
         $html .= '<div id="folder_tree">';
index cce683a..49c9873 100644 (file)
@@ -427,6 +427,11 @@ class page_requirements_manager {
                                     'fullpath' => '/rating/module.js',
                                     'requires' => array('node', 'event', 'overlay', 'io', 'json'));
                     break;
+                case 'core_filetree':
+                    $module = array('name'     => 'core_filetree',
+                                    'fullpath' => '/files/module.js',
+                                    'requires' => array('node', 'event', 'overlay', 'io', 'json', 'yui2-treeview'));
+                    break;
             }
 
         } else {
index 0523916..c826f7c 100644 (file)
@@ -65,6 +65,6 @@ if (trim(strip_tags($folder->intro))) {
 }
 
 echo $OUTPUT->box_start('generalbox foldertree');
-echo $OUTPUT->file_tree_viewer($context->id, 'folder_content', 0);
+echo $OUTPUT->area_file_tree_viewer($context->id, 'folder_content', 0);
 echo $OUTPUT->box_end();
 echo $OUTPUT->footer();