[Zope3-checkins] CVS: Zope3/src/zope/app/browser - absoluteurl.py:1.11 auth.zcml:1.3 configure.zcml:1.21 introspector.pt:1.9 introspector.py:1.7 introspector.zcml:1.6 login.pt:1.2 login_failed.pt:1.2 logout.pt:1.2 managementviewselector.py:1.4 marker.pt:1.3 menus.zcml:1.10 onlinehelp.py:1.13 onlinehelp.zcml:1.8 onlinehelptopic.pt:1.3 redirect.pt:1.2 traversal.zcml:1.8 undo.py:1.8 undo.zcml:1.4 undo_log.pt:1.8

Stephan Richter srichter at cosmos.phy.tufts.edu
Wed Aug 6 11:42:27 EDT 2003


Update of /cvs-repository/Zope3/src/zope/app/browser
In directory cvs.zope.org:/tmp/cvs-serv17028/app/browser

Modified Files:
	absoluteurl.py auth.zcml configure.zcml introspector.pt 
	introspector.py introspector.zcml login.pt login_failed.pt 
	logout.pt managementviewselector.py marker.pt menus.zcml 
	onlinehelp.py onlinehelp.zcml onlinehelptopic.pt redirect.pt 
	traversal.zcml undo.py undo.zcml undo_log.pt 
Log Message:
Internationalized a whole bunch templates and screens. I also took the 
oppurtunity to clean some old code up. 

I noticed that particularly the basic Content Objects are in bad shape.

There is still a lot left to do!


=== Zope3/src/zope/app/browser/absoluteurl.py 1.10 => 1.11 ===
--- Zope3/src/zope/app/browser/absoluteurl.py:1.10	Thu Jun 12 05:29:27 2003
+++ Zope3/src/zope/app/browser/absoluteurl.py	Wed Aug  6 10:41:11 2003
@@ -11,9 +11,8 @@
 # FOR A PARTICULAR PURPOSE
 #
 ##############################################################################
-"""
+"""Absolute URL View components
 
