From ef42c03fd750a640f699a88bd0341b0caae991f2 Mon Sep 17 00:00:00 2001 From: dongsheng Date: Thu, 30 Apr 2009 06:30:05 +0000 Subject: [PATCH] "MDL-18486, compressed file picker js code" --- repository/repository.js | 1146 +--------------------------------- repository/repository.src.js | 1145 +++++++++++++++++++++++++++++++++ 2 files changed, 1146 insertions(+), 1145 deletions(-) create mode 100644 repository/repository.src.js diff --git a/repository/repository.js b/repository/repository.js index 9eaec863ef..85cc454b0d 100644 --- a/repository/repository.js +++ b/repository/repository.js @@ -1,1145 +1 @@ -// $Id$ -/////////////////////////////////////////////////////////////////////////// -// // -// Don't modify this file unless you know how it works // -// // -/////////////////////////////////////////////////////////////////////////// -/** - * repository_client is a javascript class, it contains several static - * methods you can call it directly without creating an instance. - * If you are going to create a file picker, you need create an instance - * repo = new repository_client(); - - */ - -var repository_listing = {}; -var cached_client_id = {}; -var file_extensions = {}; -/* when selected a file, filename will be cached in this varible */ -var new_filename = ''; -// will be used by login form -var cached_id; -var cached_repo_id; -// repository_client has static functions -var repository_client = (function(){ - // private static field - var version = '2.0'; - var PANEL_BODY_PADDING = (10*2); - // private static methods - function help() { - alert(version); - } - // a hack to fix ie6 bug - function ie6_fix_width(id, width) { - if(YAHOO.env.ua.ie == 6){ - var fp_title = document.getElementById('file-picker-'+id); - fp_title.style.width = width; - } - } - function $() { - // public methods of filepicker instance - this.create_filepicker = function(client_id) { - var IE_QUIRKS = (YAHOO.env.ua.ie && document.compatMode == "BackCompat"); - var IE_SYNC = (YAHOO.env.ua.ie == 6 || (YAHOO.env.ua.ie == 7 && IE_QUIRKS)); - var btn_listing = {label: fp_lang.listview, value: 'l', - onclick: {fn: repository_client.view_as_list, obj:client_id}}; - var btn_icons = {label: fp_lang.thumbview, value: 't', - onclick: {fn: repository_client.view_as_icons, obj:client_id}}; - document.body.className += ' yui-skin-sam'; - var el = document.createElement('DIV'); - el.id = 'file-picker-'+client_id; - el.className = 'file-picker'; - this.client_id = client_id; - document.body.appendChild(el); - this.filepicker = new YAHOO.widget.Panel('file-picker-' + client_id, { - draggable: true, - close: true, - underlay: 'none', - zindex: 666666, - xy: [50, YAHOO.util.Dom.getDocumentScrollTop()+20] - }); - var layout = ''; - this.filepicker.client_id = client_id; - this.filepicker.setHeader(fp_lang['title']); - this.filepicker.setBody('
'); - this.filepicker.beforeRenderEvent.subscribe(function() { - YAHOO.util.Event.onAvailable('layout-'+client_id, function() { - layout = new YAHOO.widget.Layout('layout-'+client_id, { - height: 480, width: 700, - units: [ - {position: 'top', height: 32, resize: false, - body:'
', gutter: '2'}, - {position: 'left', width: 200, resize: true, scroll:true, - body:'', gutter: '0 5 0 2', minWidth: 150, maxWidth: 300 }, - {position: 'center', body: '
', - scroll: true, gutter: '0 2 0 0' } - ] - }); - layout.render(); - }); - }); - var resize = new YAHOO.util.Resize('file-picker-'+client_id, { - handles: ['br'], - autoRatio: true, - status: true, - minWidth: 680, - minHeight: 400 - }); - ie6_fix_width(client_id, '680px'); - resize.on('resize', function(args) { - var panelHeight = args.height; - var headerHeight = this.header.offsetHeight; // Content + Padding + Border - var bodyHeight = (panelHeight - headerHeight); - var bodyContentHeight = (IE_QUIRKS) ? bodyHeight : bodyHeight - PANEL_BODY_PADDING; - YAHOO.util.Dom.setStyle(this.body, 'height', bodyContentHeight + 'px'); - ie6_fix_width(this.client_id, '680px'); - if (IE_SYNC) { - this.sizeUnderlay(); - this.syncIframe(); - } - layout.set('height', bodyContentHeight); - layout.set('width', (args.width - PANEL_BODY_PADDING)); - layout.resize(); - }, this.filepicker, true); - repository_client.fp[client_id].viewbar = new YAHOO.widget.ButtonGroup({ - id: 'btngroup-'+client_id, - name: 'buttons', - disabled: true, - container: 'repo-viewbar-'+client_id - }); - repository_client.fp[client_id].viewbar.addButtons([btn_icons, btn_listing]); - this.print_listing(); - this.filepicker.render(); - } - this.init_search = function() { - var searchbar = document.getElementById('search-div-'+this.client_id); - searchbar.innerHTML = ''; - var search_btn = new YAHOO.util.Element('search-btn-'+this.client_id); - search_btn.client_id = this.client_id; - var input_keyword = new YAHOO.util.Element('search-input-'+this.client_id); - input_keyword.client_id = this.client_id; - search_btn.fnSearch = function(e) { - var el = new YAHOO.util.Element('search-input-'+this.client_id) - var keyword = el.get('value'); - var r = repository_client.fp[this.client_id]; - var params = []; - params['s'] = keyword; - params['env']=r.env; - params['accepted_types'] = r.accepted_types; - params['sesskey']=moodle_cfg.sesskey; - params['ctx_id']=fp_config.contextid; - params['client_id']=this.client_id; - repository_client.loading(this.client_id, 'load'); - var trans = YAHOO.util.Connect.asyncRequest('POST', - moodle_cfg.wwwroot+'/repository/ws.php?action=gsearch', this.search_cb, repository_client.postdata(params)); - } - search_btn.on('contentReady', function() { - search_btn.on('click', this.fnSearch, this.input_keyword); - }); - search_btn.search_cb={ - success: function(o) { - var data = repository_client.parse_json(o.responseText, 'global_search_cb'); - var panel = new YAHOO.util.Element('panel-'+data.client_id); - if(!data.list || data.list.length<1){ - panel.get('element').innerHTML = fp_lang.noresult; - return; - } - var r = repository_client.fp[data.client_id]; - r.view_staus = 0; - r.fs = data.list; - if(r.view_staus) { - repository_client.view_as_list(data.client_id, data.list); - } else { - repository_client.view_as_icons(data.client_id, data.list); - } - var el = new YAHOO.util.Element('search-input-'+data.client_id) - el.set('value', ''); - } - } - input_keyword.on('contentReady', function() { - var scope = document.getElementById('search-input-'+this.client_id); - var k1 = new YAHOO.util.KeyListener(scope, {keys:13}, {fn:function(){this.fnSearch()},scope:search_btn, correctScope: true}); - k1.enable(); - }); - } - this.print_listing = function() { - var container = new YAHOO.util.Element('repo-list-'+this.client_id); - container.set('innerHTML', ''); - container.on('contentReady', function() { - this.init_search(); - for(var i in repository_listing[this.client_id]) { - var repo = repository_listing[this.client_id][i]; - var support = false; - if(this.env=='editor' && this.accepted_types != '*'){ - if(repo.supported_types!='*'){ - for (var j in repo.supported_types){ - if(mdl_in_array(repo.supported_types[j], this.accepted_types)){ - support = true; - } - } - } - }else{ - support = true; - } - if(repo.supported_types == '*' || support){ - var li = document.createElement('li'); - li.id = 'repo-'+this.client_id+'-'+repo.id; - var icon = document.createElement('img'); - icon.src = repo.icon; - icon.width = '16'; - icon.height = '16'; - var link = document.createElement('a'); - link.href = '###'; - link.id = 'repo-call-'+this.client_id+'-'+repo.id; - link.appendChild(icon); - link.className = 'fp-repo-name'; - link.innerHTML += ' '+repo.name; - link.onclick = function() { - var re = new RegExp("repo-call-(\\w+)-(\\d+)", "i"); - var result = this.id.match(re); - var client_id = result[1]; - var repo_id = result[2]; - // high light currect selected repository - for(var cc in repository_listing[client_id]){ - var tmp_id = 'repo-call-'+client_id+'-'+ cc; - var el = document.getElementById(tmp_id); - if(el){ - el.style.background = 'transparent'; - } - } - this.style.background = '#CCC'; - repository_client.req(client_id, repo_id, ''); - } - li.appendChild(link); - container.appendChild(li); - repo = null; - } - } - }, this, true); - - } - this.show = function(){ - this.print_listing(); - var panel = new YAHOO.util.Element('panel-'+this.filepicker.client_id); - panel.get('element').innerHTML = ''; - this.filepicker.show(); - } - this.hide = function(){ - this.filepicker.hide(); - } - } - // all filepicker instances - $.fp = {}; - return $; -})(); -// public static method -// may be called outside yui -repository_client.req = function(client_id, id, path, page) { - repository_client.loading(client_id, 'load'); - this.fp[client_id].viewbar.set('disabled', false); - var r = repository_client.fp[client_id]; - var params = []; - params['p'] = path; - params['env']=r.env; - params['sesskey']=moodle_cfg.sesskey; - params['ctx_id']=fp_config.contextid; - params['client_id'] = client_id; - params['repo_id']=id; - if (!!page) { // convert page to boolean value - params['page']=page; - } - params['accepted_types'] = r.accepted_types; - var trans = YAHOO.util.Connect.asyncRequest('POST', moodle_cfg.wwwroot+'/repository/ws.php?action=list', this.req_cb, this.postdata(params)); -} - -repository_client.req_cb = { - success: function(o){ - var data = repository_client.parse_json(o.responseText, 'req_cb'); - var repo = repository_client.fp[data.client_id]; - var panel = new YAHOO.util.Element('panel-'+data.client_id); - if(data && data.e) { - panel.get('element').innerHTML = data.e; - return; - } - // save data - repo.fs = data; - if(!data) { - return; - }else if(data.msg){ - repository_client.print_msg(data.msg); - }else if(data.iframe) { - repository_client.view_iframe(data.client_id); - }else if(data.login) { - repository_client.print_login(data.client_id, data); - }else if(data.list) { - if(repo.view_status) { - repository_client.view_as_list(data.client_id, data.list); - } else { - repository_client.view_as_icons(data.client_id, data.list); - } - } - } -} -repository_client.view_iframe = function(client_id) { - var fs = repository_client.fp[client_id].fs; - var panel = new YAHOO.util.Element('panel-'+client_id); - panel.get('element').innerHTML = "