[Checkins] SVN: z3c.ptcompat/trunk/src/z3c/ptcompat/ - Add 'pages' complex directive and if 'offering' is None, pass 'package_home' forward.
Sidnei da Silva
sidnei at enfoldsystems.com
Sun Apr 12 22:25:29 EDT 2009
Log message for revision 99144:
- Add 'pages' complex directive and if 'offering' is None, pass 'package_home' forward.
Changed:
U z3c.ptcompat/trunk/src/z3c/ptcompat/meta.zcml
U z3c.ptcompat/trunk/src/z3c/ptcompat/zcml.py
-=-
Modified: z3c.ptcompat/trunk/src/z3c/ptcompat/meta.zcml
===================================================================
--- z3c.ptcompat/trunk/src/z3c/ptcompat/meta.zcml 2009-04-12 21:05:09 UTC (rev 99143)
+++ z3c.ptcompat/trunk/src/z3c/ptcompat/meta.zcml 2009-04-13 02:25:29 UTC (rev 99144)
@@ -13,6 +13,19 @@
handler=".zcml.page_directive"
/>
+ <meta:complexDirective
+ name="pages"
+ schema="zope.app.publisher.browser.metadirectives.IPagesDirective"
+ handler=".zcml.pages_directive"
+ >
+
+ <meta:subdirective
+ name="page"
+ schema="zope.app.publisher.browser.metadirectives.IPagesPageSubdirective"
+ />
+
+ </meta:complexDirective>
+
<meta:directive
name="viewlet"
schema="zope.viewlet.metadirectives.IViewletDirective"
Modified: z3c.ptcompat/trunk/src/z3c/ptcompat/zcml.py
===================================================================
--- z3c.ptcompat/trunk/src/z3c/ptcompat/zcml.py 2009-04-12 21:05:09 UTC (rev 99143)
+++ z3c.ptcompat/trunk/src/z3c/ptcompat/zcml.py 2009-04-13 02:25:29 UTC (rev 99144)
@@ -1,3 +1,4 @@
+import os
import sys
from new import function
@@ -12,6 +13,10 @@
from z3c.ptcompat import ViewPageTemplateFile
from z3c.ptcompat import config
+def package_home(gdict):
+ filename = gdict["__file__"]
+ return os.path.dirname(filename)
+
def clone_and_replace_globals(func, new_globals):
func_globals = func.func_globals.copy()
func_globals.update(new_globals)
@@ -28,6 +33,9 @@
if offering is None:
offering = sys._getframe(1).f_globals
+ if isinstance(offering, dict):
+ offering = package_home(offering)
+
bases += (simpleviewclass.simple, )
class_ = type("SimpleViewClass from %s" % src, bases,
@@ -44,6 +52,9 @@
if offering is None:
offering = sys._getframe(1).f_globals
+ if isinstance(offering, dict):
+ offering = package_home(offering)
+
# Create the base class hierarchy
bases += (viewlet.simple, viewlet.ViewletBase)
@@ -86,6 +97,12 @@
return viewmeta.page(_context, name, *args, **kwargs)
+new_page_globals = dict(page=page_directive)
+class pages_directive(viewmeta.pages):
+
+ page = clone_and_replace_globals(viewmeta.pages.page.im_func,
+ new_page_globals)
+
def viewlet_directive(_context, name, *args, **kwargs):
class_ = kwargs.get('class_')
template = kwargs.get('template')
More information about the Checkins
mailing list