-Revision information:
 $Id$
 """
 
@@ -21,7 +20,9 @@
 from zope.publisher.browser import BrowserView
 from zope.proxy import sameProxiedObjects
 
-_insufficientContext = ("There isn't enough context to get URL information. "
+from zope.app.i18n import ZopeMessageIDFactory as _
+
+_insufficientContext = _("There isn't enough context to get URL information. "
                        "This is probably due to a bug in setting up context "
                        "wrappers.")
 


=== Zope3/src/zope/app/browser/auth.zcml 1.2 => 1.3 ===
--- Zope3/src/zope/app/browser/auth.zcml:1.2	Sun Aug  3 13:48:37 2003
+++ Zope3/src/zope/app/browser/auth.zcml	Wed Aug  6 10:41:11 2003
@@ -1,24 +1,19 @@
-<configure 
-    xmlns:browser="http://namespaces.zope.org/browser"
-    i18n_domain='zope'
-    >
+<configure xmlns="http://namespaces.zope.org/browser">
 
-<browser:page 
-    name="login.html"
-    for="*"
-    class=".auth.HTTPAuthenticationLogin"
-    attribute="login"
-    permission="zope.Public"
-    allowed_interface="zope.app.interfaces.publisher.http.ILogin"
-    />
-
-<browser:page 
-    name="logout.html"
-    for="*"
-    class=".auth.HTTPAuthenticationLogout"
-    attribute="logout"
-    permission="zope.Public"
-    allowed_interface="zope.app.interfaces.publisher.http.ILogout"
-    />
+  <page 
+      name="login.html"
+      for="*"
+      class=".auth.HTTPAuthenticationLogin"
+      attribute="login"
+      permission="zope.Public"
+      allowed_interface="zope.app.interfaces.publisher.http.ILogin" />
+  
+  <page 
+      name="logout.html"
+      for="*"
+      class=".auth.HTTPAuthenticationLogout"
+      attribute="logout"
+      permission="zope.Public"
+      allowed_interface="zope.app.interfaces.publisher.http.ILogout" />
 
 </configure>


=== Zope3/src/zope/app/browser/configure.zcml 1.20 => 1.21 ===
--- Zope3/src/zope/app/browser/configure.zcml:1.20	Sun Aug  3 13:48:37 2003
+++ Zope3/src/zope/app/browser/configure.zcml	Wed Aug  6 10:41:11 2003
@@ -1,28 +1,28 @@
 <configure xmlns="http://namespaces.zope.org/browser">
 
-<defaultView name="index.html" />
-
-<include file="menus.zcml" />
-<include package=".applicationcontrol" />
-<include package=".cache" />
-<include package=".component" />
-<include package=".container" />
-<include package=".content" />
-<include package=".dublincore" />
-<include package=".form" />
-<include package=".security" />
-<include package=".services" />
-<include package=".skins" />
-<include package=".index" />
-<include package=".rdb" />
-<include package=".workflow" />
-<include package=".catalog" />
-<include file="onlinehelp.zcml" />
-<include file="introspector.zcml" />
-<include file="traversal.zcml" />
-<include file="undo.zcml" />
-<include file="auth.zcml" />
-
-<include package=".exception" />
+  <defaultView name="index.html" />
+  
+  <include file="menus.zcml" />
+  <include package=".applicationcontrol" />
+  <include package=".cache" />
+  <include package=".component" />
+  <include package=".container" />
+  <include package=".content" />
+  <include package=".dublincore" />
+  <include package=".form" />
+  <include package=".security" />
+  <include package=".services" />
+  <include package=".skins" />
+  <include package=".index" />
+  <include package=".rdb" />
+  <include package=".workflow" />
+  <include package=".catalog" />
+  <include file="onlinehelp.zcml" />
+  <include file="introspector.zcml" />
+  <include file="traversal.zcml" />
+  <include file="undo.zcml" />
+  <include file="auth.zcml" />
+  
+  <include package=".exception" />
 
 </configure>


=== Zope3/src/zope/app/browser/introspector.pt 1.8 => 1.9 ===
--- Zope3/src/zope/app/browser/introspector.pt:1.8	Sat Jul  5 09:41:55 2003
+++ Zope3/src/zope/app/browser/introspector.pt	Wed Aug  6 10:41:11 2003
@@ -1,181 +1,179 @@
 <html metal:use-macro="views/standard_macros/page">
 <head>
 
-<style type="text/css" metal:fill-slot="style_slot">
-.preclass {
-    color : #000066;
-    font-family : monospace;
-    white-space : pre;
+  <style type="text/css" metal:fill-slot="style_slot">
+    .preclass {
+      color : #000066;
+      font-family : monospace;
+      white-space : pre;
     }
-th.introspector {
-    vertical-align: top;
+    th.introspector {
+      vertical-align: top;
     }
-</style>
+  </style>
 </head>
 
 <body>
 <div metal:fill-slot="body">
-<tal:block
-    tal:define =
-       "global introspector view/getIntrospector;
-        global services view/getServicesFor">
-
-<div tal:condition="python:introspector.isInterface()">
-
-<table tal:define =
-    "global interfacedata introspector/getInterfaceDetails">
-    <tr>
-        <th colspan="2">Interface Browser</th>
-    </tr>
-    <tr>
-        <th class="introspector">Interface:</th>
-        <td tal:content="python:interfacedata[0]">Interface</td>
-    </tr>
-    <tr>
-        <th class="introspector">Bases:</th>
-        <td>
+  <tal:block
+      tal:define="global introspector view/getIntrospector;
+                  global services view/getServicesFor">
+
+    <div tal:condition="python:introspector.isInterface()">
+
+      <table tal:define="global interfacedata introspector/getInterfaceDetails">
+        <tr>
+          <th colspan="2" i18n:translate="">Interface Browser</th>
+        </tr>
+        <tr>
+          <th class="introspector" i18n:translate="">Interface:</th>
+          <td tal:content="python:interfacedata[0]">Interface</td>
+        </tr>
+        <tr>
+          <th class="introspector" i18n:translate="">Bases:</th>
+          <td>
             <div tal:repeat="interface python:interfacedata[1]">
-                <a href=""
-                    tal:attributes="href
-                        string: ++module++${repeat/interface/item}"
-                    tal:content="repeat/interface/item">Interface</a>
-            </div>
-        </td>
-    </tr>
-    <tr>
-        <th class="introspector">Description:</th>
-        <td>
-        <!-- the start of all of these preclass spans are carefully
-        spatially placed (in terms of whitespace), because they are
-        "pre" formatted (i.e., whitespace matters within the span) -->
-        <span class="preclass"
-                tal:content="python:interfacedata[2]">
-                Description</span>
-        </td>
-    </tr>
-    <tr>
-        <th class="introspector">Attributes:</th>
-        <td>
+              <a href=""
+                 tal:attributes="href
+                                 string: ++module++${repeat/interface/item}"
+                 tal:content="repeat/interface/item">Interface</a>
+            </div>
+          </td>
+        </tr>
+        <tr>
+          <th class="introspector" i18n:translate="">Description:</th>
+          <td>
+            <!-- the start of all of these preclass spans are carefully
+            spatially placed (in terms of whitespace), because they are
+            "pre" formatted (i.e., whitespace matters within the span) -->
+            <span class="preclass"
+                  tal:content="python:interfacedata[2]">
+                  Description</span>
+          </td>
+        </tr>
+        <tr>
+          <th class="introspector" i18n:translate="">Attributes:</th>
+          <td>
             <div tal:repeat="attributes python:interfacedata[4]">
-                <tal:block tal:define="details repeat/attributes/item">
-                    <strong tal:content="python:details[0]">
-                        Atttribute Name</strong>
-                    <div class="preclass">
-        <span
-                        tal:content="python:details[1]">
-                        Attribute Description</span></div>
-                </tal:block>
-            </div>
-        </td>
-    </tr>
-    <tr>
-        <th class="introspector">Methods:</th>
-        <td>
+              <tal:block tal:define="details repeat/attributes/item">
+                <strong tal:content="python:details[0]">
+                  Atttribute Name</strong>
+                <div class="preclass" tal:content="python:details[1]">
+                  Attribute Description
+                </div>
+              </tal:block>
+            </div>
+          </td>
+        </tr>
+        <tr>
+          <th class="introspector" i18n:translate="">Methods:</th>
+          <td>
             <div tal:repeat="methods python:interfacedata[3]">
-                <tal:block tal:define="details repeat/methods/item">
-                    <strong tal:content="python:details[0]">
-                        Method Name</strong>
-                    <strong tal:content="python:details[1]">
-                        Signature</strong>
-                    <div class="preclass">
-        <span
-                        tal:content="python:details[2]">
-                        Method Description</span></div>
-                </tal:block>
-            </div>
-        </td>
-    </tr>
-    <!-- this section is currently not available
-    <tr>
-        <th class="introspector">Services:</th>
-        <td>
+              <tal:block tal:define="details repeat/methods/item">
+                <strong tal:content="python:details[0]">
+                  Method Name</strong>
+                <strong tal:content="python:details[1]">
+                   Signature</strong>
+                <div class="preclass" tal:content="python:details[2]">
+                   Method Description
+                </div>
+              </tal:block>
+            </div>
+          </td>
+        </tr>
+        
+        <!-- this section is currently not available
+        <tr>
+          <th class="introspector" i18n:translate="">Services:</th>
+          <td>
             <div tal:repeat="servicedic services">
-                <span tal:define="dic repeat/servicedic/item">
-                    <a tal:content="python:dic.keys()[0]"/>
-                </span>
-            </div>
-        </td>
-    </tr>
-    -->
-</table>
-</div>
-
-<div tal:condition="python:introspector.isInterface()==0">
-
-<table>
-    <tr>
-        <th colspan="2">Class Browser</th>
-    </tr>
-    <tr>
-        <th class="introspector">Class:</th>
-        <td><span tal:content="introspector/getClass">Name</span></td>
-    </tr>
-    <tr>
-        <th class="introspector">Bases:</th>
-        <td>
+              <span tal:define="dic repeat/servicedic/item">
+                <a tal:content="python:dic.keys()[0]"/>
+              </span>
+            </div>
+          </td>
+        </tr>
+        -->
+      </table>
+    </div>
+
+    <div tal:condition="python:introspector.isInterface()==0">
+    
+      <table>
+        <tr>
+          <th colspan="2" i18n:translate="">Class Browser</th>
+        </tr>
+        <tr>
+          <th class="introspector" i18n:translate="">Class:</th>
+          <td><span tal:content="introspector/getClass">Name</span></td>
+        </tr>
+        <tr>
+          <th class="introspector" i18n:translate="">Bases:</th>
+          <td>
             <div tal:repeat="base introspector/getBaseClassNames">
               <span tal:replace="repeat/base/item" />
-               <!--
+              <!--
                 <a href=""
-                    tal:attributes="href
-                        string: ++module++${repeat/base/item}"
-                    tal:content="repeat/base/item">Base</a>
-                -->
-            </div>
-        </td>
-    </tr>
-    <tr>
-        <th class="introspector">Module:</th>
-        <td><span tal:content="introspector/getModule">Module</span></td>
-    </tr>
-    <tr>
-        <th>Description:</th>
-        <td>
-        <span class="preclass"
-                tal:content="introspector/getDocString">
-                Description</span>
-        </td>
-    </tr>
-    <tr>
-        <th class="introspector">Interfaces from Class:</th>
-        <td>
+                   tal:attributes="href string: ++module++${repeat/base/item}"
+                   tal:content="repeat/base/item">Base</a>
+               -->
+            </div>
+          </td>
+        </tr>
+        <tr>
+          <th class="introspector" i18n:translate="">Module:</th>
+          <td><span tal:content="introspector/getModule">Module</span></td>
+        </tr>
+        <tr>
+          <th i18n:translate="">Description:</th>
+          <td>
+            <span class="preclass"
+                    tal:content="introspector/getDocString">
+                    Description</span>
+          </td>
+        </tr>
+        <tr>
+          <th class="introspector" i18n:translate="">Interfaces from Class:</th>
+          <td>
             <div tal:repeat="interface introspector/getInterfaceNames">
               <div tal:define="url python: view.getInterfaceURL(interface)">
-                  <a href=""
-                     tal:attributes="href url"
-                     tal:content="interface"
-                     tal:condition="url">Interface</a>
-                  <span tal:condition="python: not url"
+                <a href=""
+                    tal:attributes="href url"
+                    tal:content="interface"
+                    tal:condition="url">Interface</a>
+                  <span tal:condition="python: not url" 
                         tal:content="interface" />
-               </div>
+              </div>
             </div>
-        </td>
-    </tr>
-    <tr>
-        <th class="introspector">Interfaces from Object:</th>
-        <td>
+          </td>
+        </tr>
+        <tr>
+          <th class="introspector" 
+              i18n:translate="">Interfaces from Object:</th>
+          <td>
             <div tal:repeat="interface introspector/getDirectlyProvidedNames"
-                 tal:condition="introspector/getDirectlyProvided">
+                  tal:condition="introspector/getDirectlyProvided">
               <div tal:define="url python: view.getInterfaceURL(interface)">
-                  <a href=""
-                     tal:attributes="href url"
-                     tal:content="interface"
-                     tal:condition="url">Interface</a>
+                <a href=""
+                    tal:attributes="href url"
+                    tal:content="interface"
+                    tal:condition="url">Interface</a>
                   <span tal:condition="python: not url"
                         tal:content="interface" />
-               </div>
+              </div>
             </div>
-            <form tal:attributes="
-               action string:${request/URL/-1}/@@objectMarker.html"
-               method="POST">
-               <input type="submit" value="Modify" />
+            <form tal:attributes=" 
+                      action string:${request/URL/-1}/@@objectMarker.html"
+                  method="POST">
+              <input type="submit" value="Modify" 
+                     i18n:attributes="value modify-button"/>
             </form>
-        </td>
-    </tr>
-</table>
-</div>
+          </td>
+        </tr>
+      </table>
+    </div>
 
-</tal:block>
+  </tal:block>
 
 </div>
 </body>


=== Zope3/src/zope/app/browser/introspector.py 1.6 => 1.7 ===
--- Zope3/src/zope/app/browser/introspector.py:1.6	Wed Jul  2 11:23:01 2003
+++ Zope3/src/zope/app/browser/introspector.py	Wed Aug  6 10:41:11 2003
@@ -11,6 +11,10 @@
 # FOR A PARTICULAR PURPOSE.
 #
 ##############################################################################
+"""Introspector View class
+
+$Id$
+"""
 from zope.publisher.browser import BrowserView
 from zope.app.interfaces.introspector import IIntrospector
 from zope.component import getAdapter


=== Zope3/src/zope/app/browser/introspector.zcml 1.5 => 1.6 ===
--- Zope3/src/zope/app/browser/introspector.zcml:1.5	Sun Aug  3 13:48:37 2003
+++ Zope3/src/zope/app/browser/introspector.zcml	Wed Aug  6 10:41:11 2003
@@ -1,8 +1,4 @@
-<configure
-    xmlns='http://namespaces.zope.org/browser'
-    i18n_domain='zope'
-    >
-<!-- Introspection -->
+<configure xmlns="http://namespaces.zope.org/browser">
 
   <!--page
       name="classBrowser.html"
@@ -13,28 +9,23 @@
       title="Introspector"
       menu="zmi_views"
       /-->
+
   <pages
       for = "zope.interface.Interface"
       permission="zope.ManageServices"
       class="zope.app.browser.introspector.IntrospectorView" >
 
-      <page name="classBrowser.html"
-            title="Introspector"
-            template="introspector.pt"
-            menu="zmi_views"
-      />
+    <page name="classBrowser.html" template="introspector.pt"
+          menu="zmi_views" title="Introspector" />
+    <page name="objectMarker.html" template="marker.pt" />
 
-      <page name="objectMarker.html"
-            template="marker.pt"
-      />
-    </pages>
+  </pages>
 
   <page
       name="index.html"
       for="zope.interface.interfaces.IInterface"
       permission="zope.View"
       template="introspector.pt"
-      class="zope.app.browser.introspector.IntrospectorView"
-      />
+      class="zope.app.browser.introspector.IntrospectorView" />
 
 </configure>


=== Zope3/src/zope/app/browser/login.pt 1.1 => 1.2 ===
--- Zope3/src/zope/app/browser/login.pt:1.1	Thu Jul 31 23:21:28 2003
+++ Zope3/src/zope/app/browser/login.pt	Wed Aug  6 10:41:11 2003
@@ -2,13 +2,15 @@
   <body>
   <div metal:fill-slot="body">
   
-     <h1>Login successful!</h1>
+     <h1 i18n:translate="">Login successful!</h1>
 
-     <p style="font-size: 200%">
-       You are now logged in as <em tal:content="view/request/user/getTitle"/>.
+     <p style="font-size: 200%" i18n:translate="">
+       You are now logged in as 
+       <em tal:content="view/request/user/getTitle" 
+           i18n:name="UserTitle">Joe Smith</em>.
      </p>
 
-     <a href=".">Back to the main page.</a>
+     <a href="." i18n:translate="">Back to the main page.</a>
 
   </div>
   </body>


=== Zope3/src/zope/app/browser/login_failed.pt 1.1 => 1.2 ===
--- Zope3/src/zope/app/browser/login_failed.pt:1.1	Fri Aug  1 09:47:38 2003
+++ Zope3/src/zope/app/browser/login_failed.pt	Wed Aug  6 10:41:11 2003
@@ -2,12 +2,13 @@
   <body>
   <div metal:fill-slot="body">
   
-     <h1>Login Failed!</h1>
+     <h1 i18n:translate="">Login Failed!</h1>
 
-     <p style="font-size: 150%">
-       You cancelled the login procedure. Click        
-       <a tal:attributes=
-         "href python: view.request.get('nextURL', '.')">here</a> to return.
+     <p style="font-size: 150%" i18n:translate="">
+       You cancelled the login procedure.
+       <a tal:attributes= "href python: view.request.get('nextURL', '.')">
+         Click here to return.
+       </a>
      </p>
 
   </div>


=== Zope3/src/zope/app/browser/logout.pt 1.1 => 1.2 ===
--- Zope3/src/zope/app/browser/logout.pt:1.1	Thu Jul 31 23:21:28 2003
+++ Zope3/src/zope/app/browser/logout.pt	Wed Aug  6 10:41:11 2003
@@ -2,13 +2,13 @@
   <body>
   <div metal:fill-slot="body">
   
-     <h1>Logout successful!</h1>
+     <h1 i18n:translate="">Logout successful!</h1>
 
-     <p style="font-size: 200%">
+     <p style="font-size: 200%" i18n:translate="">
        You are now logged out.
      </p>
 
-     <a href=".">Back to the main page.</a>
+     <a href="." i18n:translate="">Back to the main page.</a>
 
   </div>
   </body>


=== Zope3/src/zope/app/browser/managementviewselector.py 1.3 => 1.4 ===
--- Zope3/src/zope/app/browser/managementviewselector.py:1.3	Fri Jun  6 17:35:15 2003
+++ Zope3/src/zope/app/browser/managementviewselector.py	Wed Aug  6 10:41:11 2003
@@ -11,10 +11,10 @@
 # FOR A PARTICULAR PURPOSE.
 #
 ##############################################################################
-"""
+"""Selecting first available and allowed management view
+
 $Id$
 """
