[CMF-checkins] CVS: Products/CMFDecor/skins/zpt_generic - searchQueryString.py:1.1 actions_box.pt:1.5 content_byline.pt:1.4 discussion_reply_form.pt:1.4 discussion_reply_preview.pt:1.2 folder_add.pt:1.2 folder_contents.pt:1.6 folder_factories.pt:1.3 folder_filter_form.pt:1.2 folder_rename_form.pt:1.2 index_html.pt:1.3 join_form.pt:1.5 logged_in.pt:1.3 logged_out.pt:1.2 login_form.pt:1.2 mail_password_form.pt:1.2 mail_password_response.pt:1.2 main_template.pt:1.7 metadata_help.pt:1.2 news_box.pt:1.3 password_form.pt:1.2 personalize_form.pt:1.2 recent_news.pt:1.3 reconfig_form.pt:1.2 registered.pt:1.2 roster.pt:1.2 rssDisabled.pt:1.2 search.pt:1.6 search_form.pt:1.3 simple_metadata.pt:1.2 talkback_tree.pt:1.2

Tres Seaver tseaver@zope.com
Thu, 9 Aug 2001 10:20:03 -0400


Update of /cvs-repository/Products/CMFDecor/skins/zpt_generic
In directory cvs.zope.org:/tmp/cvs-serv10935/zpt_generic

Modified Files:
	actions_box.pt content_byline.pt discussion_reply_form.pt 
	discussion_reply_preview.pt folder_add.pt folder_contents.pt 
	folder_factories.pt folder_filter_form.pt 
	folder_rename_form.pt index_html.pt join_form.pt logged_in.pt 
	logged_out.pt login_form.pt mail_password_form.pt 
	mail_password_response.pt main_template.pt metadata_help.pt 
	news_box.pt password_form.pt personalize_form.pt 
	recent_news.pt reconfig_form.pt registered.pt roster.pt 
	rssDisabled.pt search.pt search_form.pt simple_metadata.pt 
	talkback_tree.pt 
Added Files:
	searchQueryString.py 
Log Message:


 - Remove carriage returns.

 - zpt_generic/search.pt:  enable full search, as well as default
      (remove dependency on request/SearchableText).  Uses new
      PythonScript, zpt_generic/searchQueryString.py, to build
      "Next" and "Previous" batching links.


=== Added File Products/CMFDecor/skins/zpt_generic/searchQueryString.py ===
## Script (Python) "searchQueryString.py $Revision: 1.1 $"
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=**kw
##title=Build search query string
##
#from urllib import urlencode # no security assertions :(
import string
req=context.REQUEST
kw.update( req.form )
#return urlencode( kw )
tokens=[]
for kv in kw.items():
    tokens.append( '%s=%s' % kv )
return '?' + string.join( tokens, '&' )


=== Products/CMFDecor/skins/zpt_generic/actions_box.pt 1.4 => 1.5 ===
-<div tal:define="isAnon python:here.portal_membership.isAnonymousUser();
-                  AuthClass python:isAnon and 'GuestActions' or 'MemberActions';
-				  uname python: isAnon and 'Guest' or here.portal_membership.getAuthenticatedMember().getUserName();
-				  actions python:here.portal_actions.listFilteredActionsFor(here);
-				  user_actions python:actions['user'];
-				  folder_actions python:actions['folder'];
-				  object_actions python:(actions['object'] + actions['workflow']);
-				  global_actions python:actions['global']">
-<table class="ActionBox" width="100%">
- <tbody tal:condition="object_actions">
- <tr class=""
-     tal:attributes="class AuthClass">
-  <td class="ActionTitle"
-      tal:define="getIcon python:hasattr(here, 'getIcon') and here.getIcon();
-	              icon python:getIcon or getattr(here, 'icon', '');
-				  typ python:getattr(here, 'Type', '');
-				  objID python:here.getId()">
-     <img src=""
-	      tal:condition="icon" align="left" alt="Type"
-		  tal:attributes="src python:'%s/%s' % (here.portal_url(), icon); alt typ" />
-     <span tal:replace="structure python: here.truncID(objID, size=15)">ObjectID</span>
-  </td>
- </tr>
- <tr class=""
-     tal:attributes="class AuthClass">
-  <td tal:define="review_state python:here.portal_workflow.getInfoFor(here, 'review_state', '')"> 
-    <span tal:condition="review_state">Status:  <span tal:replace="review_state">Private</span><br></span>
-    <span tal:repeat="action object_actions"><a href="" tal:attributes="href action/url" tal:content="action/name">Action</a><br></span>
-  </td>
- </tr>
-</tbody>
-<tr class=""
-     tal:attributes="class AuthClass"
-	 tal:condition="folder_actions">
-  <td> 
-    <span tal:repeat="action folder_actions"><a href="" tal:attributes="href action/url" tal:content="action/name">Action</a><br></span>
-  </td>
- </tr>
- <tr class=""
-     tal:attributes="class AuthClass"
-	 tal:condition="global_actions">
-  <td>
-   <span tal:repeat="action global_actions"><a href="" tal:attributes="href action/url" tal:content="action/name">Action</a><br></span>
-
-  </td>
- </tr>
-</table>
-</div>
-</div>
+<div metal:define-macro="actions">
+<div tal:define="isAnon python:here.portal_membership.isAnonymousUser();
+                  AuthClass python:isAnon and 'GuestActions' or 'MemberActions';
+				  uname python: isAnon and 'Guest' or here.portal_membership.getAuthenticatedMember().getUserName();
+				  actions python:here.portal_actions.listFilteredActionsFor(here);
+				  user_actions python:actions['user'];
+				  folder_actions python:actions['folder'];
+				  object_actions python:(actions['object'] + actions['workflow']);
+				  global_actions python:actions['global']">
+<table class="ActionBox" width="100%">
+ <tbody tal:condition="object_actions">
+ <tr class=""
+     tal:attributes="class AuthClass">
+  <td class="ActionTitle"
+      tal:define="getIcon python:hasattr(here, 'getIcon') and here.getIcon();
+	              icon python:getIcon or getattr(here, 'icon', '');
+				  typ python:getattr(here, 'Type', '');
+				  objID python:here.getId()">
+     <img src=""
+	      tal:condition="icon" align="left" alt="Type"
+		  tal:attributes="src python:'%s/%s' % (here.portal_url(), icon); alt typ" />
+     <span tal:replace="structure python: here.truncID(objID, size=15)">ObjectID</span>
+  </td>
+ </tr>
+ <tr class=""
+     tal:attributes="class AuthClass">
+  <td tal:define="review_state python:here.portal_workflow.getInfoFor(here, 'review_state', '')"> 
+    <span tal:condition="review_state">Status:  <span tal:replace="review_state">Private</span><br></span>
+    <span tal:repeat="action object_actions"><a href="" tal:attributes="href action/url" tal:content="action/name">Action</a><br></span>
+  </td>
+ </tr>
+</tbody>
+<tr class=""
+     tal:attributes="class AuthClass"
+	 tal:condition="folder_actions">
+  <td> 
+    <span tal:repeat="action folder_actions"><a href="" tal:attributes="href action/url" tal:content="action/name">Action</a><br></span>
+  </td>
+ </tr>
+ <tr class=""
+     tal:attributes="class AuthClass"
+	 tal:condition="global_actions">
+  <td>
+   <span tal:repeat="action global_actions"><a href="" tal:attributes="href action/url" tal:content="action/name">Action</a><br></span>
+
+  </td>
+ </tr>
+</table>
+</div>
+</div>


=== Products/CMFDecor/skins/zpt_generic/content_byline.pt 1.3 => 1.4 ===
-     tal:define="creator here/Creator; home_url python: here.portal_membership.getHomeUrl(creator)"
-     tal:condition="home_url">
-   			Created by <span class="Desktop"><a href="here.html" title="Here"
-			       tal:attributes="href home_url; title creator"
-				   tal:content="creator">Me</a>.</span>
-			<span tal:condition="python: not(home_url)"
-			      tal:replace="creator">Me</span>
-				  <br>
- <span tal:condition="here/ModificationDate">
-     Last modified on <span tal:content="here/ModificationDate">Today</span>
- </span>
+<div class="Desktop" metal:define-macro="byline"
+     tal:define="creator here/Creator; home_url python: here.portal_membership.getHomeUrl(creator)"
+     tal:condition="home_url">
+   			Created by <span class="Desktop"><a href="here.html" title="Here"
+			       tal:attributes="href home_url; title creator"
+				   tal:content="creator">Me</a>.</span>
+			<span tal:condition="python: not(home_url)"
+			      tal:replace="creator">Me</span>
+				  <br>
+ <span tal:condition="here/ModificationDate">
+     Last modified on <span tal:content="here/ModificationDate">Today</span>
+ </span>
  </div>


=== Products/CMFDecor/skins/zpt_generic/discussion_reply_form.pt 1.3 => 1.4 ===
-      xmlns:metal="http://xml.zope.org/namespaces/metal"
-      metal:use-macro="here/main_template/macros/master">
-<body>
-<div metal:fill-slot="main">	
-<div tal:define="dummy python:here.portal_discussion.getDiscussionFor(here)">This is evaluated.</div>
-
-<form method="POST" action="" 
-      tal:attributes="action python: here.absolute_url() + '/talkback'">
-<input type="hidden" name="Creator" value=""
-	   tal:attributes="value python: here.portal_membership.getAuthenticatedMember()">
-
-<table class="FormLayout">
- <tr>
-  <th align="left">Subject (Title)</th>
-  <td><input name="title" value=""
-             tal:attributes="value here/title_override|here/title">
-  </td>
- </tr>
- <tr>
-  <td colspan="2">
-   <b>Reply body</b><br>
-   <textarea name="text" cols="70" rows="10" wrap="soft" style="width: 100%"
-			 tal:content="here/text_override | nothing"></textarea>
-  </td>
- </tr>
- <tr>
-  <td></td>
-  <td>
-   <input type="submit" value="Preview" name=""
-          tal:define="hId here/getId"
-          tal:attributes="name python: hId + '/discussion_reply_preview:method'">
-   <input type="submit" value="Reply" name=""
-          tal:attributes="name string:discussion_reply:method">
-  </td>
- </tr>
-</table>
-</form>
-</div>
-</body>
-</html>
-
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      metal:use-macro="here/main_template/macros/master">
+<body>
+<div metal:fill-slot="main">	
+<div tal:define="dummy python:here.portal_discussion.getDiscussionFor(here)">This is evaluated.</div>
+
+<form method="POST" action="" 
+      tal:attributes="action python: here.absolute_url() + '/talkback'">
+<input type="hidden" name="Creator" value=""
+	   tal:attributes="value python: here.portal_membership.getAuthenticatedMember()">
+
+<table class="FormLayout">
+ <tr>
+  <th align="left">Subject (Title)</th>
+  <td><input name="title" value=""
+             tal:attributes="value here/title_override|here/title">
+  </td>
+ </tr>
+ <tr>
+  <td colspan="2">
+   <b>Reply body</b><br>
+   <textarea name="text" cols="70" rows="10" wrap="soft" style="width: 100%"
+			 tal:content="here/text_override | nothing"></textarea>
+  </td>
+ </tr>
+ <tr>
+  <td></td>
+  <td>
+   <input type="submit" value="Preview" name=""
+          tal:define="hId here/getId"
+          tal:attributes="name python: hId + '/discussion_reply_preview:method'">
+   <input type="submit" value="Reply" name=""
+          tal:attributes="name string:discussion_reply:method">
+  </td>
+ </tr>
+</table>
+</form>
+</div>
+</body>
+</html>
+


=== Products/CMFDecor/skins/zpt_generic/discussion_reply_preview.pt 1.1 => 1.2 ===
-      xmlns:metal="http://xml.zope.org/namespaces/metal"
-      metal:use-macro="here/main_template/macros/master">
-<body>
-<div metal:fill-slot="main">
-
-<h3 tal:content="python: request.form['title']"></h3>
-
-<div tal:define="pss modules/Products.PythonScripts.standard"
-     tal:replace="structure python: pss.structured_text(request.form['text'])">Text Body</div>
-
-<form method="POST" action=""
-      tal:attributes="action python: here.absolute_url() + '/talkback'">
- <input type="hidden" name="title" value=""
-      tal:attributes="value python: request.form['title']">
- <input type="hidden" name="text" value=""
-      tal:attributes="value python: request.form['text']">
- <input type="hidden" name="title_override" value=""
-      tal:attributes="value python:  request.form['title']">
- <input type="hidden" name="text_override" value=""
-      tal:attributes="value python:  request.form['text']">
-  <input type="hidden" name="Creator" value=""
-         tal:attributes="value python: here.portal_membership.getAuthenticatedMember()">
- <table><tr>
-  <td width="15%"></td>
-  <td>
-   <input type="submit" value="Edit" name=""
-          tal:define="hId here/getId"
-		  tal:attributes="name python: hId + '/discussion_reply_form:method'">
-   <input type="submit" value="Reply" name="discussion_reply:method">
-  </td>
- </tr></table>
-</form>
-</div>
-</body>
-</html>
-
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      metal:use-macro="here/main_template/macros/master">
+<body>
+<div metal:fill-slot="main">
+
+<h3 tal:content="python: request.form['title']"></h3>
+
+<div tal:define="pss modules/Products.PythonScripts.standard"
+     tal:replace="structure python: pss.structured_text(request.form['text'])">Text Body</div>
+
+<form method="POST" action=""
+      tal:attributes="action python: here.absolute_url() + '/talkback'">
+ <input type="hidden" name="title" value=""
+      tal:attributes="value python: request.form['title']">
+ <input type="hidden" name="text" value=""
+      tal:attributes="value python: request.form['text']">
+ <input type="hidden" name="title_override" value=""
+      tal:attributes="value python:  request.form['title']">
+ <input type="hidden" name="text_override" value=""
+      tal:attributes="value python:  request.form['text']">
+  <input type="hidden" name="Creator" value=""
+         tal:attributes="value python: here.portal_membership.getAuthenticatedMember()">
+ <table><tr>
+  <td width="15%"></td>
+  <td>
+   <input type="submit" value="Edit" name=""
+          tal:define="hId here/getId"
+		  tal:attributes="name python: hId + '/discussion_reply_form:method'">
+   <input type="submit" value="Reply" name="discussion_reply:method">
+  </td>
+ </tr></table>
+</form>
+</div>
+</body>
+</html>
+


=== Products/CMFDecor/skins/zpt_generic/folder_add.pt 1.1 => 1.2 ===
-      xmlns:metal="http://xml.zope.org/namespaces/metal"
-      metal:use-macro="here/main_template/macros/master">
-<body>
-<div metal:fill-slot="main">	  
-<div class="Desktop">
-<H1>Add Folder</H1>
-
-<P> A Folder contains other objects. Use Folders to organize your
-    web objects in to logical groups.</P>
-
-<FORM ACTION="manage_addPortalFolder" METHOD="POST">
-<TABLE class="FormLayout">
- <TR>
-  <TD>
-   <STRONG>Id</STRONG>
-  </TD>
-  <TD ALIGN="LEFT" VALIGN="TOP">
-   <INPUT TYPE="TEXT" NAME="id" SIZE="40">
-  </TD>
- </TR>
- <TR>
-  <TD>
-   <EM><STRONG>Title</STRONG></EM>
-  </TD>
-  <TD ALIGN="LEFT" VALIGN="TOP">
-   <INPUT TYPE="TEXT" NAME="title" SIZE="40">
-  </TD>
- </TR>
- <TR><TD COLSPAN="2"><BR></TD></TR>
- <TR>
-  <TD><br></TD>
-  <TD>
-   <BR><INPUT TYPE="SUBMIT" VALUE=" Add ">
-  </TD>
- </TR>
-</TABLE>
-</form>
-</div>
-</div>
-</body>
-</html>
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      metal:use-macro="here/main_template/macros/master">
+<body>
+<div metal:fill-slot="main">	  
+<div class="Desktop">
+<H1>Add Folder</H1>
+
+<P> A Folder contains other objects. Use Folders to organize your
+    web objects in to logical groups.</P>
+
+<FORM ACTION="manage_addPortalFolder" METHOD="POST">
+<TABLE class="FormLayout">
+ <TR>
+  <TD>
+   <STRONG>Id</STRONG>
+  </TD>
+  <TD ALIGN="LEFT" VALIGN="TOP">
+   <INPUT TYPE="TEXT" NAME="id" SIZE="40">
+  </TD>
+ </TR>
+ <TR>
+  <TD>
+   <EM><STRONG>Title</STRONG></EM>
+  </TD>
+  <TD ALIGN="LEFT" VALIGN="TOP">
+   <INPUT TYPE="TEXT" NAME="title" SIZE="40">
+  </TD>
+ </TR>
+ <TR><TD COLSPAN="2"><BR></TD></TR>
+ <TR>
+  <TD><br></TD>
+  <TD>
+   <BR><INPUT TYPE="SUBMIT" VALUE=" Add ">
+  </TD>
+ </TR>
+</TABLE>
+</form>
+</div>
+</div>
+</body>
+</html>


