[Checkins] SVN: zope2book/trunk/source/ Restify ZMI chapter.
Tres Seaver
tseaver at palladion.com
Tue Feb 10 13:22:32 EST 2009
Log message for revision 96404:
Restify ZMI chapter.
Changed:
U zope2book/trunk/source/UsingZope.rst
U zope2book/trunk/source/index.rst
-=-
Modified: zope2book/trunk/source/UsingZope.rst
===================================================================
--- zope2book/trunk/source/UsingZope.rst 2009-02-10 18:18:09 UTC (rev 96403)
+++ zope2book/trunk/source/UsingZope.rst 2009-02-10 18:22:31 UTC (rev 96404)
@@ -1,628 +1,643 @@
Using the Zope Management Interface
+===================================
- Introduction
+Introduction
+------------
- When you log in to Zope, you are presented with the Zope
- Management Interface (ZMI). The ZMI is a management and
- development environment that allows you to control Zope,
- manipulate Zope objects, and develop web applications.
+When you log in to Zope, you are presented with the Zope Management
+Interface (ZMI). The ZMI is a management and development environment that
+allows you to control Zope, manipulate Zope objects, and develop web
+applications.
- The Zope Management Interface represents a view into the Zope
- *object hierarchy*. Almost every link or button in the ZMI
- represents an action that is taken against an *object*. When you
- build web applications with Zope, you typically spend most of your
- time creating and managing objects.
+The Zope Management Interface represents a view into the Zope *object
+hierarchy*. Almost every link or button in the ZMI represents an action
+that is taken against an *object*. When you build web applications with
+Zope, you typically spend most of your time creating and managing objects.
- Don't be frightened if you don't understand the word "object" just
- yet. For the purposes of this chapter, the definition of an
- "object" is *any discrete item that is manageable through the
- ZMI*. In fact, for the purposes of this chapter,
- you can safely replace the word "object" with the word
- "thing" with no ill effects. If you do find something confusing, however, you may
- want to review the "Object Orientation":ObjectOrientation.stx
- chapter for more detail on objects.
+Don't be frightened if you don't understand the word "object" just yet.
+For the purposes of this chapter, the definition of an "object" is *any
+discrete item that is manageable through the ZMI*. In fact, for the
+purposes of this chapter, you can safely replace the word "object" with the
+word "thing" with no ill effects. If you do find something confusing,
+however, you may want to review the `Object
+Orientation <ObjectOrientation.html>`_ chapter for more detail on objects.
- How the Zope Management Interface Relates to Objects
+How the Zope Management Interface Relates to Objects
+----------------------------------------------------
- Unlike web server applications like Apache or Microsoft IIS, Zope does not
- "serve up" HTML files that it finds on your server's hard drive.
- Similarly, the objects that Zope creates are not stored in
- ".html" files on your server. There is no file
- hierarchy on your server's computer that contains all of your Zope
- objects.
+Unlike web server applications like Apache or Microsoft IIS, Zope does not
+"serve up" HTML files that it finds on your server's hard drive.
+Similarly, the objects that Zope creates are not stored in ".html" files on
+your server. There is no file hierarchy on your server's computer that
+contains all of your Zope objects.
- Instead, the objects that Zope creates are stored in a
- database called the "Zope Object DataBase", or the *ZODB*.
- In default configurations, the ZODB creates a file
- named "Data.fs" in which Zope stores its objects. The ZMI
- is the primary way by which you interact with
- Zope objects stored in this database. Note that there
- are other methods of interacting with objects stored in the ZODB,
- including FTP and WebDAV, which are detailed in the chapter in
- this book entitled "Managing Zope Using External
- Tools":ExternalTools.stx, but the ZMI is the primary management
- tool.
+Instead, the objects that Zope creates are stored in a database called the
+"Zope Object DataBase", or the *ZODB*. In default configurations, the ZODB
+creates a file named "Data.fs" in which Zope stores its objects. The ZMI
+is the primary way by which you interact with Zope objects stored in this
+database. Note that there are other methods of interacting with objects
+stored in the ZODB, including FTP and WebDAV, which are detailed in the
+chapter in this book entitled `Managing Zope Using External
+Tools <ExternalTools.stx>`_, but the ZMI is the primary management
+tool.
- ZMI Frames
+ZMI Frames
+----------
- The ZMI uses three browser frames:
-
- * The left frame is called the *Navigator Frame*, which can be used to
- expand or collapse a view into the Zope object hierarchy, much like you would expand and collapse a view of files using a file tree widget like the one in Windows Explorer.
+The ZMI uses three browser frames:
- * The right frame is called the *Workspace Frame*, which displays a
- particular view of the object you're currently managing.
-
- * The top frame is called the *Status Frame*,
- which displays your user name (when logged in),
- as well as a drop-down list that performs various
- actions.
+- The left frame is called the *Navigator Frame*, which can be used to
+ expand or collapse a view into the Zope object hierarchy, much like you
+ would expand and collapse a view of files using a file tree widget like
+ the one in Windows Explorer.
- The Navigator Frame
+- The right frame is called the *Workspace Frame*, which displays a
+ particular view of the object you're currently managing.
- In the left-hand, or *Navigator*, frame, you have a view
- into the *root folder* and all of its subfolders. The *root
- folder* is in the upper-left corner of the tree. The root folder
- is the "topmost" container of Zope objects: almost everything
- meaningful in your Zope instance lives inside the root folder.
+- The top frame is called the *Status Frame*, which displays your user name
+ (when logged in), as well as a drop-down list that performs various
+ actions.
- "The Navigator Frame":img:3-1:Figures/navigator.jpg
+The Navigator Frame
+~~~~~~~~~~~~~~~~~~~
- Some of the folders in the Navigator are displayed with "plus
- mark" icons to their left. These icons let you expand the folders
- to see the sub-folders inside them.
+In the left-hand, or *Navigator*, frame, you have a view into the *root
+folder* and all of its subfolders. The *root folder* is in the upper-left
+corner of the tree. The root folder is the "topmost" container of Zope
+objects: almost everything meaningful in your Zope instance lives inside
+the root folder.
- When you click on an object icon or name in the Navigator, the
- *Workspace* frame will refresh with a view of that object.
+.. figure:: ../Figures/navigator.jpg
+
+ The Navigator Frame
- The Workspace Frame
+Some of the folders in the Navigator are displayed with "plus mark" icons
+to their left. These icons let you expand the folders to see the
+sub-folders inside them.
- The right-hand frame of the management interface shows the object
- you are currently managing. When you first log into Zope, the root
- folder is displayed as the current object. The workspace gives you
- information about the current object and lets you manage it.
+When you click on an object icon or name in the Navigator, the *Workspace*
+frame will refresh with a view of that object.
- "The Workspace Frame":img:3-2:Figures/workspace.jpg
+The Workspace Frame
+~~~~~~~~~~~~~~~~~~~
- A series of tabs is displayed across the top of the screen. The
- tab that is currently active is highlighted in a lighter color. Each tab takes you
- to a different *view* of the current object, and each view lets you
- perform a different management function on that object.
+The right-hand frame of the management interface shows the object you are
+currently managing. When you first log into Zope, the root folder is
+displayed as the current object. The workspace gives you information about
+the current object and lets you manage it.
- When you first log into Zope, you are looking at the *Contents*
- view of the root folder object.
+.. figure:: ../Figures/workspace.jpg
- At the top of the workspace, just below the tabs, is a description
- of the current object's type and URL. On the left is an icon
- representing the current object's type, and to the right of that
- is the object's URL.
+ The Workspace Frame
- At the top of the page, 'Folder at /' tells you that the current
- object is a folder and that its path is "/". Note that this path
- is the object's place relative to Zope's "root" folder. The root
- folder's path is expressed as "/" , and since you are looking at
- the root when you first log in, the path displayed at the the top
- of the workspace is simply "/".
+A series of tabs is displayed across the top of the screen. The tab that is
+currently active is highlighted in a lighter color. Each tab takes you to
+a different *view* of the current object, and each view lets you perform a
+different management function on that object.
- Zope object paths are typically mirrored in the URLs that are used
- to access a Zope object. For instance, if the main URL of your
- Zope site was 'http://mysite.example.com:8080', then the URL of
- the root folder would be 'http://mysite.example.com:8080/' and the
- URL of 'Folder at /myFolder' would be
- 'http://mysite.example.com:8080/myFolder'.
+When you first log into Zope, you are looking at the *Contents* view of the
+root folder object.
- As you explore different Zope objects, you'll find that the links
- displayed at the top of the workspace frame can be used to
- navigate between objects' management views. For example, if you
- are managing a folder at */Zoo/Reptiles/Snakes*, you can return to
- the folder at */Zoo* by clicking on the word *Zoo* in the folder's
- URL.
+At the top of the workspace, just below the tabs, is a description of the
+current object's type and URL. On the left is an icon representing the
+current object's type, and to the right of that is the object's URL.
- The Status Frame
+At the top of the page, 'Folder at /' tells you that the current object is
+a folder and that its path is "/". Note that this path is the object's
+place relative to Zope's "root" folder. The root folder's path is expressed
+as "/" , and since you are looking at the root when you first log in, the
+path displayed at the the top of the workspace is simply "/".
- The "status frame" at the top of the management interface displays your
- current login name, along with a pull-down box that lets you select:
+Zope object paths are typically mirrored in the URLs that are used to
+access a Zope object. For instance, if the main URL of your Zope site was
+http://mysite.example.com:8080, then the URL of the root folder would be
+http://mysite.example.com:8080/ and the URL of 'Folder at /myFolder' would
+be 'http://mysite.example.com:8080/myFolder'.
- *Preferences*: By selecting this menu item, you can set default
- preferences for your Zope management interface experience. You
- can choose to turn off the status frame. You can also choose
- whether you want the management interface to try to use
- style sheets. Additionally, you can change the default height
- and width of text-area boxes displayed in the ZMI. This information
- is associated with your browser via a cookie. It is not
- associated in any way with your Zope user account.
+As you explore different Zope objects, you'll find that the links displayed
+at the top of the workspace frame can be used to navigate between objects'
+management views. For example, if you are managing a folder at
+*/Zoo/Reptiles/Snakes*, you can return to the folder at */Zoo* by clicking
+on the word *Zoo* in the folder's URL.
- *Logout*: Selecting this menu item will log you out of Zope.
- Due to the way that the HTTP "basic authentication" protocol
- works, this may not behave properly with all browsers. If you
- experience problems logging out using this method, try closing
- and reopening your browser to log out.
+The Status Frame
+~~~~~~~~~~~~~~~~
- *Quick Start Links*: Selecting this menu item presents the
- "QuickStart" page, which contains links to Zope documentation and
- community resources.
+The "status frame" at the top of the management interface displays your
+current login name, along with a pull-down box that lets you select:
- "The Status Frame":img:3-3:Figures/statusframe.jpg
+- *Preferences*: By selecting this menu item, you can set default
+ preferences for your Zope management interface experience. You can
+ choose to turn off the status frame. You can also choose whether you
+ want the management interface to try to use style sheets. Additionally,
+ you can change the default height and width of text-area boxes displayed
+ in the ZMI. This information is associated with your browser via a
+ cookie. It is not associated in any way with your Zope user account.
- Creating Objects
+- *Logout*: Selecting this menu item will log you out of Zope.
+ Due to the way that the HTTP "basic authentication" protocol works, this
+ may not behave properly with all browsers. If you experience problems
+ logging out using this method, try closing and reopening your browser to
+ log out.
- The Zope Management Interface allows you to create new objects in
- your Zope instance. To add a new object, select an entry from the
- pull-down menu in the Workspace labeled "Select type to add...".
- This pull-down menu is called the *add list*.
+- *Quick Start Links*: Selecting this menu item presents the
+ "QuickStart" page, which contains links to Zope documentation and
+ community resources.
- The first kind of object you'll want to add in order to "try out"
- Zope is a "Folder". To create a Zope Folder object, navigate to
- the root folder and select *Folder* from the add list. At this
- point, you'll be taken to an add form that collects information
- about the new folder, as shown in the figure below.
+.. figure:: ../Figures/statusframe.jpg
+
+ The Status Frame
- "Folder add form.":img:3-4:Figures/addfolder.jpg
+Creating Objects
+----------------
- Type "zoo" in the *Id* field, and "Zope Zoo" in the *Title*
- field. Then click the *Add* button.
+The Zope Management Interface allows you to create new objects in your Zope
+instance. To add a new object, select an entry from the pull-down menu in
+the Workspace labeled "Select type to add...". This pull-down menu is
+called the *add list*.
- Zope will create a new Folder object in the current folder named
- *zoo*. You can verify this by noting that there is now a new
- folder named *zoo* inside the root folder.
+The first kind of object you'll want to add in order to "try out" Zope is a
+"Folder". To create a Zope Folder object, navigate to the root folder and
+select *Folder* from the add list. At this point, you'll be taken to an
+add form that collects information about the new folder, as shown in the
+figure below.
- Click on *zoo* to "enter" it. The Workspace frame will switch to
- the contents view of *zoo* (which is currently an "empty" folder, as
- it has no sub-objects or contents). Note that the URL of the *zoo* folder is based on the folder's *id*.
-
- You can create more folders inside
- your new folder if you wish. For example, create a folder inside
- the *zoo* folder with an id of *arctic*. Enter the *zoo* folder
- and choose *Folder* from the pull-down menu. Then type in "arctic"
- for the folder id, and "Arctic Exhibit" for the title. Now click
- the *Add* button.
+.. figure:: ../Figures/addfolder.jpg
- When you use Zope, you create new objects by following these
- steps:
+ Folder add form
- 1. Enter the folder where you want to add a new object.
+Type "zoo" in the *Id* field, and "Zope Zoo" in the *Title* field. Then
+click the *Add* button.
- 2. Choose the type of object you want to add from the add list.
+Zope will create a new Folder object in the current folder named *zoo*. You
+can verify this by noting that there is now a new folder named *zoo* inside
+the root folder.
- 3. Fill out the resulting add form and submit it. As a result,
- Zope will create a new object in the folder.
+Click on *zoo* to "enter" it. The Workspace frame will switch to the
+contents view of *zoo* (which is currently an "empty" folder, as it has no
+sub-objects or contents). Note that the URL of the *zoo* folder is based
+on the folder's *id*.
- Notice that every Zope object has an *id* that you need to specify
- in the add form when you create the object. The id is how Zope
- names objects. Objects also use their ids as a part of their
- *URL*. The URL of any given Zope object is typically a URL
- consisting of the folders in which the object lives plus its name.
- For example, we created a folder named "zoo" in the root folder.
- If our site were called "mysite.example.com", the new folder's URL
- would be "http://mysite.example.com/zoo".
+You can create more folders inside your new folder if you wish. For
+example, create a folder inside the *zoo* folder with an id of *arctic*.
+Enter the *zoo* folder and choose *Folder* from the pull-down menu. Then
+type in "arctic" for the folder id, and "Arctic Exhibit" for the title. Now
+click the *Add* button.
- Moving and Renaming Objects
+When you use Zope, you create new objects by following these
+steps:
- Most computer systems let you move files around in directories
- with cut, copy, and paste actions. The ZMI uses a
- similar system that lets you move objects around in folders by
- cutting or copying them, and then pasting them to a new location.
+1. Enter the folder where you want to add a new object.
- *NOTE: Zope move and rename options require that you have cookies
- enabled in your browser.*
+2. Choose the type of object you want to add from the add list.
- To experiment with copy and paste, create a new Folder object in the root
- folder with an id of *bears*. Then select *bears* by checking the
- check box just to the left of the folder. Then click the *Cut*
- button. Cut selects the selected objects from the folder and
- places them on Zope's "clipboard". The object will *not*,
- however, disappear from its location until it is pasted somewhere
- else.
+3. Fill out the resulting add form and submit it. As a result, Zope will
+ create a new object in the folder.
- Now enter the *zoo* folder by clicking on it. Click the
- *Paste* button to paste the cut object into the *zoo* folder. You
- should see the *bears* folder appear in its new location. You can
- verify that the folder has been moved by going to the root folder
- and confirming that *bears* is no longer visible there.
+Notice that every Zope object has an *id* that you need to specify in the
+add form when you create the object. The id is how Zope names objects.
+Objects also use their ids as a part of their *URL*. The URL of any given
+Zope object is typically a URL consisting of the folders in which the
+object lives plus its name. For example, we created a folder named "zoo"
+in the root folder. If our site were called "mysite.example.com", the new
+folder's URL would be "http://mysite.example.com/zoo".
- Copy works similarly to cut, in that, when you paste copied objects, the
- original objects are not removed. Select the object(s) you want
- to copy and click the *Copy* button. Then navigate to another
- folder and click the *Paste* button.
+Moving and Renaming Objects
+---------------------------
- You can cut and copy folders that contain other objects and move
- many objects at one time with a single cut and paste. For
- example, go to the root folder, and copy the *zoo* folder. Now paste it
- into the root folder. You will now have two folders inside the
- root folder: *zoo* and *copy_of_zoo*. If you paste an
- object into the same folder where you copied it, Zope will change
- the id of the pasted object. This is a necessary step, as you
- cannot have two objects with the same id in the same folder.
+Most computer systems let you move files around in directories with cut,
+copy, and paste actions. The ZMI uses a similar system that lets you move
+objects around in folders by cutting or copying them, and then pasting them
+to a new location.
- To rename the *copy_of_zoo* folder, select the folder by checking
- the check box to the left of the folder. Then click the *Rename*
- button. This will take you to the rename form.
+.. Note:
+ Zope move and rename options require that you have cookies enabled in
+ your browser.
- "Renaming an Object":img:3-5:Figures/renamezoo.jpg
+To experiment with copy and paste, create a new Folder object in the root
+folder with an id of *bears*. Then select *bears* by checking the check
+box just to the left of the folder. Then click the *Cut* button. Cut
+selects the selected objects from the folder and places them on Zope's
+"clipboard". The object will *not*, however, disappear from its location
+until it is pasted somewhere else.
- Type in the new id value "zoo2" and click *OK*. Zope ids can consist
- of letters, numbers, spaces, dashes, underscores, and periods, and they
- are case-sensitive. Here are some legal Zope ids: *index.html*,
- *42*, *Lucky13*, and *Snake-Pit*.
+Now enter the *zoo* folder by clicking on it. Click the *Paste* button to
+paste the cut object into the *zoo* folder. You should see the *bears*
+folder appear in its new location. You can verify that the folder has been
+moved by going to the root folder and confirming that *bears* is no longer
+visible there.
- Now your root folder contains *zoo* and *zoo2* folders. Each of
- these folders contains a *bears* folder. This is because when we
- made a copy of the *zoo* folder, we also copied the *bears* folder
- that it contained. Copying an object also copies all of the
- objects it contains.
+Copy works similarly to cut, in that, when you paste copied objects, the
+original objects are not removed. Select the object(s) you want to copy
+and click the *Copy* button. Then navigate to another folder and click the
+*Paste* button.
- If you want to delete an object, select it and then click the
- *Delete* button. Unlike cut objects, deleted objects are not
- placed on the clipboard and cannot be pasted. In the next section,
- we'll see how we can retrieve deleted objects using Undo.
+You can cut and copy folders that contain other objects and move many
+objects at one time with a single cut and paste. For example, go to the
+root folder, and copy the *zoo* folder. Now paste it into the root folder.
+You will now have two folders inside the root folder: *zoo* and
+*copy_of_zoo*. If you paste an object into the same folder where you copied
+it, Zope will change the id of the pasted object. This is a necessary step,
+as you cannot have two objects with the same id in the same folder.
- Zope will not let you cut, delete, or rename a few particular
- objects in the root folder. These objects include *Control_Panel*,
- *browser_id_manager*, and *temp_folder*. These objects are
- necessary for Zope's operation. It is possible to delete other
- root objects, such as *index_html*, *session_data_manager*,
- *standard_html_header*, *standard_html_footer*,
- *standard_error_message*, and *standard_template.pt*, but it is not
- recommended to do so unless you have a very good reason.
+To rename the *copy_of_zoo* folder, select the folder by checking the check
+box to the left of the folder. Then click the *Rename* button. This will
+take you to the rename form.
- Transactions and Undoing Mistakes
+.. figure:: ../Figures/renamezoo.jpg
- All objects you create in Zope are stored in Zope's "object
- database". Unlike other web application servers, Zope doesn't
- store its objects in files on a filesystem. Instead, all Zope
- objects are stored by default in a single special file on the
- filesystem named 'Data.fs'. This file is stored in the 'var'
- directory of your Zope instance. Using an object database rather
- than storing objects on the file system allows operations to Zope objects to
- be *transactional*.
+ Renaming an Object
- A transactional operation is one in which all changes to a set of
- objects are committed as a single "batch". In Zope, a single web
- request initiates a transaction. When the web request is
- finished, Zope commits the transaction unless an error occurs
- during the processing of the request. If there is an error, Zope
- refrains from committing the transaction. Each transaction
- describes all of the changes that happen in the course of
- performing a web request.
+Type in the new id value "zoo2" and click *OK*. Zope ids can consist of
+letters, numbers, spaces, dashes, underscores, and periods, and they are
+case-sensitive. Here are some legal Zope ids: *index.html*, *42*,
+*Lucky13*, and *Snake-Pit*.
- Any action in Zope that causes a transaction can be undone via
- the *Undo* tab. You can recover from mistakes by undoing the
- transaction that represents the mistake. This includes undo actions
- themselves, which can also be undone to restore an object to its state
- before the undo action.
+Now your root folder contains *zoo* and *zoo2* folders. Each of these
+folders contains a *bears* folder. This is because when we made a copy of
+the *zoo* folder, we also copied the *bears* folder that it contained.
+Copying an object also copies all of the objects it contains.
- Select the *zoo* folder that we created earlier and click
- *Delete*. The folder disappears. You can get it back by undoing the
- delete action.
+If you want to delete an object, select it and then click the *Delete*
+button. Unlike cut objects, deleted objects are not placed on the clipboard
+and cannot be pasted. In the next section, we'll see how we can retrieve
+deleted objects using Undo.
- Click the *Undo* tab, as shown in the figure below.
+Zope will not let you cut, delete, or rename a few particular objects in
+the root folder. These objects include *Control_Panel*,
+*browser_id_manager*, and *temp_folder*. These objects are necessary for
+Zope's operation. It is possible to delete other root objects, such as
+*index_html*, *session_data_manager*, *standard_html_header*,
+*standard_html_footer*, *standard_error_message*, and
+*standard_template.pt*, but it is not recommended to do so unless you have
+a very good reason.
- "The Undo view.":img:3-6:Figures/delzoo.jpg
+Transactions and Undoing Mistakes
+---------------------------------
- Transactions are named after the Zope action, or "method",
- that initiated them. In this case, the initiating
- method was one named "/manage_delObjects", which is the name of the
- Zope action that deletes Zope objects.
+All objects you create in Zope are stored in Zope's "object database".
+Unlike other web application servers, Zope doesn't store its objects in
+files on a filesystem. Instead, all Zope objects are stored by default in
+a single special file on the filesystem named 'Data.fs'. This file is
+stored in the 'var' directory of your Zope instance. Using an object
+database rather than storing objects on the file system allows operations
+to Zope objects to be *transactional*.
- Select the first transaction labeled */manage_delObjects*, and
- click the *Undo* button at the bottom of the form. Doing so instructs
- Zope to undo the last transaction. You can verify that the task
- has been completed by visiting the root folder to confirm that
- the *zoo* folder has returned. If you use the "Back" button
- to revisit the root folder, you may need to refresh your
- browser to see the proper results. To see the effect in the *Navigator*
- pane, click the "Refresh" link within the pane.
+A transactional operation is one in which all changes to a set of objects
+are committed as a single "batch". In Zope, a single web request initiates
+a transaction. When the web request is finished, Zope commits the
+transaction unless an error occurs during the processing of the request.
+If there is an error, Zope refrains from committing the transaction. Each
+transaction describes all of the changes that happen in the course of
+performing a web request.
- You may "undo an undo" action, or "redo" the action, and you
- can undo and redo actions as many times as you like. When you perform a
- "redo", Zope inserts a transaction into the undo log describing
- the redo action.
+Any action in Zope that causes a transaction can be undone via the *Undo*
+tab. You can recover from mistakes by undoing the transaction that
+represents the mistake. This includes undo actions themselves, which can
+also be undone to restore an object to its state before the undo action.
- The Undo tab is available on most Zope objects. When viewing the
- Undo tab of a particular object, the list of undoable transactions
- is filtered down to the transactions that have recently affected
- the current object and its sub-objects.
+Select the *zoo* folder that we created earlier and click *Delete*. The
+folder disappears. You can get it back by undoing the delete action.
- Undo Details and Gotchas
+Click the *Undo* tab, as shown in the figure below.
- You cannot undo a transaction upon which a later transaction depends.
- For example, if you paste an object into a folder, and then
- delete an object in the same folder, pasting the first object cannot
- be undone, as both transactions affect the contents of a single object:
- the folder. The solution is to undo both transactions. You can
- undo more than one transaction at a time by selecting multiple
- transactions on the *Undo* tab and then clicking *Undo*.
+.. figure:: ../Figures/delzoo.jpg
- Only changes to objects stored in Zope's object database can be
- undone. If you have integrated data into a relational database
- server, such as Oracle or MySQL (as discussed in the chapter entitled
- "Relational Database Connectivity"), changes to data stored there
- cannot be undone.
+ The Undo view
- Reviewing Change History
+Transactions are named after the Zope action, or "method", that initiated
+them. In this case, the initiating method was one named
+``/manage_delObjects``, which is the name of the Zope action that deletes
+Zope objects.
- The Undo tab will provide you with enough information to know that
- a change has occurred. However, it will not tell you much about
- the effect of the transaction on the objects that were changed
- during the transaction. "Presentation" and "logic" objects, like
- DTML Methods, DTML Documents, Zope Page Templates, and Script
- (Python) objects, support *History* for this purpose. If you know
- a transaction has affected one of these objects, you can go to
- that object's *History* view and look at the previous states of
- the object, as shown in the figure below.
+Select the first transaction labeled */manage_delObjects*, and click the
+*Undo* button at the bottom of the form. Doing so instructs Zope to undo
+the last transaction. You can verify that the task has been completed by
+visiting the root folder to confirm that the *zoo* folder has returned. If
+you use the "Back" button to revisit the root folder, you may need to
+refresh your browser to see the proper results. To see the effect in the
+*Navigator* pane, click the "Refresh" link within the pane.
- "The History View":img:3-7:Figures/history.png
+You may "undo an undo" action, or "redo" the action, and you can undo and
+redo actions as many times as you like. When you perform a "redo", Zope
+inserts a transaction into the undo log describing the redo action.
- The *History* view of an object supports the comparison of revisions,
- allowing you to track their changes over time. You may select two
- revisions from an object's History and compare them to one
- another. To perform a comparison between two object revisions,
- select two revisions using the checkboxes next to the transaction
- identifiers, and click the *Compare* button.
+The Undo tab is available on most Zope objects. When viewing the Undo tab
+of a particular object, the list of undoable transactions is filtered down
+to the transactions that have recently affected the current object and its
+sub-objects.
- The resulting comparison format is often called a *diff*, as it
- emphasizes the differences in content between the versions. The
- diff format shows you the lines that have been added to the new
- document (via a plus), which lines have been subtracted from the
- old document (via a minus), and which lines have been replaced or
- changed (via an exclamation point).
+Undo Details and Gotchas
+------------------------
- "Comparing Revisions Via The History View":img:3-8:Figures/histcompare.png
+You cannot undo a transaction upon which a later transaction depends. For
+example, if you paste an object into a folder, and then delete an object in
+the same folder, pasting the first object cannot be undone, as both
+transactions affect the contents of a single object: the folder. The
+solution is to undo both transactions. You can undo more than one
+transaction at a time by selecting multiple transactions on the *Undo* tab
+and then clicking *Undo*.
- To revert to an older object revision, click the checkbox next to
- the transaction identifier, then click the *Copy to present*
- button.
+Only changes to objects stored in Zope's object database can be undone. If
+you have integrated data into a relational database server, such as Oracle
+or MySQL (as discussed in the chapter entitled "Relational Database
+Connectivity"), changes to data stored there cannot be undone.
- Importing and Exporting Objects
+Reviewing Change History
+------------------------
- You can move objects from one Zope system to another using
- *export* and *import*. You can export all types of Zope objects,
- with the possible exception of External Method objects,
- to an *export file*. This file can then be imported into any
- other Zope system.
+The Undo tab will provide you with enough information to know that a change
+has occurred. However, it will not tell you much about the effect of the
+transaction on the objects that were changed during the transaction.
+"Presentation" and "logic" objects, like DTML Methods, DTML Documents, Zope
+Page Templates, and Script (Python) objects, support *History* for this
+purpose. If you know a transaction has affected one of these objects, you
+can go to that object's *History* view and look at the previous states of
+the object, as shown in the figure below.
- You can think of exporting an object as cloning a piece of your
- Zope system into a separate file, which you can then move between
- machines. You can take this file and graft the clone onto any
- other Zope server.
+.. figure:: ../Figures/history.png
- Suppose you have a folder for home work that you want to export
- from your school's Zope server, and take it home with you to work on in
- your home Zope server. You'd create a folder in your root folder called
- "homeWork". After creating the folder, you'd click the checkbox next to
- the *homeWork* folder you'd just created, and then click the
- *Import/Export* button. You would then be working in the
- Import/Export folder view, as shown in the figure below.
+ The History View
- "Exporting homeWork.zexp":img:3-9:Figures/export.jpg
+The *History* view of an object supports the comparison of revisions,
+allowing you to track their changes over time. You may select two
+revisions from an object's History and compare them to one another. To
+perform a comparison between two object revisions, select two revisions
+using the checkboxes next to the transaction identifiers, and click the
+*Compare* button.
- There are two sections to this screen: the upper half is the
- *export* section, and the lower half is the *import* section. To export
- an object from this screen, type the id of the object into the
- first form element, *Export object id*. In our case, Zope has already
- filled this field in for us, since we had selected the *homeWork*
- folder on the last screen.
+The resulting comparison format is often called a *diff*, as it emphasizes
+the differences in content between the versions. The diff format shows you
+the lines that have been added to the new document (via a plus), which
+lines have been subtracted from the old document (via a minus), and which
+lines have been replaced or changed (via an exclamation point).
- The next form option lets you choose between downloading the
- export file to your computer or leaving it on the server. If you
- select *Download to local machine*, and click the *Export* button,
- your web browser will prompt you to download the export file. If
- you select *Save to file on server*, then Zope will save the file
- on the same machine on which Zope is running, and you must fetch
- the file from that location yourself. The export file will be
- written to Zope's *var* directory on its server's file system. By default,
- export files use the file extension *.zexp*.
+.. figure:: ../Figures/histcompare.png
- In general, it's easier to download the export file to your local
- machine. It may be more convenient to save the file to the
- server instead if you are on a slow connection and the
- export file is very large, or if you are just trying to move the
- exported object to another Zope instance on the same server.
+ Comparing Revisions Via The History View
- The final export form element is the *XML format?* checkbox.
- This option exports the object in the *eXtensible Markup
- Language* (XML) format, as opposed to exporting the file in
- Zope's default binary format. XML format exports are much
- larger but are (mostly) human-readable. Currently, the only tool
- that understands this XML format is Zope itself, but the future may
- bring along other tools that can understand Zope's XML format.
- In general, you should leave this box unchecked, unless you're
- curious about what the XML export format looks like and want to
- examine it by hand.
+To revert to an older object revision, click the checkbox next to the
+transaction identifier, then click the *Copy to present* button.
- While you're viewing the export form for *homeWork*, ensure that
- "download to local machine" is selected, "XML format?" is *not*
- selected, and then click the *Export* button. Your browser will
- present a file save dialog. Save the file, which will be named
- named *homeWork.zexp*, to a temporary location on your local computer.
+Importing and Exporting Objects
+-------------------------------
- Suppose that you've later gone home and wanted to import the file into
- your home Zope server. First, you would copy the exported file into
- Zope's *import* directory on your Zope server's file system, and then
- import the file via the ZMI into your home Zope instance. Here is an
- example of a Zope import: we are copying the *homeWork.zexp* file, which
- is in a directory named '/tmp' on the local computer, to a remote ("home")
- computer running Zope using the *scp* facility in Linux. We copy the
- *.zexp* file into our Zope directory's 'import' directory. In this
- example, the Zope installation directory on the remote computer is named
- '/home/chrism/sandboxes/ZBExample'::
+You can move objects from one Zope system to another using *export* and
+*import*. You can export all types of Zope objects, with the possible
+exception of External Method objects, to an *export file*. This file can
+then be imported into any other Zope system.
- chrism at saints:/tmp$ ls -al homeWork.zexp
- -rw-r--r-- 1 chrism chrism 182 Jul 13 15:44 homeWork.zexp
- chrism at saints:/tmp$ scp homeWork.zexp saints.homeunix.com:/home/chrism/sandboxes/ZBExample/import
- chrism at saints.homeunix.com's password:
- homeWork.zexp 100% |*****************************| 182 00:00
- chrism at saints:/tmp$
+You can think of exporting an object as cloning a piece of your Zope system
+into a separate file, which you can then move between machines. You can
+take this file and graft the clone onto any other Zope server.
- In the above example, the export file 'homeWork.zexp' was copied from
- the local computer's '/tmp' directory to the remote computer's
- '/home/chrism/sandboxes/ZBExample/import/' directory.
- Your local directory and your Zope's installation directory will
- be different. For the purpose of this example, you'd copy the export file
- you downloaded to your Zope installation's "import" directory
- using whatever facility you're most comfortable with (you needn't
- use scp).
+Suppose you have a folder for home work that you want to export from your
+school's Zope server, and take it home with you to work on in your home
+Zope server. You'd create a folder in your root folder called "homeWork".
+After creating the folder, you'd click the checkbox next to the *homeWork*
+folder you'd just created, and then click the *Import/Export* button. You
+would then be working in the Import/Export folder view, as shown in the
+figure below.
- Now, go back to your Zope's ZMI. Create a Folder
- named 'import_example'. Visit the newly-created 'import_example'
- folder by clicking on it in the ZMI. Then click
- the *Import/Export* button from within the 'import_example' folder, and
- scroll to the bottom of the Workspace frame. Note that Zope gives
- you the option to either *Take ownership of imported objects* or
- *Retain existing ownership information*. Ownership will be
- discussed more in the chapter entitled "Users and Security". For
- now, just leave the *Take ownership of imported objects* option
- selected, enter the name of the export file ('homeWork.zexp')
- in the *Import file name* field, and click *Import*.
+.. figure:: ../Figures/export.jpg
- "Importing homeWork.zexp":img:3-10:Figures/import.jpg
+ Exporting homeWork.zexp
- You now have a new object in the 'import_example' folder named
- 'homeWork'. Note that Zope informs you of the success of the import
- operation with a status message.
+There are two sections to this screen: the upper half is the *export*
+section, and the lower half is the *import* section. To export an object
+from this screen, type the id of the object into the first form element,
+*Export object id*. In our case, Zope has already filled this field in for
+us, since we had selected the *homeWork* folder on the last screen.
- "Success Importing homeWork.zexp":img:3-11:Figures/importsuccess.jpg
+The next form option lets you choose between downloading the export file to
+your computer or leaving it on the server. If you select *Download to local
+machine*, and click the *Export* button, your web browser will prompt you
+to download the export file. If you select *Save to file on server*, then
+Zope will save the file on the same machine on which Zope is running, and
+you must fetch the file from that location yourself. The export file will
+be written to Zope's *var* directory on its server's file system. By
+default, export files use the file extension *.zexp*.
- There are a few caveats to importing and exporting: in order to
- perform a successful import of a Zope export file, you need to
- ensure that both the importing and exporting Zope instances have the same
- *Products* installed. If an import fails, it's likely that you
- don't have the same Products installed in your importing Zope as the
- Products installed in the Zope from whence the export file came.
- Our example above works because we are exporting a Folder object, which
- is a common, core object type for all Zopes. If you have trouble
- importing any given exported Zope file, check with the distributor of the exported file to see what Products are necessary for proper import.
+In general, it's easier to download the export file to your local machine.
+It may be more convenient to save the file to the server instead if you are
+on a slow connection and the export file is very large, or if you are just
+trying to move the exported object to another Zope instance on the same
+server.
- Note that you cannot import an object into a folder that has an
- existing object with the same 'id' as an exported file. Therefore, when
- you import an export file, you need to ensure that it does not want to
- install an object that has the same name as an existing object in the folder
- in which you wish to import it. In our example above, in order to
- bring your homework back to school, you'd either need to import
- it into a folder that doesn't already have an existing *homeWork* folder in
- it, or you'd need to delete the existing *homeWork* folder before
- importing the new one.
+The final export form element is the *XML format?* checkbox. This option
+exports the object in the *eXtensible Markup Language* (XML) format, as
+opposed to exporting the file in Zope's default binary format. XML format
+exports are much larger but are (mostly) human-readable. Currently, the
+only tool that understands this XML format is Zope itself, but the future
+may bring along other tools that can understand Zope's XML format. In
+general, you should leave this box unchecked, unless you're curious about
+what the XML export format looks like and want to examine it by hand.
- Using Object Properties
+While you're viewing the export form for *homeWork*, ensure that "download
+to local machine" is selected, "XML format?" is *not* selected, and then
+click the *Export* button. Your browser will present a file save dialog.
+Save the file, which will be named named *homeWork.zexp*, to a temporary
+location on your local computer.
- *Properties* are ways of associating information with many objects in
- Zope, including folders. For example, many Zope content objects have a
- content type property, and others contain metadata about the object, such as
- its author, title, or status.
+Suppose that you've later gone home and wanted to import the file into your
+home Zope server. First, you would copy the exported file into Zope's
+*import* directory on your Zope server's file system, and then import the
+file via the ZMI into your home Zope instance. Here is an example of a
+Zope import: we are copying the *homeWork.zexp* file, which is in a
+directory named '/tmp' on the local computer, to a remote ("home") computer
+running Zope using the *scp* facility in Linux. We copy the *.zexp* file
+into our Zope directory's 'import' directory. In this example, the Zope
+installation directory on the remote computer is named
+'/home/chrism/sandboxes/ZBExample'::
- Properties can provide more complex data than strings, such as
- numbers, lists, and other data structures. All properties are
- managed via the *Properties* view. Click on the *Properties* tab
- of the "root" object, and you will be taken to the properties
- management view, as seen in the figure below.
+ chrism at saints:/tmp$ ls -al homeWork.zexp
+ -rw-r--r-- 1 chrism chrism 182 Jul 13 15:44 homeWork.zexp
+ chrism at saints:/tmp$ scp homeWork.zexp saints.homeunix.com:/home/chrism/sandboxes/ZBExample/import
+ chrism at saints.homeunix.com's password:
+ homeWork.zexp 100% |*****************************| 182 00:00
+ chrism at saints:/tmp$
- "The Properties Management View":img:3-12:Figures/rootproperties.jpg
+In the above example, the export file 'homeWork.zexp' was copied from the
+local computer's '/tmp' directory to the remote computer's
+'/home/chrism/sandboxes/ZBExample/import/' directory. Your local directory
+and your Zope's installation directory will be different. For the purpose
+of this example, you'd copy the export file you downloaded to your Zope
+installation's "import" directory using whatever facility you're most
+comfortable with (you needn't use scp).
- A property consists of a name, a value, and a type. A property's
- type defines what kind of value or values it can have.
+Now, go back to your Zope's ZMI. Create a Folder named 'import_example'.
+Visit the newly-created 'import_example' folder by clicking on it in the
+ZMI. Then click the *Import/Export* button from within the
+'import_example' folder, and scroll to the bottom of the Workspace frame.
+Note that Zope gives you the option to either *Take ownership of imported
+objects* or *Retain existing ownership information*. Ownership will be
+discussed more in the chapter entitled "Users and Security". For now, just
+leave the *Take ownership of imported objects* option selected, enter the
+name of the export file ('homeWork.zexp') in the *Import file name* field,
+and click *Import*.
- In the figure above, you can see that the folder has a single
- string property *title*, which has the value 'Zope'. You may
- change any predefined property by changing its value in the Value
- box, and then clicking *Save Changes*. You may add additional
- properties to an object by entering a name, value, and type into
- the bottom-most field in the Properties view.
+.. figure:: ../Figures/import.jpg
- Zope supports a number of property types and each type is suited to a
- specific task. This list gives a brief overview of the kinds of
- properties you can create from the management interface:
+ Importing homeWork.zexp
- string -- A string is a sequence of characters of arbitrary length.
- Strings are the most basic and useful type of property in Zope.
+You now have a new object in the 'import_example' folder named 'homeWork'.
+Note that Zope informs you of the success of the import operation with a
+status message.
- int -- An int property is an integer, which can be any positive or
- negative number that is not a fraction. An int is guaranteed to be
- at least 32 bits long.
+.. figure:: ../Figures/importsuccess.jpg
- long -- A long is an integer that has no range limitation.
+ Success Importing homeWork.zexp
- float -- A float holds a floating point, or decimal number.
- Monetary values, for example, often use floats.
+There are a few caveats to importing and exporting: in order to perform a
+successful import of a Zope export file, you need to ensure that both the
+importing and exporting Zope instances have the same *Products* installed.
+If an import fails, it's likely that you don't have the same Products
+installed in your importing Zope as the Products installed in the Zope from
+whence the export file came. Our example above works because we are
+exporting a Folder object, which is a common, core object type for all
+Zopes. If you have trouble importing any given exported Zope file, check
+with the distributor of the exported file to see what Products are
+necessary for proper import.
- lines -- A lines property is a sequence of strings.
+Note that you cannot import an object into a folder that has an existing
+object with the same 'id' as an exported file. Therefore, when you import
+an export file, you need to ensure that it does not want to install an
+object that has the same name as an existing object in the folder in which
+you wish to import it. In our example above, in order to bring your
+homework back to school, you'd either need to import it into a folder that
+doesn't already have an existing *homeWork* folder in it, or you'd need to
+delete the existing *homeWork* folder before importing the new one.
- tokens -- A tokens property is a list of words separated by spaces.
+Using Object Properties
+-----------------------
- text -- A text property is just like a string property, except that
- Zope normalizes the line ending characters (different browsers use
- different line ending conventions).
+*Properties* are ways of associating information with many objects in Zope,
+including folders. For example, many Zope content objects have a content
+type property, and others contain metadata about the object, such as its
+author, title, or status.
- selection -- A selection property is special, in that it is used to render
- an HTML single selection input widget.
+Properties can provide more complex data than strings, such as numbers,
+lists, and other data structures. All properties are managed via the
+*Properties* view. Click on the *Properties* tab of the "root" object, and
+you will be taken to the properties management view, as seen in the figure
+below.
- multiple selection -- A multiple selection property is special, in that it
- is used to render an HTML multiple selection form input widget.
+.. figure:: ../Figures/rootproperties.jpg
- Properties are very useful tools for tagging your Zope objects
- with bits of metadata. Properties are supported by most
- Zope objects and are often referenced by "dynamic" Zope objects,
- such as "scripts" and "methods" (which we have not yet discussed)
- for purposes of data display.
+ The Properties Management View
- Using the Help System
+A property consists of a name, a value, and a type. A property's type
+defines what kind of value or values it can have.
- Zope has a built-in help system: every management screen has a help
- button in its upper right-hand corner. This button launches another
- browser window that exposes the Zope Help System.
+In the figure above, you can see that the folder has a single string
+property *title*, which has the value 'Zope'. You may change any
+predefined property by changing its value in the Value box, and then
+clicking *Save Changes*. You may add additional properties to an object by
+entering a name, value, and type into the bottom-most field in the
+Properties view.
- To see the help system, go to the root folder and click the *Help*
- link in upper right-hand corner of the Workspace frame.
+Zope supports a number of property types and each type is suited to a
+specific task. This list gives a brief overview of the kinds of properties
+you can create from the management interface:
- "The Help System.":img:3-13:Figures/2-7.png
+string
+ A string is a sequence of characters of arbitrary length.
+ Strings are the most basic and useful type of property in Zope.
- The help system has an organization similar to the two primary
- panes of the Zope management interface: it has one frame for
- navigation, and one frame for displaying the contents of the
- help system related to the current management screen.
+int
+ An int property is an integer, which can be any positive or
+ negative number that is not a fraction. An int is guaranteed to be
+ at least 32 bits long.
- Browsing and Searching Help
+long
+ A long is an integer that has no range limitation.
- Normally you would use the help system to get help on a specific
- topic. However, if you are curious, you can browse through its
- content.
+float
+ A float holds a floating point, or decimal number.
+ Monetary values, for example, often use floats.
- The help system lets you browse all of the help topics in the
- *Contents* tab of the left-hand help frame, in which you can expand and
- collapse help topics. To view a help topic in the right frame,
- click on its name in the left frame. By default, no topics are
- expanded.
+lines
+ A lines property is a sequence of strings.
- Most help pertaining to Zope itself is located in the *Zope Help*
- folder. Click on the "plus" symbol next to the words *Zope Help* in
- the *Contents* tab of the left frame. The frame will expand to
- show help topics (currently, in an apparently random and somewhat unhelpful
- order) and additional, related help categories, including
- *API Reference*, *DTML Reference*, and *ZPT Reference*. These
- subcategories contain help on scripting Zope, which is explained
- further in the chapters named "Dynamic Content With
- DTML":DTML.stx, "Using Zope Page Templates":ZPT.stx, and "Advanced
- Zope Scripting":ScriptingZope.stx.
+tokens
+ A tokens property is a list of words separated by spaces.
- When you install third-party Zope components, they may also include
- their own help content. Each installed component has its own help folder.
+text
+ A text property is just like a string property, except that
+ Zope normalizes the line ending characters (different browsers use
+ different line ending conventions).
- You may search for content in the help system by clicking on the
- Search tab in the left frame, and entering one or more search
- terms. For example, to find all of the help topics that mention
- folder objects, type "folder" into the search field and click "Search".
- This will return a number of help topic links, most of
- which should pertain to the word "folder".
+selection
+ A selection property is special, in that it is used to render
+ an HTML single selection input widget.
- Logging Out
+multiple selection
+ A multiple selection property is special, in that it
+ is used to render an HTML multiple selection form input widget.
- You may choose *Logout* from the Status Frame drop-down box to
- attempt to log out of Zope. Doing so will cause your browser to
- "pop up" an authentication dialog. Due to the way most web
- browsers work, you may actually need to click on the
- "OK" button with an *incorrect* user name and password in
- the authentication dialog in order to effectively log out of the
- ZMI. If you do not do so, you may find even
- after selecting "Logout" that you are still logged in. This is
- an intrinsic limitation of the HTTP Basic Authentication protocol,
- which Zope's stock user folder employs. Alternately, you may
- close and reopen your browser to log out of Zope.
+Properties are very useful tools for tagging your Zope objects with bits of
+metadata. Properties are supported by most Zope objects and are often
+referenced by "dynamic" Zope objects, such as "scripts" and "methods"
+(which we have not yet discussed) for purposes of data display.
+
+Using the Help System
+---------------------
+
+Zope has a built-in help system: every management screen has a help button
+in its upper right-hand corner. This button launches another browser
+window that exposes the Zope Help System.
+
+To see the help system, go to the root folder and click the *Help* link in
+upper right-hand corner of the Workspace frame.
+
+.. figure:: ../Figures/2-7.png
+
+ The Help System
+
+The help system has an organization similar to the two primary panes of the
+Zope management interface: it has one frame for navigation, and one frame
+for displaying the contents of the help system related to the current
+management screen.
+
+Browsing and Searching Help
+---------------------------
+
+Normally you would use the help system to get help on a specific topic.
+However, if you are curious, you can browse through its content.
+
+The help system lets you browse all of the help topics in the *Contents*
+tab of the left-hand help frame, in which you can expand and collapse help
+topics. To view a help topic in the right frame, click on its name in the
+left frame. By default, no topics are expanded.
+
+Most help pertaining to Zope itself is located in the *Zope Help* folder.
+Click on the "plus" symbol next to the words *Zope Help* in the *Contents*
+tab of the left frame. The frame will expand to show help topics
+(currently, in an apparently random and somewhat unhelpful order) and
+additional, related help categories, including *API Reference*, *DTML
+Reference*, and *ZPT Reference*. These subcategories contain help on
+scripting Zope, which is explained further in the chapters named "Dynamic
+Content With DTML":DTML.stx, "Using Zope Page Templates":ZPT.stx, and
+"Advanced Zope Scripting":ScriptingZope.stx.
+
+When you install third-party Zope components, they may also include their
+own help content. Each installed component has its own help folder.
+
+You may search for content in the help system by clicking on the Search tab
+in the left frame, and entering one or more search terms. For example, to
+find all of the help topics that mention folder objects, type "folder" into
+the search field and click "Search". This will return a number of help
+topic links, most of which should pertain to the word "folder".
+
+Logging Out
+-----------
+
+You may choose *Logout* from the Status Frame drop-down box to attempt to
+log out of Zope. Doing so will cause your browser to "pop up" an
+authentication dialog. Due to the way most web browsers work, you may
+actually need to click on the "OK" button with an *incorrect* user name and
+password in the authentication dialog in order to effectively log out of
+the ZMI. If you do not do so, you may find even after selecting "Logout"
+that you are still logged in. This is an intrinsic limitation of the HTTP
+Basic Authentication protocol, which Zope's stock user folder employs.
+Alternately, you may close and reopen your browser to log out of Zope.
Modified: zope2book/trunk/source/index.rst
===================================================================
--- zope2book/trunk/source/index.rst 2009-02-10 18:18:09 UTC (rev 96403)
+++ zope2book/trunk/source/index.rst 2009-02-10 18:22:31 UTC (rev 96404)
@@ -16,6 +16,7 @@
ZopeArchitecture.rst
InstallingZope.rst
ObjectOrientation.rst
+ UsingZope.rst
Contributions.rst
AppendixA.rst
More information about the Checkins
mailing list