-
 __metaclass__ = type
 
 from zope.interface import implements
@@ -23,8 +23,7 @@
 from zope.publisher.interfaces.browser import IBrowserPublisher
 
 class ManagementViewSelector(BrowserView):
-    """View that selects the first available management view
-    """
+    """View that selects the first available management view."""
 
     implements(IBrowserPublisher)
 


=== Zope3/src/zope/app/browser/marker.pt 1.2 => 1.3 ===
--- Zope3/src/zope/app/browser/marker.pt:1.2	Sat Jul  5 09:41:55 2003
+++ Zope3/src/zope/app/browser/marker.pt	Wed Aug  6 10:41:11 2003
@@ -1,65 +1,63 @@
 <html metal:use-macro="views/standard_macros/page">
 <head>
 
-<style type="text/css" metal:fill-slot="style_slot">
-.preclass {
-    color : #000066;
-    font-family : monospace;
-    white-space : pre;
-    }
-th.introspector {
-    vertical-align: top;
-    }
-</style>
+  <style type="text/css" metal:fill-slot="style_slot">
+    .preclass {
+        color : #000066;
+        font-family : monospace;
+        white-space : pre;
+        }
+    th.introspector {
+        vertical-align: top;
+        }
+  </style>
 </head>
 
 <body>
 <div metal:fill-slot="body">
