+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
- <head>
- <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
- <title>Site browser</title>
- <link rel="stylesheet" href="browser.css" type="text/css" media="screen" title="Browser style" charset="utf-8" />
- <script type="text/javascript" language="javascript" charset="utf-8" src="epoz_script_detect.js"></script>
- <script type="text/javascript" language="javascript" charset="utf-8" src="javascript_events_api.js"></script>
- <script type="text/javascript" language="javascript" charset="utf-8" src="sarissa.js"></script>
- <script type="text/javascript" language="javascript" charset="utf-8">
- // <![CDATA[
- /* keyboard keycodes */
- var keyLeft = 37, keyUp = 38, keyRight = 39, keyDown = 40, keyEnter = 13;
-
- /* globals variables */
- var finder, finderContent, cellWidth, currentColumn;
- var scrollbarPlaceholder_offset = 0;
- var scrollXStep = 25, scrollTimeStep = 10;
- var ressourceType = GetUrlParam('Type');
- var sConnUrl = GetUrlParam( 'Connector' ) ;
- var baseDepth = 0;
- if ( sConnUrl.substr(0,1) != '/' && sConnUrl.indexOf( '://' ) < 0 )
- sConnUrl = window.location.href.replace( /browser.html.*$/, '' ) + sConnUrl ;
- var getWindowWidth = (window.innerWidth != undefined) ? function(){return window.innerWidth;} : function(){return document.body.parentElement.clientWidth;};
- var getWindowHeight = (window.innerHeight != undefined) ? function(){return window.innerHeight;} : function(){return document.body.parentElement.clientHeight;};
-
-
- function _initBrowser(){
- finder = document.getElementById('finder');
- finder.colCpt = 3; // column counter;
- finderContent = document.getElementById('finderContent');
- cellWidth = Math.floor(getWindowWidth() / 3);
-
- addListener(window, 'resize', resizeBrowser);
- addListener(finder, 'click', onClickHandler);
- addListener(finder, 'dblclick', onDblClickHandler);
- var path = GetUrlParam('path');
- path = (path) ? path : '/';
- var level = -1;
- for (var i = 0 ; i<path.length ; i++){
- if (path.charAt(i) == '/')
- level += 1;
- }
- baseDepth = level;
-
- populateBrowser('ls', path);
-
- if (browser.isGecko)
- document.body.style.overflowX = 'scroll';
- resizeBrowser();
- scrollbarPlaceholder_offset = (window.scrollMaxY) ? window.scrollMaxY : document.body.offsetHeight - document.body.clientHeight;
- resizeBrowser();
- finder.style.width = cellWidth * 3 + "px";
- }
- addListener(window, 'load', _initBrowser);
- addListener(document, 'keydown', onKeydownHandler);
-
- function onClickHandler(evt) {
- var li = getTargetedObject(evt);
- switch (li.tagName) {
- case 'IMG':
- if (li.width != 16) // this img is a preview thumbnail.
- return;
- li = li.parentNode;
- case 'LI':
- // click on the current selected row
- if (currentColumn == li.parentNode && currentColumn.currentRow == li)
- return;
-
- currentColumn = li.parentNode;
- // hightlight row
- if (currentColumn.currentRow) {
- currentColumn.currentRow.className = currentColumn.currentRow.className.replace('-selected', '');
- }
- var command = li.className == 'folderish' ? 'ls' : 'info';
- li.className += '-selected';
- currentColumn.currentRow = li;
-
- populateBrowser(command, li.path);
- }
- }
-
- function onDblClickHandler(evt) {
- var li = getTargetedObject(evt);
-
- if(li.tagName != 'LI') {
- if (li.tagName == 'IMG' && li.parentNode.tagName == 'LI')
- li = t.parentNode;
- else
- return;
- }
- console.log('dblclick !', li, window.parent);
- switch(window.parent.name) {
- case 'PlinnImageDialog' :
- if (li.className == 'contentish-selected') {
- window.parent.updateOrInsertImage(li.link);
- window.close();
- }
- break;
- case 'StandaloneBrowser' :
- if (li.className == 'contentish-selected') {
- window.opener.SetUrl(li.link);
- window.close();
- }
- break;
- default :
- var funcNum = GetUrlParam('CKEditorFuncNum');
- window.opener.CKEDITOR.tools.callFunction(funcNum, li.link);
- window.close();
- break;
- }
- }
-
- function onKeydownHandler(evt) {
- evt = (evt) ? evt : window.event;
- if(!currentColumn) currentColumn = finder.getElementsByTagName('ul')[0];
- if(!currentColumn.currentRow) {
- raiseMouseEvent(currentColumn.firstChild,'click');
- return;
- }
-
- var ob, evtType='click';
- switch (evt.keyCode) {
- case keyUp :
- ob = currentColumn.currentRow.previousSibling;
- break;
- case keyDown :
- ob = currentColumn.currentRow.nextSibling;
- break;
- case keyLeft :
- var currentLevel = parseInt(currentColumn.parentNode.id.slice(6));
- if (currentLevel) {
- ob = document.getElementById('level-' + (currentLevel - 1)).firstChild;
- if (ob.nodeType == 3) // text node
- ob = ob.nextSibling
- ob = ob.currentRow;
- }
- break;
- case keyRight :
- if(currentColumn.currentRow.className != 'folderish-selected')
- return;
- ob = document.getElementById('level-' + (parseInt(currentColumn.parentNode.id.slice(6)) + 1)).firstChild.firstChild;
- break;
- case keyEnter :
- ob = currentColumn.currentRow;
- evtType = 'dblclick'
- break;
- };
- if (ob)
- raiseMouseEvent(ob, evtType);
- }
-
- function resizeBrowser() {
- var columns = finder.getElementsByTagName('ul');
- var col;
- for (var i=0 ; i<columns.length ; i++) {
- col = columns[i];
- col.style.height = getWindowHeight() - scrollbarPlaceholder_offset + "px";;
-
- }
- //document.body.style.width = getWindowWidth();
- }
-
- /* from fck default browser */
- function GetUrlParam( paramName )
- {
- var oRegex = new RegExp( '[\?&]' + paramName + '=([^&]+)', 'i' ) ;
- var oMatch = oRegex.exec( window.location.search ) ;
-
- if ( oMatch && oMatch.length > 1 )
- return unescape(oMatch[1]) ;
- else
- return '' ;
- }
-
-
-
- function populateBrowser(command, path) {
- var prevColNum = finder.colCpt;
- var level = -1;
- for (var i = 0 ; i<path.length ; i++){
- if (path.charAt(i) == '/')
- level += 1;
- }
- level = level - baseDepth;
-
- // prepare / cleanup columns
- var cellLevel, startCleanup = 3;
- switch (level) {
- case 0 : // initialization case
- startCleanup = 0;
- cellLevel = document.getElementById('level-0');
- cellLevel.style.width = cellWidth + "px";
- // remove default content
- cellLevel.removeChild(cellLevel.firstChild);
-
- // cosmetic: display the second col with a scrollbar
- var c1 = document.createElement('td');
- c1.id = "level-1";
- c1.style.width = cellWidth + "px";
- c1.appendChild(document.createElement('ul'));
- finderContent.appendChild(c1);
-
- // cosmetic: display the third col without scrollbar
- var c2 = document.createElement('td');
- c2.id = "level-2";
- c2.style.width = cellWidth + "px";
- finderContent.appendChild(c2);
- break;
-
- case 1 :
- cellLevel = document.getElementById("level-1");
- cellLevel.removeChild(cellLevel.firstChild);
- var c2 = document.getElementById("level-2");
- var ul = c2.firstChild;
- if (ul)
- c2.removeChild(ul);
- break;
-
- case 2 :
- cellLevel = document.getElementById("level-2");
- var ul = cellLevel.firstChild;
- if (ul) {
- cellLevel.removeChild(ul);
- }
- break;
-
- default :
- cellLevel = document.getElementById("level-" + level);
- if (!cellLevel) {
- cellLevel = document.createElement('td');
- cellLevel.id = "level-" + level;
- cellLevel.style.width = cellWidth + "px";
- finderContent.appendChild(cellLevel);
- startCleanup = 0;
- finder.colCpt += 1;
- }
- else {
- cellLevel.removeChild(cellLevel.firstChild);
- startCleanup = level + 1
- }
- }
- if (startCleanup) {
- var nextColumn = document.getElementById("level-" + startCleanup);
- while (nextColumn) {
- finderContent.removeChild(nextColumn);
- finder.colCpt -= 1;
- nextColumn = document.getElementById("level-" + ++startCleanup);
- }
- }
-
- // request
- var req = new XMLHttpRequest();
- req.open("POST", sConnUrl, false); // synchrone
- req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
- req.send("command=" + command + "&path="+escape(path) + "&Type=" + ressourceType);
- var respDom = req.responseXML.documentElement;
-
-
- var list = document.createElement('UL');
- list.style.height= getWindowHeight() - scrollbarPlaceholder_offset + "px";
- cellLevel.appendChild(list);
-
- switch (respDom.tagName) {
- case 'ls' :
- // import listing
- var rows = respDom.getElementsByTagName('row');
- var row, listItem, icon;
-
- for (var i = 0 ; i<rows.length ; i++){
- row = rows[i];
- listItem = document.createElement('li');
- if (row.getAttribute('folderish') != "0")
- listItem.className = 'folderish';
- else
- listItem.className = 'contentish';
-
- icon = document.createElement('img');
- with (icon) {
- src = row.getAttribute('icon');
- width = "16";
- height = "16";
- border = "0";
- }
-
- listItem.path = row.getAttribute('path');
- listItem.link = row.getAttribute('link');
- listItem.appendChild(icon);
- listItem.appendChild(document.createTextNode(row.firstChild.nodeValue));
- list.appendChild(listItem);
- }
- break;
- case 'info' :
- var li = document.createElement('li');
- list.appendChild(li);
- li.innerHTML = respDom.firstChild.nodeValue;
-
- // add create link button
- li = document.createElement('li');
- li.style.textAlign = 'center';
- var createLinkBtn = document.createElement('button');
- var text = (ressourceType == 'Image') ? 'Insert' : 'Create link';
- createLinkBtn.appendChild(document.createTextNode(text));
-
- createLinkBtn.onclick = function(){
- var url = respDom.lastChild.firstChild.nodeValue;
- switch(window.parent.name) {
- case 'PlinnImageDialog' :
- window.parent.updateOrInsertImage(url);
- break;
- case 'StandaloneBrowser' :
- window.opener.SetUrl(url);
- break;
- default:
- var funcNum = GetUrlParam('CKEditorFuncNum');
- window.opener.CKEDITOR.tools.callFunction(funcNum, url);
- break;
- }
- window.close();
- };
-
- list.appendChild(li);
- li.appendChild(createLinkBtn);
- break;
- }
-
- if (prevColNum != finder.colCpt) {
- var finderWidth = finder.colCpt * cellWidth;
- finder.style.width = finderWidth + "px";
- if (finder.colCpt - prevColNum > 0) {
- var start = (window.scrollX) ? window.scrollX : document.body.scrollLeft;
- var stop = finder.colCpt * cellWidth - getWindowWidth();
- smoothScroll(start, stop);
- }
- }
- }
-
- function smoothScroll(start, stop) {
- start += scrollXStep;
- window.scroll(start, 0);
- if (start < stop) {
- setTimeout('smoothScroll(' + start + ', ' + stop + ')', scrollTimeStep);
- }
- }
-
-
- // ]]>
- </script>
- </head>
- <body>
- <table id="finder" cellspacing="0">
- <tr id="finderContent">
- <td id="level-0"><ul>
- <li class="folderish">Folder</li>
- <li class="contentish">Content</li>
- </ul>
- </td>
- </tr>
- </table>
- </body>
-</html>
\ No newline at end of file