diff --git a/files/renderer.php b/files/renderer.php
index 73009a240e8..6ec7145a41a 100644
--- a/files/renderer.php
+++ b/files/renderer.php
@@ -265,6 +265,38 @@ class core_files_renderer extends plugin_renderer_base {
return preg_replace('/\{\!\}/', '', $rv);
}
+ /**
+ * FileManager JS template for displaying 'Make new folder' dialog.
+ *
+ * Must be wrapped in an element, CSS for this element must define width and height of the window;
+ *
+ * Must have one input element with type="text" (for users to enter the new folder name);
+ *
+ * content of element with class 'fp-dlg-curpath' will be replaced with current path where
+ * new folder is about to be created;
+ * elements with classes 'fp-dlg-butcreate' and 'fp-dlg-butcancel' will hold onclick events;
+ *
+ * @return string
+ */
+ private function fm_js_template_mkdir() {
+ $rv = '
+
+
+
+
';
+ return preg_replace('/\{\!\}/', '', $rv);
+ }
+
+ /**
+ * FileManager JS template for error/info message displayed as a separate popup window.
+ *
+ * @see fp_js_template_message()
+ * @return string
+ */
+ private function fm_js_template_message() {
+ return $this->fp_js_template_message();
+ }
+
/**
* FileManager JS template for window with file information/actions.
*
diff --git a/lib/form/filemanager.js b/lib/form/filemanager.js
index 5624f922ec7..47fa057d38f 100644
--- a/lib/form/filemanager.js
+++ b/lib/form/filemanager.js
@@ -118,7 +118,7 @@ M.form_filemanager.init = function(Y, options) {
this.refresh(this.currentpath); // MDL-31113 get latest list from server
},
- wait: function(client_id) {
+ wait: function() {
this.filemanager.addClass('fm-updating');
},
request: function(args, redraw) {
@@ -150,7 +150,7 @@ M.form_filemanager.init = function(Y, options) {
data = Y.JSON.parse(o.responseText);
} catch(e) {
// TODO display error
- //scope.print_msg(M.str.repository.invalidjson, 'error');
+ scope.print_msg(M.str.repository.invalidjson, 'error');
//scope.display_error(M.str.repository.invalidjson+'
'+stripHTML(o.responseText)+'
', 'invalidjson')
return;
}
@@ -174,7 +174,7 @@ M.form_filemanager.init = function(Y, options) {
}
Y.io(api, cfg);
if (redraw) {
- this.wait(this.client_id);
+ this.wait();
}
},
filepicker_callback: function(obj) {
@@ -212,6 +212,36 @@ M.form_filemanager.init = function(Y, options) {
}
}, true);
},
+ /** displays message in a popup */
+ print_msg: function(msg, type) {
+ var header = M.str.moodle.error;
+ if (type != 'error') {
+ type = 'info'; // one of only two types excepted
+ header = M.str.moodle.info;
+ }
+ if (!this.msg_dlg) {
+ var node = Y.Node.create(M.form_filemanager.templates.message);
+ this.filemanager.appendChild(node);
+
+ this.msg_dlg = new Y.Panel({
+ srcNode : node,
+ zIndex : 800000,
+ centered : true,
+ modal : true,
+ visible : false,
+ render : true
+ });
+ node.one('.fp-msg-butok').on('click', function(e) {
+ e.preventDefault();
+ this.msg_dlg.hide();
+ }, this);
+ }
+
+ this.msg_dlg.set('headerContent', header);
+ this.filemanager.one('.fp-msg').removeClass('fp-msg-info').removeClass('fp-msg-error').addClass('fp-msg-'+type)
+ this.filemanager.one('.fp-msg .fp-msg-text').setContent(msg);
+ this.msg_dlg.show();
+ },
setup_buttons: function() {
var button_download = this.filemanager.one('.fp-btn-download');
var button_create = this.filemanager.one('.fp-btn-mkdir');
@@ -235,9 +265,11 @@ M.form_filemanager.init = function(Y, options) {
e.preventDefault();
var scope = this;
// a function used to perform an ajax request
- function perform_action(e) {
- var foldername = Y.one('#fm-newname').get('value');
+ var perform_action = function(e) {
+ e.preventDefault();
+ var foldername = Y.one('#fm-newname-'+scope.client_id).get('value');
if (!foldername) {
+ scope.mkdir_dialog.hide();
return;
}
scope.request({
@@ -247,31 +279,35 @@ M.form_filemanager.init = function(Y, options) {
var filepath = obj.filepath;
scope.mkdir_dialog.hide();
scope.refresh(filepath);
- Y.one('#fm-newname').set('value', '');
+ Y.one('#fm-newname-'+scope.client_id).set('value', '');
if (typeof M.core_formchangechecker != 'undefined') {
M.core_formchangechecker.set_form_changed();
}
}
});
}
- if (!Y.one('#fm-mkdir-dlg')) {
- var dialog = Y.Node.create('