-<tal:block
-    tal:define =
-       "global introspector view/getIntrospector;
-        global services view/getServicesFor;
-        global status view/update">
-
-
-<form action="" tal:attributes="action request/URL" method="POST">
-
-<table>
-    <tr>
-        <th colspan="2">Class Browser</th>
-    </tr>
-    <tr>
-        <th class="introspector">Class:</th>
+  <tal:block
+      tal:define ="global introspector view/getIntrospector;
+                   global services view/getServicesFor;
+                   global status view/update">
+
+  <form action="" tal:attributes="action request/URL" method="POST">
+
+    <table>
+      <tr>
+        <th colspan="2" i18n:translate="">Class Browser</th>
+      </tr>
+      <tr>
+        <th class="introspector" i18n:translate="">Class:</th>
         <td><span tal:content="introspector/getClass">Name</span></td>
-    </tr>
-    <tr>
-        <th class="introspector">Bases:</th>
-        <td>
-            <div tal:repeat="base introspector/getBaseClassNames">
-              <span tal:replace="repeat/base/item" />
-               <!--
-                <a href=""
-                    tal:attributes="href
-                        string: ++module++${repeat/base/item}"
-                    tal:content="repeat/base/item">Base</a>
-                -->
-            </div>
+      </tr>
+      <tr>
+        <th class="introspector" i18n:translate="">Bases:</th>
+        <td>
+          <div tal:repeat="base introspector/getBaseClassNames">
+            <span tal:replace="repeat/base/item" />
+              <!--
+              <a href=""
+                  tal:attributes="href
+                      string: ++module++${repeat/base/item}"
+                  tal:content="repeat/base/item">Base</a>
+               -->
+          </div>
         </td>
-    </tr>
-    <tr>
-        <th class="introspector">Module:</th>
+      </tr>
+      <tr>
+        <th class="introspector" i18n:translate="">Module:</th>
         <td><span tal:content="introspector/getModule">Module</span></td>
-    </tr>
-    <tr>
-        <th>Description:</th>
-        <td>
-        <span class="preclass"
-                tal:content="introspector/getDocString">
-                Description</span>
-        </td>
-    </tr>
-    <tr>
-        <th class="introspector">Interfaces from Class:</th>
+      </tr>
+      <tr>
+        <th i18n:translate="">Description:</th>
+        <td>
+          <span class="preclass"
+              tal:content="introspector/getDocString">
+            Description</span>
+        </td>
+      </tr>
+      <tr>
+        <th class="introspector" i18n:translate="">Interfaces from Class:</th>
         <td>
           <div tal:repeat="interface introspector/getInterfaceNames">
             <div tal:define="url python: view.getInterfaceURL(interface)">
@@ -72,53 +70,57 @@
             </div>
           </div>
         </td>
-    </tr>
-    <tr tal:condition="introspector/getDirectlyProvided">
-        <th class="introspector">Interfaces from Object:</th>
-        <td>
-            <div tal:repeat="interface introspector/getDirectlyProvidedNames">
-              <div tal:define="url python: view.getInterfaceURL(interface)">
-                  <a href=""
-                     tal:attributes="href url"
-                     tal:content="interface"
-                     tal:condition="url">Interface</a>
-                  <span tal:condition="python: not url"
-                        tal:content="interface" />
-               </div>
-            </div>
-        </td>
-    </tr>
-
-    <tr tal:condition="introspector/getDirectlyProvided">
-        <th class="introspector">Remove Interfaces:</th>
+      </tr>
+      <tr tal:condition="introspector/getDirectlyProvided">
+        <th class="introspector" i18n:translate="">Interfaces from Object:</th>
         <td>
-            <div tal:repeat="interface introspector/getDirectlyProvidedNames">
-              <label><input type="checkbox"
-                            tal:attributes="name string:rem_${interface}"/>
-                     <span tal:replace="interface" />
-              </label>
+          <div tal:repeat="interface introspector/getDirectlyProvidedNames">
+            <div tal:define="url python: view.getInterfaceURL(interface)">
+              <a href=""
+                  tal:attributes="href url"
+                  tal:content="interface"
+                  tal:condition="url">Interface</a>
+                <span tal:condition="python: not url"
+                    tal:content="interface" />
             </div>
-            <input type="submit" name="REMOVE" value="Remove" />
+          </div>
         </td>
