For the general public we are using CMF. For myself and one or two other developers some work within the ZMI will be required. I would like to be able to make some enhancements for the way that we work and code. Is there any documentation on what dtml files control which part of the ZMI and where those files reside on the filesystem?
It's easy to figure out for yourself: look at the url some page is under, and what type of object it is being called on. The end of the URL is a method of the Zope object (possibly acquired, probably not in the ZMI.) Look in the zope source for that type of object for that method. Many of the built-in products live in lib/python/OFS. That method will probably be an instance of a DTML method or something similar, and that will tell you where the source for that object is (usually under a dtml subdirectory.) Say you want to find the frameset of the ZMI. This is 'manage', as you can see in your browser. This is called on the root, which is a Folder. Find the folder class, which is in lib/python/OFS/Folder.py module. But this has no 'manage' method, so it must be in a super-class. Check ObjectManager, in ObjectManager.py. We find there a 'manage_main' which says it is in 'dml/main' and also a 'manage_index_main', but no 'manage' just yet. At this point, you could guess and take a look at lib/python/OFS/dtml/main.dtml (the suffix is appened before lookup) to see if this is it (it isn't). We'll have to look some more. So where is 'manage'? Perhaps one of the other superclasses of ObjectManager? Take a look through App.Management.Navigation (in lib/python/App/Management.py) and go to the Navigation class. There it is: 'manage' is a DTMLFile in 'dtml/manage', meaning 'lib/python/App/Management/dtml/manage.dtml'. The same class also defines an awful lot of the rest of the ZMI. The shortcut is to find some probably-unique text and do a search of file contents in your zope install. A simple grep -r frameset * will also get you the same file, and a lot faster. But you won't understand why half so well. --jcc