[kupu-checkins] r41583 - in kupu/trunk/kupu/plone: . kupu_plone_layer
duncan at codespeak.net
duncan at codespeak.net
Wed Mar 28 17:44:57 CEST 2007
Author: duncan
Date: Wed Mar 28 17:44:54 2007
New Revision: 41583
Modified:
kupu/trunk/kupu/plone/ReftextField.py
kupu/trunk/kupu/plone/exportimport.py
kupu/trunk/kupu/plone/html2captioned.py
kupu/trunk/kupu/plone/kupu2html.py
kupu/trunk/kupu/plone/kupu_plone_layer/contentUsesKupu.py
kupu/trunk/kupu/plone/kupu_plone_layer/convertContentForKupu.py
kupu/trunk/kupu/plone/kupu_plone_layer/kupuUploadImage.py
kupu/trunk/kupu/plone/kupu_plone_layer/kupu_wysiwyg_support.html
kupu/trunk/kupu/plone/kupu_plone_layer/kupulibraries.xml.pt
kupu/trunk/kupu/plone/kupu_plone_layer/resolveuid.py
kupu/trunk/kupu/plone/kupu_plone_layer/sample-kupu-customisation-policy.py
kupu/trunk/kupu/plone/librarytool.py
kupu/trunk/kupu/plone/plonedrawers.py
kupu/trunk/kupu/plone/plonelibrarytool.py
kupu/trunk/kupu/plone/util.py
Log:
Avoid calling CMFCore getToolByName unless we really have to.
Make kupu refuse to load when html starts with a comment: that way you can suppress kupu and make sure it stays suppressed.
Modified: kupu/trunk/kupu/plone/ReftextField.py
==============================================================================
--- kupu/trunk/kupu/plone/ReftextField.py (original)
+++ kupu/trunk/kupu/plone/ReftextField.py Wed Mar 28 17:44:54 2007
@@ -1,11 +1,11 @@
from AccessControl import ClassSecurityInfo
-from Products.CMFCore.utils import getToolByName
from Products.Archetypes.public import *
from Products.Archetypes.config import REFERENCE_CATALOG
from Products.Archetypes.Field import TextField
from Products.Archetypes.ReferenceEngine import Reference
from Products.Archetypes.exceptions import ReferenceException
from ZPublisher.HTTPRequest import FileUpload
+from Products.kupu.plone.util import getToolByName
import re
# UID_PATTERN matches a UID in an anchor or image tag.
Modified: kupu/trunk/kupu/plone/exportimport.py
==============================================================================
--- kupu/trunk/kupu/plone/exportimport.py (original)
+++ kupu/trunk/kupu/plone/exportimport.py Wed Mar 28 17:44:54 2007
@@ -20,7 +20,7 @@
from Globals import package_home
from Products.PageTemplates.PageTemplateFile import PageTemplateFile
-from Products.CMFCore.utils import getToolByName
+from Products.kupu.plone.util import getToolByName
from Products.GenericSetup.utils import CONVERTER
from Products.GenericSetup.utils import DEFAULT
Modified: kupu/trunk/kupu/plone/html2captioned.py
==============================================================================
--- kupu/trunk/kupu/plone/html2captioned.py (original)
+++ kupu/trunk/kupu/plone/html2captioned.py Wed Mar 28 17:44:54 2007
@@ -7,10 +7,10 @@
# The transform finds all the embedded images, and replaces them with
# an appropriate chunk of HTML to include the caption.
#
-from Products.CMFCore.utils import getToolByName
from Products.PortalTransforms.interfaces import itransform
from DocumentTemplate.DT_Util import html_quote
from DocumentTemplate.DT_Var import newline_to_br
+from Products.kupu.plone.util import getToolByName
import re
from cgi import escape
from urlparse import urlsplit, urljoin, urlunsplit
Modified: kupu/trunk/kupu/plone/kupu2html.py
==============================================================================
--- kupu/trunk/kupu/plone/kupu2html.py (original)
+++ kupu/trunk/kupu/plone/kupu2html.py Wed Mar 28 17:44:54 2007
@@ -7,9 +7,9 @@
# The transform is the same as the one done by html2captioned, but
# this version expects to work on text/x-html-raw
-from Products.CMFCore.utils import getToolByName
from Products.PortalTransforms.interfaces import itransform
from Products.kupu.plone import html2captioned
+from Products.kupu.plone.util import getToolByName
class KupuOutputTransform(html2captioned.HTMLToCaptioned):
"""Transform which adds captions to images embedded in HTML"""
Modified: kupu/trunk/kupu/plone/kupu_plone_layer/contentUsesKupu.py
==============================================================================
--- kupu/trunk/kupu/plone/kupu_plone_layer/contentUsesKupu.py (original)
+++ kupu/trunk/kupu/plone/kupu_plone_layer/contentUsesKupu.py Wed Mar 28 17:44:54 2007
@@ -6,7 +6,7 @@
##bind script=script
##bind subpath=traverse_subpath
##parameters=fieldname
-from Products.CMFCore.utils import getToolByName
+from Products.kupu.plone.util import getToolByName
from Products.CMFCore.utils import getToolByName
tool = getToolByName(context, 'kupu_library_tool')
@@ -32,6 +32,7 @@
return True
text_format = REQUEST.get('%s_text_format' % fieldname, context.getContentType(fieldname))
content = field.getEditAccessor(context)()
-
+if content.startswith('<!--'):
+ return False
return len(content)==0 or 'html' in text_format.lower()
Modified: kupu/trunk/kupu/plone/kupu_plone_layer/convertContentForKupu.py
==============================================================================
--- kupu/trunk/kupu/plone/kupu_plone_layer/convertContentForKupu.py (original)
+++ kupu/trunk/kupu/plone/kupu_plone_layer/convertContentForKupu.py Wed Mar 28 17:44:54 2007
@@ -6,7 +6,7 @@
##bind script=script
##bind subpath=traverse_subpath
##parameters=fieldname, content
-from Products.CMFCore.utils import getToolByName
+from Products.kupu.plone.util import getToolByName
from Products.PythonScripts.standard import structured_text, newline_to_br
field = context.getField(fieldname)
Modified: kupu/trunk/kupu/plone/kupu_plone_layer/kupuUploadImage.py
==============================================================================
--- kupu/trunk/kupu/plone/kupu_plone_layer/kupuUploadImage.py (original)
+++ kupu/trunk/kupu/plone/kupu_plone_layer/kupuUploadImage.py Wed Mar 28 17:44:54 2007
@@ -6,7 +6,7 @@
##bind subpath=traverse_subpath
##parameters=node_prop_title, node_prop_desc, node_prop_image
-from Products.CMFCore.utils import getToolByName
+from Products.kupu.plone.util import getToolByName
from Products.PythonScripts.standard import html_quote, newline_to_br
request = context.REQUEST
RESPONSE = request.RESPONSE
Modified: kupu/trunk/kupu/plone/kupu_plone_layer/kupu_wysiwyg_support.html
==============================================================================
--- kupu/trunk/kupu/plone/kupu_plone_layer/kupu_wysiwyg_support.html (original)
+++ kupu/trunk/kupu/plone/kupu_plone_layer/kupu_wysiwyg_support.html Wed Mar 28 17:44:54 2007
@@ -394,6 +394,12 @@
<option value="" i18n:translate="">Normal</option>
</select>
</div>
+ <div style="float:right">
+ <label i18n:translate="" for="kupu-bm-number">
+ Numbering
+ </label>
+ <input type="checkbox" checked="checked" id="kupu-bm-number"/>
+ </div>
<label for="kupu-bm-checkall">
<em i18n:translate="">toggle all</em>
</label>
Modified: kupu/trunk/kupu/plone/kupu_plone_layer/kupulibraries.xml.pt
==============================================================================
--- kupu/trunk/kupu/plone/kupu_plone_layer/kupulibraries.xml.pt (original)
+++ kupu/trunk/kupu/plone/kupu_plone_layer/kupulibraries.xml.pt Wed Mar 28 17:44:54 2007
@@ -10,7 +10,7 @@
>
<tal:with define="
- getToolByName nocall:modules/Products/CMFCore/utils/getToolByName;
+ getToolByName nocall:modules/Products/kupu/util/getToolByName;
kupu_tool python:getToolByName(context, 'kupu_library_tool');
libraries python:kupu_tool.getCookedLibraries(context);
">
Modified: kupu/trunk/kupu/plone/kupu_plone_layer/resolveuid.py
==============================================================================
--- kupu/trunk/kupu/plone/kupu_plone_layer/resolveuid.py (original)
+++ kupu/trunk/kupu/plone/kupu_plone_layer/resolveuid.py Wed Mar 28 17:44:54 2007
@@ -7,7 +7,7 @@
##bind subpath=traverse_subpath
##parameters=
# (reference_url is supposed to do the same thing, but is broken)
-from Products.CMFCore.utils import getToolByName
+from Products.kupu.plone.util import getToolByName
from Products.PythonScripts.standard import html_quote
request = context.REQUEST
Modified: kupu/trunk/kupu/plone/kupu_plone_layer/sample-kupu-customisation-policy.py
==============================================================================
--- kupu/trunk/kupu/plone/kupu_plone_layer/sample-kupu-customisation-policy.py (original)
+++ kupu/trunk/kupu/plone/kupu_plone_layer/sample-kupu-customisation-policy.py Wed Mar 28 17:44:54 2007
@@ -11,7 +11,7 @@
# Make a copy of this script called 'kupu-customisation-policy'
# in any skin folder on your site and edit it to set up your own
# preferred kupu configuration.
-from Products.CMFCore.utils import getToolByName
+from Products.kupu.plone.util import getToolByName
RESOURCES = dict(
linkable = ('Document', 'Image', 'File', 'News Item', 'Event', 'Folder', 'Large Plone Folder'),
Modified: kupu/trunk/kupu/plone/librarytool.py
==============================================================================
--- kupu/trunk/kupu/plone/librarytool.py (original)
+++ kupu/trunk/kupu/plone/librarytool.py Wed Mar 28 17:44:54 2007
@@ -18,7 +18,7 @@
from Products.CMFCore.Expression import Expression, createExprContext
from Products.PageTemplates.Expressions import getEngine, SecureModuleImporter
from Products.kupu.plone.interfaces import IKupuLibraryTool
-from Products.CMFCore.utils import getToolByName
+from Products.kupu.plone.util import getToolByName
class KupuError(Exception): pass
NEWTYPE_IGNORE, NEWTYPE_ADD = 0, 1
Modified: kupu/trunk/kupu/plone/plonedrawers.py
==============================================================================
--- kupu/trunk/kupu/plone/plonedrawers.py (original)
+++ kupu/trunk/kupu/plone/plonedrawers.py Wed Mar 28 17:44:54 2007
@@ -16,13 +16,13 @@
"""
import re, string
from thread import get_ident
-from Products.CMFCore.utils import getToolByName
from AccessControl import Unauthorized, ClassSecurityInfo, getSecurityManager
from Globals import InitializeClass
from Products.Archetypes.public import *
from Products.Archetypes.interfaces.referenceable import IReferenceable
from Products.PythonScripts.standard import html_quote, newline_to_br
from Products.kupu.plone.librarytool import KupuError
+from Products.kupu.plone.util import getToolByName
import html2captioned
try:
Modified: kupu/trunk/kupu/plone/plonelibrarytool.py
==============================================================================
--- kupu/trunk/kupu/plone/plonelibrarytool.py (original)
+++ kupu/trunk/kupu/plone/plonelibrarytool.py Wed Mar 28 17:44:54 2007
@@ -24,11 +24,12 @@
from Globals import InitializeClass
from Products.PageTemplates.PageTemplateFile import PageTemplateFile
-from Products.CMFCore.utils import UniqueObject, getToolByName
+from Products.CMFCore.utils import UniqueObject
from Products.PythonScripts.standard import Object
from Products.kupu.plone.librarytool import KupuLibraryTool
from Products.kupu.plone import permissions, scanner, plonedrawers, util, helpers
+from Products.kupu.plone.util import getToolByName
from Products.kupu import kupu_globals
from Products.kupu.config import TOOLNAME, TOOLTITLE
from StringIO import StringIO
Modified: kupu/trunk/kupu/plone/util.py
==============================================================================
--- kupu/trunk/kupu/plone/util.py (original)
+++ kupu/trunk/kupu/plone/util.py Wed Mar 28 17:44:54 2007
@@ -1,13 +1,66 @@
# Utility functions used by Kupu tool
import os
from App.Common import package_home
-from Products.CMFCore.utils import getToolByName, minimalpath
+from Products.CMFCore.utils import minimalpath
from Products.CMFCore.DirectoryView import createDirectoryView
from Products.MimetypesRegistry import MimeTypeItem
from Products.kupu import kupu_globals
+from AccessControl import ModuleSecurityInfo
+security = ModuleSecurityInfo('Products.kupu.plone.util')
+
kupu_package_dir = package_home(kupu_globals)
+# trying to get rid of some deprecation warnings in a
+# backwards compatible way
+try:
+ from zope.component import getUtility
+ from zope.component.interfaces import ComponentLookupError
+ HAVE_GET_UTILITY = True
+except ImportError:
+ HAVE_GET_UTILITY = False
+from Products.CMFCore.utils import getToolByName as gtbn
+
+if HAVE_GET_UTILITY:
+ INTERFACEMAP = {
+ 'portal_catalog': ('Products.CMFCore.interfaces', 'ICatalogTool'),
+ 'portal_memberdata': ('Products.CMFCore.interfaces', 'IMemberDataTool'),
+ 'portal_membership': ('Products.CMFCore.interfaces', 'IMembershipTool'),
+ 'portal_types': ('Products.CMFCore.interfaces', 'ITypesTool'),
+ 'portal_url': ('Products.CMFCore.interfaces', 'IURLTool'),
+ 'portal_workflow': ('Products.CMFCore.interfaces', 'IWorkflowTool'),
+ 'plone_utils': ('Products.CMFPlone.interfaces', 'IPloneTool'),
+ 'portal_interface': ('Products.CMFPlone.interfaces', 'IInterfaceTool'),
+ 'portal_skins': ('Products.CMFPlone.interfaces', 'ISkinsContainer'),
+ 'content_type_registry': ('Products.CMFPlone.interfaces', 'IContentTypeRegistry'),
+ 'portal_quickinstaller': ('Products.CMFQuickInstallerTool.interfaces', 'IQuickInstallerTool'),
+ 'archetype_tool': ('Products.Archetypes.interfaces', 'IArchetypeTool'),
+ 'reference_catalog': ('Products.Archetypes.interfaces', 'IReferenceCatalog'),
+ 'uid_catalog': ('Products.Archetypes.interfaces', 'IUIDCatalog'),
+ 'mimetypes_registry': ('Products.MimetypesRegistry.interfaces', 'IMimetypesRegistryTool'),
+ 'portal_transforms': ('Products.PortalTransforms.interfaces', 'IPortalTransformsTool'),
+ 'kupu_library_tool': ('Products.kupu.plone.z3interfaces', 'IPloneKupuLibraryTool'),
+ }
+ iname_mapping = {}
+ for id, (module, interface) in INTERFACEMAP.iteritems():
+ mod = __import__(module, globals(), locals(), [interface])
+ if hasattr(mod, interface):
+ iname_mapping[id] = getattr(mod, interface)
+ print iname_mapping
+
+security.declarePublic('getToolByName')
+def getToolByName(context, tool_name, default=None):
+ if HAVE_GET_UTILITY:
+ interface = iname_mapping.get(tool_name, None)
+ if interface is not None:
+ try:
+ return getUtility(interface)
+ except ComponentLookupError:
+ # Behave in backward compatible way
+ # fall through to old implementation
+ pass
+ return gtbn(context, tool_name, default)
+
def register_layer(self, relpath, name, out, add=True):
"""Register a file system directory as skin layer
"""
More information about the kupu-checkins
mailing list