-    </tr>
-
-    <tr tal:condition="introspector/getMarkerInterfaceNames">
-        <th class="introspector">Add Interfaces:</th>
-        <td>
-            <div tal:repeat="interface introspector/getMarkerInterfaceNames">
-              <label><input type="checkbox"
-                            tal:attributes="name string:add_${interface}"/>
-                     <span tal:replace="interface" />
-              </label>
-            </div>
-            <input type="submit" name="ADD" value="Add" />
+      </tr>
+    
+      <tr tal:condition="introspector/getDirectlyProvided">
+        <th class="introspector" i18n:translate="">Remove Interfaces:</th>
+        <td>
+          <div tal:repeat="interface introspector/getDirectlyProvidedNames">
+            <label>
+              <input type="checkbox"
+                  tal:attributes="name string:rem_${interface}"/>
+              <span tal:replace="interface" />
+            </label>
+          </div>
+          <input type="submit" name="REMOVE" value="Remove" 
+              i18n:attributes="value remove-button"/>
         </td>
-    </tr>
-
-</table>
-</form>
+      </tr>
+    
+      <tr tal:condition="introspector/getMarkerInterfaceNames">
+        <th class="introspector" i18n:translate="">Add Interfaces:</th>
+        <td>
+          <div tal:repeat="interface introspector/getMarkerInterfaceNames">
+            <label>
+              <input type="checkbox"
+                  tal:attributes="name string:add_${interface}"/>
+              <span tal:replace="interface" />
+            </label>
+          </div>
+          <input type="submit" name="ADD" value="Add" 
+              i18n:attributes="value add-button"/>
+        </td>
+      </tr>
+    
+    </table>
+  </form>
 
-</tal:block>
+  </tal:block>
 
 </div>
 </body>


=== Zope3/src/zope/app/browser/menus.zcml 1.9 => 1.10 ===
--- Zope3/src/zope/app/browser/menus.zcml:1.9	Sun Aug  3 13:48:37 2003
+++ Zope3/src/zope/app/browser/menus.zcml	Wed Aug  6 10:41:11 2003
@@ -1,84 +1,78 @@
-<configure
-    xmlns="http://namespaces.zope.org/browser"
-    i18n_domain="zope"
-    >
-
-    <menu id="zmi_views" 
-          title="Menu for displaying alternate representations of an object"
-          usage="objectview"
-          />
-
-    <menu id="zmi_actions" 
-          title="Menu for displaying actions to be performed"
-          usage="activitydialog"
-          />
-
-   <menu id="help_actions" 
-          title="Menu for displaying help actions to be performed with popup"
-          usage="activitydialog"
-          />
-
-   <menu id="add_content"
-         title="Menu of objects to be added to content folders"
-         usage="addingdialog"
-         />
-
-   <menu id="add_component"
-         title="Menu of objects to be added to service manager packages"
-         usage="addingdialog"
-         />
-
-   <menu id="add_service"
-         title="Menu of services to be added"
-         usage="addingdialog"
-         />
-
-   <menu id="add_utility"
-         title="Menu of utilities to be added"
-         usage="addingdialog"
-         />
-
-   <menu id="add_connection"
-         title="Menu of database connections to be added"
-         usage="addingdialog"
-         />
-
-   <menu id="add_cache"
-         title="Menu of database connections to be added"
-         usage="addingdialog"
-         />
-
-   <menu id="add_registration"
-         title="Menu of addable configuration objects"
-         usage="addingdialog"
-         />
+<configure xmlns="http://namespaces.zope.org/browser">
+
+  <menu 
+      id="zmi_views" 
+      title="Menu for displaying alternate representations of an object"
+      usage="objectview" />
+
+  <menu 
+      id="zmi_actions" 
+      title="Menu for displaying actions to be performed"
+      usage="activitydialog" />
+
+  <menu 
+      id="help_actions" 
+      title="Menu for displaying help actions to be performed with popup"
+      usage="activitydialog" />
+
+  <menu 
+      id="add_content"
+      title="Menu of objects to be added to content folders"
+      usage="addingdialog" />
+
+  <menu 
+      id="add_component"
+      title="Menu of objects to be added to service manager packages"
+      usage="addingdialog" />
+
+  <menu 
+      id="add_service"
+      title="Menu of services to be added"
+      usage="addingdialog" />
+
+  <menu 
+      id="add_utility"
+      title="Menu of utilities to be added"
+      usage="addingdialog" />
+
+  <menu 
+      id="add_connection"
+      title="Menu of database connections to be added"
+      usage="addingdialog" />
+
+  <menu 
+      id="add_cache"
+      title="Menu of database connections to be added"
+      usage="addingdialog" />
+
+  <menu 
+      id="add_registration"
+      title="Menu of addable configuration objects"
+      usage="addingdialog" />
 
   <!-- Management view selector -->
   <!-- Get first accessable item from zmi_views menu -->
   <page
-     for="*"
-     name="SelectedManagementView.html"
-     permission="zope.Public"
-     class=".managementviewselector.ManagementViewSelector" 
-     allowed_interface="zope.publisher.interfaces.browser.IBrowserPublisher"
-     />
+      for="*"
+      name="SelectedManagementView.html"
+      permission="zope.Public"
+      class=".managementviewselector.ManagementViewSelector" 
+      allowed_interface="zope.publisher.interfaces.browser.IBrowserPublisher" />
 
   <!-- Make manage an alias for same -->
   <page
-     for="*"
-     name="manage"
-     permission="zope.ManageContent"
-     class=".managementviewselector.ManagementViewSelector" 
-     allowed_interface="zope.publisher.interfaces.browser.IBrowserPublisher"
-     />
+      for="*"
+      name="manage"
+      permission="zope.ManageContent"
+      class=".managementviewselector.ManagementViewSelector" 
+      allowed_interface="zope.publisher.interfaces.browser.IBrowserPublisher" />
 
   <!-- Menu access -->
   <page
-     for="*"
-     name="view_get_menu"
-     permission="zope.Public"
-     class=".menu.MenuAccessView" 
-     allowed_interface="zope.app.interfaces.browser.menu.IMenuAccessView"
-     />
+      for="*"
+      name="view_get_menu"
+      permission="zope.Public"
+      class=".menu.MenuAccessView" 
+      allowed_interface="zope.app.interfaces.browser.menu.IMenuAccessView" />
 
 </configure>


=== Zope3/src/zope/app/browser/onlinehelp.py 1.12 => 1.13 ===
--- Zope3/src/zope/app/browser/onlinehelp.py:1.12	Tue Jul 29 21:06:05 2003
+++ Zope3/src/zope/app/browser/onlinehelp.py	Wed Aug  6 10:41:11 2003
@@ -28,6 +28,7 @@
 from zope.proxy import removeAllProxies
 
 class OnlineHelpTopicView(BrowserView):
+    """View for one particular help topic."""
 
     def _makeSubTree(self, topic):
         html = '<ul>\n'


