From 92ea98a2568a0e59779b924a8b699bea7936fa14 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Beno=C3=AEt=20Pin?= <pin@cri.ensmp.fr> Date: Tue, 16 Aug 2011 13:22:13 +0200 Subject: [PATCH] =?utf8?q?Ajout=20du=20code=20du=20finder=20ajax=20depuis?= =?utf8?q?=20le=20d=C3=A9p=C3=B4t=20de=20FCK.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- skins/ckeditor/config.js | 2 +- .../mac_finder/_graphics/folderish_icons.psd | Bin 0 -> 20495 bytes .../browser/mac_finder/browser.css | 68 ++++ .../browser/mac_finder/browser.html.dtml | 351 ++++++++++++++++++ .../mac_finder/connectors/plinn/connector.py | 73 ++++ .../mac_finder/images/folderish-selected.gif | Bin 0 -> 107 bytes .../browser/mac_finder/images/folderish.gif | Bin 0 -> 163 bytes .../mac_finder/images/folderishNode.gif | Bin 0 -> 160 bytes 8 files changed, 493 insertions(+), 1 deletion(-) create mode 100644 skins/ckeditor/filemanager/browser/mac_finder/_graphics/folderish_icons.psd create mode 100644 skins/ckeditor/filemanager/browser/mac_finder/browser.css create mode 100644 skins/ckeditor/filemanager/browser/mac_finder/browser.html.dtml create mode 100644 skins/ckeditor/filemanager/browser/mac_finder/connectors/plinn/connector.py create mode 100644 skins/ckeditor/filemanager/browser/mac_finder/images/folderish-selected.gif create mode 100644 skins/ckeditor/filemanager/browser/mac_finder/images/folderish.gif create mode 100644 skins/ckeditor/filemanager/browser/mac_finder/images/folderishNode.gif diff --git a/skins/ckeditor/config.js b/skins/ckeditor/config.js index 9467812..bb14ec7 100644 --- a/skins/ckeditor/config.js +++ b/skins/ckeditor/config.js @@ -22,5 +22,5 @@ CKEDITOR.editorConfig = function( config ) ]; config.height = '500px'; - config.filebrowserBrowseUrl = CKEDITOR.basePath; + config.filebrowserBrowseUrl = CKEDITOR.basePath + 'filemanager/browser/mac_finder/browser.html?Connector=connectors/plinn/connector'; }; \ No newline at end of file diff --git a/skins/ckeditor/filemanager/browser/mac_finder/_graphics/folderish_icons.psd b/skins/ckeditor/filemanager/browser/mac_finder/_graphics/folderish_icons.psd new file mode 100644 index 0000000000000000000000000000000000000000..69fe1b3c05bd5ce58f40e53a4f948495de122641 GIT binary patch literal 20495 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 literal 0 HcmV?d00001 diff --git a/skins/ckeditor/filemanager/browser/mac_finder/browser.css b/skins/ckeditor/filemanager/browser/mac_finder/browser.css new file mode 100644 index 0000000..cf93b14 --- /dev/null +++ b/skins/ckeditor/filemanager/browser/mac_finder/browser.css @@ -0,0 +1,68 @@ +body { + margin:0; + padding:0; +/* overflow-x : scroll;*/ +} +#finder { + position : relative; + border : none; + vertical-align : top; + font-family : Arial, Helvetica, Geneva, Swiss, SunSans-Regular, sans-serif; + font-size : small; +} + + +#finder td { +/* width : 200px;*/ + padding : 0; +} + +#finder ul { +/* float : left;*/ + list-style : none; + margin : 0; + padding : 0; + overflow-y : scroll; +} +#finder li { + padding-left : 5px; + margin : 2px 0; + cursor : default; +/* vertical-align : middle*/ +} + +#finder li.contentish { + /* nothing special */ +} + +#finder li.contentish-selected { + background-color : #3875d7; + color : white; +} + + +#finder li.folderish { + background : url(images/folderish.gif) center right no-repeat; +} + +#finder li.folderish-selected { + background : url(images/folderish-selected.gif) center right no-repeat #3875d7 ; + color : white; +} + + +#finder img { + margin-right : 3px; + vertical-align : middle; +} + +.finder_preview { + font-size : 95%; +} +.finder_preview th { + color : #7f7f7f; + text-align : right; +} +.finder_preview .thumbnail { + text-align:center; +} \ No newline at end of file diff --git a/skins/ckeditor/filemanager/browser/mac_finder/browser.html.dtml b/skins/ckeditor/filemanager/browser/mac_finder/browser.html.dtml new file mode 100644 index 0000000..be15cd2 --- /dev/null +++ b/skins/ckeditor/filemanager/browser/mac_finder/browser.html.dtml @@ -0,0 +1,351 @@ +<!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; + } + switch(window.parent.name) { + case 'FCKeditorDialog_PlinnImage' : + if (li.className == 'contentish-selected') { + window.parent.updateOrInsertImage(li.link); + window.close(); + } + break; + case 'FCKBrowseWindow' : + window.opener.SetUrl(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 'FCKeditorDialog_PlinnImage' : + window.parent.updateOrInsertImage(url); + break; + case 'FCKBrowseWindow' : + default: + window.opener.SetUrl(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 diff --git a/skins/ckeditor/filemanager/browser/mac_finder/connectors/plinn/connector.py b/skins/ckeditor/filemanager/browser/mac_finder/connectors/plinn/connector.py new file mode 100644 index 0000000..61d0eae --- /dev/null +++ b/skins/ckeditor/filemanager/browser/mac_finder/connectors/plinn/connector.py @@ -0,0 +1,73 @@ +##parameters=command, path, Type=None +from Products.CMFCore.utils import getToolByName +from Products.CMFCore.permissions import View +mtool = getToolByName(context, 'portal_membership') +checkView = lambda o : mtool.checkPermission(View, o) +utool = getToolByName(context, 'portal_url') +portal = utool.getPortalObject() + +def replaceXMLEntities(text) : + for c, ent in (('<', '<'), ('>', '>'), ('&', '&')) : + text = text.replace(c, ent) + return text + +ob = portal +path = path.replace('\\', '/') +path = path.strip('/') + +if path : + for name in path.split('/') : + ob = getattr(ob, name) + +if command == 'ls' : + objects = [] + if ob.isPrincipiaFolderish : + if Type == 'Image' : filter = {'portal_type' : ['Plinn Folder', 'Portfolio', 'Photo']} + else : filter = {} + objects = ob.listNearestFolderContents(contentFilter = filter) + objects = sequence.sort( objects, (('title_or_id', 'nocase', 'asc'),) ) + + # xml printing + print '<ls>' + for o in objects : + path = o.getPhysicalPath() + encodedPath = '' + partObject = portal + for name in path[1:] : + partObject = getattr(partObject, name) + sep = checkView(partObject) and '/' or '\\' + encodedPath += sep+name + + row = '<row path="%(path)s" folderish="%(folderish)s" icon="%(icon)s" link="%(link)s">%(title)s</row>' % { + 'path' : encodedPath, + 'folderish' : o.isPrincipiaFolderish, + 'icon' : o.getIcon(), + 'title' : replaceXMLEntities(o.title_or_id()), + 'link' : o.absolute_url() + } + print row + print '</ls>' + +elif command == 'info': + #linkFunction = (Type == 'Image') and (lambda o : o.absolute_url() + '/index_html') or (lambda o : o.absolute_url()) + linkFunction = lambda o : o.absolute_url() + ti = ob.getTypeInfo() + method_id = ti.queryMethodID('info') + meth = method_id and getattr(ob, method_id) or (lambda:'Not implemented') + lines = [] + pr = lines.append + pr('<info>') + # print info summary in a CDATA section + pr('<![CDATA[') + pr(meth()) + pr(']]>') + # print the url link in a <link> tag + pr('<link>') + pr(linkFunction(ob)) + pr('</link>') + pr('</info>') + print ''.join(lines) + + +context.REQUEST.RESPONSE.setHeader('content-type', 'text/xml; charset=utf-8') +return printed \ No newline at end of file diff --git a/skins/ckeditor/filemanager/browser/mac_finder/images/folderish-selected.gif b/skins/ckeditor/filemanager/browser/mac_finder/images/folderish-selected.gif new file mode 100644 index 0000000000000000000000000000000000000000..ebad9f6348aaa0babd9151b054cd46fa4598a559 GIT binary patch literal 107 zcmZ?wbhEHb<Yr)J*v!C?H|t^Y<oj7O9#$-Ta{Jl$N3VW1uY7j-!M77PzeM-m`~UyH xMd@`0B%t_{1<ca{ksvb|SR^*|xMqjG;;7!}#QD6k&9o^=tU!cuLnsS_H2}CdC?Eg; literal 0 HcmV?d00001 diff --git a/skins/ckeditor/filemanager/browser/mac_finder/images/folderish.gif b/skins/ckeditor/filemanager/browser/mac_finder/images/folderish.gif new file mode 100644 index 0000000000000000000000000000000000000000..c359a8f57ab07da2363fda5380d20755c0de5d01 GIT binary patch literal 163 zcmZ?wbhEHb<Yr)JIKsei>C&Zl@7`U!c=6-Mk6*rgnKNh3xpU{{&!0bG!i4+x?{{`~ zu3o+R=+UG5_U-HG>1k_gJ8<B@|Ns9Phz5#3S-@&_KqSac23Cayhh0)4?Yfy~sI$m= a9kSEAqR{KPo5|3*jj=m~gU4Hu!5RQiR5u0y literal 0 HcmV?d00001 diff --git a/skins/ckeditor/filemanager/browser/mac_finder/images/folderishNode.gif b/skins/ckeditor/filemanager/browser/mac_finder/images/folderishNode.gif new file mode 100644 index 0000000000000000000000000000000000000000..2cb7b83a6f5f0aeb9ae66ad74052e6cfa571297d GIT binary patch literal 160 zcmZ?wbhEHbWM^P!I3mb!;J|^lwzhry_Vx7i%$YOi<HwKh-n~0_?%dI%M>{(^FJ8Pj zfByV0U%p(rbZNqb3HR^cU%h(u|Ns9Phz5#3Sr{1@1Q~QdIzV<Zu*yDYa8Z$Ta1Lf; b*r4KnWLuN+nTA6r4g^kNaqbjhVz34PaMw5$ literal 0 HcmV?d00001 -- 2.20.1