=== Products/CMFDecor/skins/zpt_generic/folder_contents.pt 1.5 => 1.6 ===
-
-<html xmlns:tal="http://xml.zope.org/namespaces/tal"
-      xmlns:metal="http://xml.zope.org/namespaces/metal"
-      metal:use-macro="here/main_template/macros/master">
-<body>
-<div metal:fill-slot="main">
-  <div tal:condition="python: not(here.portal_membership.checkPermission('List folder contents', here))">
-	<span tal:define="redirect python: request.RESPONSE.redirect(here.absolute_url())"></span>
-	</div>
-
-<!-- This is the desktop area -->
-<div class="Desktop">
-
-<h1> Desktop </h1>
-
-<form action="" METHOD="POST"
-      tal:attributes="action here/absolute_url">
- <table class="FormLayout">
-  <tr>
-   <td valign="top">
-    <table class="ContentsList">
-      <tbody tal:condition="python: here.portal_membership.checkPermission('List folder contents', here, 'aq_parent')">
-	  <tr valign="top"
-	      tal:define="upNav python: hasattr(here.aq_parent, 'portal_url');
-		              upID python: here.aq_parent.getId()">
-        <td colspan="3" align="left">
-          <span tal:condition="upNav|nothing"><a href="../folder_contents"><img src="" alt="[Link]" border="0"
-											tal:attributes="src python: here.portal_url() + '/UpFolder_icon.gif'"></a>
-		  </span>&nbsp;&nbsp;
-        <span tal:condition="upNav">Up to <a href="../folder_contents" tal:content="upID">Up ID</a></span>
-        <span tal:condition="python: not(upNav)"><span class="mild">Root</span></span>
-		</td>
-      </tr>
-	  </tbody>
-	  <tr><td colspan="1" align="left" width="49%">
-	  <table>
-	  <tbody tal:define="global b_start string:0;b_start request/b_start | b_start;
-	   filterString python: request.get('folderfilter', '');
-	   filter python: here.decodeFolderFilter(filterString);
-       items python: here.listFolderContents(contentFilter=filter);
-	   Batch python:modules['ZTUtils'].Batch;
-	   global batch python:Batch(items, 8, int(b_start), orphan=0);
-	   global batch1 batch/next">
-	   <tr align="top"
-	       tal:repeat="items batch">
-        <td align="left" width="5" NOWRAP
-		     tal:define="folderish items/isPrincipiaFolderish;
-		               portalish items/isPortalContent|nothing;
-					   global methodID python: folderish and 'folder_contents' or (portalish and 'view' or '');
-					   global icon items/getIcon|items/icon|nothing">
-           <input type="checkbox" name="ids:list" value="" id=""
-		          tal:attributes="value items/getId; id python: 'cb_' + items.getId()" />
-        </td>
-      <td>
-         <span tal:condition="icon">
-         <a href=""
-		    tal:attributes="href python: items.getId() + '/' + methodID">
-	     <img src="" alt="" border="0"
-		      tal:attributes="src python: here.portal_url() + '/' + icon;
-			                  alt items/Type|nothing"></a>
-		 </span>
-      </td>
-      <td>
-         <a href=""
-		    tal:attributes="href python: items.getId() + '/' + methodID"><span tal:replace="items/getId">ID
-			<span tal:condition="items/title"
-			      tal:replace="python: '(' + items.title() + ')'">(Title)</span></span></a>
-      </td>	  
-     </tr>
-	 </tbody>
-  </table>
-  </td>
-  <td width="2%">&nbsp;</td>
-  <td colspan="1" width="49%">
-    	  <table>
-	   <tr align="top"
-	       tal:repeat="items batch1">
-        <td align="left" width="5" NOWRAP
-		    tal:define="folderish items/isPrincipiaFolderish;
-		               portalish items/isPortalContent|nothing;
-					   global methodID python: folderish and 'folder_contents' or (portalish and 'view' or '');
-					   global icon items/getIcon|items/icon|nothing">
-           <input type="checkbox" name="ids:list" value="" id=""
-		          tal:attributes="value items/getId; id python: 'cb_' + items.getId()" />
-        </td>
-      <td>
-         <span tal:condition="icon">
-         <a href=""
-		    tal:attributes="href python: items.getId() + '/' + methodID">
-	     <img src="" alt="" border="0"
-		      tal:attributes="src python: here.portal_url() + '/' + icon;
-			                  alt items/Type|nothing"></a>
-		 </span>
-      </td>
-      <td>
-         <a href=""
-		    tal:attributes="href python: items.getId() + '/' + methodID"><span tal:replace="items/getId">ID
-			<span tal:condition="items/title"
-			      tal:replace="python: '(' + items.title() + ')'">(Title)</span></span></a>
-      </td>	  
-     </tr>
-  </table>
-	    
-  </tr>
-
-  
- 
- <tr>
-  <td align="left">
-     <span tal:define="p batch/previous" tal:condition="p">
-       <a href=""
-          tal:attributes="href string:?b_start=${p/previous/first}">Previous Items</a>
-     </span>
-  </td>
-<td>&nbsp;</td>
-  <td align="left">
-   <span tal:define="n batch1/next|nothing" tal:condition="n">
-     <a href=""
-        tal:attributes="href string:?b_start=${batch1/end}">Next Items</a>
-   </span>
-  </td>
- </tr>
-<!-- end cotentList -->
-</table>
-
-<TABLE BORDER="0" CELLSPACING="0" CELLPADDING=2>
-<TR>
-  <TD ALIGN="LEFT" VALIGN="TOP" WIDTH="16"></TD>
-  <TD ALIGN="LEFT" VALIGN="TOP">
-  <span tal:condition="python: here.portal_membership.checkPermission('Add portal content', here)">
-    <INPUT TYPE="SUBMIT" NAME="folder_factories:method" VALUE="New...">
-  </span>
-  <span tal:condition="python: here.portal_membership.checkPermission('View management screens', here)">
-    <INPUT TYPE="SUBMIT" NAME="folder_rename_form:method" VALUE="Rename">
-    <INPUT TYPE="SUBMIT" NAME="folder_cut:method" VALUE="Cut"> 
-    <INPUT TYPE="SUBMIT" NAME="folder_copy:method" VALUE="Copy">
-    <span tal:condition="here/cb_dataValid">
-    <INPUT TYPE="SUBMIT" NAME="folder_paste:method" VALUE="Paste">
-    </span>
-  </span>
-  <span tal:condition="python: here.portal_membership.checkPermission('Delete objects', here)">
-    <INPUT TYPE="SUBMIT" NAME="folder_delete:method" VALUE="Delete">
-  </span>
-  </TD>
-</TR>
-</TABLE>
-</table>
-</form>
-<span tal:replace="structure here/folder_filter_form">Filter Form Here</span>
-</div>
-</div>
-</body>
-</html>
+<span tal:define="dummy here/filterCookie; desktop python: request.set('isDesktop', 1)"></span>
+
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      metal:use-macro="here/main_template/macros/master">
+<body>
+<div metal:fill-slot="main">
+  <div tal:condition="python: not(here.portal_membership.checkPermission('List folder contents', here))">
+	<span tal:define="redirect python: request.RESPONSE.redirect(here.absolute_url())"></span>
+	</div>
+
+<!-- This is the desktop area -->
+<div class="Desktop">
+
+<h1> Desktop </h1>
+
+<form action="" METHOD="POST"
+      tal:attributes="action here/absolute_url">
+ <table class="FormLayout">
+  <tr>
+   <td valign="top">
+    <table class="ContentsList">
+      <tbody tal:condition="python: here.portal_membership.checkPermission('List folder contents', here, 'aq_parent')">
+	  <tr valign="top"
+	      tal:define="upNav python: hasattr(here.aq_parent, 'portal_url');
+		              upID python: here.aq_parent.getId()">
+        <td colspan="3" align="left">
+          <span tal:condition="upNav|nothing"><a href="../folder_contents"><img src="" alt="[Link]" border="0"
+											tal:attributes="src python: here.portal_url() + '/UpFolder_icon.gif'"></a>
+		  </span>&nbsp;&nbsp;
+        <span tal:condition="upNav">Up to <a href="../folder_contents" tal:content="upID">Up ID</a></span>
+        <span tal:condition="python: not(upNav)"><span class="mild">Root</span></span>
+		</td>
+      </tr>
+	  </tbody>
+	  <tr><td colspan="1" align="left" width="49%">
+	  <table>
+	  <tbody tal:define="global b_start string:0;b_start request/b_start | b_start;
+	   filterString python: request.get('folderfilter', '');
+	   filter python: here.decodeFolderFilter(filterString);
+       items python: here.listFolderContents(contentFilter=filter);
+	   Batch python:modules['ZTUtils'].Batch;
+	   global batch python:Batch(items, 8, int(b_start), orphan=0);
+	   global batch1 batch/next">
+	   <tr align="top"
+	       tal:repeat="items batch">
+        <td align="left" width="5" NOWRAP
+		     tal:define="folderish items/isPrincipiaFolderish;
+		               portalish items/isPortalContent|nothing;
+					   global methodID python: folderish and 'folder_contents' or (portalish and 'view' or '');
+					   global icon items/getIcon|items/icon|nothing">
+           <input type="checkbox" name="ids:list" value="" id=""
+		          tal:attributes="value items/getId; id python: 'cb_' + items.getId()" />
+        </td>
+      <td>
+         <span tal:condition="icon">
+         <a href=""
+		    tal:attributes="href python: items.getId() + '/' + methodID">
+	     <img src="" alt="" border="0"
+		      tal:attributes="src python: here.portal_url() + '/' + icon;
+			                  alt items/Type|nothing"></a>
+		 </span>
+      </td>
+      <td>
+         <a href=""
+		    tal:attributes="href python: items.getId() + '/' + methodID"><span tal:replace="items/getId">ID
+			<span tal:condition="items/title"
+			      tal:replace="python: '(' + items.title() + ')'">(Title)</span></span></a>
+      </td>	  
+     </tr>
+	 </tbody>
+  </table>
+  </td>
+  <td width="2%">&nbsp;</td>
+  <td colspan="1" width="49%">
+    	  <table>
+	   <tr align="top"
+	       tal:repeat="items batch1">
+        <td align="left" width="5" NOWRAP
+		    tal:define="folderish items/isPrincipiaFolderish;
+		               portalish items/isPortalContent|nothing;
+					   global methodID python: folderish and 'folder_contents' or (portalish and 'view' or '');
+					   global icon items/getIcon|items/icon|nothing">
+           <input type="checkbox" name="ids:list" value="" id=""
+		          tal:attributes="value items/getId; id python: 'cb_' + items.getId()" />
+        </td>
+      <td>
+         <span tal:condition="icon">
+         <a href=""
+		    tal:attributes="href python: items.getId() + '/' + methodID">
+	     <img src="" alt="" border="0"
+		      tal:attributes="src python: here.portal_url() + '/' + icon;
+			                  alt items/Type|nothing"></a>
+		 </span>
+      </td>
+      <td>
+         <a href=""
+		    tal:attributes="href python: items.getId() + '/' + methodID"><span tal:replace="items/getId">ID
+			<span tal:condition="items/title"
+			      tal:replace="python: '(' + items.title() + ')'">(Title)</span></span></a>
+      </td>	  
+     </tr>
+  </table>
+	    
+  </tr>
+
+  
+ 
+ <tr>
+  <td align="left">
+     <span tal:define="p batch/previous" tal:condition="p">
+       <a href=""
+          tal:attributes="href string:?b_start=${p/previous/first}">Previous Items</a>
+     </span>
+  </td>
+<td>&nbsp;</td>
+  <td align="left">
+   <span tal:define="n batch1/next|nothing" tal:condition="n">
+     <a href=""
+        tal:attributes="href string:?b_start=${batch1/end}">Next Items</a>
+   </span>
+  </td>
+ </tr>
+<!-- end cotentList -->
+</table>
+
+<TABLE BORDER="0" CELLSPACING="0" CELLPADDING=2>
+<TR>
+  <TD ALIGN="LEFT" VALIGN="TOP" WIDTH="16"></TD>
+  <TD ALIGN="LEFT" VALIGN="TOP">
+  <span tal:condition="python: here.portal_membership.checkPermission('Add portal content', here)">
+    <INPUT TYPE="SUBMIT" NAME="folder_factories:method" VALUE="New...">
+  </span>
+  <span tal:condition="python: here.portal_membership.checkPermission('View management screens', here)">
+    <INPUT TYPE="SUBMIT" NAME="folder_rename_form:method" VALUE="Rename">
+    <INPUT TYPE="SUBMIT" NAME="folder_cut:method" VALUE="Cut"> 
+    <INPUT TYPE="SUBMIT" NAME="folder_copy:method" VALUE="Copy">
+    <span tal:condition="here/cb_dataValid">
+    <INPUT TYPE="SUBMIT" NAME="folder_paste:method" VALUE="Paste">
+    </span>
+  </span>
+  <span tal:condition="python: here.portal_membership.checkPermission('Delete objects', here)">
+    <INPUT TYPE="SUBMIT" NAME="folder_delete:method" VALUE="Delete">
+  </span>
+  </TD>
+</TR>
+</TABLE>
+</table>
+</form>
+<span tal:replace="structure here/folder_filter_form">Filter Form Here</span>
+</div>
+</div>
+</body>
+</html>


=== Products/CMFDecor/skins/zpt_generic/folder_factories.pt 1.2 => 1.3 ===
-      xmlns:metal="http://xml.zope.org/namespaces/metal"
-      metal:use-macro="here/main_template/macros/master"
-	  tal:define="dummy python: here.request.set('isDesktop', 1)">
-<body>
-<div metal:fill-slot="main">
-<div tal:condition="python: not(here.portal_membership.checkPermission('Access contents information', here))">
-  <span tal:define="dummy here/unauthRedirect"></span>
-</div>
-<div class="Desktop">
-<h1> Add Content </h1>
-<form action="invokeFactory" method="POST">
-<table class="FormLayout">
-<tr>
-<td>
-<table width="100%" class="FormLayout" tal:repeat="item here/allowedContentTypes">
-<tr valign="top">
-  <td align="left" width="2%" NOWRAP><input type="radio" name="type_name" value="" id="" tal:attributes="value item/getId; id string:cb_${repeat/item/number}"/>
-  </td>
-  <td align="left" colspan="2" class="ListName"><label for="" 
-	  tal:attributes="for string:cb_${repeat/item/number}"
-	  tal:content="item/Type"></label> 
-  </td>
-</tr>
- <tr valign="top">
-  <td colspan="2"> <br> </td>
-  <td align="left" class="ListDefinition" tal:content="item/Description"></td>
- </tr>
- </table>
- </td></tr></table>
-
-<table class="FormLayout">
- <tr valign="top">
-  <td> <br> </td>
-  <td colspan="2" class="TextField"> <strong> ID: </strong>
-       <input type="text" name="id" size="20">
-       <input type="submit" value="Add"> </td>
- </tr>
-</table>
-</form>
-
-</div>
-</div>
-</body>
-</html>
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      metal:use-macro="here/main_template/macros/master"
+	  tal:define="dummy python: here.request.set('isDesktop', 1)">
+<body>
+<div metal:fill-slot="main">
+<div tal:condition="python: not(here.portal_membership.checkPermission('Access contents information', here))">
+  <span tal:define="dummy here/unauthRedirect"></span>
+</div>
+<div class="Desktop">
+<h1> Add Content </h1>
+<form action="invokeFactory" method="POST">
+<table class="FormLayout">
+<tr>
+<td>
+<table width="100%" class="FormLayout" tal:repeat="item here/allowedContentTypes">
+<tr valign="top">
+  <td align="left" width="2%" NOWRAP><input type="radio" name="type_name" value="" id="" tal:attributes="value item/getId; id string:cb_${repeat/item/number}"/>
+  </td>
+  <td align="left" colspan="2" class="ListName"><label for="" 
+	  tal:attributes="for string:cb_${repeat/item/number}"
+	  tal:content="item/Type"></label> 
+  </td>
+</tr>
+ <tr valign="top">
+  <td colspan="2"> <br> </td>
+  <td align="left" class="ListDefinition" tal:content="item/Description"></td>
+ </tr>
+ </table>
+ </td></tr></table>
+
+<table class="FormLayout">
+ <tr valign="top">
+  <td> <br> </td>
+  <td colspan="2" class="TextField"> <strong> ID: </strong>
+       <input type="text" name="id" size="20">
+       <input type="submit" value="Add"> </td>
+ </tr>
+</table>
+</form>
+
+</div>
+</div>
+</body>
+</html>