=== Zope3/src/zope/app/browser/onlinehelp.zcml 1.7 => 1.8 ===
--- Zope3/src/zope/app/browser/onlinehelp.zcml:1.7	Sun Aug  3 13:48:37 2003
+++ Zope3/src/zope/app/browser/onlinehelp.zcml	Wed Aug  6 10:41:11 2003
@@ -1,17 +1,11 @@
-<configure
-    xmlns="http://namespaces.zope.org/browser"
-    i18n_domain='zope'
-    >
-
-<!-- OnlineHelp -->
+<configure xmlns="http://namespaces.zope.org/browser">
 
   <page
       name="find_help_topics"
       for="*"
       class=".onlinehelp.FindRelevantHelpTopics"
       permission="zope.Public"
-      allowed_attributes="__call__" 
-      />
+      allowed_attributes="__call__" />
 
   <pages
       for="zope.app.interfaces.onlinehelp.IOnlineHelpTopic"
@@ -23,14 +17,11 @@
 
   </pages>
 
-
   <menuItem
       for="*"
       filter="python:request.getURL().find('++help++')==-1"
       menu="help_actions"
       title="Help"
-      action="++help++/++skin++Onlinehelp/@@index.html"
-      /> 
+      action="++help++/++skin++Onlinehelp/@@index.html" /> 
  
-
 </configure>


=== Zope3/src/zope/app/browser/onlinehelptopic.pt 1.2 => 1.3 ===
--- Zope3/src/zope/app/browser/onlinehelptopic.pt:1.2	Tue Jul  1 21:27:58 2003
+++ Zope3/src/zope/app/browser/onlinehelptopic.pt	Wed Aug  6 10:41:11 2003
@@ -1,13 +1,16 @@
 <html metal:use-macro="views/standard_macros/page">
 <head>
-  <title metal:fill-slot="title" tal:content="context/getTitle">Title</title>
+  <title metal:fill-slot="title" tal:content="context/getTitle"
+      i18n:translate="">Title</title>
 </head>
 <body>
 <div metal:fill-slot="body">
 
-<h1 tal:content="context/getTitle">Title of Help Topic</h1>
+  <h1 tal:content="context/getTitle"
+      i18n:translate="">Title of Help Topic</h1>
 
-<p tal:content="structure context/getContent">Content of Online Help.</p>
+  <p tal:content="structure context/getContent"
+      i18n:translate="">Content of Online Help.</p>
 
 </div>
 


=== Zope3/src/zope/app/browser/redirect.pt 1.1 => 1.2 ===
--- Zope3/src/zope/app/browser/redirect.pt:1.1	Fri Aug  1 09:47:38 2003
+++ Zope3/src/zope/app/browser/redirect.pt	Wed Aug  6 10:41:11 2003
@@ -8,11 +8,12 @@
   <body>
   <div metal:fill-slot="body">
   
-     <h1>You are being redirected!</h1>
+     <h1 i18n:translate="">You are being redirected!</h1>
 
      <p style="font-size: 150%">
-       If you you see this screen, click 
-       <a tal:attributes="href view/request/nextURL">here</a>.
+       <a tal:attributes="href view/request/nextURL" i18n:translate="">
+         If you you see this screen for more than 5 seconds, click here.
+       </a>
      </p>
 
   </div>


=== Zope3/src/zope/app/browser/traversal.zcml 1.7 => 1.8 ===
--- Zope3/src/zope/app/browser/traversal.zcml:1.7	Sun Aug  3 13:48:37 2003
+++ Zope3/src/zope/app/browser/traversal.zcml	Wed Aug  6 10:41:11 2003
@@ -1,69 +1,67 @@
 <configure
-    xmlns='http://namespaces.zope.org/zope'
-    xmlns:browser='http://namespaces.zope.org/browser'
-    i18n_domain='zope'
-    >
+    xmlns="http://namespaces.zope.org/zope"
+    xmlns:browser="http://namespaces.zope.org/browser">
 
-<browser:page 
-    name="_traverse" 
-    for="zope.interface.Interface"
-    class="zope.app.publication.traversers.SimpleComponentTraverser" 
-    permission="zope.Public"
-    />
-
-<browser:view 
-    name="_traverse" 
-    for="zope.app.interfaces.content.file.IFileContent"
-    class="zope.app.publication.traversers.FileContentTraverser" 
-    permission="zope.Public"
-    />
-
-<browser:page
-    name="_traverse" 
-    for="zope.app.interfaces.container.IItemContainer"
-    class="zope.app.container.traversal.ItemTraverser" 
-    permission="zope.Public"
-    />
-
-<browser:page
-    name="_traverse" 
-    for="zope.app.interfaces.container.ISimpleReadContainer"
-    class="zope.app.container.traversal.ContainerTraverser" 
-    permission="zope.Public"
-    />
-
-<view
-    for="*"
-    name="absolute_url"
-    factory=".absoluteurl.AbsoluteURL"
-    type="zope.publisher.interfaces.http.IHTTPPresentation"
-    permission="zope.Public"
-    allowed_interface="zope.app.interfaces.browser.absoluteurl.IAbsoluteURL" 
-    />
-
-<view
-    for="zope.app.interfaces.traversing.IContainmentRoot"
-    name="absolute_url"
-    factory=".absoluteurl.SiteAbsoluteURL"
-    type="zope.publisher.interfaces.http.IHTTPPresentation"
-    permission="zope.Public"
-    allowed_interface="zope.app.interfaces.browser.absoluteurl.IAbsoluteURL" 
-    />
-
-<browser:page
-    for="*"
-    name="absolute_url"
-    class=".absoluteurl.AbsoluteURL"
-    permission="zope.Public"
-    allowed_interface="zope.app.interfaces.browser.absoluteurl.IAbsoluteURL" 
-    />
-
-<browser:page
-    for="zope.app.interfaces.traversing.IContainmentRoot"
-    name="absolute_url"
-    class=".absoluteurl.SiteAbsoluteURL"
-    permission="zope.Public"
-    allowed_interface="zope.app.interfaces.browser.absoluteurl.IAbsoluteURL" 
-    />
+  <browser:page 
+      name="_traverse" 
+      for="zope.interface.Interface"
+      class="zope.app.publication.traversers.SimpleComponentTraverser" 
+      permission="zope.Public"
+      />
+  
+  <browser:view 
+      name="_traverse" 
+      for="zope.app.interfaces.content.file.IFileContent"
+      class="zope.app.publication.traversers.FileContentTraverser" 
+      permission="zope.Public"
+      />
+  
+  <browser:page
+      name="_traverse" 
+      for="zope.app.interfaces.container.IItemContainer"
+      class="zope.app.container.traversal.ItemTraverser" 
+      permission="zope.Public"
+      />
+  
+  <browser:page
+      name="_traverse" 
+      for="zope.app.interfaces.container.ISimpleReadContainer"
+      class="zope.app.container.traversal.ContainerTraverser" 
+      permission="zope.Public"
+      />
+  
+  <view
+      for="*"
+      name="absolute_url"
+      factory=".absoluteurl.AbsoluteURL"
+      type="zope.publisher.interfaces.http.IHTTPPresentation"
+      permission="zope.Public"
+      allowed_interface="zope.app.interfaces.browser.absoluteurl.IAbsoluteURL" 
+      />
+  
+  <view
+      for="zope.app.interfaces.traversing.IContainmentRoot"
+      name="absolute_url"
+      factory=".absoluteurl.SiteAbsoluteURL"
+      type="zope.publisher.interfaces.http.IHTTPPresentation"
+      permission="zope.Public"
+      allowed_interface="zope.app.interfaces.browser.absoluteurl.IAbsoluteURL" 
+      />
+  
+  <browser:page
+      for="*"
+      name="absolute_url"
+      class=".absoluteurl.AbsoluteURL"
+      permission="zope.Public"
+      allowed_interface="zope.app.interfaces.browser.absoluteurl.IAbsoluteURL" 
+      />
+  
+  <browser:page
+      for="zope.app.interfaces.traversing.IContainmentRoot"
+      name="absolute_url"
+      class=".absoluteurl.SiteAbsoluteURL"
+      permission="zope.Public"
+      allowed_interface="zope.app.interfaces.browser.absoluteurl.IAbsoluteURL" 
+      />
 
 </configure>


