repo_yui_loaded)) { $css .= << @import "$CFG->httpswwwroot/lib/yui/resize/assets/skins/sam/resize.css"; @import "$CFG->httpswwwroot/lib/yui/container/assets/skins/sam/container.css"; @import "$CFG->httpswwwroot/lib/yui/layout/assets/skins/sam/layout.css"; @import "$CFG->httpswwwroot/lib/yui/button/assets/skins/sam/button.css"; @import "$CFG->httpswwwroot/lib/yui/assets/skins/sam/treeview.css"; EOD; $js = << EOD; $CFG->repo_yui_loaded = true; } else { $js = ''; } $js .= << //'); filepicker.beforeRenderEvent.subscribe(function() { Event.onAvailable('layout-$suffix', function() { layout = new YAHOO.widget.Layout('layout-$suffix', { 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(); }); }); resize = new YAHOO.util.Resize('file-picker-$suffix', { handles: ['br'], autoRatio: true, status: true, minWidth: 680, minHeight: 400 }); if(YAHOO.env.ua.ie == 6){ var fp_title = document.getElementById('file-picker-$suffix'); fp_title.style.width = '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; Dom.setStyle(this.body, 'height', bodyContentHeight + 'px'); if(YAHOO.env.ua.ie == 6){ var fp_title = document.getElementById('file-picker-$suffix'); fp_title.style.width = args.width; } if (IE_SYNC) { this.sizeUnderlay(); this.syncIframe(); } layout.set('height', bodyContentHeight); layout.set('width', (args.width - PANEL_BODY_PADDING)); layout.resize(); }, filepicker, true); filepicker.update_instances = function(){ _client.print_instances(); } _client.viewbar = new YAHOO.widget.ButtonGroup({ id: 'btngroup-$suffix', name: 'buttons', disabled: true, container: 'repo-viewbar-$suffix' }); } // public method this.show = function() { filepicker.update_instances(); filepicker.show(); } this.hide = function() { filepicker.hide(); } this.create_picker = function() { // display UI filepicker.render(); _client.viewbar.addButtons([btn_thumb, btn_list]); // init repository list repo_list = new YAHOO.util.Element('repo-list-$suffix'); repo_list.on('contentReady', function(e) { var searchbar = new YAHOO.util.Element('search-div-$suffix'); searchbar.get('element').innerHTML = ''; var btn_search = new YAHOO.util.Element('search-btn-$suffix'); var input_keyword = new YAHOO.util.Element('search-input-$suffix'); btn_search.fnSearch = function(e) { var el = new YAHOO.util.Element('search-input-$suffix') var keyword = el.get('value'); var params = []; params['s'] = keyword; params['env']=_client.env; params['action']='gsearch'; params['sesskey']='$sesskey'; params['ctx_id']=$context->id; _client.loading('load'); var trans = YAHOO.util.Connect.asyncRequest('POST', '$CFG->httpswwwroot/repository/ws.php?action=gsearch', this.global_search_cb, _client.postdata(params)); } btn_search.global_search_cb={ success: function(o) { var panel = new YAHOO.util.Element('panel-$suffix'); if(!o.responseText) { panel.get('element').innerHTML = '$strnoresult'; return; } try { var data = YAHOO.lang.JSON.parse(o.responseText); } catch(e) { alert('$strinvalidjson - |global_search_cb| -'+_client.stripHTML(o.responseText)); return; } _client.ds={}; if(!data.list || data.list.length<1){ panel.get('element').innerHTML = '$strnoresult'; return; } _client.ds.list = data.list; if(_client.viewmode) { _client.viewlist(); } else { _client.viewthumb(); } var el = new YAHOO.util.Element('search-input-$suffix') el.set('value', ''); } } btn_search.on('contentReady', function() { btn_search.on('click', this.fnSearch, this.input_keyword); }); input_keyword.on('contentReady', function() { var scope = document.getElementById('search-input-$suffix'); var k1 = new YAHOO.util.KeyListener(scope, {keys:13}, {fn:function(){this.fnSearch()},scope:btn_search, correctScope: true}); k1.enable(); }); _client.print_instances(); }); } } // public static varible _client.repos = []; _client.repositoryid = 0; // _client.ds save all data received from server side _client.ds = null; _client.viewmode = 0; _client.viewbar = null; _client.print_instances = function() { var container = new YAHOO.util.Element('repo-list-$suffix'); container.set('innerHTML', ''); for(var i in _client.repos) { var repo = _client.repos[i]; var support = false; if(repository_client_$suffix.env=='editor' && _client.accepted_types != '*'){ if(repo.supported_types!='*'){ for (var j in repo.supported_types){ if(mdl_in_array(repo.supported_types[j], _client.accepted_types)){ support = true; } } } }else{ support = true; } if(repo.supported_types == '*' || support){ var li = document.createElement('li'); li.id = 'repo-$suffix-'+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-$suffix-'+repo.id; link.appendChild(icon); link.className = 'fp-repo-name'; link.onclick = function() { var re = /repo-call-$suffix-(\d+)/i; var id = this.id.match(re); repository_client_$suffix.req(id[1], '', 0); } link.innerHTML += ' '+repo.name; li.appendChild(link); container.appendChild(li); repo = null; } } } _client.stripHTML = function(str){ var re= /<\S[^><]*>/g var ret = str.replace(re, "") return ret; } // public static mehtod _client.postdata = function(obj) { var str = ''; for(k in obj) { if(obj[k] instanceof Array) { for(i in obj[k]) { str += (encodeURIComponent(k) +'[]='+encodeURIComponent(obj[k][i])); str += '&'; } } else { str += encodeURIComponent(k) +'='+encodeURIComponent(obj[k]); str += '&'; } } return str; } _client.loading = function(type, name) { var panel = new YAHOO.util.Element('panel-$suffix'); panel.get('element').innerHTML = ''; var content = document.createElement('div'); content.style.textAlign='center'; var para = document.createElement('P'); var img = document.createElement('IMG'); if(type=='load') { img.src = '$CFG->pixpath/i/loading.gif'; para.innerHTML = '$strloading'; }else{ img.src = '$CFG->pixpath/i/progressbar.gif'; para.innerHTML = '$strcopying '+name+''; } content.appendChild(para); content.appendChild(img); //content.innerHTML = ''; panel.get('element').appendChild(content); } _client.rename = function(oldname, url, icon, repo_id) { var thumbnail = document.getElementById('fp-grid-panel-$suffix'); if(thumbnail){ thumbnail.style.display = 'none'; } var header = document.getElementById('fp-header-$suffix'); header.style.display = 'none'; var footer = document.getElementById('fp-footer-$suffix'); footer.style.display = 'none'; var panel = new YAHOO.util.Element('panel-$suffix'); var html = '
    '; _client.repositoryid=repo_id; html += '

    '; html += '

    '; html += '

    '; /** html += '

    '; html += '

    '; */ html += '

    '; html += ''; html += '

    '; html += '
    '; panel.get('element').innerHTML += html; var tree = document.getElementById('treediv-$suffix'); if(tree){ tree.style.display = 'none'; } } _client.popup = function(url) { active_instance = repository_client_$suffix; _client.win = window.open(url,'repo_auth', 'location=0,status=0,scrollbars=0,width=500,height=300'); return false; } _client.print_login = function() { var panel = new YAHOO.util.Element('panel-$suffix'); var data = _client.ds.login; var str = ''; panel.get('element').innerHTML = str; } _client.viewfiles = function() { if(_client.viewmode) { _client.viewlist(); } else { _client.viewthumb(); } } _client.print_header = function() { var panel = new YAHOO.util.Element('panel-$suffix'); var str = '
    '; str += '
    '; str += _client.makepage('header'); str += '
    '; panel.set('innerHTML', str); _client.makepath(); } _client.print_footer = function() { var panel = document.getElementById('panel-$suffix'); var footer = document.createElement('DIV'); footer.id = 'fp-footer-$suffix'; footer.innerHTML += _client.uploadcontrol(); footer.innerHTML += _client.makepage('footer'); panel.appendChild(footer); // add repository manage buttons here var oDiv = document.getElementById('repo-tb-$suffix'); if(!_client.ds.nosearch) { var search = document.createElement('A'); search.href = '###'; search.innerHTML = ' $strsearch'; oDiv.appendChild(search); search.onclick = function() { repository_client_$suffix.search_form(repository_client_$suffix.repositoryid); } } // weather we use cache for this instance, this button will reload listing anyway var ccache = document.createElement('A'); ccache.href = '###'; ccache.innerHTML = ' $strrefresh'; oDiv.appendChild(ccache); ccache.onclick = function() { var params = []; params['env']=_client.env; params['sesskey']='$sesskey'; params['ctx_id']=$context->id; params['repo_id']=repository_client_$suffix.repositoryid; _client.loading('load'); var trans = YAHOO.util.Connect.asyncRequest('POST', '$CFG->httpswwwroot/repository/ws.php?action=ccache', repository_client_$suffix.req_cb, _client.postdata(params)); } if(_client.ds.manage) { var mgr = document.createElement('A'); mgr.innerHTML = ' $strmgr'; mgr.href = _client.ds.manage; mgr.target = "_blank"; oDiv.appendChild(mgr); } if(!_client.ds.nologin) { var logout = document.createElement('A'); logout.href = '###'; logout.innerHTML = ' $strlogout'; oDiv.appendChild(logout); logout.onclick = function() { repository_client_$suffix.req(repository_client_$suffix.repositoryid, 1, 1); } } } _client.viewthumb = function(ds) { _client.viewmode = 0; _client.viewbar.check(0); var container = document.getElementById('panel-$suffix'); var panel = document.createElement('DIV'); panel.id = 'fp-grid-panel-$suffix'; var list = null; if(arguments.length == 1) { list = ds; } else { // from button list = _client.ds.list; } _client.print_header(); var count = 0; for(k in list) { // the container var el = document.createElement('div'); el.className='fp-grid'; // the file name var title = document.createElement('div'); title.id = 'grid-title-'+String(count); title.className = 'label'; title.innerHTML += ''+list[k].title+""; if(list[k].thumbnail_width){ el.style.width = list[k].thumbnail_width+'px'; title.style.width = (list[k].thumbnail_width-20)+'px'; } else { el.style.width = title.style.width = '80px'; } var frame = document.createElement('DIV'); frame.style.textAlign='center'; if(list[k].thumbnail_height){ frame.style.height = list[k].thumbnail_height+'px'; } var img = document.createElement('img'); img.src = list[k].thumbnail; var link = document.createElement('A'); link.href='###'; link.id = 'img-id-'+String(count); if(list[k].url) { el.innerHTML += '

    $strpreview

    '; } link.appendChild(img); frame.appendChild(link); el.appendChild(frame); el.appendChild(title); panel.appendChild(el); if(list[k].children) { var folder = new YAHOO.util.Element(link.id); folder.ds = list[k].children; folder.path = list[k].path; var el_title = new YAHOO.util.Element(title.id); folder.on('contentReady', function() { this.on('click', function() { if(_client.ds.dynload) { var params = []; params['p'] = this.path; params['env'] = _client.env; params['repo_id'] = _client.repositoryid; params['ctx_id'] = $context->id; params['sesskey']= '$sesskey'; _client.loading('load'); var trans = YAHOO.util.Connect.asyncRequest('POST', '$CFG->httpswwwroot/repository/ws.php?action=list', _client.req_cb, _client.postdata(params)); }else{ _client.viewthumb(this.ds); } }); }); el_title.on('contentReady', function() { this.on('click', function(){ folder.fireEvent('click'); }); }); } else { var el_title = new YAHOO.util.Element(title.id); var file = new YAHOO.util.Element(link.id); el_title.title = file.title = list[k].title; el_title.value = file.value = list[k].source; el_title.icon = file.icon = list[k].thumbnail; if(list[k].repo_id) { el_title.repo_id = file.repo_id = list[k].repo_id; }else{ el_title.repo_id = file.repo_id = _client.repositoryid; } file.on('contentReady', function() { this.on('click', function() { repository_client_$suffix.rename(this.title, this.value, this.icon, this.repo_id); }); }); el_title.on('contentReady', function() { this.on('click', function() { repository_client_$suffix.rename(this.title, this.value, this.icon, this.repo_id); }); }); } count++; } container.appendChild(panel); _client.print_footer(); } _client.buildtree = function(node, level) { if(node.children) { node.title = ''+node.title+''; } var info = { label:node.title, title:"$strdate"+node.date+' $strsize'+node.size, filename:node.title, value:node.source, icon:node.thumbnail, path:node.path }; var tmpNode = new YAHOO.widget.TextNode(info, level, false); var tooltip = new YAHOO.widget.Tooltip(tmpNode.labelElId, { context:tmpNode.labelElId, text:info.title}); if(node.repo_id) { tmpNode.repo_id=node.repo_id; }else{ tmpNode.repo_id=_client.repositoryid; } if(node.children) { if(node.expanded) { tmpNode.expand(); } tmpNode.isLeaf = false; if (node.path) { tmpNode.path = node.path; } else { tmpNode.path = ''; } for(var c in node.children) { _client.buildtree(node.children[c], tmpNode); } } else { tmpNode.isLeaf = true; } } _client.dynload = function (node, fnLoadComplete) { var callback = { success: function(o) { try { var json = YAHOO.lang.JSON.parse(o.responseText); } catch(e) { alert('$strinvalidjson - |dynload| -'+_client.stripHTML(o.responseText)); return; } for(k in json.list) { _client.buildtree(json.list[k], node); } o.argument.fnLoadComplete(); }, failure:function(oResponse) { alert('$strerror - |dynload| -'); oResponse.argument.fnLoadComplete(); }, argument:{"node":node, "fnLoadComplete": fnLoadComplete} } var params = []; params['p']=node.path; params['env']=_client.env; params['sesskey']='$sesskey'; params['ctx_id']=$context->id; params['repo_id']=_client.repositoryid; var trans = YAHOO.util.Connect.asyncRequest('POST', '$CFG->httpswwwroot/repository/ws.php?action=list', callback, _client.postdata(params)); } _client.viewiframe = function() { var panel = new YAHOO.util.Element('panel-$suffix'); panel.get('element').innerHTML = "