=== Products/CMFDecor/skins/zpt_generic/folder_filter_form.pt 1.1 => 1.2 ===
-    <span tal:define="
-        dummy1 python:request.RESPONSE.expireCookie('show_filter_form', path='/');
-        dummy2 python:request.RESPONSE.setCookie('show_filter_form', '');
-        dummy3 python:request.set('show_filter_form', '')
-        " />
-</span>
-<span tal:condition="python:request.get('open_filter_form', 0)">
-    <span tal:define="
-        dummy1 python:request.RESPONSE.setCookie('show_filter_form', path='/', expires='Wed, 19 Feb 2020 14:28:00 GMT', value='1');
-        dummy2 python:request.set('show_filter_form', '1')
-        " />
-</span>
-<form action="" method="POST"
-    tal:define="showfilter request/show_filter_form|nothing; hidefilter python:not showfilter; formaction python:here.absolute_url() + '/folder_contents'"
-    tal:attributes="action formaction"
-    >
-<table class="FormLayout"
-    tal:condition="showfilter"
-    tal:define="Type python:(); Subject python:'';filter python:here.decodeFolderFilter(request.get('folderfilter', ''))">
-<tr>
-    <td colspan="2" align="left" valign="top">
-        Contents View Filter
-    </td>
-</tr>
-<tr>
-    <td align="left" valign="top" width="*">Subject:</td>
-    <td align="left" valign="top">
-     <input type="text" name="filter_by_Subject:tokens"
-      value="" tal:attributes="value python:modules['string'].join(Subject, ' ')" />
-    </td>
-</tr>
-<tr>
-    <td align="left" valign="top" width="*">Content Type:</td>
-    <td align="left" valign="top">
-        <select name="filter_by_Type:list" multiple size="3"
-            tal:define="types python:here.portal_types.listContentTypes( container=container )">
-            <option value="&dtml-sequence-item;"
-                tal:repeat="type types"
-                tal:attributes="value type"
-                >
-            <span tal:replace="type" /></option>
-        </select>
-    </td>
-</tr>
-<tr>
-    <td colspan="1" align="left">
-        <input type="submit" name="set_view_filter" value="Set Filter">
-    </td>
-    <td colspan="1" align="left">
-        <input type="submit" name="close_filter_form" value="Close View Filter">
-    </td>
-    <td colspan="1" align="left">
-        <input type="submit" name="clear_view_filter" value="Clear View Filter">
-    </td>
-</tr>
-</table>
-<span tal:condition="hidefilter">
-  <input type="submit" name="open_filter_form" value="Set View Filter">
-</span>
+<span tal:condition="python:request.get('close_filter_form', 0)">
+    <span tal:define="
+        dummy1 python:request.RESPONSE.expireCookie('show_filter_form', path='/');
+        dummy2 python:request.RESPONSE.setCookie('show_filter_form', '');
+        dummy3 python:request.set('show_filter_form', '')
+        " />
+</span>
+<span tal:condition="python:request.get('open_filter_form', 0)">
+    <span tal:define="
+        dummy1 python:request.RESPONSE.setCookie('show_filter_form', path='/', expires='Wed, 19 Feb 2020 14:28:00 GMT', value='1');
+        dummy2 python:request.set('show_filter_form', '1')
+        " />
+</span>
+<form action="" method="POST"
+    tal:define="showfilter request/show_filter_form|nothing; hidefilter python:not showfilter; formaction python:here.absolute_url() + '/folder_contents'"
+    tal:attributes="action formaction"
+    >
+<table class="FormLayout"
+    tal:condition="showfilter"
+    tal:define="Type python:(); Subject python:'';filter python:here.decodeFolderFilter(request.get('folderfilter', ''))">
+<tr>
+    <td colspan="2" align="left" valign="top">
+        Contents View Filter
+    </td>
+</tr>
+<tr>
+    <td align="left" valign="top" width="*">Subject:</td>
+    <td align="left" valign="top">
+     <input type="text" name="filter_by_Subject:tokens"
+      value="" tal:attributes="value python:modules['string'].join(Subject, ' ')" />
+    </td>
+</tr>
+<tr>
+    <td align="left" valign="top" width="*">Content Type:</td>
+    <td align="left" valign="top">
+        <select name="filter_by_Type:list" multiple size="3"
+            tal:define="types python:here.portal_types.listContentTypes( container=container )">
+            <option value="&dtml-sequence-item;"
+                tal:repeat="type types"
+                tal:attributes="value type"
+                >
+            <span tal:replace="type" /></option>
+        </select>
+    </td>
+</tr>
+<tr>
+    <td colspan="1" align="left">
+        <input type="submit" name="set_view_filter" value="Set Filter">
+    </td>
+    <td colspan="1" align="left">
+        <input type="submit" name="close_filter_form" value="Close View Filter">
+    </td>
+    <td colspan="1" align="left">
+        <input type="submit" name="clear_view_filter" value="Clear View Filter">
+    </td>
+</tr>
+</table>
+<span tal:condition="hidefilter">
+  <input type="submit" name="open_filter_form" value="Set View Filter">
+</span>
 </form>


=== Products/CMFDecor/skins/zpt_generic/folder_rename_form.pt 1.1 => 1.2 ===
-      xmlns:metal="http://xml.zope.org/namespaces/metal"
-      metal:use-macro="here/main_template/macros/master">
-<body>
-<div metal:fill-slot="main">
-<div class="Desktop">
-<h3> Rename Items </h3>
-<TABLE class="FormLayout"
-       tal:condition="here/folder_rename_items">
-	   <FORM ACTION="folder_rename" METHOD="POST">
-  <TR tal:repeat="item here/folder_rename_items">
-    <TD ALIGN="LEFT" VALIGN="TOP" width="8%">
-      <span tal:replace="structure item/iconHTML">Type Image</span>
-    </TD>
-    <TD ALIGN="LEFT" VALIGN="TOP" width="20%" NOWRAP>
-      <span tal:replace="item/getId">ID</span>
-      <INPUT TYPE="HIDDEN" NAME="ids:list" VALUE=""
-	         tal:attributes="value item/getId">
-    </TD>
-    <TD ALIGN="LEFT" VALIGN="TOP" width="5%">
-      <STRONG>to</STRONG>
-    </TD>
-    <TD ALIGN="LEFT" VALIGN="TOP">
-      <INPUT TYPE="TEXT" NAME="new_ids:list" value=""
-	         tal:attributes="value item/getId" SIZE="20">
-    </TD>
-  </TR>
-
-  <TR>
-    <TD COLSPAN=4>
-      <INPUT TYPE="submit" VALUE=" Ok ">
-    </TD>
-  </TR>
-  </FORM>
-</TABLE>
-
-
-
-<div tal:condition="python: not(here.folder_rename_items())">
-  <FORM ACTION="folder_contents" METHOD="GET">
-  <p>You must select one or more items to rename.</p>
-  <INPUT TYPE="submit" VALUE=" Ok ">
-  </FORM>
-</div>
-</div>
-</div>
-</body>
-</html>
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      metal:use-macro="here/main_template/macros/master">
+<body>
+<div metal:fill-slot="main">
+<div class="Desktop">
+<h3> Rename Items </h3>
+<TABLE class="FormLayout"
+       tal:condition="here/folder_rename_items">
+	   <FORM ACTION="folder_rename" METHOD="POST">
+  <TR tal:repeat="item here/folder_rename_items">
+    <TD ALIGN="LEFT" VALIGN="TOP" width="8%">
+      <span tal:replace="structure item/iconHTML">Type Image</span>
+    </TD>
+    <TD ALIGN="LEFT" VALIGN="TOP" width="20%" NOWRAP>
+      <span tal:replace="item/getId">ID</span>
+      <INPUT TYPE="HIDDEN" NAME="ids:list" VALUE=""
+	         tal:attributes="value item/getId">
+    </TD>
+    <TD ALIGN="LEFT" VALIGN="TOP" width="5%">
+      <STRONG>to</STRONG>
+    </TD>
+    <TD ALIGN="LEFT" VALIGN="TOP">
+      <INPUT TYPE="TEXT" NAME="new_ids:list" value=""
+	         tal:attributes="value item/getId" SIZE="20">
+    </TD>
+  </TR>
+
+  <TR>
+    <TD COLSPAN=4>
+      <INPUT TYPE="submit" VALUE=" Ok ">
+    </TD>
+  </TR>
+  </FORM>
+</TABLE>
+
+
+
+<div tal:condition="python: not(here.folder_rename_items())">
+  <FORM ACTION="folder_contents" METHOD="GET">
+  <p>You must select one or more items to rename.</p>
+  <INPUT TYPE="submit" VALUE=" Ok ">
+  </FORM>
+</div>
+</div>
+</div>
+</body>
+</html>


=== Products/CMFDecor/skins/zpt_generic/index_html.pt 1.2 => 1.3 ===
-<body>
- <div metal:fill-slot="main">
-
- <table cellpadding="0" cellspacing="0" width="100%">
- <tr>
- <td valign="top" width="80%">
-
- <h1> Welcome to <span tal:replace="here/title">(portal title)</span> </h1>
-
- <dl>
- <dt> Overview </dt>
- <dd tal:content="here/description"> Description here </dd>
- </dl>
-
- </td>
- <td valign="top" width="20%" tal:content="structure here/news_box">
-  News here
- </td>
- </tr>
- </table>
-
- </div>
-</body>
-</html>
+<html metal:use-macro="here/main_template/macros/master">
+<body>
+ <div metal:fill-slot="main">
+
+ <table cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td valign="top" width="80%">
+
+ <h1> Welcome to <span tal:replace="here/title">(portal title)</span> </h1>
+
+ <dl>
+ <dt> Overview </dt>
+ <dd tal:content="here/description"> Description here </dd>
+ </dl>
+
+ </td>
+ <td valign="top" width="20%" tal:content="structure here/news_box">
+  News here
+ </td>
+ </tr>
+ </table>
+
+ </div>
+</body>
+</html>


=== Products/CMFDecor/skins/zpt_generic/join_form.pt 1.4 => 1.5 ===
-      xmlns:metal="http://xml.zope.org/namespaces/metal"
-      metal:use-macro="here/main_template/macros/master">
-<body>
-<div metal:fill-slot="main">
-<div class="Desktop">
-
-<h1>Become a member</h1>
-
-<div tal:define="registered python: here.portal_membership.getAuthenticatedMember().has_role('Member')">
-    <div tal:condition="python: here.portal_membership.getAuthenticatedMember().has_role('Member')">
-		<p>You are already a member. You may use the <a href="personalize_form">personalization form</a> 
-		to change your membership information. </p>
-    </div>
- <div tal:condition="python: not(registered)">
-	<p> Becoming a member gives you the ability to personalize the site and participate in the community.</p>
-	<p> It does not cost any money to become a member and your email and other personal information will remain private.</p>
-       <span tal:condition="python: here.portal_properties.validate_email">
-	   <p> You must submit a valid email address. This address will be used to send you your randomly-generated password.  
-	   Once you have logged in with this password, you may change it to anything you like.</p>
-	   </span>
-<div class="DesktopStatusBar"
-     tal:content="request/error|nothing">
-     <hr>
-</div>
-<form action="register" method="POST">
-
-<input type="hidden" name="last_visit:date" value=""
-	   tal:attributes="value here/ZopeTime">
-<input type="hidden" name="prev_visit:date" value=""
-       tal:attributes="value here/ZopeTime">
-
-<table class="FormLayout">
- <tr>
-  <th> Login Name
-  </th>
-  <td>
-   <input type="text"
-          name="username" size="30"
-          value=""
-		  tal:attributes="value request/username|nothing">
-  </td>
- </tr>
- <tr>
-  <th> Email Address
-  </th>
-  <td align="left" valign="top">
-   <input type="text" name="email" size="30"
-          value=""
-		  tal:attributes="value request/email|nothing">
-  </td>
- </tr>
-
-<div tal:condition="python: not(here.portal_properties.validate_email)">
- <tr>
-  <th> Password
-  </th>
-  <td align="left" valign="top">
-   <input type="password" name="password" size="30">
-  </td>
- </tr>
- <tr>
-  <th> Password (confirm)
-  </th>
-  <td align="left" valign="top">
-   <input type="password" name="confirm" size="30">
-  </td>
- </tr>
- <tr>
-  <th> Mail Password?
-  </th>
-  <td>
-   <input type="checkbox" name="mail_me" size="30" id="cb_mailme" />
-   <em><label for="cb_mailme">Check this box to have your password 
-   mailed to you.</label></em>
-  </td>
- </tr>
-</div>
-
- <tr>
-  <td><br></td>
-  <td>
-   <input type="submit" name="submit" value="Register"> 
-  </td>
- </tr>
-</table>
-</form>
-
-</div>
-</div>
-</div>
-</div>
-
-</body>
-</html>
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      metal:use-macro="here/main_template/macros/master">
+<body>
+<div metal:fill-slot="main">
+<div class="Desktop">
+
+<h1>Become a member</h1>
+
+<div tal:define="registered python: here.portal_membership.getAuthenticatedMember().has_role('Member')">
+    <div tal:condition="python: here.portal_membership.getAuthenticatedMember().has_role('Member')">
+		<p>You are already a member. You may use the <a href="personalize_form">personalization form</a> 
+		to change your membership information. </p>
+    </div>
+ <div tal:condition="python: not(registered)">
+	<p> Becoming a member gives you the ability to personalize the site and participate in the community.</p>
+	<p> It does not cost any money to become a member and your email and other personal information will remain private.</p>
+       <span tal:condition="python: here.portal_properties.validate_email">
+	   <p> You must submit a valid email address. This address will be used to send you your randomly-generated password.  
+	   Once you have logged in with this password, you may change it to anything you like.</p>
+	   </span>
+<div class="DesktopStatusBar"
+     tal:content="request/error|nothing">
+     <hr>
+</div>
+<form action="register" method="POST">
+
+<input type="hidden" name="last_visit:date" value=""
+	   tal:attributes="value here/ZopeTime">
+<input type="hidden" name="prev_visit:date" value=""
+       tal:attributes="value here/ZopeTime">
+
+<table class="FormLayout">
+ <tr>
+  <th> Login Name
+  </th>
+  <td>
+   <input type="text"
+          name="username" size="30"
+          value=""
+		  tal:attributes="value request/username|nothing">
+  </td>
+ </tr>
+ <tr>
+  <th> Email Address
+  </th>
+  <td align="left" valign="top">
+   <input type="text" name="email" size="30"
+          value=""
+		  tal:attributes="value request/email|nothing">
+  </td>
+ </tr>
+
+<div tal:condition="python: not(here.portal_properties.validate_email)">
+ <tr>
+  <th> Password
+  </th>
+  <td align="left" valign="top">
+   <input type="password" name="password" size="30">
+  </td>
+ </tr>
+ <tr>
+  <th> Password (confirm)
+  </th>
+  <td align="left" valign="top">
+   <input type="password" name="confirm" size="30">
+  </td>
+ </tr>
+ <tr>
+  <th> Mail Password?
+  </th>
+  <td>
+   <input type="checkbox" name="mail_me" size="30" id="cb_mailme" />
+   <em><label for="cb_mailme">Check this box to have your password 
+   mailed to you.</label></em>
+  </td>
+ </tr>
+</div>
+
+ <tr>
+  <td><br></td>
+  <td>
+   <input type="submit" name="submit" value="Register"> 
+  </td>
+ </tr>
+</table>
+</form>
+
+</div>
+</div>
+</div>
+</div>
+
+</body>
+</html>