=== Zope3/src/zope/app/browser/undo.py 1.7 => 1.8 ===
--- Zope3/src/zope/app/browser/undo.py:1.7	Thu Jul 10 08:42:12 2003
+++ Zope3/src/zope/app/browser/undo.py	Wed Aug  6 10:41:11 2003
@@ -35,20 +35,15 @@
 
 
 class ZODBUndoManager:
-    """Implement the basic undo management api for a single ZODB database.
-    """
+    """Implement the basic undo management api for a single ZODB database."""
 
     implements(IUndoManager)
 
     def __init__(self, db):
         self.__db = db
 
-    ############################################################
-    # Implementation methods for interface
-    # zope.app.interfaces.undo.IUndoManager.
-
     def getUndoInfo(self, first=0, last=-20, user_name=None):
-        '''See interface IUndoManager'''
+        '''See zope.app.interfaces.undo.IUndoManager'''
 
         # Entries are a list of dictionaries, containing
         # id          -> internal id for zodb
@@ -77,32 +72,26 @@
         return entries
 
 
-
     def undoTransaction(self, id_list):
-        '''See interface IUndoManager'''
+        '''See zope.app.interfaces.undo.IUndoManager'''
 
         for id in id_list:
             self.__db.undo(id)
 
-    #
-    ############################################################
-
 
-class Undo(BrowserView):
+class Undo:
     """Undo View"""
 
-    index = ViewPageTemplateFile('undo_log.pt')
-
-    def action (self, id_list, REQUEST=None):
-        """
-        processes undo form and redirects to form again (if possible)
-        """
+    def action (self, id_list):
+        """processes undo form and redirects to form again (if possible)"""
         utility = getUtility(self.context, IUndoManager)
         utility.undoTransaction(id_list)
-
-        if REQUEST is not None:
-            REQUEST.response.redirect('index.html')
+        self.request.response.redirect('index.html')
 
     def getUndoInfo(self, first=0, last=-20, user_name=None):
         utility = getUtility(self.context, IUndoManager)
-        return utility.getUndoInfo(first, last, user_name)
+        info = utility.getUndoInfo(first, last, user_name)
+        formatter = self.request.locale.getDateTimeFormatter('medium')
+        for entry in info:
+            entry['datetime'] = formatter.format(entry['datetime'])
+        return info


=== Zope3/src/zope/app/browser/undo.zcml 1.3 => 1.4 ===
--- Zope3/src/zope/app/browser/undo.zcml:1.3	Sun Aug  3 13:48:37 2003
+++ Zope3/src/zope/app/browser/undo.zcml	Wed Aug  6 10:41:11 2003
@@ -1,30 +1,24 @@
 <configure
     xmlns="http://namespaces.zope.org/browser"
-    xmlns:event="http://namespaces.zope.org/event"
-    i18n_domain='zope'
-    >
-
-<!-- Undo -->
+    xmlns:event="http://namespaces.zope.org/event">
 
   <pages
       for="*"
       permission="zope.ManageContent"
       class="zope.app.browser.undo.Undo" >
 
-     <page name="undoForm.html" attribute="index" />
-     <page name="undo.html" attribute="action" />
-     </pages>
+    <page name="undoForm.html" template="undo_log.pt" />
+    <page name="undo.html" attribute="action" />
+  </pages>
 
   <menuItem
       for="*"
       menu="zmi_actions"
       title="Undo"
-      action="@@undoForm.html"
-      />
+      action="@@undoForm.html" />
 
   <event:subscribe
       subscriber=".undo.undoSetup"
-      event_types="zope.app.interfaces.event.IDatabaseOpenedEvent"
-      />
+      event_types="zope.app.interfaces.event.IDatabaseOpenedEvent" />
 
 </configure>


=== Zope3/src/zope/app/browser/undo_log.pt 1.7 => 1.8 ===
--- Zope3/src/zope/app/browser/undo_log.pt:1.7	Mon Jul 28 10:57:33 2003
+++ Zope3/src/zope/app/browser/undo_log.pt	Wed Aug  6 10:41:11 2003
@@ -1,122 +1,114 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
 <html metal:use-macro="views/standard_macros/page">
 
 <head>
-<title>Undo Title</title>
-<link rel="stylesheet" type="text/css" href="/manage_page_style.css" />
+  <title i18n:translate="">Undo Title</title>
+  <link rel="stylesheet" type="text/css" href="/manage_page_style.css" />
 </head>
 
 <body>
 <div metal:fill-slot="body">
 
