Gizmo(QP) unburdens the web page from the mundane tasks of access control handling, generation of navigational information, and from management of templates and presentation. Gizmo takes care of these tasks externally and independently of the page itself.
Declarative Access Control
Gizmo formalizes the gz.fill.exportable.X object, that is used to declare the exportables of a directory, It also provides the meta information for the exportable, such as the crumb text to be used in links that point to it, the page title, whether the exportable should appear in the parent page's menu, as well as what permissions are required to access the page.
A Gizmo(QP) application may associate arbitrary permissions with any user and object. The commonly used implicit roles of anonymous and authenticated are formalized, and handling for them is automated. An X instance for an exportable may specify an allow tuple of required priviliges, evaluation of which is handled by gz.fill.directory.Directory.is_allowed(). More...
Contextual Navigational Information
For any page, Gizmo can generate contextual (where and for who) crumb, menu & tree data in a uniform basic crumb format. See the various gz.fill.directory.Directory methods that return a collection of this basic data unit, e.g. get_menu(), get_crumbs(), get_crumb_menus(), get_crumbed_menu().
This data may then be rendered into Hierarchical Navigation Information externally and independently of the page itself, by renderers that are typically provided by the site's skin. This decoupling between the page and the navigational information for it allows that pages whose definition is external to the application, such as error pages or pages from centrally provided utilities (e.g. Register, Form Login or Administration) appear to the user in the expected location within the site's conceptual hierarchical structure.
Management of Templates and Presentation
The site's Skin decouples the presentation for a page from the page logic. This allows (in the same way as for contextual navigational information above) that pages whose definition is external to the application are rendered according to the application's visual layout, independently of the page logic. More...