=== Products/CMFDecor/skins/zpt_generic/logged_in.pt 1.2 => 1.3 ===
-  <div tal:condition="here/portal_skins/updateSkinCookie | nothing"
-        tal:define="dummy here/setupCurrentSkin">
-  </div>
-</div>
-<html xmlns:tal="http://xml.zope.org/namespaces/tal"
-      xmlns:metal="http://xml.zope.org/namespaces/metal"
-      metal:use-macro="here/main_template/macros/master">
-<body>
-<div metal:fill-slot="main">
- <div tal:define="p_props here/portal_properties">
-  <div tal:condition="here/portal_membership/isAnonymousUser | nothing">
-       <span tal:define="dummy python: request['RESPONSE'].expireCookie('__ac', path='/')"></span>
-      <h1 class="DesktopTitle">Login failure</h1>
-      <p class="Desktop">You are not currently logged in.  Your username and or password may be incorrect.
-	  Your browser may also not be configured to accept HTTP cookies.  If you need help please contact 
-	  <a href="mailto:admin@here.com" title="Email Admin"
-	     tal:attributes="href string:mailto:${p_props/email_from_address}"
-	     tal:content="p_props/email_from_address">Email Admin</a>.
-	  </p>
-   </div>
-   <div tal:condition="python: not(here.portal_membership.isAnonymousUser())"
-        tal:define="member python: here.portal_membership.getAuthenticatedMember()">
-		  <div tal:condition="python: member.login_time == here.ZopeTime('2000/01/01') and p_props.validate_email"
-		       tal:define="dum_reg python: here.portal_registration.setProperties(last_login_time=here.ZopeTime(),login_time=here.ZopeTime())">
-			   <h1 class="DesktopTitle">Welcome!</h1>
-			   <p class="Desktop">This is the first time that you've logged in to <span replace="p_props/title">Here</span>. 
-			   Before you start exploring you need to change your original password. 
-			   This will ensure that the password we sent you via email cannot be used in a malicious manner.</p>
-			   <p class="Desktop">Please use the form below to change your password.</p>
-			   <form action="change_password" method="post">
-			   <input type="hidden" name="user" value=""
-			          tal:attributes="value member">
-			   <input type="hidden" name="domains:tokens" value="">
-			   <input type="hidden" name="redirect" value=""
-			          tal:attributes="value p_props/portal_url">
-			   <table>
-			   <tr valign="top" align="left">
-			   <th>Username</th>
-			   <td><span tal:replace="member">You</span></td>
-			   </tr>
-			   <tr valign="top"  align="left">
-			   <th>New password</th>
-			   <td><input type="password" name="password"></td>
-			   </tr>
-			   <tr valign="top"  align="left">
-			   <th>Confirm new password</th>
-			   <td><input type="password" name="confirm"></td>
-			   </tr>
-			   <tr>
-			   <td></td>
-			   <td><input type="submit" value="Change password"></td>
-			   </tr>
-			   </table>
-			   </form>
-        </div>
-		<div tal:condition="python: not(member.login_time == here.ZopeTime('2000/01/01') and here.validate_email)">
-		  <div tal:define="d_reg python: here.portal_registration.setProperties(last_login_time=member.login_time); ereg python: here.portal_registration.setProperties(login_time=here.ZopeTime())">
-		  </div>
-		<div tal:condition="request/came_from | nothing ">
-		 <div tal:define="dredirect python: request.RESPONSE.redirect(request.get('came_from'))"></div>
-		</div>
-		<h1 class="DesktopTitle">Login success</h1>
-		<p class="Desktop">Welcome. You are currently logged in.
-		</p>
-		</div>
-      </div>
-</div>
-</div>
-</body>
-</html>
-
+<div tal:condition="exists: here/portal_skins | nothing">
+  <div tal:condition="here/portal_skins/updateSkinCookie | nothing"
+        tal:define="dummy here/setupCurrentSkin">
+  </div>
+</div>
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      metal:use-macro="here/main_template/macros/master">
+<body>
+<div metal:fill-slot="main">
+ <div tal:define="p_props here/portal_properties">
+  <div tal:condition="here/portal_membership/isAnonymousUser | nothing">
+       <span tal:define="dummy python: request['RESPONSE'].expireCookie('__ac', path='/')"></span>
+      <h1 class="DesktopTitle">Login failure</h1>
+      <p class="Desktop">You are not currently logged in.  Your username and or password may be incorrect.
+	  Your browser may also not be configured to accept HTTP cookies.  If you need help please contact 
+	  <a href="mailto:admin@here.com" title="Email Admin"
+	     tal:attributes="href string:mailto:${p_props/email_from_address}"
+	     tal:content="p_props/email_from_address">Email Admin</a>.
+	  </p>
+   </div>
+   <div tal:condition="python: not(here.portal_membership.isAnonymousUser())"
+        tal:define="member python: here.portal_membership.getAuthenticatedMember()">
+		  <div tal:condition="python: member.login_time == here.ZopeTime('2000/01/01') and p_props.validate_email"
+		       tal:define="dum_reg python: here.portal_registration.setProperties(last_login_time=here.ZopeTime(),login_time=here.ZopeTime())">
+			   <h1 class="DesktopTitle">Welcome!</h1>
+			   <p class="Desktop">This is the first time that you've logged in to <span replace="p_props/title">Here</span>. 
+			   Before you start exploring you need to change your original password. 
+			   This will ensure that the password we sent you via email cannot be used in a malicious manner.</p>
+			   <p class="Desktop">Please use the form below to change your password.</p>
+			   <form action="change_password" method="post">
+			   <input type="hidden" name="user" value=""
+			          tal:attributes="value member">
+			   <input type="hidden" name="domains:tokens" value="">
+			   <input type="hidden" name="redirect" value=""
+			          tal:attributes="value p_props/portal_url">
+			   <table>
+			   <tr valign="top" align="left">
+			   <th>Username</th>
+			   <td><span tal:replace="member">You</span></td>
+			   </tr>
+			   <tr valign="top"  align="left">
+			   <th>New password</th>
+			   <td><input type="password" name="password"></td>
+			   </tr>
+			   <tr valign="top"  align="left">
+			   <th>Confirm new password</th>
+			   <td><input type="password" name="confirm"></td>
+			   </tr>
+			   <tr>
+			   <td></td>
+			   <td><input type="submit" value="Change password"></td>
+			   </tr>
+			   </table>
+			   </form>
+        </div>
+		<div tal:condition="python: not(member.login_time == here.ZopeTime('2000/01/01') and here.validate_email)">
+		  <div tal:define="d_reg python: here.portal_registration.setProperties(last_login_time=member.login_time); ereg python: here.portal_registration.setProperties(login_time=here.ZopeTime())">
+		  </div>
+		<div tal:condition="request/came_from | nothing ">
+		 <div tal:define="dredirect python: request.RESPONSE.redirect(request.get('came_from'))"></div>
+		</div>
+		<h1 class="DesktopTitle">Login success</h1>
+		<p class="Desktop">Welcome. You are currently logged in.
+		</p>
+		</div>
+      </div>
+</div>
+</div>
+</body>
+</html>
+


=== Products/CMFDecor/skins/zpt_generic/logged_out.pt 1.1 => 1.2 ===
-      xmlns:metal="http://xml.zope.org/namespaces/metal"
-      metal:use-macro="here/main_template/macros/master">
-<body>
-<div metal:fill-slot="main">
-<p tal:condition="python: here.portal_membership.isAnonymousUser()"
-   tal:content="string:You have been logged out."></p>
-<p tal:condition="python: not(here.portal_membership.isAnonymousUser())">
-You are logged in outside the portal.  You may need to
-<a href="/manage_zmi_logout">log out of the Zope management interface</a>.
-</p>
-</div>
-</body>
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      metal:use-macro="here/main_template/macros/master">
+<body>
+<div metal:fill-slot="main">
+<p tal:condition="python: here.portal_membership.isAnonymousUser()"
+   tal:content="string:You have been logged out."></p>
+<p tal:condition="python: not(here.portal_membership.isAnonymousUser())">
+You are logged in outside the portal.  You may need to
+<a href="/manage_zmi_logout">log out of the Zope management interface</a>.
+</p>
+</div>
+</body>
 </html>


=== Products/CMFDecor/skins/zpt_generic/login_form.pt 1.1 => 1.2 ===
-      xmlns:metal="http://xml.zope.org/namespaces/metal"
-      metal:use-macro="here/main_template/macros/master">
-<body>
-<div metal:fill-slot="main">
-<div class="Desktop">
-<h1 class="Desktop">Log in</h1>
-
-<form action="" method="post" tal:attributes="action python: here.portal_url() + '/logged_in'">
-
-<!-- ****** Enable the automatic redirect ***** -->
-<span tal:condition="exists: request/came_from">
-  <input type="hidden" name="came_from" value="" tal:attributes="value request/came_from">
-</span>
-<!-- ****** Enable the automatic redirect ***** -->
-
-<table class="FormLayout">
-<tr>
-  <td align="left" valign="top">
-  <strong>Name</strong>
-  </td>
-  <td align="left" valign="top">
-  <input type="TEXT" name="__ac_name" size="20" value="" tal:attributes="value python: request.get('__ac_name') or ''">
-  </td>
-</tr>
-<tr>
-  <td align="left" valign="top">
-  <strong>Password</strong>
-  </td>
-  <td align="left" valign="top">
-  <input type="PASSWORD" name="__ac_password" size="20">
-  </td>
-</tr>
-
-<tr valign="top" align="left">
-<td></td>
-<td><input type="checkbox" name="__ac_persistent" value="1" checked
-      id="cb_remember" />
-<label for="cb_remember">Remember my name.</label>
-</td></tr>
-
-<tr>
-  <td align="left" valign="top">
-  </td>
-  <td align="left" valign="top">
-  <input type="submit" name="submit" value=" Login ">
-  </td>
-</tr>
-
-</table>
-</form>
-
-<p><a href="" tal:attributes="href python: here.portal_url() + '/mail_password_form'">I forgot my password!</a></p>
-
-<p>
-Having trouble logging in? Make sure to enable cookies in your web browser.
-</p>
-
-<p>Don't forget to logout or exit your browser when you're done.
-</p>
-
-<p>
-Setting the 'Remember my name' option will set a cookie with your username,
-so that when you next log in, your user name will already be filled in for you.
-</p>
-</div>
-</div>
-</body>
-</html>
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      metal:use-macro="here/main_template/macros/master">
+<body>
+<div metal:fill-slot="main">
+<div class="Desktop">
+<h1 class="Desktop">Log in</h1>
+
+<form action="" method="post" tal:attributes="action python: here.portal_url() + '/logged_in'">
+
+<!-- ****** Enable the automatic redirect ***** -->
+<span tal:condition="exists: request/came_from">
+  <input type="hidden" name="came_from" value="" tal:attributes="value request/came_from">
+</span>
+<!-- ****** Enable the automatic redirect ***** -->
+
+<table class="FormLayout">
+<tr>
+  <td align="left" valign="top">
+  <strong>Name</strong>
+  </td>
+  <td align="left" valign="top">
+  <input type="TEXT" name="__ac_name" size="20" value="" tal:attributes="value python: request.get('__ac_name') or ''">
+  </td>
+</tr>
+<tr>
+  <td align="left" valign="top">
+  <strong>Password</strong>
+  </td>
+  <td align="left" valign="top">
+  <input type="PASSWORD" name="__ac_password" size="20">
+  </td>
+</tr>
+
+<tr valign="top" align="left">
+<td></td>
+<td><input type="checkbox" name="__ac_persistent" value="1" checked
+      id="cb_remember" />
+<label for="cb_remember">Remember my name.</label>
+</td></tr>
+
+<tr>
+  <td align="left" valign="top">
+  </td>
+  <td align="left" valign="top">
+  <input type="submit" name="submit" value=" Login ">
+  </td>
+</tr>
+
+</table>
+</form>
+
+<p><a href="" tal:attributes="href python: here.portal_url() + '/mail_password_form'">I forgot my password!</a></p>
+
+<p>
+Having trouble logging in? Make sure to enable cookies in your web browser.
+</p>
+
+<p>Don't forget to logout or exit your browser when you're done.
+</p>
+
+<p>
+Setting the 'Remember my name' option will set a cookie with your username,
+so that when you next log in, your user name will already be filled in for you.
+</p>
+</div>
+</div>
+</body>
+</html>