-<form action="@@undo.html" method="post" tal:define="first python:int(request.get('first',0)); all python:request.get('all', None)">
-
-<p class="form-help">
-This application's transactional feature allows you to easily undo changes 
-made to the application's settings or data. You can revert the application 
-to a &quot;snapshot&quot; of it's state at a previous point in time.
-</p>
-
-<p class="form-help">
-Select one or more transactions below and then click on the &quot;Undo&quot;
-button to undo those transactions.  Note that even though a transaction
-is shown below, you may not be able to undo it if later transactions
-modified objects that were modified by a selected transaction.
-</p>
-
-<span tal:condition="all">
-<p>You are <span tal:replace="request/user/getId">username</span>, looking at all transactions. <a href="?">View only your own transactions</a>.
-<span tal:omit-tag=""
-   tal:define="global undoInfo python:view.getUndoInfo(first=first)"/></p>
-</span>
-<span tal:condition="not:all">
-<p>You are <span tal:replace="request/user/getId">username</span>, looking at your own transactions.  <a href="?all=yes">View everyone's transactions</a>.
-<span tal:omit-tag=""
-    tal:define="global undoInfo python:view.getUndoInfo(first=first, user_name=request.user.getId())"/></p>
-</span>
-
-<p><a tal:attributes="href python:'?first=%s'%(first+20)">View 20 earlier transactions</a></p>
-
-<a name="t_list" />
-
-<table width="100%" cellspacing="0" cellpadding="2" border="0" >
-
-  <div tal:repeat="undoitem undoInfo">
-  <span tal:condition="repeat/undoitem/odd" ><span tal:define="global rowclass string:content odd"/> </span>
-  <span tal:condition="repeat/undoitem/even" ><span tal:define="global rowclass string:content even"/> </span>
-
-  <tr tal:attributes="class rowclass">
-    <td width="16" align="left" valign="top">
-      <input type="checkbox" name="id_list:list" value="-1" tal:attributes="value undoitem/id"/>
-    </td>
-    <td tal:attributes="class rowclass" align="left" valign="top">
-    <div class="list-item">
+  <form action="@@undo.html" method="post" 
+        tal:define="first python:int(request.get('first',0)); 
+                    all python:request.get('all', None)">
+
+    <p class="form-help" i18n:translate="">
+      This application's transactional feature allows you to easily undo
+      changes made to the application's settings or data. You can revert the
+      application to a &quot;snapshot&quot; of it's state at a previous point
+      in time.
+    </p>
+
+    <p class="form-help" i18n:translate="">
+      Select one or more transactions below and then click on the
+      &quot;Undo&quot; button to undo those transactions.  Note that even
+      though a transaction is shown below, you may not be able to undo it if
+      later transactions modified objects that were modified by a selected
+      transaction.
+    </p>
+
+    <span tal:condition="all">
+      <p i18n:translate="">
+        You are 
+        <span tal:replace="request/user/getId"
+              i18n:name="username">username</span>, 
+        looking at all transactions. <a href="?">View only your own 
+        transactions</a>.
+      </p>
+      <span tal:omit-tag=""
+          tal:define="global undoInfo python:view.getUndoInfo(first=first)"/>
+    </span>
+
+    <span tal:condition="not:all">
+      <p i18n:translate="">You are 
+        <span tal:replace="request/user/getId"
+              i18n:name="username">username</span>, 
+        looking at your own transactions.  
+        <a href="?all=yes">View everyone's transactions</a>.
+      </p>
+      <span tal:omit-tag=""
+          tal:define="global undoInfo python:view.getUndoInfo(first=first,
+                                             user_name=request.user.getId())"/>
+    </span>
+
+    <p>
+      <a tal:attributes="href python:'?first=%s'%(first+20)"
+          i18n:translate="">View 20 earlier transactions</a>
+    </p>
+
+    <a name="t_list" />
+
+    <table width="100%" cellspacing="0" cellpadding="2" border="0" >
+
+      <div tal:repeat="undoitem undoInfo">
+        <span tal:condition="repeat/undoitem/odd" >
+          <span tal:define="global rowclass string:content odd"/> 
+        </span>
+
+        <span tal:condition="repeat/undoitem/even">
+          <span tal:define="global rowclass string:content even"/> 
+        </span>
+
+        <tr tal:attributes="class rowclass">
+
+          <td width="16" align="left" valign="top">
+            <input type="checkbox" name="id_list:list" value="-1" 
+                tal:attributes="value undoitem/id"/>
+          </td>
+          <td tal:attributes="class rowclass" align="left" valign="top">
+            <div class="list-item">
      
-     <i tal:condition="not:undoitem/description">no description available</i>
-     <span tal:condition="undoitem/description" tal:omit-tag=""
-           tal:content="undoitem/description">description goes here</span>
-     <span tal:condition="undoitem/user_name" tal:omit-tag=""> by 
-         <strong tal:content="undoitem/user_name">user_name</strong>
-     </span>
-    </div>
-    </td>
-
-    <td align="right" valign="top" colspan="2" nowrap>
-    <div class="list-item" tal:content="python:undoitem['datetime'].strftime('%Y/%m/%d %H:%M:%S')">
-      blah date
-    </div>
-    </td>
-
-  </tr>
-
-
-<!--
-
-  <tr class="row-hilite">
-    <td width="16" align="left" valign="top">
-    <input type="checkbox" name="transaction_info:list" 
-     value="QTBOekEwdWl6ZmNBQUFBQUV2M0RDdw==
- 2002/03/17 00:23:17.7272 US/Eastern /test_area/chumphries/devis_internal_site/people/addDTMLMethod " />
-    </td>
-    <td align="left" valign="top">
-    <div class="list-item">
-    /test_area/chumphries/devis_internal_site/people/addDTMLMethod by <strong> chumphries</strong>
-    </div>
-    </td>
-    <td align="right" valign="top" colspan="2" nowrap>
-    <div class="list-item">
-    2002-03-17 12:23:17 AM
-    </div>
-    </td>
-  </tr>
-
-  </div>
-
-  <tr class="row-normal">
-    <td width="16" align="left" valign="top">
-    <input type="checkbox" name="transaction_info:list"
-     value="QTBOeTQzWURnOVVBQUFBQUV2M0FkUQ==
- 2002/03/16 23:51:27.6595 US/Eastern /test_area/chumphries/devis_internal_site/manage_renameObjects " />
-    </td>
-    <td align="left" valign="top">
-    <div class="list-item">
-    /test_area/chumphries/devis_internal_site/manage_renameObjects by <strong> chumphries</strong>
-    </div>
-    </td>
-    <td align="right" valign="top" colspan="2" nowrap>
-    <div class="list-item">
-    2002-03-16 11:51:27 PM
-    </div>
-    </td>
-  </tr>
-
--->
-
-
-</div>
-<tr><td><input type="submit" value="Undo" /></td></tr>
-</table>
-</form>
+              <i tal:condition="not:undoitem/description"
+                 i18n:translate="">
+                no description available
+              </i>
+              <span tal:condition="undoitem/description" tal:omit-tag=""
+                tal:content="undoitem/description">description goes here</span>
+              <span tal:condition="undoitem/user_name" tal:omit-tag=""
+                  i18n:translate=""> by 
+                <strong tal:content="undoitem/user_name"
+                        i18n:name="username">user_name</strong>
+              </span>
+            </div>
+          </td>
+
+          <td align="right" valign="top" colspan="2" nowrap>
+            <div class="list-item" tal:content="undoitem/datetime">
+              blah date
+            </div>
+          </td>
+
+        </tr>
+      </div>
+
+      <tr>
+        <td>
+          <input type="submit" value="Undo" 
+              i18n:attributes="value undo-button"/>
+        </td>
+      </tr>
+    </table>
+  </form>
 
 </div>
 </body>




More information about the Zope3-Checkins mailing list