[<<] Industrie Toulouse

Zope 3 is a skinnable system. It comes with a new "Zope Management Interface", but a nice thing about Zope 3 is that you can write an application that uses Zope 3 that does not use nor care for the ZMI at all. Like in Plone and the CMF, Skins are set up in layers, with the ability to override where you might want.

The default skin for Zope X3 is a basic ZMI web interface. It's single screen now, not multi-paned like Zope 2's. But - it uses a javascript based tree for folder navigation. This tree works in Internet Explorer and Mozilla/Firefox, but not in the current release (1.2) of Apple's Safari browser (based oh KHTML). Zope provides an alternative skin, StaticTree for this situation. But I could not find StaticTree mentioned in the Zope 3 developers book. If I hadn't had to deal with this before, I would probably not have found it easily without searching through mailing list archives or the Zope 3 wiki. Fortunately, I did remember it. So I'm recording it here, as it was the first thing I had to do to really get Zope X3 usable "out of the box" for my preferred browser.

How to find out what skins are available: Zope 3 provides an excellent API documentation tool, readily available from the Help option in the new ZMI. From the API Documentation tool, I visited Presentations from the top navigation pane. In the bottom navigation pane was a link that said Show Skins and Layers. Clicking on that brought up a page showing all of the skins that are defined in the system, including which one is configured as the default, and the layers that makes up the skin. It also included references to where each skin and layer is defined - down to the file path and line number. On this page was listed StaticTree.

How to change the default skin: Most Zope setups these days run out of an instance home, basically a local set of files and scripts that runs the Zope app server and contains configuration for that particular running, while the bulk of the Zope system resides in a common location on the file system. Zope 3 uses this as well. In an instance home is the etc/ directory containing configuration files. One of these files that is important to customizing your Zope 3 instance is overrides.zcml. The default overrides.zcml is empty, except for a few comments, including a comment on how to set the default skin. Here's what the inner contents, sans comments, of my etc/overrides.zcml file looks like now:

	<browser:defaultSkin name="StaticTree" />

After restarting the Zope 3 web server, I can now see the navigation tree in Safari.