January 9th, 2012Features:
· Whitespace between attributes is now reduced to a single whitespace character.
· The path traverser now correctly renders callables, applying the template namespace as keyword arguments. Previously, only the request name would be passed.
· The content provider expression now correctly applies TAL namespace data.
· Avoid duplicate HTML decoding. This fixes an issue which was introduced because newer Chameleon releases decode all expression inputs by default.
October 11th, 2011
· Update implementation to use component-based template engine configuration, plugging directly into the Zope Toolkit framework.
· Declare RepeatItem as public object with allowed subobjects [leorochael]
· Bump minimum versions of dependencies z3c.pt and sourcecodegen to fix lp#853731 and lp#848200. [leorochael]
· Fixed encoding issue with restricted Python expression. The Python 2.4 AST parser does not accept unicode input and the expression string must be explicitly encoded to a byte string. [malthe]
August 11th, 2011
· Reuse template instance on cook. [malthe]
· Use the template source string available in the _text attribute instead of reading the file (again). [leorochael, malthe]
· Use secure moduler importer for both Zope 2 and 3 templates. This fixes issue #34. [malthe]
July 25th, 2011
· Fixed issue with traversal and dictionary optimization (the optimization has been removed). [malthe]
· Fixed compatibility issue with the UnauthorizedBinding class and traversal. [malthe]
July 22nd, 2011
· Wire in restricted python builtins as imports. Previously these were added to the dynamic context. [malthe]
· Use the Python expression from the z3c.pt package for the trusted page template engine. This difference between this and the standard Python expression from Chameleon is that the pipe character ("|") has the meaning of fallback in Chameleon, but not in the reference ZPT implementation (where it's only available for path expressions). [malthe]
July 15th, 2011
· Added builtins from RestrictedPython to context for Zope 2 templates.
· This fixes name error issues on templates that use one or more utility function builtins normally available to Python expressions in restricted mode. [malthe]
July 8th, 2011
· Refactor custom Python expression implementation to use the parse method. This builds directly on the base implementation and its behavior. [malthe]
May 24th, 2011
· Have the base template class implement IPageTemplate from zope.pagetemplate. This interface is relied on for a number of adapter registrations and the missing interface declaration affects packages such as plone.caching. [malthe]
· Set default reload mode to the Zope 2 application server configuration's debug_mode value. [malthe]