X-Git-Url: https://scm.cri.ensmp.fr/git/Plinn.git/blobdiff_plain/d5614bb2e741e23c6afdc8da23aa33d2531f22a5..077c4d9810b96d4b949e77f3daa0180c9d4a8c96:/__init__.py diff --git a/__init__.py b/__init__.py index c7ca0e6..52eaef5 100755 --- a/__init__.py +++ b/__init__.py @@ -1,21 +1,21 @@ # -*- coding: utf-8 -*- ####################################################################################### -# Plinn - http://plinn.org # -# Copyright (C) 2005-2007 Benoît PIN # -# # -# This program is free software; you can redistribute it and/or # -# modify it under the terms of the GNU General Public License # -# as published by the Free Software Foundation; either version 2 # -# of the License, or (at your option) any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # +# Plinn - http://plinn.org # +# Copyright (C) 2005-2007 Benoît PIN # +# # +# This program is free software; you can redistribute it and/or # +# modify it under the terms of the GNU General Public License # +# as published by the Free Software Foundation; either version 2 # +# of the License, or (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program; if not, write to the Free Software # +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # ####################################################################################### """ Plinn implementation of CMFCore. @@ -38,10 +38,13 @@ import GroupDataTool import RegistrationTool import CalendarTool import AttachmentTool +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 @@ -52,52 +55,49 @@ 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 - ) - -# register font extensions + , 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) - - 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 - -VALID_TAGS = {'font': 1, 'param' : 1, 'iframe' : 1} - -validTags.update(VALID_TAGS) - +class YesDict(dict): + def has_key(self, k) : return True default_cmf_utils.NASTY_TAGS = {} -default_cmf_utils.VALID_TAGS.update(validTags) +default_cmf_utils.VALID_TAGS = YesDict() # the plinn portal_calendar is a also a "SPECIAL PROVIDER" # TODO: vérifier l'impact @@ -112,27 +112,27 @@ 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 + """ + 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