mirror of
https://github.com/moodle/moodle.git
synced 2025-04-22 08:55:15 +02:00
MDL-13766, improve file picker UI
This commit is contained in:
parent
a3e153c2e9
commit
879b4f9ae1
@ -249,7 +249,7 @@ class page_requirements_manager {
|
||||
$this->string_for_js('confirmation', 'admin');
|
||||
$this->string_for_js('cancel', 'moodle');
|
||||
$this->string_for_js('yes', 'moodle');
|
||||
|
||||
|
||||
if ($page->pagelayout === 'frametop') {
|
||||
$this->js_init_call('M.util.init_frametop');
|
||||
}
|
||||
@ -338,7 +338,7 @@ class page_requirements_manager {
|
||||
|
||||
$module = null;
|
||||
|
||||
|
||||
|
||||
if (strpos($component, 'core_') === 0) {
|
||||
// must be some core stuff - list here is not complete, this is just the stuff used from multiple places
|
||||
// so that we do nto have to repeat the definition of these modules over and over again
|
||||
@ -358,7 +358,9 @@ class page_requirements_manager {
|
||||
array('saving', 'repository'), array('search', 'repository'), array('searching', 'repository'), array('size', 'repository'),
|
||||
array('submit', 'repository'), array('sync', 'repository'), array('title', 'repository'), array('upload', 'repository'),
|
||||
array('uploading', 'repository'), array('xhtmlerror', 'repository'),
|
||||
array('xhtml', 'quiz'), array('cancel'), array('chooselicense', 'repository'), array('author', 'repository')));
|
||||
array('xhtml', 'quiz'), array('cancel'), array('chooselicense', 'repository'), array('author', 'repository'),
|
||||
array('ok', 'moodle'), array('error', 'moodle'), array('info', 'moodle')
|
||||
));
|
||||
break;
|
||||
case 'core_comment':
|
||||
$module = array('name' => 'core_comment',
|
||||
@ -714,8 +716,8 @@ class page_requirements_manager {
|
||||
* @param string $function The name of the function to call
|
||||
* @param array $arguments An optional array of argument parameters to pass to the function
|
||||
* @return void
|
||||
*/
|
||||
public function event_handler($selector, $event, $function, array $arguments = null) {
|
||||
*/
|
||||
public function event_handler($selector, $event, $function, array $arguments = null) {
|
||||
$this->eventhandlers[] = array('selector'=>$selector, 'event'=>$event, 'function'=>$function, 'arguments'=>$arguments);
|
||||
}
|
||||
|
||||
|
@ -120,14 +120,20 @@ M.core_filepicker.init = function(Y, options) {
|
||||
try {
|
||||
data = Y.JSON.parse(o.responseText);
|
||||
} catch(e) {
|
||||
Y.one(panel_id).set('innerHTML', 'ERROR: '+M.str.repository.invalidjson);
|
||||
scope.print_msg(M.str.repository.invalidjson, 'error');
|
||||
Y.one(panel_id).set('innerHTML', 'ERROR: '+M.str.repository.invalidjson+'<pre>'+stripHTML(o.responseText)+'</pre>');
|
||||
return;
|
||||
}
|
||||
// error checking
|
||||
if (data && data.e) {
|
||||
Y.one(panel_id).set('innerHTML', 'ERROR: '+data.e);
|
||||
//Y.one(panel_id).set('innerHTML', 'ERROR: '+data.e);
|
||||
scope.print_msg(data.e, 'error');
|
||||
scope.list();
|
||||
return;
|
||||
} else {
|
||||
if (data.msg) {
|
||||
scope.print_msg(data.msg, 'info');
|
||||
}
|
||||
args.callback(id,data,p);
|
||||
}
|
||||
}
|
||||
@ -150,7 +156,42 @@ M.core_filepicker.init = function(Y, options) {
|
||||
this.wait('load');
|
||||
}
|
||||
},
|
||||
print_msg: function(msg, type) {
|
||||
var client_id = this.options.client_id;
|
||||
var dlg_id = 'fp-msg-dlg-'+client_id;
|
||||
function handleYes() {
|
||||
this.hide();
|
||||
}
|
||||
var icon = YAHOO.widget.SimpleDialog.ICON_INFO;
|
||||
if (type=='error') {
|
||||
icon = YAHOO.widget.SimpleDialog.ICON_ALARM;
|
||||
}
|
||||
if (!this.msg_dlg) {
|
||||
this.msg_dlg = new YAHOO.widget.SimpleDialog(dlg_id,
|
||||
{ width: "300px",
|
||||
fixedcenter: true,
|
||||
visible: true,
|
||||
draggable: true,
|
||||
close: true,
|
||||
text: msg,
|
||||
modal: false,
|
||||
icon: icon,
|
||||
zindex: 9999992,
|
||||
constraintoviewport: true,
|
||||
buttons: [{ text:M.str.moodle.ok, handler:handleYes, isDefault:true }]
|
||||
});
|
||||
this.msg_dlg.render(document.body);
|
||||
} else {
|
||||
this.msg_dlg.setBody(msg);
|
||||
}
|
||||
var header = M.str.moodle.info;
|
||||
if (type=='error') {
|
||||
header = M.str.moodle.error;
|
||||
}
|
||||
this.msg_dlg.setHeader(type);
|
||||
this.msg_dlg.show();
|
||||
|
||||
},
|
||||
build_tree: function(node, level) {
|
||||
var client_id = this.options.client_id;
|
||||
var dynload = this.active_repo.dynload;
|
||||
@ -236,8 +277,19 @@ M.core_filepicker.init = function(Y, options) {
|
||||
Y.one(panel_id).set('innerHTML', '');
|
||||
|
||||
this.print_header();
|
||||
var tree = Y.Node.create('<div id="treeview-'+client_id+'"></div>');
|
||||
|
||||
var html = '<div class="fp-tree-panel" id="treeview-'+client_id+'">';
|
||||
if (list.length==0) {
|
||||
html += '<div class="fp-emptylist mdl-align">' +M.str.repository.emptylist+'</div>';
|
||||
}
|
||||
html += '</div>';
|
||||
|
||||
var tree = Y.Node.create(html);
|
||||
Y.one(panel_id).appendChild(tree);
|
||||
if (list.length==0) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.treeview = new YAHOO.widget.TreeView('treeview-'+client_id);
|
||||
if (dynload) {
|
||||
this.treeview.setDynamicLoad(this.treeview_dynload, 1);
|
||||
@ -268,7 +320,13 @@ M.core_filepicker.init = function(Y, options) {
|
||||
|
||||
this.print_header();
|
||||
|
||||
var gridpanel = Y.Node.create('<div id="fp-grid-panel-'+client_id+'"></div>');
|
||||
var html = '<div class="fp-grid-panel" id="fp-grid-panel-'+client_id+'">';
|
||||
if (list.length==0) {
|
||||
html += '<div class="fp-emptylist mdl-align">' +M.str.repository.emptylist+'</div>';
|
||||
}
|
||||
html += '</div>';
|
||||
|
||||
var gridpanel = Y.Node.create(html);
|
||||
Y.one('#panel-'+client_id).appendChild(gridpanel);
|
||||
var count = 0;
|
||||
for(var k in list) {
|
||||
@ -742,9 +800,6 @@ M.core_filepicker.init = function(Y, options) {
|
||||
'callback': function(id, o, args) {
|
||||
scope.parse_repository_options(o);
|
||||
scope.view_files();
|
||||
if (o.msg) {
|
||||
// do something
|
||||
}
|
||||
}
|
||||
}, true);
|
||||
}, this);
|
||||
@ -883,9 +938,6 @@ M.core_filepicker.init = function(Y, options) {
|
||||
scope.parse_repository_options(obj);
|
||||
scope.view_files();
|
||||
}
|
||||
if (obj.msg) {
|
||||
// TODO: Print message
|
||||
}
|
||||
}
|
||||
}, true);
|
||||
},
|
||||
|
@ -481,13 +481,14 @@ body.tag .managelink {padding: 5px;}
|
||||
.file-picker .fp-paging a {padding: .5em;border: 1px solid #CCC;}
|
||||
.file-picker .fp-paging a.cur_page {border: 1px solid blue;}
|
||||
.file-picker .fp-popup {text-align:center;}
|
||||
.file-picker .fp-grid-panel{}
|
||||
.file-picker .fp-grid {float:left;text-align:center;}
|
||||
.file-picker .fp-grid div {overflow: hidden;}
|
||||
.file-picker .fp-grid p {margin:0;padding:0;background: #FFFFCC;}
|
||||
.file-picker .fp-grid .label {height:48px;text-align:center;}
|
||||
.file-picker .fp-grid span {color:gray;}
|
||||
.file-picker .fp-error {padding: 2em 0;margin: 3em 5px;text-align:center;background: #FFBBBB;}
|
||||
.file-picker .fp-msg {padding: 2em 0;margin: 3em 5px;text-align:center;background: green;}
|
||||
.file-picker .fp-emptylist, .file-picker .fp-msg {padding: 2em 0;margin: 1em;text-align:center;background: green;}
|
||||
/* file picker search dialog */
|
||||
.file-picker div.bd {text-align:left;}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user