Externalize the mundane

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…

More Information