X-Git-Url: https://scm.cri.ensmp.fr/git/ckeditor.git/blobdiff_plain/b01425222f2ab7e9452d6265e93fad15466380ed..92ea98a2568a0e59779b924a8b699bea7936fa14:/skins/ckeditor/filemanager/browser/mac_finder/connectors/plinn/connector.py 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 '' + 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 = '%(title)s' % { + 'path' : encodedPath, + 'folderish' : o.isPrincipiaFolderish, + 'icon' : o.getIcon(), + 'title' : replaceXMLEntities(o.title_or_id()), + 'link' : o.absolute_url() + } + print row + print '' + +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('') + # print info summary in a CDATA section + pr('') + # print the url link in a tag + pr('') + pr(linkFunction(ob)) + pr('') + pr('') + print ''.join(lines) + + +context.REQUEST.RESPONSE.setHeader('content-type', 'text/xml; charset=utf-8') +return printed \ No newline at end of file