=== Products/CMFDecor/skins/zpt_generic/mail_password_form.pt 1.1 => 1.2 ===
-      xmlns:metal="http://xml.zope.org/namespaces/metal"
-      metal:use-macro="here/main_template/macros/master">
-<body>
-<div metal:fill-slot="main">
-<div class="Desktop">
-
-<h1> Don't panic!</h1>
-
-<p> Just enter your username below, click <em>Send</em>, and your password
- will be mailed to you if you gave a valid email address when you signed on.
-</p>
-
-<p> If this will not work for you (for example, if you forget your member
-    name or didn't enter your email address) send email to 
-	<a tal:attributes="href string:mailto:${here/portal_properties/email_from_address}"
-	   tal:content="here/portal_properties/email_from_address"
-	   href="mailto:me@here.com">me@here.com</a>.
-</p>
-
- <form action="mail_password">
-  <input name="userid">
-  <input type="submit" value=" Send ">
- </form>
-</div>
-</div>
-</body>
-</html>
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      metal:use-macro="here/main_template/macros/master">
+<body>
+<div metal:fill-slot="main">
+<div class="Desktop">
+
+<h1> Don't panic!</h1>
+
+<p> Just enter your username below, click <em>Send</em>, and your password
+ will be mailed to you if you gave a valid email address when you signed on.
+</p>
+
+<p> If this will not work for you (for example, if you forget your member
+    name or didn't enter your email address) send email to 
+	<a tal:attributes="href string:mailto:${here/portal_properties/email_from_address}"
+	   tal:content="here/portal_properties/email_from_address"
+	   href="mailto:me@here.com">me@here.com</a>.
+</p>
+
+ <form action="mail_password">
+  <input name="userid">
+  <input type="submit" value=" Send ">
+ </form>
+</div>
+</div>
+</body>
+</html>


=== Products/CMFDecor/skins/zpt_generic/mail_password_response.pt 1.1 => 1.2 ===
-      xmlns:metal="http://xml.zope.org/namespaces/metal"
-      metal:use-macro="here/main_template/macros/master">
-<body>
-<div metal:fill-slot="main">
-<p class="DesktopStatusBar">Your password has been mailed.  
-<br>
-It should arrive in your mailbox momentarily.</p>
-</div>
-</body>
-</html>
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      metal:use-macro="here/main_template/macros/master">
+<body>
+<div metal:fill-slot="main">
+<p class="DesktopStatusBar">Your password has been mailed.  
+<br>
+It should arrive in your mailbox momentarily.</p>
+</div>
+</body>
+</html>


=== Products/CMFDecor/skins/zpt_generic/main_template.pt 1.6 => 1.7 ===
- <head>
-  <title tal:define="ob_title here/Title; portal_title here/title" tal:content="string:${portal_title}: ${ob_title}">The title</title>
-  
-<link rel="stylesheet" href="zpt_stylesheet.css" type="text/css"
-      tal:attributes="href here/zpt_stylesheet/absolute_url">
-
-</head> <body> 
-<div metal:define-macro="top_bar">
- <!-- Top bar -->
- <table width="100%" border="0" cellpadding="0" cellspacing="0">
- <tr><td colspan="3" witdth="100%">
- <!-- hack around netscape 4.x to ensure top table is solid black -->
- <table class="Masthead" cellspacing="0" cellpadding="0" border="0" width="100%">
- <tr class="Masthead">
-
-            <form action="search" method="GET"
-       tal:define="portal_url here/portal_url"
-       tal:attributes="action string:${portal_url}/search">
-	          <td class="PortalLogo" align="left" valign="middle" width="7%" height="32"> 
-                <a href="." tal:attributes="href here/portal_url"><img src="../zpt_images/Zope_logo.gif" alt="Zope Logo" border="0" width="87" height="38"
-																																	 tal:attributes="src string:Zope_logo.gif"></a> 
-              </td>
-
-              <td class="PortalTitle" width="43%" align="left" valign="middle" height="32"> 
-                <span tal:define="portal_title here/title" tal:content="string:${portal_title}">Site 
-                Title</span> </td>
-
-              <td class="NavBar" align="right" valign="middle" width="50%" wrap="no" height="32" NOWRAP> 
-                <a href="." tal:attributes="href portal_url">home</a>&nbsp; <a href="roster"
-    tal:attributes="href string:${portal_url}/Members">members</a>&nbsp; <a href="recent_news"
-    tal:attributes="href string:${portal_url}/recent_news">news</a>&nbsp; <a href="search_form"
-    tal:attributes="href string:${portal_url}/search_form">search</a> 
-                <input name="SearchableText" size="16">
-                <input border="0" type="image" name="go" src="../../../CMFDefault/skins/Images/go.gif" align="middle" width="20" height="20"
-				       tal:attributes="src string:go.gif">
-                 &nbsp;
- </td>
-    </form>
- </tr>
- </table>
- </td></tr></table>
-</div>
-<table width="100%" border="0" cellpadding="0" cellspacing="0">
-<tr><td colspan="4">
-  <table width="100%" border="0" cellpadding="0" cellspacing="0" class="MemberActionBox">
-   <tr class="MemberActions"
-     tal:define="global isAnon python:here.portal_membership.isAnonymousUser();
-	 uname python: isAnon and 'Guest' or here.portal_membership.getAuthenticatedMember().getUserName();
-	 global actions python:here.portal_actions.listFilteredActionsFor(here);
-	 user_actions python:actions['user']">
-     <td class="ActionTitle"
-         tal:content="uname">
-         UserName
-     </td>
-	 <td class="MemberActionsList" align="right">
-   <span tal:repeat="action user_actions"><a href="" tal:attributes="href action/url" tal:content="action/name">Action List</a> | </span>
-  </td>
-  </tr>
-  </table>
-</td></tr>
-   <tr valign="top">
-   <td class="ActionBox" width="15%" align="left" valign="top" tal:condition="python: not isAnon">
-   <span metal:use-macro="here/actions_box/macros/actions">
-   <!--everything below here is replaced, just here for view of actions_box -->
-   <table class="ActionBox" width="100%">
- <tr class="AuthClass">
-          <td class="ActionTitle"> <img src="../../../CMFDefault/skins/Images/UpFolder_icon.gif" align="left" alt="Holder Image" width="16" height="16"> 
-            ObjectID </td>
- </tr>
- <tr class="AuthClass">
-  <td> 
-    Status:  Private<br>
-    <a href="">Object Action</a><br>
-  </td>
- </tr>
-  </table>
-  <!--end replacement -->
-   </span>
-   </td>
-   <td width="1%">&nbsp;</td>
-   <td class="Desktop" colspan="" width="84%" valign="top" tal:attributes="colspan python: not isAnon and '2' or '3'">
-   <table cellpadding="5">
-   <tr>
-   <td class="Desktop" width="100%" valign="top">
-   <p tal:condition="request/portal_status_message|nothing" tal:content="request/portal_status_message" class="DesktopStatusBar"></p>
-   <div metal:define-slot="main"/>
-   </td>
-   </tr>
-   </table>
-  </td>
-  </tr>
-  </table>
- </body>
-</html>
+<html metal:define-macro="master">
+ <head>
+  <title tal:define="ob_title here/Title; portal_title here/title" tal:content="string:${portal_title}: ${ob_title}">The title</title>
+  
+<link rel="stylesheet" href="zpt_stylesheet.css" type="text/css"
+      tal:attributes="href here/zpt_stylesheet/absolute_url">
+
+</head> <body> 
+<div metal:define-macro="top_bar">
+ <!-- Top bar -->
+ <table width="100%" border="0" cellpadding="0" cellspacing="0">
+ <tr><td colspan="3" witdth="100%">
+ <!-- hack around netscape 4.x to ensure top table is solid black -->
+ <table class="Masthead" cellspacing="0" cellpadding="0" border="0" width="100%">
+ <tr class="Masthead">
+
+            <form action="search" method="GET"
+       tal:define="portal_url here/portal_url"
+       tal:attributes="action string:${portal_url}/search">
+	          <td class="PortalLogo" align="left" valign="middle" width="7%" height="32"> 
+                <a href="." tal:attributes="href here/portal_url"><img src="../zpt_images/Zope_logo.gif" alt="Zope Logo" border="0" width="87" height="38"
+																																	 tal:attributes="src string:Zope_logo.gif"></a> 
+              </td>
+
+              <td class="PortalTitle" width="43%" align="left" valign="middle" height="32"> 
+                <span tal:define="portal_title here/title" tal:content="string:${portal_title}">Site 
+                Title</span> </td>
+
+              <td class="NavBar" align="right" valign="middle" width="50%" wrap="no" height="32" NOWRAP> 
+                <a href="." tal:attributes="href portal_url">home</a>&nbsp; <a href="roster"
+    tal:attributes="href string:${portal_url}/Members">members</a>&nbsp; <a href="recent_news"
+    tal:attributes="href string:${portal_url}/recent_news">news</a>&nbsp; <a href="search_form"
+    tal:attributes="href string:${portal_url}/search_form">search</a> 
+                <input name="SearchableText" size="16">
+                <input border="0" type="image" name="go" src="../../../CMFDefault/skins/Images/go.gif" align="middle" width="20" height="20"
+				       tal:attributes="src string:go.gif">
+                 &nbsp;
+ </td>
+    </form>
+ </tr>
+ </table>
+ </td></tr></table>
+</div>
+<table width="100%" border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="4">
+  <table width="100%" border="0" cellpadding="0" cellspacing="0" class="MemberActionBox">
+   <tr class="MemberActions"
+     tal:define="global isAnon python:here.portal_membership.isAnonymousUser();
+	 uname python: isAnon and 'Guest' or here.portal_membership.getAuthenticatedMember().getUserName();
+	 global actions python:here.portal_actions.listFilteredActionsFor(here);
+	 user_actions python:actions['user']">
+     <td class="ActionTitle"
+         tal:content="uname">
+         UserName
+     </td>
+	 <td class="MemberActionsList" align="right">
+   <span tal:repeat="action user_actions"><a href="" tal:attributes="href action/url" tal:content="action/name">Action List</a> | </span>
+  </td>
+  </tr>
+  </table>
+</td></tr>
+   <tr valign="top">
+   <td class="ActionBox" width="15%" align="left" valign="top" tal:condition="python: not isAnon">
+   <span metal:use-macro="here/actions_box/macros/actions">
+   <!--everything below here is replaced, just here for view of actions_box -->
+   <table class="ActionBox" width="100%">
+ <tr class="AuthClass">
+          <td class="ActionTitle"> <img src="../../../CMFDefault/skins/Images/UpFolder_icon.gif" align="left" alt="Holder Image" width="16" height="16"> 
+            ObjectID </td>
+ </tr>
+ <tr class="AuthClass">
+  <td> 
+    Status:  Private<br>
+    <a href="">Object Action</a><br>
+  </td>
+ </tr>
+  </table>
+  <!--end replacement -->
+   </span>
+   </td>
+   <td width="1%">&nbsp;</td>
+   <td class="Desktop" colspan="" width="84%" valign="top" tal:attributes="colspan python: not isAnon and '2' or '3'">
+   <table cellpadding="5">
+   <tr>
+   <td class="Desktop" width="100%" valign="top">
+   <p tal:condition="request/portal_status_message|nothing" tal:content="request/portal_status_message" class="DesktopStatusBar"></p>
+   <div metal:define-slot="main"/>
+   </td>
+   </tr>
+   </table>
+  </td>
+  </tr>
+  </table>
+ </body>
+</html>


=== Products/CMFDecor/skins/zpt_generic/metadata_help.pt 1.1 => 1.2 ===
-      xmlns:metal="http://xml.zope.org/namespaces/metal"
-      metal:use-macro="here/main_template/macros/master">
-<body>
-<div metal:fill-slot="main">
-
-<div class="Desktop">
-
-<h2> Dublin Core Metadata </h2>
-
-<table>
-
- <tr>
-  <td colspan="2" class="ListName"> <strong> <a name="Title"> Title </a>
-      </strong> </td>
- </tr>
- <tr>
-  <td>&nbsp;  </td>
-  <td class="ListDefinition"> the standard Zope 'title' attribute; we should look
-    at making it mandatory for all PortalContent derivatives.
-  </td>
- </tr>
-
- <tr>
-  <td colspan="2" class="ListName"> <strong> <a name="Creator"> Creator </a>
-      </strong> </td>
- </tr>
- <tr>
-  <td>&nbsp;  </td>
-  <td class="ListDefinition"> where possible, this should be one or more full
-    names, of either persons or organizations.  The current
-    implementation finds the first user in the list returned
-    by 'get_local_roles' who has the 'Owner' role;  userids are
-    not considered appropriate for this field by the DCI.
-  </td>
- </tr>
-
- <tr>
-  <td colspan="2" class="ListName"> <strong> <a name="Subject"> Subject </a>
-      </strong> </td>
- </tr>
- <tr>
-  <td>&nbsp;  </td>
-  <td class="ListDefinition"> this is supposed to be drawn from a controlled
-    list of keywords (e.g., selected from a multi-select list
-    used across the whole site)
-  </td>.
- </tr>
-
- <tr>
-  <td colspan="2" class="ListName"> <strong> <a name="Description"> Description </a>
-      </strong> </td>
- </tr>
- <tr>
-  <td>&nbsp;  </td>
-  <td class="ListDefinition"> a short summary, an abstract, or a
-    table-of-contents are all considered acceptable.  We might
-    look at making this required, as well, at least for some
-    kinds of content.
-  </td>
- </tr>
-
- <tr>
-  <td colspan="2" class="ListName"> <strong> <a name="Publisher"> Publisher </a>
-      </strong> </td>
- </tr>
- <tr>
-  <td>&nbsp;  </td>
-  <td class="ListDefinition"> a site-wide property, should be done through
-    acquisition (do I smell a 'portal_metadata' tool about to
-    appear?)  Again, this is supposed to be a formal name.
-  </td>
- </tr>
-
- <tr>
-  <td colspan="2" class="ListName"> <strong> <a name="Contributor"> Contributor </a>
-      </strong> </td>
- </tr>
- <tr>
-  <td>&nbsp;  </td>
-  <td class="ListDefinition"> used to convey others besides the Creator who
-    have contributed to the document (the current implementation
-    aliases 'Creator', which is not what DCI intends)
-  </td>.
- </tr>
-
- <tr>
-  <td colspan="2" class="ListName"> <strong> <a name="Date"> Date </a>
-      </strong> </td>
- </tr>
- <tr>
-  <td>&nbsp;  </td>
-  <td class="ListDefinition"> this one has modifiers, of which the approved set is:
-    'Created', 'Valid', 'Available', 'Issued', and 'Modified'.
-    I propose extending the interface to include CreationDate(),
-    EffectiveDate(), ExpirationDate(), and ModificationDate().
-    The current Date() could just return the CreationDate(), while
-    the DCI 'Valid' and 'Available' would be ranges derived from
-    EffectiveDate() and ExpirationDate(
-  </td>).
- </tr>
-
- <tr>
-  <td colspan="2" class="ListName"> <strong> <a name="Type"> Type </a>
-      </strong> </td>
- </tr>
- <tr>
-  <td>&nbsp;  </td>
-  <td class="ListDefinition"> like the Zope 'meta_type', this is the main conceptual
-    classification; 'meta_type' is often spelled identically to
-    the class, which makes it less appropriate for the DCI usage.
-  </td>
- </tr>
-
- <tr>
-  <td colspan="2" class="ListName"> <strong> <a name="Format"> Format </a>
-      </strong> </td>
- </tr>
- <tr>
-  <td>&nbsp;  </td>
-  <td class="ListDefinition"> the kind of physical representation, e.g., 'text/html'
-  </td>.
- </tr>
-
- <tr>
-  <td colspan="2" class="ListName"> <strong> <a name="Identifier"> Identifier </a>
-      </strong> </td>
- </tr>
- <tr>
-  <td>&nbsp;  </td>
-  <td class="ListDefinition"> should be the fully-qualified URL of the document
-    (the current implementation returns the object's id, which is
-    only required to be unique within its container)
-  </td>.
- </tr>
-
- <tr>
-  <td colspan="2" class="ListName"> <strong> <a name="Language"> Language </a>
-      </strong> </td>
- </tr>
- <tr>
-  <td>&nbsp;  </td>
-  <td class="ListDefinition"> 'en-us', 'pt-br', 'de', etc.  Should be set at
-    creation, with an appropriate default (and a picklist of
-    values)
-  </td>.
- </tr>
-
- <tr>
-  <td colspan="2" class="ListName"> <strong> <a name="Source"> Source </a>
-      </strong> </td>
- </tr>
- <tr>
-  <td>&nbsp;  </td>
-  <td class="ListDefinition"> the original from which a piece of content is
-    derived.  I'd like to ignore this one.
-  </td>
- </tr>
-
- <tr>
-  <td colspan="2" class="ListName"> <strong> <a name="Relation"> Relation </a>
-      </strong> </td>
- </tr>
- <tr>
-  <td>&nbsp;  </td>
-  <td class="ListDefinition"> more relationships to other documents.  Again,
-    I'd like to ignore it (ZopeStudio and other such tools need
-    this, however, to build site maps)
-  </td>.
- </tr>
-
- <tr>
-  <td colspan="2" class="ListName"> <strong> <a name="Coverage"> Coverage </a>
-      </strong> </td>
- </tr>
- <tr>
-  <td>&nbsp;  </td>
-  <td class="ListDefinition"> geographic/chronological/jurisdictional scope.
-    Again, ignore.
-  </td>
- </tr>
-
- <tr>
-  <td colspan="2" class="ListName"> <strong> <a name="Rights"> Rights </a>
-      </strong> </td>
- </tr>
- <tr>
-  <td>&nbsp;  </td>
-  <td class="ListDefinition"> copyright and other IP information related to the
-    document.  Most portals should care about this:  witness
-    the brouhaha on Slashdot over the compilation of the
-    Hellmouth postings into a book.
-  </td>
- </tr>
-
-</table>
-
-</div>
-</div>
-</body>
-</html>
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      metal:use-macro="here/main_template/macros/master">
+<body>
+<div metal:fill-slot="main">
+
+<div class="Desktop">
+
+<h2> Dublin Core Metadata </h2>
+
+<table>
+
+ <tr>
+  <td colspan="2" class="ListName"> <strong> <a name="Title"> Title </a>
+      </strong> </td>
+ </tr>
+ <tr>
+  <td>&nbsp;  </td>
+  <td class="ListDefinition"> the standard Zope 'title' attribute; we should look
+    at making it mandatory for all PortalContent derivatives.
+  </td>
+ </tr>
+
+ <tr>
+  <td colspan="2" class="ListName"> <strong> <a name="Creator"> Creator </a>
+      </strong> </td>
+ </tr>
+ <tr>
+  <td>&nbsp;  </td>
+  <td class="ListDefinition"> where possible, this should be one or more full
+    names, of either persons or organizations.  The current
+    implementation finds the first user in the list returned
+    by 'get_local_roles' who has the 'Owner' role;  userids are
+    not considered appropriate for this field by the DCI.
+  </td>
+ </tr>
+
+ <tr>
+  <td colspan="2" class="ListName"> <strong> <a name="Subject"> Subject </a>
+      </strong> </td>
+ </tr>
+ <tr>
+  <td>&nbsp;  </td>
+  <td class="ListDefinition"> this is supposed to be drawn from a controlled
+    list of keywords (e.g., selected from a multi-select list
+    used across the whole site)
+  </td>.
+ </tr>
+
+ <tr>
+  <td colspan="2" class="ListName"> <strong> <a name="Description"> Description </a>
+      </strong> </td>
+ </tr>
+ <tr>
+  <td>&nbsp;  </td>
+  <td class="ListDefinition"> a short summary, an abstract, or a
+    table-of-contents are all considered acceptable.  We might
+    look at making this required, as well, at least for some
+    kinds of content.
+  </td>
+ </tr>
+
+ <tr>
+  <td colspan="2" class="ListName"> <strong> <a name="Publisher"> Publisher </a>
+      </strong> </td>
+ </tr>
+ <tr>
+  <td>&nbsp;  </td>
+  <td class="ListDefinition"> a site-wide property, should be done through
+    acquisition (do I smell a 'portal_metadata' tool about to
+    appear?)  Again, this is supposed to be a formal name.
+  </td>
+ </tr>
+
+ <tr>
+  <td colspan="2" class="ListName"> <strong> <a name="Contributor"> Contributor </a>
+      </strong> </td>
+ </tr>
+ <tr>
+  <td>&nbsp;  </td>
+  <td class="ListDefinition"> used to convey others besides the Creator who
+    have contributed to the document (the current implementation
+    aliases 'Creator', which is not what DCI intends)
+  </td>.
+ </tr>
+
+ <tr>
+  <td colspan="2" class="ListName"> <strong> <a name="Date"> Date </a>
+      </strong> </td>
+ </tr>
+ <tr>
+  <td>&nbsp;  </td>
+  <td class="ListDefinition"> this one has modifiers, of which the approved set is:
+    'Created', 'Valid', 'Available', 'Issued', and 'Modified'.
+    I propose extending the interface to include CreationDate(),
+    EffectiveDate(), ExpirationDate(), and ModificationDate().
+    The current Date() could just return the CreationDate(), while
+    the DCI 'Valid' and 'Available' would be ranges derived from
+    EffectiveDate() and ExpirationDate(
+  </td>).
+ </tr>
+
+ <tr>
+  <td colspan="2" class="ListName"> <strong> <a name="Type"> Type </a>
+      </strong> </td>
+ </tr>
+ <tr>
+  <td>&nbsp;  </td>
+  <td class="ListDefinition"> like the Zope 'meta_type', this is the main conceptual
+    classification; 'meta_type' is often spelled identically to
+    the class, which makes it less appropriate for the DCI usage.
+  </td>
+ </tr>
+
+ <tr>
+  <td colspan="2" class="ListName"> <strong> <a name="Format"> Format </a>
+      </strong> </td>
+ </tr>
+ <tr>
+  <td>&nbsp;  </td>
+  <td class="ListDefinition"> the kind of physical representation, e.g., 'text/html'
+  </td>.
+ </tr>
+
+ <tr>
+  <td colspan="2" class="ListName"> <strong> <a name="Identifier"> Identifier </a>
+      </strong> </td>
+ </tr>
+ <tr>
+  <td>&nbsp;  </td>
+  <td class="ListDefinition"> should be the fully-qualified URL of the document
+    (the current implementation returns the object's id, which is
+    only required to be unique within its container)
+  </td>.
+ </tr>
+
+ <tr>
+  <td colspan="2" class="ListName"> <strong> <a name="Language"> Language </a>
+      </strong> </td>
+ </tr>
+ <tr>
+  <td>&nbsp;  </td>
+  <td class="ListDefinition"> 'en-us', 'pt-br', 'de', etc.  Should be set at
+    creation, with an appropriate default (and a picklist of
+    values)
+  </td>.
+ </tr>
+
+ <tr>
+  <td colspan="2" class="ListName"> <strong> <a name="Source"> Source </a>
+      </strong> </td>
+ </tr>
+ <tr>
+  <td>&nbsp;  </td>
+  <td class="ListDefinition"> the original from which a piece of content is
+    derived.  I'd like to ignore this one.
+  </td>
+ </tr>
+
+ <tr>
+  <td colspan="2" class="ListName"> <strong> <a name="Relation"> Relation </a>
+      </strong> </td>
+ </tr>
+ <tr>
+  <td>&nbsp;  </td>
+  <td class="ListDefinition"> more relationships to other documents.  Again,
+    I'd like to ignore it (ZopeStudio and other such tools need
+    this, however, to build site maps)
+  </td>.
+ </tr>
+
+ <tr>
+  <td colspan="2" class="ListName"> <strong> <a name="Coverage"> Coverage </a>
+      </strong> </td>
+ </tr>
+ <tr>
+  <td>&nbsp;  </td>
+  <td class="ListDefinition"> geographic/chronological/jurisdictional scope.
+    Again, ignore.
+  </td>
+ </tr>
+
+ <tr>
+  <td colspan="2" class="ListName"> <strong> <a name="Rights"> Rights </a>
+      </strong> </td>
+ </tr>
+ <tr>
+  <td>&nbsp;  </td>
+  <td class="ListDefinition"> copyright and other IP information related to the
+    document.  Most portals should care about this:  witness
+    the brouhaha on Slashdot over the compilation of the
+    Hellmouth postings into a book.
+  </td>
+ </tr>
+
+</table>
+
+</div>
+</div>
+</body>
+</html>


