Author: jmorliaguet Date: Thu Nov 3 00:02:36 2005 New Revision: 28916 Modified: z3lab/cpsskins/branches/jmo-perspectives/browser/rendering/engine.py z3lab/cpsskins/branches/jmo-perspectives/configuration/engines/__init__.py z3lab/cpsskins/branches/jmo-perspectives/configuration/engines/metaconfigure.py z3lab/cpsskins/branches/jmo-perspectives/configuration/engines/metadirectives.py z3lab/cpsskins/branches/jmo-perspectives/configuration/meta.zcml z3lab/cpsskins/branches/jmo-perspectives/engines/contentauthor/configure.zcml z3lab/cpsskins/branches/jmo-perspectives/engines/default/accesskeys.zcml z3lab/cpsskins/branches/jmo-perspectives/engines/default/engine.zcml z3lab/cpsskins/branches/jmo-perspectives/engines/default/filters/accesskeys/__init__.py Log:
- added functional access key filter (still need to add support for tal expressions) Modified: z3lab/cpsskins/branches/jmo-perspectives/browser/rendering/engine.py ============================================================================== --- z3lab/cpsskins/branches/jmo-perspectives/browser/rendering/engine.py (original) +++ z3lab/cpsskins/branches/jmo-perspectives/browser/rendering/engine.py Thu Nov 3 00:02:36 2005 @@ -44,6 +44,7 @@ filter_registry = getUtility(IRegistry, 'filters') renderer_registry = getUtility(IRegistry, 'renderers') +accesskey_registry = getUtility(IRegistry, 'accesskeys') class ContextInfo: """A transient object that holds information used by a renderer. @@ -156,6 +157,10 @@ 'request': request, }) + if globals.engine is None: + globals.engine = 'default' + globals.accesskeys = accesskey_registry.get(globals.engine, []) + # set the current location unless specified if globals.location is None: site = zapi.getSiteManager(element) @@ -313,16 +318,16 @@ % (filter_name, repr(adapted))) continue - # the filter proxy stands for a factory - elif IFilter.implementedBy(filter_proxy): - filter = filter_proxy() - # the filter proxy is a page template to apply to the element # that is being rendered. elif isinstance(filter_proxy, ViewPageTemplateFile): filter = ZPTViewFilter(element, request) filter.setTemplate(filter_proxy) + # the filter proxy stands for a factory + elif IFilter.implementedBy(filter_proxy): + filter = filter_proxy() + else: logger.log(INFO, "Filter '%s' is not supported." % filter_proxy) continue Modified: z3lab/cpsskins/branches/jmo-perspectives/configuration/engines/__init__.py ============================================================================== --- z3lab/cpsskins/branches/jmo-perspectives/configuration/engines/__init__.py (original) +++ z3lab/cpsskins/branches/jmo-perspectives/configuration/engines/__init__.py Thu Nov 3 00:02:36 2005 @@ -21,10 +21,18 @@ """ from zope.app.traversing.namespace import view +from zope.component import provideUtility +from cpsskins.configuration import ConfigurationRegistry +from cpsskins.configuration.interfaces import IRegistry + +# ++engine++ traverser class engine(view): def traverse(self, name, ignored): self.request.annotations['cpsskins.engine'] = name return self.context + +# engine registry +provideUtility(ConfigurationRegistry(), IRegistry, 'engines') Modified: z3lab/cpsskins/branches/jmo-perspectives/configuration/engines/metaconfigure.py ============================================================================== --- z3lab/cpsskins/branches/jmo-perspectives/configuration/engines/metaconfigure.py (original) +++ z3lab/cpsskins/branches/jmo-perspectives/configuration/engines/metaconfigure.py Thu Nov 3 00:02:36 2005 @@ -17,14 +17,17 @@ """ __docformat__ = "reStructuredText" +from zope.component import getUtility from zope.configuration.exceptions import ConfigurationError -registered_engines = [] +from cpsskins.configuration.interfaces import IRegistry -def engine(_context, name): +renderer_registry = getUtility(IRegistry, 'engines') - if name in registered_engines: +def engine(_context, name, accesskeys=[]): + + if name in renderer_registry: raise ConfigurationError( "The '%s' engine has already been registered." % name) - registered_engines.append(name) + renderer_registry.register(name, {'accesskeys': accesskeys}) Modified: z3lab/cpsskins/branches/jmo-perspectives/configuration/engines/metadirectives.py ============================================================================== --- z3lab/cpsskins/branches/jmo-perspectives/configuration/engines/metadirectives.py (original) +++ z3lab/cpsskins/branches/jmo-perspectives/configuration/engines/metadirectives.py Thu Nov 3 00:02:36 2005 @@ -30,3 +30,9 @@ description=_("The engine that the renderer applies to."), required=False, ) + + accesskeys = TextLine( + title=_("Access keys"), + description=_("The access keys associated to this engine."), + required=False, + ) Modified: z3lab/cpsskins/branches/jmo-perspectives/configuration/meta.zcml ============================================================================== --- z3lab/cpsskins/branches/jmo-perspectives/configuration/meta.zcml (original) +++ z3lab/cpsskins/branches/jmo-perspectives/configuration/meta.zcml Thu Nov 3 00:02:36 2005 @@ -4,6 +4,8 @@ <include package=".filters" file="meta.zcml" /> + <include package=".accesskeys" file="meta.zcml" /> + <include package=".engines" file="meta.zcml" /> <include package=".renderers" file="meta.zcml" /> @@ -16,8 +18,6 @@ <include package=".widgets" file="meta.zcml" /> - <include package=".accesskeys" file="meta.zcml" /> - <include package=".storages" file="meta.zcml" /> </configure> Modified: z3lab/cpsskins/branches/jmo-perspectives/engines/contentauthor/configure.zcml ============================================================================== --- z3lab/cpsskins/branches/jmo-perspectives/engines/contentauthor/configure.zcml (original) +++ z3lab/cpsskins/branches/jmo-perspectives/engines/contentauthor/configure.zcml Thu Nov 3 00:02:36 2005 @@ -6,6 +6,8 @@ <include file="engine.zcml" /> + <include file="accesskeys.zcml" /> + <browser:page name="content-author.html" class=".Authoring" Modified: z3lab/cpsskins/branches/jmo-perspectives/engines/default/accesskeys.zcml ============================================================================== --- z3lab/cpsskins/branches/jmo-perspectives/engines/default/accesskeys.zcml (original) +++ z3lab/cpsskins/branches/jmo-perspectives/engines/default/accesskeys.zcml Thu Nov 3 00:02:36 2005 @@ -5,10 +5,4 @@ name="default" /> - <accesskey - collection="default" - key="_" - url="test.html" - /> - </configure> Modified: z3lab/cpsskins/branches/jmo-perspectives/engines/default/engine.zcml ============================================================================== --- z3lab/cpsskins/branches/jmo-perspectives/engines/default/engine.zcml (original) +++ z3lab/cpsskins/branches/jmo-perspectives/engines/default/engine.zcml Thu Nov 3 00:02:36 2005 @@ -3,6 +3,7 @@ <engine name="default" + accesskeys="default" /> <renderer Modified: z3lab/cpsskins/branches/jmo-perspectives/engines/default/filters/accesskeys/__init__.py ============================================================================== --- z3lab/cpsskins/branches/jmo-perspectives/engines/default/filters/accesskeys/__init__.py (original) +++ z3lab/cpsskins/branches/jmo-perspectives/engines/default/filters/accesskeys/__init__.py Thu Nov 3 00:02:36 2005 @@ -37,11 +37,21 @@ def __call__(self, markup, info): """Apply the filter""" + keys = info.globals.accesskeys + if not keys: + return markup + + keys_markup = [] + for k in keys: + keys_markup.append( + '<a accesskey="%(key)s" href="%(url)s"></a>' % k + ) + keys_markup = '<div>' + ''.join(keys_markup) + '</div>' + s = startTag.search(markup) if s is None: - return markup + return keys_markup - accesskey_markup = '<div><a accesskey="_" href="@@test.html"></a></div>' - markup = s.group() + accesskey_markup + markup[s.end():] + markup = s.group() + keys_markup + markup[s.end():] return markup -- http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins