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?ds=sidebyside
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