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

Reply via email to