diff --git a/repository/filepicker.js b/repository/filepicker.js index 0d345dbc445..9cd8a9d4247 100644 --- a/repository/filepicker.js +++ b/repository/filepicker.js @@ -99,17 +99,9 @@ M.core_filepicker.init = function(Y, options) { }, request: function(args, redraw) { - var client_id = args.client_id; - if (!args.api) { - var api = this.api + '?action='+args.action; - } else { - var api = args.api + '?action='+args.action; - } + var api = (args.api?args.api:this.api) + '?action='+args.action; var params = {}; - var scope = this; - if (args['scope']) { - scope = args['scope']; - } + var scope = args['scope']?args['scope']:this; params['repo_id']=args.repository_id; params['p'] = args.path?args.path:''; params['page'] = args.page?args.page:''; @@ -167,7 +159,7 @@ M.core_filepicker.init = function(Y, options) { if (args.onerror) { args.onerror(id,data,p); } else { - Y.one(panel_id).set('innerHTML', ''); + this.fpnode.one('.fp-content').setContent(''); } return; } else if (data && data.event) { @@ -313,6 +305,7 @@ M.core_filepicker.init = function(Y, options) { node.one('.fp-dlg-text').setContent(M.str.repository.fileexistsdialog_filemanager); } } + this.fpnode.one('.fp-select').removeClass('loading'); this.process_dlg.dialogdata = data; this.fpnode.one('.fp-dlg .fp-dlg-butrename').setContent(M.util.get_string('renameto', 'repository', data.newfile.filename)); this.process_dlg.show(); @@ -509,9 +502,7 @@ M.core_filepicker.init = function(Y, options) { set_width(filenamediv, width) set_width(imgdiv, width) set_height(imgdiv, height); - var img = Y.Node.create(''). - set('src', node.thumbnail). - set('title', node.title); + var img = Y.Node.create('').setAttrs({src:node.thumbnail,title:node.title}); if(node.thumbnail_alt) { img.set('alt', node.thumbnail_alt); } @@ -552,6 +543,7 @@ M.core_filepicker.init = function(Y, options) { this.selectui.show(); var client_id = this.options.client_id; var selectnode = this.fpnode.one('.fp-select'); + selectnode.removeClass('loading'); selectnode.one('#newname-'+client_id).set('value', args.title); selectnode.one('#text-author-'+client_id).set('value', this.options.author); @@ -633,16 +625,18 @@ M.core_filepicker.init = function(Y, options) { params['linkexternal'] = 'yes'; } - // TODO show some waiting process here + selectnode.addClass('loading'); this.request({ action:'download', client_id: client_id, repository_id: repository_id, 'params': params, onerror: function(id, obj, args) { + selectnode.removeClass('loading'); scope.selectui.hide(); }, callback: function(id, obj, args) { + selectnode.removeClass('loading'); if (scope.options.editor_target && scope.options.env=='editor') { scope.options.editor_target.value=obj.url; scope.options.editor_target.onchange(); @@ -660,7 +654,8 @@ M.core_filepicker.init = function(Y, options) { }, false); }, this); var elform = selectnode.one('form'); - elform.appendChild(Y.Node.create('').set('id', 'filesource-'+client_id)); + elform.appendChild(Y.Node.create(''). + setAttrs({type:'hidden',id:'filesource-'+client_id})); elform.on('keydown', function(e) { if (e.keyCode == 13) { getfile.simulate('click'); @@ -715,8 +710,7 @@ M.core_filepicker.init = function(Y, options) { replace(/\{TOOLLOGOUTID}/g, 'fp-tb-logout-'+client_id). replace(/\{TOOLMANAGEID}/g, 'fp-tb-manage-'+client_id). replace(/\{TOOLHELPID}/g, 'fp-tb-help-'+client_id); - this.fpnode = Y.Node.create(nodecontent); - this.fpnode.set('id', 'filepicker-'+client_id); + this.fpnode = Y.Node.create(nodecontent).set('id', 'filepicker-'+client_id); var fpselectnode = Y.Node.create(M.core_filepicker.templates.selectlayout. replace(/\{IMGID}/g, 'img-'+client_id). replace(/\{NEWNAMEID}/g, 'newname-'+client_id). @@ -760,6 +754,7 @@ M.core_filepicker.init = function(Y, options) { // assign callbacks for toolbar links this.setup_toolbar(); this.setup_select_file(); + this.hide_header(); // processing repository listing // Resort the repositories by sortorder @@ -795,11 +790,7 @@ M.core_filepicker.init = function(Y, options) { } // display error if no repositories found if (sorted_repositories.length==0) { - if (this.options.externallink) { - list.set('innerHTML', M.str.repository.norepositoriesexternalavailable); // TODO as error - } else { - list.set('innerHTML', M.str.repository.norepositoriesavailable); // TODO as error - } + this.display_error(M.str.repository.norepositoriesavailable, 'norepositoriesavailable') } // display repository that was used last time this.show_recent_repository(); @@ -822,22 +813,13 @@ M.core_filepicker.init = function(Y, options) { this.print_header(); }, print_login: function(data) { - // TODO !!!! this.parse_repository_options(data); var client_id = this.options.client_id; var repository_id = data.repo_id; var l = this.logindata = data.login; var loginurl = ''; - var panel = this.fpnode.one('.fp-content'); - var action = 'login'; - if (data['login_btn_action']) { - action=data['login_btn_action']; - } + var action = data['login_btn_action'] ? data['login_btn_action'] : 'login'; var form_id = 'fp-form-'+client_id; - var download_button_id = 'fp-form-download-button-'+client_id; - var search_button_id = 'fp-form-search-button-'+client_id; - var login_button_id = 'fp-form-login-button-'+client_id; - var popup_button_id = 'fp-form-popup-button-'+client_id; var loginform_node = Y.Node.create(M.core_filepicker.templates.loginform); loginform_node.one('form').set('id', form_id); @@ -847,7 +829,7 @@ M.core_filepicker.init = function(Y, options) { 'textarea' : loginform_node.one('.fp-login-textarea'), 'select' : loginform_node.one('.fp-login-select'), 'text' : loginform_node.one('.fp-login-text'), - 'radio' : loginform_node.one('.fp-login-radio'), + 'radio' : loginform_node.one('.fp-login-radiogroup'), 'checkbox' : loginform_node.one('.fp-login-checkbox'), 'input' : loginform_node.one('.fp-login-input') }; @@ -866,17 +848,29 @@ M.core_filepicker.init = function(Y, options) { node = templates['input'].cloneNode(true); } if (l[k].type == 'popup') { - node.one('button').set('id', popup_button_id); + // submit button + var popupbutton = node.one('button'); + popupbutton.on('click', function(e){ + M.core_filepicker.active_filepicker = this; + window.open(loginurl, 'repo_auth', 'location=0,status=0,width=500,height=300,scrollbars=yes'); + e.preventDefault(); + }, this); + loginform_node.one('form').on('keydown', function(e) { + if (e.keyCode == 13) { + popupbutton.simulate('click'); + e.preventDefault(); + } + }, this); loginform_node.all('.fp-login-submit').remove(); action = 'popup'; }else if(l[k].type=='textarea') { // textarea element if (node.one('label')) { node.one('label').set('for', l[k].id).setContent(l[k].label) } - node.one('textarea').set('id', l[k].id).set('name', l[k].name); + node.one('textarea').setAttrs({id:l[k].id, name:l[k].name}); }else if(l[k].type=='select') { // select element if (node.one('label')) { node.one('label').set('for', l[k].id).setContent(l[k].label) } - node.one('select').set('id', l[k].id).set('name', l[k].name).setContent(''); + node.one('select').setAttrs({id:l[k].id, name:l[k].name}).setContent(''); for (i in l[k].options) { node.one('select').appendChild( Y.Node.create('