X-Git-Url: https://svn.cri.ensmp.fr/git/Plinn.git/blobdiff_plain/af9b4da41b83e5813616436bc4f59eb0128893a8..891027fea0c1660c35b7d126dd207eb64facf93b:/__init__.py?ds=inline

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