=== Products/CMFDecor/skins/zpt_generic/news_box.pt 1.2 => 1.3 ===
- <tbody tal:define="news python: here.portal_catalog(meta_type='News Item', sort_on='Date', sort_order='reverse', review_state='published');
-         Batch python:modules['ZTUtils'].Batch;
-		 global batch python:Batch(news, 10, 0, orphan=1)">
-  <tr>
-   <td class="NewsBorder" width="1" rowspan="13" bgcolor="#6699CC">
-    <img src="spacer.gif" alt=" "
-         width="1" height="2" border="0">
-   </td>
-   <td valign="top" class="NewsTitle" width="100%">
-     <b>News</b>
-   </td>
-  </tr>
-  <tr class="NewsItemRow"
-      tal:condition="news"
-	  tal:repeat="news batch">
-   <td valign="top" nowrap>
-    <a href=""
-	   tal:attributes="href python:news.getURL()"
-	   tal:content="news/Title"></a><br>
-    <span tal:replace="news/Date">Date</span>
-   </td>
-  </tr>
-  <tr class="NewsItemRow"
-      tal:condition="python:not(news)">
-   <td valign="top">
-     No news is no news.
-   </td>
-  </tr>
-  <tr class="NewsItemRow">
-   <td>
-     <a href="recent_news">More...</a>
-   </td>
-  </tr>
-</tbody>
- </table>
+ <table class="NewsItems" cellspacing="0" cellpadding="0" border="0" width="100%">
+ <tbody tal:define="news python: here.portal_catalog(meta_type='News Item', sort_on='Date', sort_order='reverse', review_state='published');
+         Batch python:modules['ZTUtils'].Batch;
+		 global batch python:Batch(news, 10, 0, orphan=1)">
+  <tr>
+   <td class="NewsBorder" width="1" rowspan="13" bgcolor="#6699CC">
+    <img src="spacer.gif" alt=" "
+         width="1" height="2" border="0">
+   </td>
+   <td valign="top" class="NewsTitle" width="100%">
+     <b>News</b>
+   </td>
+  </tr>
+  <tr class="NewsItemRow"
+      tal:condition="news"
+	  tal:repeat="news batch">
+   <td valign="top" nowrap>
+    <a href=""
+	   tal:attributes="href python:news.getURL()"
+	   tal:content="news/Title"></a><br>
+    <span tal:replace="news/Date">Date</span>
+   </td>
+  </tr>
+  <tr class="NewsItemRow"
+      tal:condition="python:not(news)">
+   <td valign="top">
+     No news is no news.
+   </td>
+  </tr>
+  <tr class="NewsItemRow">
+   <td>
+     <a href="recent_news">More...</a>
+   </td>
+  </tr>
+</tbody>
+ </table>


=== Products/CMFDecor/skins/zpt_generic/password_form.pt 1.1 => 1.2 ===
-      xmlns:metal="http://xml.zope.org/namespaces/metal"
-      metal:use-macro="here/main_template/macros/master">
-<body>
-<div metal:fill-slot="main">
-  <div tal:define="member python: here.portal_membership.getAuthenticatedMember()">
-<div class="Desktop">
-
-<h1> Change your Password </h1>
-<div class="error"
-     tal:replace="request/error"
-     tal:condition="request/error|nothing"><hr></div>
-
-<form action="change_password" method="post">
-<table class="FormLayout">
- <tr>
-  <th>Username
-  </th>
-  <td><span tal:replace="member">You</span>
-  </td>
- </tr>
- <tr>
-  <th>New password
-  </th>
-  <td><input type="password" name="password">
-  </td>
- </tr>
- <tr>
-  <th>Confirm new password
-  </th>
-  <td><input type="password" name="confirm">
-  </td>
- </tr>
- <tr>
-  <th>Domains
-  </th>
-  <td>
-    <input type="text" name="domains:tokens" value=""><br>
-    <em> If you do not know what this field is for, leave it blank. </em>
-  </td>
- </tr>
- <tr>
-  <td><br></td>
-  <td><input type="submit" value=" Change ">
-  </td>
- </tr>
-</table>
-</form>
-
-</div>
-</div>
-
-</div>
-</body>
-</html>
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      metal:use-macro="here/main_template/macros/master">
+<body>
+<div metal:fill-slot="main">
+  <div tal:define="member python: here.portal_membership.getAuthenticatedMember()">
+<div class="Desktop">
+
+<h1> Change your Password </h1>
+<div class="error"
+     tal:replace="request/error"
+     tal:condition="request/error|nothing"><hr></div>
+
+<form action="change_password" method="post">
+<table class="FormLayout">
+ <tr>
+  <th>Username
+  </th>
+  <td><span tal:replace="member">You</span>
+  </td>
+ </tr>
+ <tr>
+  <th>New password
+  </th>
+  <td><input type="password" name="password">
+  </td>
+ </tr>
+ <tr>
+  <th>Confirm new password
+  </th>
+  <td><input type="password" name="confirm">
+  </td>
+ </tr>
+ <tr>
+  <th>Domains
+  </th>
+  <td>
+    <input type="text" name="domains:tokens" value=""><br>
+    <em> If you do not know what this field is for, leave it blank. </em>
+  </td>
+ </tr>
+ <tr>
+  <td><br></td>
+  <td><input type="submit" value=" Change ">
+  </td>
+ </tr>
+</table>
+</form>
+
+</div>
+</div>
+
+</div>
+</body>
+</html>


=== Products/CMFDecor/skins/zpt_generic/personalize_form.pt 1.1 => 1.2 ===
-      xmlns:metal="http://xml.zope.org/namespaces/metal"
-      metal:use-macro="here/main_template/macros/master">
-<body>
-<div metal:fill-slot="main">
-  <div tal:define="member python: here.portal_membership.getAuthenticatedMember()">
-
-
-<div class="Desktop">
-
-<h1> Member Preferences </h1>
-<span tal:replace="request/msg"
-   tal:condition="request/msg|nothing"><hr></span>
-   
-<p><a href="password_form">Click here</a> to change your password.</p>
-
-<form action="personalize" method="post">
- <table class="FormLayout">
-  <tr>
-   <th>Email address</th>
-   <td><input type="text" name="email" value=""
-              tal:attributes="value member/email">
-   </td>
-  </tr>
-  <tr>
-   <th valign="top">Listed status</th>
-   <td>
-     <input type="radio" name="listed" 
-	        tal:attributes="checked member/listed"
-            value="on" id="cb_listed" />
-     <label for="cb_listed">Listed</label>
-
-     <dl class="FieldHelp">
-       <dd>You will show up on the public membership roster.</dd>
-     </dl>
-
-     <input type="radio" name="listed" 
-	        tal:attributes="checked python: not(member.listed)"
-            value="" id="cb_unlisted" />
-	<label for="cb_unlisted">Unlisted</label>
-     <dl class="FieldHelp">
-       <dd> You will <i>not</i> show up on the public membership roster.
-            Your Member folder will still be publicly accessible unless
-            you change its security settings.</dd>
-     </dl>
-   </td>
-  </tr>
-  <div tal:condition="here/portal_skins | nothing">
-   <tr>
-    <th>Skin</th>
-    <td>
-     <select name="portal_skin">
-        <option value=""
-		  tal:define="skins python: here.portal_skins.getSkinSelections()"
-		  tal:repeat="skin skins"
-		  tal:attributes="value skin; selected python: request.get('portal_skin', '') == skin"
-		  tal:content="skin">
-		</option>
-     </select>
-    </td>
-   </tr>
-  </div>
-  <tr>
-   <td></td>
-   <td><input type="submit" value=" Change "></td>
-  </tr>
- </table>
-</form>
-
-  </div>
-</div>
-</div>
-</body>
-</html>
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      metal:use-macro="here/main_template/macros/master">
+<body>
+<div metal:fill-slot="main">
+  <div tal:define="member python: here.portal_membership.getAuthenticatedMember()">
+
+
+<div class="Desktop">
+
+<h1> Member Preferences </h1>
+<span tal:replace="request/msg"
+   tal:condition="request/msg|nothing"><hr></span>
+   
+<p><a href="password_form">Click here</a> to change your password.</p>
+
+<form action="personalize" method="post">
+ <table class="FormLayout">
+  <tr>
+   <th>Email address</th>
+   <td><input type="text" name="email" value=""
+              tal:attributes="value member/email">
+   </td>
+  </tr>
+  <tr>
+   <th valign="top">Listed status</th>
+   <td>
+     <input type="radio" name="listed" 
+	        tal:attributes="checked member/listed"
+            value="on" id="cb_listed" />
+     <label for="cb_listed">Listed</label>
+
+     <dl class="FieldHelp">
+       <dd>You will show up on the public membership roster.</dd>
+     </dl>
+
+     <input type="radio" name="listed" 
+	        tal:attributes="checked python: not(member.listed)"
+            value="" id="cb_unlisted" />
+	<label for="cb_unlisted">Unlisted</label>
+     <dl class="FieldHelp">
+       <dd> You will <i>not</i> show up on the public membership roster.
+            Your Member folder will still be publicly accessible unless
+            you change its security settings.</dd>
+     </dl>
+   </td>
+  </tr>
+  <div tal:condition="here/portal_skins | nothing">
+   <tr>
+    <th>Skin</th>
+    <td>
+     <select name="portal_skin">
+        <option value=""
+		  tal:define="skins python: here.portal_skins.getSkinSelections()"
+		  tal:repeat="skin skins"
+		  tal:attributes="value skin; selected python: request.get('portal_skin', '') == skin"
+		  tal:content="skin">
+		</option>
+     </select>
+    </td>
+   </tr>
+  </div>
+  <tr>
+   <td></td>
+   <td><input type="submit" value=" Change "></td>
+  </tr>
+ </table>
+</form>
+
+  </div>
+</div>
+</div>
+</body>
+</html>


=== Products/CMFDecor/skins/zpt_generic/recent_news.pt 1.2 => 1.3 ===
-      xmlns:metal="http://xml.zope.org/namespaces/metal"
-      metal:use-macro="here/main_template/macros/master">
-<body>
-<div metal:fill-slot="main">
-  <div tal:define="b_start string:0;b_start request/b_start | b_start;
-       newsitems python: here.portal_catalog.searchResults(meta_type='News Item', sort_on='Date', sort_order='reverse', review_state='published');
-	   Batch python:modules['ZTUtils'].Batch;
-	   global batch python:Batch(newsitems, 10, int(b_start), orphan=1)">
-
- <p class="Desktop" 
-    tal:define="p batch/previous" tal:condition="p">
- <a href=""
-    tal:attributes="href string:?b_start=${p/first}"><span tal:replace="p/length">n</span> more recent articles</a>
- </p>
-
- <table cellspacing="0" border="0" width="90%"
-        tal:repeat="newsitems batch"
-		tal:condition="newsitems">
- <tr>
-  <td class="NewsListing" align="left" valign="top">
-      <a href=""
-	     tal:attributes="href newsitems/getURL"
-		 tal:content="newsitems/title">Title</a>
-  </td>
-  <td class="NewsListing" align="right" valign="top"
-      tal:content="newsitems/Date">Date
-  </td>
- </tr>
- <tr><td class="NewsByLine" valign="top" colspan="2" align="left">
-      By <span tal:replace="newsitems/Creator">Creator</span>
-  </td>
-  </tr>
- <tr>
-  <td colspan="2">
-    <em> <span tal:define="pss modules/Products.PythonScripts.standard; niDescription newsitems/Description"
-	           tal:replace="structure python:pss.structured_text(niDescription)">Description</span></em>
-  </td>
- </tr>
-  </table>
-<div tal:condition="python:not(newsitems)">
- <p class="Desktop">
-  No news is good news!
- </p>
-</div>
- <p class="Desktop" 
-    tal:define="n batch/next" tal:condition="n">
- <a href=""
-    tal:attributes="href string:?b_start=${batch/end}"><span tal:replace="n/length">n</span> older articles</a>
- </p>
-</div>
-</div>
-</body>
-</html>
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      metal:use-macro="here/main_template/macros/master">
+<body>
+<div metal:fill-slot="main">
+  <div tal:define="b_start string:0;b_start request/b_start | b_start;
+       newsitems python: here.portal_catalog.searchResults(meta_type='News Item', sort_on='Date', sort_order='reverse', review_state='published');
+	   Batch python:modules['ZTUtils'].Batch;
+	   global batch python:Batch(newsitems, 10, int(b_start), orphan=1)">
+
+ <p class="Desktop" 
+    tal:define="p batch/previous" tal:condition="p">
+ <a href=""
+    tal:attributes="href string:?b_start=${p/first}"><span tal:replace="p/length">n</span> more recent articles</a>
+ </p>
+
+ <table cellspacing="0" border="0" width="90%"
+        tal:repeat="newsitems batch"
+		tal:condition="newsitems">
+ <tr>
+  <td class="NewsListing" align="left" valign="top">
+      <a href=""
+	     tal:attributes="href newsitems/getURL"
+		 tal:content="newsitems/title">Title</a>
+  </td>
+  <td class="NewsListing" align="right" valign="top"
+      tal:content="newsitems/Date">Date
+  </td>
+ </tr>
+ <tr><td class="NewsByLine" valign="top" colspan="2" align="left">
+      By <span tal:replace="newsitems/Creator">Creator</span>
+  </td>
+  </tr>
+ <tr>
+  <td colspan="2">
+    <em> <span tal:define="pss modules/Products.PythonScripts.standard; niDescription newsitems/Description"
+	           tal:replace="structure python:pss.structured_text(niDescription)">Description</span></em>
+  </td>
+ </tr>
+  </table>
+<div tal:condition="python:not(newsitems)">
+ <p class="Desktop">
+  No news is good news!
+ </p>
+</div>
+ <p class="Desktop" 
+    tal:define="n batch/next" tal:condition="n">
+ <a href=""
+    tal:attributes="href string:?b_start=${batch/end}"><span tal:replace="n/length">n</span> older articles</a>
+ </p>
+</div>
+</div>
+</body>
+</html>


=== Products/CMFDecor/skins/zpt_generic/reconfig_form.pt 1.1 => 1.2 ===
-      xmlns:metal="http://xml.zope.org/namespaces/metal"
-      metal:use-macro="here/main_template/macros/master">
-<body>
-<div metal:fill-slot="main">
-
-<div class="Desktop">
-
-<h3> Configure the Portal </h3>
-
-<p> This form is used to set the portal configuration options.</p>
-
-<div tal:define="pprops here/portal_properties">
-
-<form action="" method="Post"
-      tal:attributes="action python:here.portal_url() + '/reconfig'">
- <table class="FormLayout">
-  <tr>
-   <th valign="top" align="left"> Portal 'From' name
-   </th>
-   <td>
-    <input name="email_from_name" value=""
-	       tal:attributes="value pprops/email_from_name">
-    <dl class="FieldHelp">
-     <dd> When the portal generates mail, it uses this name
-          as its (apparent) sender. </dd>
-    </dl>
-   </td>
-  </tr>
-  <tr>
-   <th valign="top" align="left"> Portal 'From' address
-   </th>
-   <td><input name="email_from_address" value=""
-              tal:attributes="value pprops/email_from_address">
-    <dl class="FieldHelp">
-     <dd> When the portal generates mail, it uses this address
-          as its (apparent) return address. </dd>
-    </dl>
-   </td>
-  </tr>
-  <tr>
-   <th valign="top" align="left"> SMTP server
-   </th>
-   <td>
-    <input name="smtp_server" value=""
-	       tal:attributes="value pprops/smtp_server">
-    <dl class="FieldHelp">
-     <dd> This is the address of your local SMTP (out-going
-          mail) server.</dd>
-    </dl>
-   </td>
-  </tr>
-  <tr>
-   <th valign="top" align="left"> Portal title
-   </th>
-   <td>
-    <input name="title" value=""
-	       tal:attributes="value pprops/title">
-    <dl class="FieldHelp">
-     <dd> This is the title which appears at the top of every
-          portal page.</dd>
-    </dl>
-  </td>
-  </tr>
-  <tr>
-   <th valign="top" align="left"> Portal description
-   </th>
-   <td>
-     <textarea cols="40" rows="6" name="description"
-        style="width: 100%" wrap="soft"
-		tal:content="pprops/description"></textarea>
-     <dl class="FieldHelp">
-      <dd> This description is made available via syndicated
-           content and elsewhere.  It should be fairly brief.</dd>
-     </dl>
-   </td>
-  </tr>
-  <tr>
-   <th valign="top" align="left"> Password policy
-   </th>
-   <td>
-    <input type=radio name="validate_email:int"
-           value="1" tal:attributes="checked pprops/validate_email">
-           Generate and email members' initial password<br>
-    <input type=radio name="validate_email:int" value="0" 
-	       tal:define="aec pprops/validate_email"
-           tal:attributes="checked python:not(aec)">
-           Allow members to select their initial password
-   </td>
-  </tr>
-  <tr>
-   <td></td>
-   <td colspan="2"><input type="Submit" value="Change"></td>
-  </tr>
- </table>
-</form>
-</div>
-</div>
-</div>
-</body>
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      metal:use-macro="here/main_template/macros/master">
+<body>
+<div metal:fill-slot="main">
+
+<div class="Desktop">
+
+<h3> Configure the Portal </h3>
+
+<p> This form is used to set the portal configuration options.</p>
+
+<div tal:define="pprops here/portal_properties">
+
+<form action="" method="Post"
+      tal:attributes="action python:here.portal_url() + '/reconfig'">
+ <table class="FormLayout">
+  <tr>
+   <th valign="top" align="left"> Portal 'From' name
+   </th>
+   <td>
+    <input name="email_from_name" value=""
+	       tal:attributes="value pprops/email_from_name">
+    <dl class="FieldHelp">
+     <dd> When the portal generates mail, it uses this name
+          as its (apparent) sender. </dd>
+    </dl>
+   </td>
+  </tr>
+  <tr>
+   <th valign="top" align="left"> Portal 'From' address
+   </th>
+   <td><input name="email_from_address" value=""
+              tal:attributes="value pprops/email_from_address">
+    <dl class="FieldHelp">
+     <dd> When the portal generates mail, it uses this address
+          as its (apparent) return address. </dd>
+    </dl>
+   </td>
+  </tr>
+  <tr>
+   <th valign="top" align="left"> SMTP server
+   </th>
+   <td>
+    <input name="smtp_server" value=""
+	       tal:attributes="value pprops/smtp_server">
+    <dl class="FieldHelp">
+     <dd> This is the address of your local SMTP (out-going
+          mail) server.</dd>
+    </dl>
+   </td>
+  </tr>
+  <tr>
+   <th valign="top" align="left"> Portal title
+   </th>
+   <td>
+    <input name="title" value=""
+	       tal:attributes="value pprops/title">
+    <dl class="FieldHelp">
+     <dd> This is the title which appears at the top of every
+          portal page.</dd>
+    </dl>
+  </td>
+  </tr>
+  <tr>
+   <th valign="top" align="left"> Portal description
+   </th>
+   <td>
+     <textarea cols="40" rows="6" name="description"
+        style="width: 100%" wrap="soft"
+		tal:content="pprops/description"></textarea>
+     <dl class="FieldHelp">
+      <dd> This description is made available via syndicated
+           content and elsewhere.  It should be fairly brief.</dd>
+     </dl>
+   </td>
+  </tr>
+  <tr>
+   <th valign="top" align="left"> Password policy
+   </th>
+   <td>
+    <input type=radio name="validate_email:int"
+           value="1" tal:attributes="checked pprops/validate_email">
+           Generate and email members' initial password<br>
+    <input type=radio name="validate_email:int" value="0" 
+	       tal:define="aec pprops/validate_email"
+           tal:attributes="checked python:not(aec)">
+           Allow members to select their initial password
+   </td>
+  </tr>
+  <tr>
+   <td></td>
+   <td colspan="2"><input type="Submit" value="Change"></td>
+  </tr>
+ </table>
+</form>
+</div>
+</div>
+</div>
+</body>
 </html>


