'+mstr.repository.nopathselected+'
';
+
+ YAHOO.moodle.filemanager.movefile_dialog.render();
+ // generate filemanager html
html_compiler(client_id, options);
}
}
return _filemanager;
})();
-filemanager.url = moodle_cfg.wwwroot + '/files/files_ajax.php';
-filemanager.fileicon = moodle_cfg.wwwroot + '/pix/i/settings.gif';
-// callback function for file picker
-function filemanager_callback(obj) {
- refresh_filemanager(obj.filepath, fm_cfg[obj.client_id]);
- fm_cfg[obj.client_id].currentfiles++;
+/**
+ * This function will be called by filepicker once it got the file successfully
+ */
+function filemanager_callback(params) {
+ var client_id = params.client_id;
+ fm_refresh(params.filepath, fm_cfg[client_id]);
+ fm_cfg[client_id].currentfiles++;
+ console.info(fm_cfg[client_id].currentfiles);
- if (fm_cfg[obj.client_id].currentfiles>=fm_cfg[obj.client_id].maxfiles && fm_cfg[obj.client_id].maxfiles!=-1) {
- var btn = document.getElementById('btnadd-'+obj.client_id);
- if (btn)
- btn.style.display = 'none';
+ if (fm_cfg[client_id].currentfiles>=fm_cfg[client_id].maxfiles
+ && fm_cfg[client_id].maxfiles!=-1) {
+ var addfilebutton = document.getElementById('btnadd-'+client_id);
+ if (addfilebutton) {
+ addfilebutton.style.display = 'none';
+ }
}
}
-// setup options for file picker
-function fm_launch_filepicker(el_id, options) {
+/**
+ * Setup options to launch file picker.
+ * Fired by add file button.
+ */
+function fm_launch_filepicker(target, options) {
var picker = document.createElement('DIV');
picker.id = 'file-picker-'+options.client_id;
picker.className = 'file-picker';
document.body.appendChild(picker);
- var el=document.getElementById(el_id);
+
+ var target=document.getElementById(target);
var params = {};
params.env = 'filemanager';
params.itemid = options.itemid;
params.maxfiles = options.maxfiles;
params.maxbytes = options.maxbytes;
params.savepath = options.savepath;
- params.target = el;
+ params.target = target;
+ // setup filemanager callback
params.callback = filemanager_callback;
var fp = open_filepicker(options.client_id, params);
return false;
}
-// create a new folder in draft area
-function mkdir(e, client_id, itemid) {
- var mkdir_cb = {
+/**
+ * This function will create a dialog of creating new folder
+ * Fired by 'make a folder' button
+ */
+function fm_create_folder(e, client_id, itemid) {
+ // deal with ajax response
+ var mkdir_ajax_callback = {
success: function(o) {
var result = json_decode(o.responseText);
- fm_mkdir_dlg.hide();
- refresh_filemanager(result.filepath, fm_cfg[client_id]);
+ YAHOO.moodle.filemanager.mkdir_dialog.hide();
+ fm_refresh(result.filepath, fm_cfg[client_id]);
}
}
- var perform = function(e) {
+ // a function used to perform an ajax request
+ var perform_ajax_mkdir = function(e) {
var foldername = document.getElementById('fm-newname').value;
if (!foldername) {
return;
@@ -75,9 +138,10 @@ function mkdir(e, client_id, itemid) {
params['sesskey'] = moodle_cfg.sesskey;
params['filepath'] = fm_cfg[client_id].currentpath;
var trans = YAHOO.util.Connect.asyncRequest('POST',
- filemanager.url+'?action=mkdir', mkdir_cb, build_querystring(params));
+ fm_cfg.api+'?action=mkdir', mkdir_ajax_callback, build_querystring(params));
YAHOO.util.Event.preventDefault(e);
}
+ // create dialog html element
if (!document.getElementById('fm-mkdir-dlg')) {
var el = document.createElement('DIV');
el.id = 'fm-mkdir-dlg';
@@ -85,7 +149,7 @@ function mkdir(e, client_id, itemid) {
document.body.appendChild(el);
var x = YAHOO.util.Event.getPageX(e);
var y = YAHOO.util.Event.getPageY(e);
- fm_mkdir_dlg = new YAHOO.widget.Dialog("fm-mkdir-dlg", {
+ YAHOO.moodle.filemanager.mkdir_dialog = new YAHOO.widget.Dialog("fm-mkdir-dlg", {
width: "300px",
visible: true,
x:y,
@@ -94,14 +158,15 @@ function mkdir(e, client_id, itemid) {
});
}
- var buttons = [ { text:mstr.moodle.ok, handler:perform, isDefault:true },
+ var buttons = [ { text:mstr.moodle.ok, handler:perform_ajax_mkdir, isDefault:true },
{ text:mstr.moodle.cancel, handler:function(){this.cancel();}}];
- fm_mkdir_dlg.cfg.queueProperty("buttons", buttons);
- fm_mkdir_dlg.render();
- fm_mkdir_dlg.show();
+ YAHOO.moodle.filemanager.mkdir_dialog.cfg.queueProperty("buttons", buttons);
+ YAHOO.moodle.filemanager.mkdir_dialog.render();
+ YAHOO.moodle.filemanager.mkdir_dialog.show();
- var k1 = new YAHOO.util.KeyListener(document.getElementById('fm-mkdir-dlg'), {keys:13}, {fn:function(){perform();}, correctScope: true});
+ // presss 'enter' key to perform ajax request
+ var k1 = new YAHOO.util.KeyListener(document.getElementById('fm-mkdir-dlg'), {keys:13}, {fn:function(){perform_ajax_mkdir();}, correctScope: true});
k1.enable();
document.getElementById('fm-newname').value = '';
@@ -112,7 +177,9 @@ function html_compiler(client_id, options) {
var list = options.list;
var breadcrumb = document.getElementById('fm-path-'+client_id);
var count = 0;
+ // build breadcrumb
if (options.path) {
+ // empty breadcrumb
breadcrumb.innerHTML = '';
var count = 0;
for(var p in options.path) {
@@ -124,40 +191,47 @@ function html_compiler(client_id, options) {
sep.innerHTML = ' ▶ ';
}
count++;
+
var pathid = 'fm-path-node-'+client_id;
pathid += ('-'+count);
- var el = document.createElement('A');
- el.id = pathid;
- el.innerHTML = options.path[p].name;
- el.href = '###';
+ var pathnode = document.createElement('A');
+ pathnode.id = pathid;
+ pathnode.innerHTML = options.path[p].name;
+ pathnode.href = '###';
breadcrumb.appendChild(sep);
- breadcrumb.appendChild(el);
+ breadcrumb.appendChild(pathnode);
var args = {};
args.itemid = options.itemid;
args.requestpath = options.path[p].path;
args.client_id = client_id;
- YAHOO.util.Event.addListener(pathid, 'click', click_breadcrumb, args);
+ YAHOO.util.Event.addListener(pathid, 'click', fm_click_breadcrumb, args);
}
}
- var template = document.getElementById('fm-tmpl');
+ var template = document.getElementById('fm-template');
var container = document.getElementById('filemanager-' + client_id);
- var listhtml = '