Skip navigation
Currently Being Moderated

13.1 About Zenoss UI Technologies

Created on: Oct 28, 2010 1:58 PM by Zenoss API - Last Modified:  Oct 28, 2010 1:58 PM by Zenoss API

 1. About Zenoss UI Technologies

The Zenoss user interface is built on top of Zope. Zope provides a framework on which progressively more sophisticated functionality can be built. You can layer the user interface using multiple technologies, as well as mix and match:

  • HyperText Markup Language (HTML)

  • Cascading Style Sheets (CSS)

  • Zope 2, Zope Page Templates (ZPT) and the Template Attribute Language (TAL)

  • ZPT and Macro Expansion for TAL (METAL)

  • JavaScript/AJAX (Sencha Ext JS Library)

 1.1. HyperText Markup Language (HTML)

HTML is the most basic formatting language available on the Web. Some version of HTML is understood by every Web browser. HTML is, in practice, a limited variant of eXtensible Markup Language (XML), which divides up a page into elements (designated by tags such as title, head or h3) and content.


If you are converting an existing Web page, verify it by using the free HTML validation service at:

 1.2. Cascading Style Sheets (CSS)

Web browsers take HTML and convert elements such as h1 (a heading at level 1) and convert them into what each browser thinks is appropriate for that element. The way a page displays is different on each browser. Style sheets are a way for the Web page designer to tell the browser that a certain element should have a certain style, such as font type, weight, or color.

The 'cascading' part of CSS means that stylesheets can build on each other. Practically, that means that the order in which you load CSS information can lead to different results.

 1.3. Zope 2, ZPT and TAL

Zope 2 is essentially a Web server with brains. The brains part are the Python programming language and the object-oriented database (ZODB), which are used to create Web pages in a structured way.


Keep in mind when looking at Zope material that you need Zope 2, not Zope 3.

Zope Page Templates are in essence HTML pages that are well-formed, with extra XML attributes (the bits after the element name in-between the < and > characters). The extra XML bits (attributes) are not a part of any HTML standard and are ignored by HTML editors, meaning that ZPT pages live happily with HTML. These attributes and the programming functionality that they deliver are called the Template Attribute Language (TAL).

The TAL attributes allow you to add dynamic content by using information from inside the Zope database (ZODB). From a Zenoss perspective, this allows you to write a query that you can use to build a table, or show different items depending on which objects or devices exist in a particular state. In other words, TAL is the Zope way of accomplishing what you would normally need to do in a CGI inside of a plain Web server like Apache.

It should be noted that inside of TAL it is also possible to use a restricted subset of Python. The restrictions include not being able to load certain standard libraries, as well as operations like reading and writing to disk. This is done intentionally for security reasons.

 1.4. ZPT and Macro Expansion for TAL (METAL)

TAL is the programming language of Zope, allowing you to use parts of the database and programatically work with data. Because TAL is hidden inside HTML, there is no way to reuse blocks of HTML and TAL for your site just by using TAL. Instead, macro expressions are used to make reusable blocks of HTML and TAL.

 1.5. JavaScript / AJAX

Let's get one thing out of the way: Java and JavaScript only share the 'Java' part, and that's only for marketing reasons. Really. They're totally different. Technically, JavaScript is actually called ECMAScript, but that's something that's much worse than JavaScript so everyone calls it JavaScript.

JavaScript can be written directly on the Web page inside of a script element anywhere in an HTML page, or it can be stored on a server and accessed from a script element using the name specified in the src attribute.

So what's the AJAX part? Originally, AJAX was shorthand for "Asynchronous JavaScript And XML", a set of techniques for writing JavaScript. So AJAX is a state of mind rather than a standard. Generally, something is considered AJAX if it uses the JavaScript XMLHttpRequest() function to retrieve data from a server and presents the returned XML document in a interactive way to the user.

 1.6. JavaScript Library: Ext JS

The Zenoss Web interface extensively uses the Ext JS JavaScript library from Sencha. This framework is used to make a desktop-style user application within the constraints of HTML/CSS and JavaScript.

Comments (0)