=== Products/CMFDecor/skins/zpt_generic/registered.pt 1.1 => 1.2 ===
-      xmlns:metal="http://xml.zope.org/namespaces/metal"
-      metal:use-macro="here/main_template/macros/master">
-<body>
-<div metal:fill-slot="main">
-
-<div class="Desktop"
-     tal:define="pprops here/portal_properties; ve pprops/validate_email">
-
-<h1> Success! </h1>
-
-<p> You have been registered as a member. </p>
-
-<p tal:condition="ve"> You will receive an email shortly containing your password 
-    and instructions on how to activate your membership. </p>
-
-<p tal:condition="python:not(ve)"> You can log on immediately by clicking
-    <a href=""
-	   tal:define="pss modules/Products.PythonScripts.standard; uname request/username; username python:pss.url_quote(uname); pword request/password; password python:pss.url_quote(pword)"
-	   tal:attributes="href python: here.portal_url() + '/logged_in?__ac_name=' + username + '&__ac_password=' + password">here</a>.  
-</p>
-
-<p> 
-<a href="" tal:attributes="href python:here.portal_url() + '/index_html'">Return to homepage</a> 
-</p>
-</div>
-</div>
-</body>
-</html>
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      metal:use-macro="here/main_template/macros/master">
+<body>
+<div metal:fill-slot="main">
+
+<div class="Desktop"
+     tal:define="pprops here/portal_properties; ve pprops/validate_email">
+
+<h1> Success! </h1>
+
+<p> You have been registered as a member. </p>
+
+<p tal:condition="ve"> You will receive an email shortly containing your password 
+    and instructions on how to activate your membership. </p>
+
+<p tal:condition="python:not(ve)"> You can log on immediately by clicking
+    <a href=""
+	   tal:define="pss modules/Products.PythonScripts.standard; uname request/username; username python:pss.url_quote(uname); pword request/password; password python:pss.url_quote(pword)"
+	   tal:attributes="href python: here.portal_url() + '/logged_in?__ac_name=' + username + '&__ac_password=' + password">here</a>.  
+</p>
+
+<p> 
+<a href="" tal:attributes="href python:here.portal_url() + '/index_html'">Return to homepage</a> 
+</p>
+</div>
+</div>
+</body>
+</html>


=== Products/CMFDecor/skins/zpt_generic/roster.pt 1.1 => 1.2 ===
-      xmlns:metal="http://xml.zope.org/namespaces/metal"
-      metal:use-macro="here/main_template/macros/master">
-<body>
-<div metal:fill-slot="main">
-
-<div tal:condition="python:not(request.has_key('bs'))"
-     tal:define="dummy python:request.set('bs', '25')"></div>
-
-<div class="Desktop">
-
-<h3> Portal Members </h3>
-
-<table class="SearchResults">
- <tr>
-  <td width="16"> <br>
-  </td>
-  <th>Member</th>
-   <th tal:condition="python: here.portal_membership.checkPermission('Manage_users', here.Members)">Listed?</th>
- </tr>
-<div tal:define="b_start string:0;b_start request/b_start | b_start;
-       members python: here.portal_membership.getRoster();
-	   Batch python:modules['ZTUtils'].Batch;
-	   global batch python:Batch(members, 25, int(b_start), orphan=1)">
-<tr tal:repeat="members batch">
-     
- <td> <br> </td>
-  <td tal:define="id members/id; homeUrl python: here.portal_membership.getHomeUrl(id, verifyPermission=1)">
-         <a href="www.here.com"
-			tal:condition="homeUrl"
-	    	tal:attributes="href homeUrl"
-   			tal:content="id">ID</a>
-       <span tal:condition="not:homeUrl"
-	         tal:replace="id">ID</span>
-  </td>
-  <td tal:condition="python: here.portal_membership.checkPermission( 'Manage_users', here.Members )"
-      tal:define="listed members/listed">
-   <span tal:replace="python: listed and 'Yes' or 'No'">Yes...Or No</span>
-  </td>
-</tr>
-
-<tr>
-  <td> <br> </td>
-  <td>
-  <span tal:define="p batch/previous" tal:condition="p">
-    <a href=""
-       tal:attributes="href string:?b_start=${p/first}">Previous <span tal:replace="p/length">p</span> Members</a>
-   </span>
-   <span tal:define="n batch/next" tal:condition="n">
-      <a href=""
-         tal:attributes="href string:?b_start=${batch/end}">Next <span tal:replace="n/length">n</span> Members</a>
-   </span>
-  </td>
-</tr>
-</div>
-</table>
-</div>
-</div>
-</body>
-</html>
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      metal:use-macro="here/main_template/macros/master">
+<body>
+<div metal:fill-slot="main">
+
+<div tal:condition="python:not(request.has_key('bs'))"
+     tal:define="dummy python:request.set('bs', '25')"></div>
+
+<div class="Desktop">
+
+<h3> Portal Members </h3>
+
+<table class="SearchResults">
+ <tr>
+  <td width="16"> <br>
+  </td>
+  <th>Member</th>
+   <th tal:condition="python: here.portal_membership.checkPermission('Manage_users', here.Members)">Listed?</th>
+ </tr>
+<div tal:define="b_start string:0;b_start request/b_start | b_start;
+       members python: here.portal_membership.getRoster();
+	   Batch python:modules['ZTUtils'].Batch;
+	   global batch python:Batch(members, 25, int(b_start), orphan=1)">
+<tr tal:repeat="members batch">
+     
+ <td> <br> </td>
+  <td tal:define="id members/id; homeUrl python: here.portal_membership.getHomeUrl(id, verifyPermission=1)">
+         <a href="www.here.com"
+			tal:condition="homeUrl"
+	    	tal:attributes="href homeUrl"
+   			tal:content="id">ID</a>
+       <span tal:condition="not:homeUrl"
+	         tal:replace="id">ID</span>
+  </td>
+  <td tal:condition="python: here.portal_membership.checkPermission( 'Manage_users', here.Members )"
+      tal:define="listed members/listed">
+   <span tal:replace="python: listed and 'Yes' or 'No'">Yes...Or No</span>
+  </td>
+</tr>
+
+<tr>
+  <td> <br> </td>
+  <td>
+  <span tal:define="p batch/previous" tal:condition="p">
+    <a href=""
+       tal:attributes="href string:?b_start=${p/first}">Previous <span tal:replace="p/length">p</span> Members</a>
+   </span>
+   <span tal:define="n batch/next" tal:condition="n">
+      <a href=""
+         tal:attributes="href string:?b_start=${batch/end}">Next <span tal:replace="n/length">n</span> Members</a>
+   </span>
+  </td>
+</tr>
+</div>
+</table>
+</div>
+</div>
+</body>
+</html>


=== Products/CMFDecor/skins/zpt_generic/rssDisabled.pt 1.1 => 1.2 ===
-      xmlns:metal="http://xml.zope.org/namespaces/metal"
-      metal:use-macro="here/main_template/macros/master">
-<body>
-<div metal:fill-slot="main">
-<div class="Desktop">
-<h2 tal:content="here/getId">Document Title</h2>
-<div tal:condition="request/portal_status_message | nothing"
-     tal:content="request/portal_status_message"
-	 class="error"></div>
-</div>
-</div>
-</body>
-</html>
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      metal:use-macro="here/main_template/macros/master">
+<body>
+<div metal:fill-slot="main">
+<div class="Desktop">
+<h2 tal:content="here/getId">Document Title</h2>
+<div tal:condition="request/portal_status_message | nothing"
+     tal:content="request/portal_status_message"
+	 class="error"></div>
+</div>
+</div>
+</body>
+</html>


=== Products/CMFDecor/skins/zpt_generic/search.pt 1.5 => 1.6 ===
-      xmlns:metal="http://xml.zope.org/namespaces/metal"
-      metal:use-macro="here/main_template/macros/master">
-<body>
-<div metal:fill-slot="main">
-<div class="Desktop">
-
-<h3> Search Results </h3>
-
-<div tal:define="b_start string:0;b_start request/b_start | b_start;
-       results here/portal_catalog;
-	   Batch python:modules['ZTUtils'].Batch;
-	   global batch python:Batch(results, 25, int(b_start), orphan=1)">
-    <p>Found <span tal:define="pss modules/Products.PythonScripts.standard"
-               tal:replace="python:pss.thousands_commas(len(results))">100</span> items 
-		 <span tal:condition="exists: request/SearchableText|nothing"
-		       tal:replace="string:matching ${request/SearchableText}"></span>.
-    </p>
-<table class="SearchResults">
- <tr>
-  <td width="16"><br></td>
-  <th> Title
-  </th>
-  <th> Type
-  </th>
-  <th> Date
-  </th>
-  </tr>
-<tbody tal:repeat="results batch"
-    tal:condition="results">
-  <tr>
-  <td tal:define="global objURL python: results.getURL() + '/view'">
-   <span tal:condition="results/getIcon|nothing">
-     <a href="" tal:attributes="href objURL"><img src="" border="0" alt="" title=""
-	                                              tal:define="alt results/Type"
-	                                              tal:attributes="src results/getIcon; alt alt; title alt">
-	 </a>
-    </span>
-  </td>
-  <td>
-     <a href="" tal:attributes="href objURL"><span tal:condition="results/Title" 
-                                                 tal:content="results/Title">Title</span><span tal:condition="not:results/Title" tal:content="string:(No title)"></span></a>
-  </td>
-  <td><span tal:content="results/Type">Type</span></td>
-  <td tal:content="results/Date">Date</td>
-</tr>
-<tr>
-  <td>&nbsp;</td>
-  <td colspan="3">
-  <em><span tal:condition="results/Description"
-            tal:content="results/Description">Description</span>
-	  <span tal:condition="not:results/Description"
-	        tal:content="string:(No description)"></span></em>
-  </td>
-</tr>
-</tbody>
-  </table>
-<div tal:condition="not:results"
-     tal:replace="string:There are no items matching your specified criteria"></div>
-
- <p class="Desktop">
- <span tal:define="p batch/previous" tal:condition="p">
-   <a href=""
-    tal:attributes="href string:?b_start=${p/first}&SearchableText=${request/SearchableText}">Previous <span tal:replace="p/length">n</span> items</a>
- </span>&nbsp;&nbsp;
- <span tal:define="n batch/next" tal:condition="n">
-   <a href=""
-      tal:attributes="href string:?b_start=${batch/end}&SearchableText=${request/SearchableText}">Next <span tal:replace="n/length">n</span> items</a>
- </span> 
- </p>
-</div>
-</div>
-</div>
-</body>
-</html>
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      metal:use-macro="here/main_template/macros/master">
+<body>
+<div metal:fill-slot="main">
+<div class="Desktop">
+
+<h3> Search Results </h3>
+
+<div tal:define="b_start string:0;b_start request/b_start | b_start;
+                 results here/portal_catalog;
+	             Batch python:modules['ZTUtils'].Batch;
+	             global batch python:Batch(results, 25, int(b_start), orphan=1);
+                ">
+    <p>Found <span tal:define="pss modules/Products.PythonScripts.standard"
+               tal:replace="python:pss.thousands_commas(len(results))">100</span> items 
+		 <span tal:condition="exists: request/SearchableText"
+		       tal:replace="string:matching ${request/SearchableText}"></span>.
+    </p>
+<table class="SearchResults">
+ <tr>
+  <td width="16"><br></td>
+  <th> Title
+  </th>
+  <th> Type
+  </th>
+  <th> Date
+  </th>
+  </tr>
+<tbody tal:repeat="results batch"
+    tal:condition="results">
+  <tr>
+  <td tal:define="global objURL python: results.getURL() + '/view'">
+   <span tal:condition="results/getIcon|nothing">
+     <a href="" tal:attributes="href objURL"><img src="" border="0" alt="" title=""
+	                                              tal:define="alt results/Type"
+	                                              tal:attributes="src results/getIcon; alt alt; title alt">
+	 </a>
+    </span>
+  </td>
+  <td>
+     <a href="" tal:attributes="href objURL"><span tal:condition="results/Title" 
+                                                 tal:content="results/Title">Title</span><span tal:condition="not:results/Title" tal:content="string:(No title)"></span></a>
+  </td>
+  <td><span tal:content="results/Type">Type</span></td>
+  <td tal:content="results/Date">Date</td>
+</tr>
+<tr>
+  <td>&nbsp;</td>
+  <td colspan="3">
+  <em><span tal:condition="results/Description"
+            tal:content="results/Description">Description</span>
+	  <span tal:condition="not:results/Description"
+	        tal:content="string:(No description)"></span></em>
+  </td>
+</tr>
+</tbody>
+  </table>
+<div tal:condition="not:results"
+     tal:replace="string:There are no items matching your specified criteria"></div>
+
+ <p class="Desktop">
+ <span tal:define="p batch/previous" tal:condition="p">
+   <a href=""
+      tal:attributes="href python: here.searchQueryString( b_start=p.first )"
+   >Previous <span tal:replace="p/length">n</span> items</a>
+ </span>&nbsp;&nbsp;
+ <span tal:define="n batch/next" tal:condition="n">
+   <a href=""
+      tal:attributes="href python: here.searchQueryString( b_start=n.first )"
+   >Next <span tal:replace="n/length">n</span> items</a>
+ </span> 
+ </p>
+</div>
+</div>
+</div>
+</body>
+</html>


