X-Git-Url: https://scm.cri.mines-paristech.fr/git/Plinn.git/blobdiff_plain/af9b4da41b83e5813616436bc4f59eb0128893a8..558758391ea0565e9a8c1adcf22e3ed38eb13c39:/__init__.py diff --git a/__init__.py b/__init__.py index 3a01ffc..fe63530 100755 --- a/__init__.py +++ b/__init__.py @@ -19,8 +19,8 @@ ####################################################################################### """ Plinn implementation of CMFCore. -$Id: __init__.py 1530 2009-07-08 09:19:39Z pin $ -$URL: http://svn.cri.ensmp.fr/svn/Plinn/branches/CMF-2.1/__init__.py $ + + """ import exceptions @@ -28,6 +28,8 @@ import exceptions from Products.CMFCore import utils as core_cmf_utils from Products.CMFDefault import utils as default_cmf_utils from Products.CMFCore.permissions import AddPortalContent +from Products.CMFCore.FSFile import FSFile +from Products.CMFCore.DirectoryView import registerFileExtension import File, Folder, HugePlinnFolder, Topic import MembershipTool import MemberDataTool @@ -36,11 +38,13 @@ import GroupDataTool import RegistrationTool import CalendarTool import AttachmentTool -#from shutdown_dispatcher import ZopeShutdownDispatcher +try : + import catalog + __solr_ok = True +except ImportError : + __solr_ok = False from PloneMisc import IndexIterator, Batch -from utils import getCPInfo, popCP - import patch from AccessControl import allow_module, allow_class @@ -51,59 +55,91 @@ contentClasses = (File.File, Folder.PlinnFolder, HugePlinnFolder.HugePlinnFolder contentConstructors = (File.addFile, Folder.manage_addPlinnFolder, HugePlinnFolder.manage_addHugePlinnFolder, Topic.addTopic) tools = ( MembershipTool.MembershipTool - , MemberDataTool.MemberDataTool - , GroupsTool.GroupsTool - , GroupDataTool.GroupDataTool - , RegistrationTool.RegistrationTool - , CalendarTool.CalendarTool - , AttachmentTool.AttachmentTool - ) - -methods = { -'getCPInfo': getCPInfo, -'getCPInfo__roles__': None, -'popCP' : popCP, -'popCP__roles__' : None -} + , MemberDataTool.MemberDataTool + , GroupsTool.GroupsTool + , GroupDataTool.GroupDataTool + , RegistrationTool.RegistrationTool + , CalendarTool.CalendarTool + , AttachmentTool.AttachmentTool + ) +if __solr_ok : + tools += (catalog.CatalogTool,) + +# register files extensions +registerFileExtension('ttf', FSFile) +registerFileExtension('eot', FSFile) +registerFileExtension('cur', FSFile) def initialize(registrar) : - - allow_module('quopri') - allow_module('Products.Plinn.PloneMisc') - allow_class(IndexIterator) - allow_class(Batch) - app = registrar._ProductContext__app - #ZopeShutdownDispatcher(registrar._ProductContext__app) - - core_cmf_utils.ContentInit( - 'Plinn', - content_types = contentClasses, - permission = AddPortalContent, - extra_constructors = contentConstructors, - ).initialize(registrar) - - core_cmf_utils.ToolInit('Plinn Tool', - tools = tools, - icon = 'tool.gif' - ).initialize(registrar) - - + + allow_module('quopri') + allow_module('Products.Plinn.PloneMisc') + allow_class(IndexIterator) + allow_class(Batch) + + core_cmf_utils.ContentInit( + 'Plinn', + content_types = contentClasses, + permission = AddPortalContent, + extra_constructors = contentConstructors, + ).initialize(registrar) + + core_cmf_utils.ToolInit('Plinn Tool', + tools = tools, + icon = 'tool.gif' + ).initialize(registrar) + + # Monkey... # all tags are good ! validTags = default_cmf_utils.NASTY_TAGS.copy() for tag in validTags.keys() : - validTags[tag] = 1 + validTags[tag] = 1 -VALID_TAGS = {'font': 1} +VALID_TAGS = {'font': 1, 'param' : 1, 'iframe' : 1} validTags.update(VALID_TAGS) default_cmf_utils.NASTY_TAGS = {} default_cmf_utils.VALID_TAGS.update(validTags) -# TODO : vérifier l'impact. -# # the plinn portal_calendar is a also a "SPECIAL PROVIDER" +# the plinn portal_calendar is a also a "SPECIAL PROVIDER" +# TODO: vérifier l'impact # import Products.CMFCore.exportimport.actions # Products.CMFCore.exportimport.actions._SPECIAL_PROVIDERS += ('portal_calendar',) + + +# monkey-patch de getIcon qui est foirasse dans CMF2.2 : +# les icônes ne s'affichent pas correctement dans la ZMI +# lorqu'on y accède par un virtual host apache. +from urllib import quote +from Products.CMFCore.utils import getToolByName + +def getIcon(self, relative_to_portal=0): + """ + Using this method allows the content class + creator to grab icons on the fly instead of using a fixed + attribute on the class. + """ + ti = self.getTypeInfo() + if ti is not None: + icon = quote(ti.getIcon()) + if icon: + if relative_to_portal: + return icon + else: + # Relative to REQUEST['BASEPATH1'] + portal_url = getToolByName( self, 'portal_url' ) + res = portal_url(relative=1) + '/' + icon + while res[:1] == '/': + res = res[1:] + return res + return 'misc_/OFSP/dtmldoc.gif' + +icon = getIcon # For the ZMI + +from Products.CMFCore.DynamicType import DynamicType +DynamicType.getIcon = getIcon +DynamicType.icon = getIcon