=== Products/CMFDecor/skins/zpt_generic/search_form.pt 1.2 => 1.3 ===
-      xmlns:metal="http://xml.zope.org/namespaces/metal"
-      metal:use-macro="here/main_template/macros/master">
-<body>
-<div metal:fill-slot="main">
-
-<div class="Desktop">
-
-<h1>Search <span tal:replace="here/Title" /></h1>
-
-<form action="search">
-
-<table class="FormLayout">
-
-
- <tr tal:condition="python: here.portal_membership.checkPermission('Review portal content', here)">
-  <th> Review Status
-  </th>
-  <td>
-   <select name="review_state" size="3" multiple>
-    <option>private</option>
-    <option>pending</option>
-    <option>published</option>
-   </select>
-   <dl class="FieldHelp">
-    <dd> As a reviewer, you may search for items based on their
-         review state.  If you wish to constrain results to items
-         in certain states, select them from this list.
-    </dd>
-   </dl>
-  </td>
- </tr>
- 
- <tr valign="top">
-  <th> Full Text
-  </th>
-  <td>
-    <input name="SearchableText" size="40">
-   <dl class="FieldHelp">
-    <dd> For a simple text search, enter your search term
-         here.  Multiple words may be found by combining
-         them with <b>AND</b> and <b>OR</b>.  This will
-         find text in items' contents, title and
-         description.
-    </dd>
-   </dl>
-  </td>
- </tr>
-
- <tr>
-  <th>Title
-  </th>
-  <td>
-   <input name="Title" size="20">
-  </td>
- </tr>
-
- <tr valign="top">
-  <th>Subject</th>
-  <td><select name="Subject:list" multiple>
-     <option value=""
-		   tal:define="items python: here.portal_catalog.uniqueValuesFor('Subject')"
-		   tal:repeat="item items"
-		   tal:attributes="value item"
-		   tal:content="item">
-      </option>
-    </select>
-  </td>
- </tr>
-
- <tr>
-  <th> Description
-  </th>
-  <td>
-   <input name="Description" size="20">
-   <dl class="FieldHelp">
-    <dd> You may also search the items' descriptions and
-         titles specifically.  Multiple words may be found
-         by combining them with <b>AND</b> and <b>OR</b>.
-    </dd>
-   </dl>
-  </td>
- </tr>
-
- <tr>
-  <th> Find new items since...
-  </th>
-  <td>
-   <select name="created:date"
-           tal:define="today python: here.ZopeTime().earliestTime()">
-    <option value=""
-	        tal:condition="python:not(here.portal_membership.isAnonymousUser())"
-			tal:define="member python:here.portal_membership.getAuthenticatedMember(); lastLogin exists: member/last_login_time"
-			tal:attributes="value lastLogin">Last login</option>
-    <option value=""
-	        tal:define="yesterday python:(today-1).Date()"
-			tal:attributes="value yesterday">Yesterday</option>
-    <option value=""
-	        tal:define="lastWeek python:(today-7).Date()"
-			tal:attributes="value lastWeek">Last week</option>
-    <option value=""
-	        tal:define="lastMth python:(today-31).Date()"
-			tal:attributes="value lastMth">Last month</option>
-    <option value="1970/01/01 00:00:00 GMT">Ever</option>
-   </select>
-   <input type="hidden" name="created_usage" value="range:min">
-   <dl class="FieldHelp">
-    <dd> You may find only recent items by selecting a time-frame.
-    </dd>
-   </dl>
-  </td>
- </tr>
-
- <tr>
-  <th> Item type
-  </th>
-  <td>
-  <select name="Type:list" multiple size="5">
-     <option value=""
-		   tal:define="items python: here.portal_types.listContentTypes()"
-		   tal:repeat="item items"
-		   tal:attributes="value item"
-		   tal:content="item">
-      </option>
-    </select> 
-   <dl class="FieldHelp">
-    <dd> You may limit your results to particular kinds of
-         items by selecting them above.  To find all kinds
-         of items, do not select anything.
-    </dd>
-   </dl>
-  </td>
- </tr>
-
- <tr>
-  <th> Creator
-  </th>
-  <td>
-   <input name="Creator" size="20">
-
-   <dl class="FieldHelp">
-    <dd> To find items by a particular user only, enter
-         their username above.  Note that you must enter
-         their username <i>exactly</i>.
-    </dd>
-   </dl>
-  </td>
- </tr>
-
- <tr>
-  <td><br></td>
-  <td>
-    <input type="submit" value="Search">
-  </td>
- </tr>
-</table>
-</form>
-
-</div>
-</div>
-</body>
-</html>
-
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      metal:use-macro="here/main_template/macros/master">
+<body>
+<div metal:fill-slot="main">
+
+<div class="Desktop">
+
+<h1>Search <span tal:replace="here/Title" /></h1>
+
+<form action="search">
+
+<table class="FormLayout">
+
+
+ <tr tal:condition="python: here.portal_membership.checkPermission('Review portal content', here)">
+  <th> Review Status
+  </th>
+  <td>
+   <select name="review_state" size="3" multiple>
+    <option>private</option>
+    <option>pending</option>
+    <option>published</option>
+   </select>
+   <dl class="FieldHelp">
+    <dd> As a reviewer, you may search for items based on their
+         review state.  If you wish to constrain results to items
+         in certain states, select them from this list.
+    </dd>
+   </dl>
+  </td>
+ </tr>
+ 
+ <tr valign="top">
+  <th> Full Text
+  </th>
+  <td>
+    <input name="SearchableText" size="40">
+   <dl class="FieldHelp">
+    <dd> For a simple text search, enter your search term
+         here.  Multiple words may be found by combining
+         them with <b>AND</b> and <b>OR</b>.  This will
+         find text in items' contents, title and
+         description.
+    </dd>
+   </dl>
+  </td>
+ </tr>
+
+ <tr>
+  <th>Title
+  </th>
+  <td>
+   <input name="Title" size="20">
+  </td>
+ </tr>
+
+ <tr valign="top">
+  <th>Subject</th>
+  <td><select name="Subject:list" multiple>
+     <option value=""
+		   tal:define="items python: here.portal_catalog.uniqueValuesFor('Subject')"
+		   tal:repeat="item items"
+		   tal:attributes="value item"
+		   tal:content="item">
+      </option>
+    </select>
+  </td>
+ </tr>
+
+ <tr>
+  <th> Description
+  </th>
+  <td>
+   <input name="Description" size="20">
+   <dl class="FieldHelp">
+    <dd> You may also search the items' descriptions and
+         titles specifically.  Multiple words may be found
+         by combining them with <b>AND</b> and <b>OR</b>.
+    </dd>
+   </dl>
+  </td>
+ </tr>
+
+ <tr>
+  <th> Find new items since...
+  </th>
+  <td>
+   <select name="created:date"
+           tal:define="today python: here.ZopeTime().earliestTime()">
+    <option value=""
+	        tal:condition="python:not(here.portal_membership.isAnonymousUser())"
+			tal:define="member python:here.portal_membership.getAuthenticatedMember(); lastLogin exists: member/last_login_time"
+			tal:attributes="value lastLogin">Last login</option>
+    <option value=""
+	        tal:define="yesterday python:(today-1).Date()"
+			tal:attributes="value yesterday">Yesterday</option>
+    <option value=""
+	        tal:define="lastWeek python:(today-7).Date()"
+			tal:attributes="value lastWeek">Last week</option>
+    <option value=""
+	        tal:define="lastMth python:(today-31).Date()"
+			tal:attributes="value lastMth">Last month</option>
+    <option value="1970/01/01 00:00:00 GMT">Ever</option>
+   </select>
+   <input type="hidden" name="created_usage" value="range:min">
+   <dl class="FieldHelp">
+    <dd> You may find only recent items by selecting a time-frame.
+    </dd>
+   </dl>
+  </td>
+ </tr>
+
+ <tr>
+  <th> Item type
+  </th>
+  <td>
+  <select name="Type:list" multiple size="5">
+     <option value=""
+		   tal:define="items python: here.portal_types.listContentTypes()"
+		   tal:repeat="item items"
+		   tal:attributes="value item"
+		   tal:content="item">
+      </option>
+    </select> 
+   <dl class="FieldHelp">
+    <dd> You may limit your results to particular kinds of
+         items by selecting them above.  To find all kinds
+         of items, do not select anything.
+    </dd>
+   </dl>
+  </td>
+ </tr>
+
+ <tr>
+  <th> Creator
+  </th>
+  <td>
+   <input name="Creator" size="20">
+
+   <dl class="FieldHelp">
+    <dd> To find items by a particular user only, enter
+         their username above.  Note that you must enter
+         their username <i>exactly</i>.
+    </dd>
+   </dl>
+  </td>
+ </tr>
+
+ <tr>
+  <td><br></td>
+  <td>
+    <input type="submit" value="Search">
+  </td>
+ </tr>
+</table>
+</form>
+
+</div>
+</div>
+</body>
+</html>
+


=== Products/CMFDecor/skins/zpt_generic/simple_metadata.pt 1.1 => 1.2 ===
-      xmlns:metal="http://xml.zope.org/namespaces/metal"
-      metal:use-macro="here/main_template/macros/master">
-<body>
-<div metal:fill-slot="main">
-
-<div class="Desktop">
-
-<dtml-if message>
- <p>&dtml-message;</p>
- <hr>
-</dtml-if>
-
-
-<div class="Metadata">
-
-<h2>Resource Metadata </h2>
-
-<div tal:define="effectiveString python:here.effective_date and here.effective_date.ISO() or 'None';
-                 expirationString python: here.expiration_date and here.expiration_date.ISO() or 'None'">
-
-<form action="editMetadata" method="post">
-<table class="FormLayout">
- <tr valign="top">
-  <th align="right">
-    <a href=""
-	   tal:attributes="href python:here.portal_url() + '/metadata_help#Identifier'">Identifier</a>
-  </th>
-  <td colspan="3"
-      tal:content="here/Identifier">Identifier
-  </td>
- </tr>
- <tr valign="top">
-  <th align="right">
-    <a href=""
-	   tal:attributes="href python: here.portal_url() + '/metadata_help#Title'">Title</a>
-  </th>
-  <td colspan="3">
-   <input type="text"
-          name="title"
-          value=""
-		  size="65"
-		  tal:attributes="value here/Title">
-  </td>
- </tr>
- <tr valign="top">
-  <th align="right">
-    <a href=""
-	   tal:attributes="href python: here.portal_url() + '/metadata_help#Description'">Description</a>
-  </th>
-  <td colspan="3">
-   <textarea name="description:text" rows="5"
-             cols="65"
-			 tal:content="here/Description">Description</textarea>
-  </td>
- </tr>
- <tr valign="top">
-  <th align="right">
-    <a href=""
-	   tal:attributes="href python: here.portal_url() + '/metadata_help#Subject'">Subject</a>
-  </th>
-  <td>
-  <textarea name="subject:lines" rows="5"
-               cols="30"
-			   tal:define="lines here/Subject"><span tal:repeat="line lines" tal:replace="line"></span></textarea>
-  </td>
- </tr>
- <tr valign="top">
-  <th align="right">
-    <a href=""
-	   tal:attributes="href python: here.portal_url() + '/metadata_help#Creation Date'">Created</a>
-  </th>
-  <td tal:content="here/CreationDate">CreationDate
-  </td>
-  <th align="right">
-    <a href=""
-	   tal:attributes="href python: here.portal_url() + '/metadata_help#ModifiedDate'">Modified</a>
-  </th>
-  <td tal:content="here/ModificationDate">ModificationDate
-  </td>
- </tr>
- <tr valign="top">
-  <th align="right">
-    <a href=""
-	   tal:attributes="tal:attributes="href python: here.portal_url() + '/metadata_help#EffectiveDate'">Effective</a>
-  </th>
-  <td> <input type="text" name="effective_date"
-                          value=""
-						  tal:attributes="value effectiveString">
-  </td>
-  <th align="right">
-    <a href=""
-	   tal:attributes="tal:attributes="href python: here.portal_url() + '/metadata_help#ExpirationDate'"> Expires </a>
-  </th>
-  <td> <input type="text" name="expiration_date"
-                          value=""
-						  tal:attributes="value expirationString">
-  </td>
- </tr>
- <tr valign="top">
-  <td> <br> </td>
-  <td>
-   <input type="submit" value=" Change ">
-  </td>
- </tr>
-</table>
-</form>
-</div>
-
-</div>
-
-</div>
-</div>
-</body>
-</html>
-
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      metal:use-macro="here/main_template/macros/master">
+<body>
+<div metal:fill-slot="main">
+
+<div class="Desktop">
+
+<dtml-if message>
+ <p>&dtml-message;</p>
+ <hr>
+</dtml-if>
+
+
+<div class="Metadata">
+
+<h2>Resource Metadata </h2>
+
+<div tal:define="effectiveString python:here.effective_date and here.effective_date.ISO() or 'None';
+                 expirationString python: here.expiration_date and here.expiration_date.ISO() or 'None'">
+
+<form action="editMetadata" method="post">
+<table class="FormLayout">
+ <tr valign="top">
+  <th align="right">
+    <a href=""
+	   tal:attributes="href python:here.portal_url() + '/metadata_help#Identifier'">Identifier</a>
+  </th>
+  <td colspan="3"
+      tal:content="here/Identifier">Identifier
+  </td>
+ </tr>
+ <tr valign="top">
+  <th align="right">
+    <a href=""
+	   tal:attributes="href python: here.portal_url() + '/metadata_help#Title'">Title</a>
+  </th>
+  <td colspan="3">
+   <input type="text"
+          name="title"
+          value=""
+		  size="65"
+		  tal:attributes="value here/Title">
+  </td>
+ </tr>
+ <tr valign="top">
+  <th align="right">
+    <a href=""
+	   tal:attributes="href python: here.portal_url() + '/metadata_help#Description'">Description</a>
+  </th>
+  <td colspan="3">
+   <textarea name="description:text" rows="5"
+             cols="65"
+			 tal:content="here/Description">Description</textarea>
+  </td>
+ </tr>
+ <tr valign="top">
+  <th align="right">
+    <a href=""
+	   tal:attributes="href python: here.portal_url() + '/metadata_help#Subject'">Subject</a>
+  </th>
+  <td>
+  <textarea name="subject:lines" rows="5"
+               cols="30"
+			   tal:define="lines here/Subject"><span tal:repeat="line lines" tal:replace="line"></span></textarea>
+  </td>
+ </tr>
+ <tr valign="top">
+  <th align="right">
+    <a href=""
+	   tal:attributes="href python: here.portal_url() + '/metadata_help#Creation Date'">Created</a>
+  </th>
+  <td tal:content="here/CreationDate">CreationDate
+  </td>
+  <th align="right">
+    <a href=""
+	   tal:attributes="href python: here.portal_url() + '/metadata_help#ModifiedDate'">Modified</a>
+  </th>
+  <td tal:content="here/ModificationDate">ModificationDate
+  </td>
+ </tr>
+ <tr valign="top">
+  <th align="right">
+    <a href=""
+	   tal:attributes="tal:attributes="href python: here.portal_url() + '/metadata_help#EffectiveDate'">Effective</a>
+  </th>
+  <td> <input type="text" name="effective_date"
+                          value=""
+						  tal:attributes="value effectiveString">
+  </td>
+  <th align="right">
+    <a href=""
+	   tal:attributes="tal:attributes="href python: here.portal_url() + '/metadata_help#ExpirationDate'"> Expires </a>
+  </th>
+  <td> <input type="text" name="expiration_date"
+                          value=""
+						  tal:attributes="value expirationString">
+  </td>
+ </tr>
+ <tr valign="top">
+  <td> <br> </td>
+  <td>
+   <input type="submit" value=" Change ">
+  </td>
+ </tr>
+</table>
+</form>
+</div>
+
+</div>
+
+</div>
+</div>
+</body>
+</html>
+


=== Products/CMFDecor/skins/zpt_generic/talkback_tree.pt 1.1 => 1.2 ===
-  <head>
-    <title tal:content="template/title">The title</title>
-  </head>
-  <body tal:define="t python:here.setup_talkback_tree(here); height t/root/height">
-    <table cellspacing="0" border="0">
-    <tr tal:repeat="row t/rows">
-      
-	 
-	  <td tal:define="indent python:row.depth - 1"
-          tal:condition="indent"
-          tal:attributes="colspan indent" colspan="1"></td>
-      <td width="16" tal:define="rlink row/branch">
-        <a tal:condition="rlink"
-           tal:attributes="name row/id;href rlink/link"
-           tal:content="structure rlink/img" href name><img src="/p_/pl"></a>
-      </td>
-      <td tal:attributes="colspan python:height-row.depth"
-          tal:define="obj nocall:row/object;url python:obj.absolute_url()"
-          colspan="1" width="99%">
-  <a tal:attributes="href url">
-    <img tal:attributes="src python:obj.portal_url() + '/' + obj.getIcon()"
-         border="0" src="" /></a> 
-<a tal:attributes="href url"
-     tal:content="obj/Title" href="">Title</a>, by <span tal:replace="obj/Creator">Me</span> on <span tal:replace="obj/CreationDate">Today</span>
-      </td>
-    </tr>
-    </table>
-  </body>
-</html>
+<html>
+  <head>
+    <title tal:content="template/title">The title</title>
+  </head>
+  <body tal:define="t python:here.setup_talkback_tree(here); height t/root/height">
+    <table cellspacing="0" border="0">
+    <tr tal:repeat="row t/rows">
+      
+	 
+	  <td tal:define="indent python:row.depth - 1"
+          tal:condition="indent"
+          tal:attributes="colspan indent" colspan="1"></td>
+      <td width="16" tal:define="rlink row/branch">
+        <a tal:condition="rlink"
+           tal:attributes="name row/id;href rlink/link"
+           tal:content="structure rlink/img" href name><img src="/p_/pl"></a>
+      </td>
+      <td tal:attributes="colspan python:height-row.depth"
+          tal:define="obj nocall:row/object;url python:obj.absolute_url()"
+          colspan="1" width="99%">
+  <a tal:attributes="href url">
+    <img tal:attributes="src python:obj.portal_url() + '/' + obj.getIcon()"
+         border="0" src="" /></a> 
+<a tal:attributes="href url"
+     tal:content="obj/Title" href="">Title</a>, by <span tal:replace="obj/Creator">Me</span> on <span tal:replace="obj/CreationDate">Today</span>
+      </td>
+    </tr>
+    </table>
+  </body>
+</html>