[CMF-checkins] CVS: CMF/CMFDefault/skins/zpt_generic - actions_box.pt:1.2 breadcrumbs.py:1.2 content_byline.pt:1.2 discussion_reply_form.pt:1.2 discussion_reply_preview.pt:1.2 expanded_title.py:1.2 folder_add.pt:1.2 folder_contents.pt:1.2 folder_factories.pt:1.2 folder_filter_form.pt:1.2 folder_localrole_form.pt:1.2 folder_rename_form.pt:1.2 index_html.pt:1.2 join_form.pt:1.2 logged_in.pt:1.2 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.2 metadata_help.pt:1.2 news_box.pt:1.2 password_form.pt:1.2 personalize_form.pt:1.2 recent_news.pt:1.2 reconfig_form.pt:1.2 registered.pt:1.2 review.pt:1.2 roster.pt:1.2 rssDisabled.pt:1.2 search.pt:1.2 search_form.pt:1.2 setup_talkback_tree.py:1.2 standard_error_message.pt:1.2 stxmethod_view.pt:1.2 talkback_tree.pt:1.2 unauthRedirect.py:1.2 undo_form.pt:1.2 viewThreadsAtBottom.pt:1.2 zpt_stylesheet.css:1.2

Tres Seaver tseaver@zope.com
Thu, 6 Dec 2001 17:43:44 -0500


Update of /cvs-repository/CMF/CMFDefault/skins/zpt_generic
In directory cvs.zope.org:/tmp/cvs-serv13447/CMFDefault/skins/zpt_generic

Added Files:
	actions_box.pt breadcrumbs.py content_byline.pt 
	discussion_reply_form.pt discussion_reply_preview.pt 
	expanded_title.py folder_add.pt folder_contents.pt 
	folder_factories.pt folder_filter_form.pt 
	folder_localrole_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 review.pt roster.pt rssDisabled.pt search.pt 
	search_form.pt setup_talkback_tree.py 
	standard_error_message.pt stxmethod_view.pt talkback_tree.pt 
	unauthRedirect.py undo_form.pt viewThreadsAtBottom.pt 
	zpt_stylesheet.css 
Log Message:
 - Recover from CVS weirdness in moving ZPT skins to CMFDefault.

=== CMF/CMFDefault/skins/zpt_generic/actions_box.pt 1.1 => 1.2 ===
+<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>
+


=== CMF/CMFDefault/skins/zpt_generic/breadcrumbs.py 1.1 => 1.2 ===
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=include_root=1
+##title=Return breadcrumbs
+##
+from string import join
+
+result = []
+portal_url = context.portal_url()
+
+if include_root:
+    result.append( { 'id'      : 'root'
+                   , 'title'   : context.portal_properties.title()
+                   , 'url'     : portal_url
+                   }
+                 )
+
+relative = context.portal_url.getRelativeContentPath( context )
+portal = context.portal_url.getPortalObject()
+
+for i in range( len( relative ) ):
+    now = relative[ :i+1 ]
+    obj = portal.restrictedTraverse( now )
+    if not now[ -1 ] == 'talkback':
+        result.append( { 'id'      : now[ -1 ]
+                       , 'title'   : obj.Title()
+                       , 'url'     : portal_url + '/' + join( now, '/' )
+                       }
+                    )
+
+return result


=== CMF/CMFDefault/skins/zpt_generic/content_byline.pt 1.1 => 1.2 ===
+     metal:define-macro="byline"
+     tal:define="creator here/Creator;
+                 home_url python: here.portal_membership.getHomeUrl(creator);
+                "
+>
+
+<p>
+   Created by <span tal:condition="home_url"
+     ><a href="." title="Here"
+         tal:attributes="href home_url;
+                         title creator;
+                        "
+         tal:content="creator">Creator</a>
+    </span><span tal:condition="not: home_url"
+                 tal:content="creator">Creator</span
+    >.  Last modified <span tal:content="here/ModificationDate"
+    >Today</span>.
+</p>
+
+</div>


=== CMF/CMFDefault/skins/zpt_generic/discussion_reply_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="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>
+
+


=== CMF/CMFDefault/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>
+
+


=== CMF/CMFDefault/skins/zpt_generic/expanded_title.py 1.1 => 1.2 ===
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=
+##title=Build title which includes site title
+##
+site_title = context.portal_url.getPortalObject().Title()
+page_title = context.Title()
+
+if page_title != site_title:
+   page_title = site_title + ": " + page_title
+
+return page_title


=== CMF/CMFDefault/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>
+


=== CMF/CMFDefault/skins/zpt_generic/folder_contents.pt 1.1 => 1.2 ===
+
+<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>
+			<span tal:condition="items/Title"
+			      tal:replace="python: '(' + items.Title() + ')'">(Title)</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>
+			<span tal:condition="items/Title" 
+			      tal:replace="python: '(' + items.Title() + ')'">(Title)</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:folder_contents?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:folder_contents?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>
+


=== CMF/CMFDefault/skins/zpt_generic/folder_factories.pt 1.1 => 1.2 ===
+      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>
+


=== CMF/CMFDefault/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>
+</form>


=== CMF/CMFDefault/skins/zpt_generic/folder_localrole_form.pt 1.1 => 1.2 ===
+<body>
+
+<div class="Desktop"
+     metal:fill-slot="main"
+     tal:define="searching python: request.get('role_submit', None );
+                 mtool here/portal_membership;
+                "
+>
+
+<div tal:condition="python: not searching">
+<!-- Search -->
+
+<h2>Assign local roles: Search Members</h2>
+
+<form method="post" action="folder_localrole_form">
+
+<table class="FormLayout">
+ <tr>
+  <th>Search by</th>
+  <td>
+    <select name="search_param">
+      <option value="username">User Name</option>
+      <option value="email">Email Address</option>
+    </select>
+  </td>
+ </tr>
+ <tr>
+   <th>Search Term</th>
+   <td><input type="text" name="search_term" size="30"></td>
+ </tr>
+ <tr>
+   <td><br /></td>
+   <td><input type="submit" name="role_submit" value=" Search "></td>
+ </tr>
+</table>
+
+</form>
+
+
+<!-- End search -->
+</div>
+ 
+<div tal:condition="searching"
+     tal:define="search_param python: request.get( 'search_param', '' );
+                 search_term  python: request.get( 'search_term', '' );
+                 found python:mtool.searchMembers( search_param=search_param
+                                                 , search_term=search_term
+                                                 );
+                "
+>
+<!-- Assignment -->
+ 
+<h2>Assign local roles: Search Results</h2>
+
+<div tal:condition="found">
+
+ <p>Select Member(s) and a role to assign:</p>
+
+ <form method="post" action="folder_localrole_edit">
+  <input type="hidden" name="change_type" value="add">
+
+  <table class="FormLayout">
+
+   <tr>
+    <td width="16"><br></td>
+    <th style="text-align:left;">User</th>
+    <th style="text-align:left;">Email address</th>
+   </tr>
+
+   <tr tal:repeat="member found">
+    <td width="16">
+     <input type="checkbox" name="member_ids:list" 
+            value=""
+            tal:attributes="value member/username">
+    </td>
+    <td tal:content="member/username"> Username 1 </td>
+    <td tal:content="member/email"> Email 1 </td>
+   </tr>
+
+   <tr tal:condition="nothing">
+    <td width="16">
+     <input type="checkbox" name="member_ids:list" value="">
+    </td>
+    <td> Username 2 </td>
+    <td> Email 2 </td>
+   </tr>
+
+   <tr>
+    <td colspan="3"><br></td>
+   </tr>
+
+   <tr>
+    <th colspan="2">Role to assign:</th>
+    <td>
+     <select name="member_role"
+             tal:define="roles python: mtool.getCandidateLocalRoles( here )">
+      <option tal:repeat="role roles"
+              tal:content="role"> Role1 </option>
+      <option tal:condition="nothing"> Role2 </option>
+      <option tal:condition="nothing"> Role3 </option>
+     </select>
+    </td>
+   </tr>
+
+   <tr>
+    <td colspan="3"><br></td>
+   </tr>
+
+   <tr>
+    <td width="16"><br></td>
+    <td colspan="2"><input type="submit" value=" Assign Roles "></td>
+   </tr>
+
+  </table>
+ </form>
+
+</div>
+
+<div tal:condition="python: not found">
+
+ <p> Sorry, no members matched your search. </p>
+
+</div>
+
+<!-- End assignment -->
+</div>
+
+<hr>
+
+<h2>Currently assigned local roles</h2>
+
+<p>These users currently have local roles assigned in this folder:</p>
+
+<form method="post" action="folder_localrole_edit">
+<input type="hidden" name="change_type" value="delete">
+<input type="hidden" name="member_role" value="">
+
+<table class="FormLayout" tal:define="lroles here/get_local_roles">
+ <tr>
+   <td width="16"><br></td>
+   <th style="text-align:left;">User</th>
+   <th style="text-align:left;">Role(s)</th>
+ </tr>
+
+ <tbody tal:repeat="role_tuple lroles">
+ <tr tal:define="user_name python: role_tuple[0];
+                 roles python: role_tuple[1];
+                 auth mtool/getAuthenticatedMember;
+                 auth_name auth/getUserName;
+                "
+ >
+  <td width="16">
+   <input type="checkbox" name="member_ids:list"
+          value="id"
+          tal:attributes="value user_name"
+          tal:condition="python: user_name != auth_name"
+   >
+   <br tal:condition="python: user_name == auth_name">
+  </td>
+  <td tal:content="user_name"> Username 1 </td>
+  <td tal:content="python: modules['string'].join( roles, ', ' )">
+   Role1, Role2
+  </td>
+ </tr>
+ </tbody>
+
+ <tr tal:condition="nothing">
+  <td width="16">
+   <input type="checkbox" name="member_ids:list" value="id">
+  </td>
+  <td> Username 2 </td>
+  <td> Role3 </td>
+ </tr>
+
+ <tr tal:condition="nothing">
+  <td width="16">
+   <br>
+  </td>
+  <td> Auth username </td>
+  <td> Role1, Role2, Role3 </td>
+ </tr>
+
+ <tr>
+  <td colspan="3"><br></td>
+ </tr>
+
+ <tr>
+   <td><br></td>
+   <td colspan="2"><input type="submit" value=" Delete "></td>
+ </tr>
+
+</table>
+</form>
+
+</div>
+
+</body>
+</html>


=== CMF/CMFDefault/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>
+


=== CMF/CMFDefault/skins/zpt_generic/index_html.pt 1.1 => 1.2 ===
+>
+<body>
+
+ <div metal:fill-slot="header"
+      tal:define="global has_local python: 'local_html' in here.objectIds()"
+ >
+
+  <div tal:condition="not: has_local">
+
+     <h1 id="DesktopTitle"
+         tal:content="here/Title">Document Title</h1>
+
+     <div id="DesktopDescription" tal:content="here/Description">
+         Document Description goes here.
+     </div>
+
+  </div>
+
+  <div tal:condition="has_local">
+
+   <div metal:use-macro="here/local_html/macros/header|default">
+     'local_html' body goes here.
+   </div>
+
+  </div>
+
+ </div><!-- header slot -->
+
+ <div metal:fill-slot="main"
+ >
+
+ <div tal:condition="not: has_local"
+      tal:define="auth_filter nocall: modules/ZTUtils/LazyFilter"
+ >
+
+  <div tal:define="raw_items python: here.contentValues(
+                                            filter={'Type':( 'Document'
+                                                           , 'Image'
+                                                           , 'File'
+                                                           , 'News Item'
+                                                           ) } );
+                   items python: auth_filter( raw_items, skip='' );
+                  ">
+  <div tal:condition="items">
+
+  <h4> Documents, Images, Files, and News Items </h4>
+
+  <ul>
+   <li tal:repeat="item items"> 
+    <a href="item_url" tal:attributes="href item/absolute_url"><img
+      align="middle" border="0"
+      tal:attributes="src   string:${item/portal_url}/${item/getIcon};
+                      alt   string:${item/Type};
+                      title string:${item/Type}"></a>
+    <a href="item_url" tal:attributes="href item/absolute_url"
+       tal:content="item/Title"> Title </a>
+     <blockquote tal:condition="exists: item/Description"
+                 tal:content="item/Description">
+       Description <!--fmt="structured-text'-->
+     </blockquote>
+   </li>
+  </ul>
+
+  </div>
+  </div>
+
+
+  <div tal:define="raw_items python: here.contentValues(
+                                            filter={'Type':( 'Link'
+                                                           , 'Favorite'
+                                                           , 'Topic'
+                                                           ) } );
+                   items python: auth_filter( raw_items, skip='' );
+                  ">
+  <div tal:condition="items">
+  <h4> Related Resources </h4>
+
+  <ul>
+   <li tal:repeat="item items"> 
+    <a href="item_url" tal:attributes="href item/absolute_url"><img
+      align="middle" border="0"
+      tal:attributes="src   string:${item/portal_url}/${item/getIcon};
+                      alt   string:${item/Type};
+                      title string:${item/Type}"></a>
+    <a href="item_url" tal:attributes="href item/absolute_url"
+       tal:content="item/Title"> Title </a>
+     <blockquote tal:condition="exists: item/Description"
+                 tal:content="item/Description">
+       Description <!--fmt="structured-text'-->
+     </blockquote>
+   </li>
+  </ul>
+
+  </div>
+  </div>
+
+
+  <div tal:define="items python: here.contentValues(
+                                            filter={'Type':( 'Folder', 'CMF Collector') } );
+                  ">
+  <div tal:condition="items">
+  <h4> Collectors and Folders </h4>
+
+  <ul>
+   <li tal:repeat="item items"> 
+    <a href="item_url" tal:attributes="href item/absolute_url"><img
+      align="middle" border="0"
+      tal:attributes="src   string:${item/portal_url}/${item/getIcon};
+                      alt   string:${item/Type};
+                      title string:${item/Type}"></a>
+    <a href="item_url" tal:attributes="href item/absolute_url"
+       tal:content="item/TitleOrId"> Title </a>
+     <blockquote tal:condition="exists: item/Description"
+                 tal:content="item/Description">
+       Description <!--fmt="structured-text'-->
+     </blockquote>
+   </li>
+  </ul>
+
+  </div>
+  </div>
+
+ </div><!-- not: has_local -->
+
+
+ <div tal:condition="has_local">
+
+   <div metal:use-macro="here/local_html/macros/body|default">
+     'local_html' body goes here.
+   </div>
+
+ </div>
+ </div><!-- main slot -->
+
+</body>
+</html>
+


=== CMF/CMFDefault/skins/zpt_generic/join_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>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>
+


=== CMF/CMFDefault/skins/zpt_generic/logged_in.pt 1.1 => 1.2 ===
+  <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">
+		      <div 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>
+
+


=== CMF/CMFDefault/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>


=== CMF/CMFDefault/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>
+


=== CMF/CMFDefault/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>
+


=== CMF/CMFDefault/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>
+


=== CMF/CMFDefault/skins/zpt_generic/main_template.pt 1.1 => 1.2 ===
+      tal:define="utool nocall:here/portal_url;
+                  mtool here/portal_membership;
+                  atool here/portal_actions;
+                  wtool here/portal_workflow;
+                  portal_object utool/getPortalObject;
+                  portal_title portal_object/Title;
+                  object_title here/Title;
+                  portal_url here/portal_url;
+                  member mtool/getAuthenticatedMember;
+                  isAnon mtool/isAnonymousUser;
+                  actions python: atool.listFilteredActionsFor( here );
+                  user_actions actions/user;
+                  object_actions actions/object;
+                  workflow_actions actions/workflow;
+                  folder_actions actions/folder;
+                  global_actions actions/global;
+                  wf_state python:wtool.getInfoFor(here,'review_state','');
+                 "
+>
+
+<head>
+ <title tal:content="here/expanded_title"> Title goes here </title>
+
+ <!-- Bug in ZPT Causes this to break-metal:block define-slot="base" / --> 
+ <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">
+
+ <!-- hack around netscape 4.x to ensure table is solid -->
+ <table width="100%" border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td>
+
+ <!-- Top bar -->
+ <table id="Masthead"
+        width="100%" cellpadding="0" cellspacing="0" border="0">
+
+  <tr>
+
+  <form action="search" method="GET"
+        tal:attributes="action string:${portal_url}/search">
+
+   <td id="PortalLogo">
+    <a href="." tal:attributes="href portal_url"
+    ><img src="Zope_logo.gif" alt="Zope Logo"
+          border="0" width="87" height="38"
+          tal:attributes="src string:${portal_url}/Zope_logo.gif"></a> 
+   </td>
+
+   <td id="PortalTitle">
+    <span tal:content="string:${portal_title}">Site Title</span>
+   </td>
+
+   <td id="NavBar">
+    <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" value="go" src="go.gif"
+           align="middle" width="20" height="20"
+           tal:attributes="src string:go.gif"> &nbsp;
+   </td>
+
+  </form>
+
+  </tr>
+
+ </table>
+ <!-- end topbar -->
+
+ </td>
+ </tr>
+ </table>
+ <!-- end NS4 hack -->
+
+<!-- end top_bar-->
+</div>
+
+<div metal:define-macro="user_menu_bar"
+     tal:define="uname python: isAnon and 'Guest' or member.getUserName()" >
+
+ <!-- hack around netscape 4.x to ensure table is solid -->
+ <table width="100%" border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td>
+
+ <!-- user_menu_bar -->
+ <table id="MemberActionsBox"
+        width="100%" border="0" cellpadding="0" cellspacing="0" >
+
+  <tr>
+
+    <td class="ActionTitle" tal:content="uname"> Guest </td>
+
+    <td class="ActionLink" align="right">
+      <span tal:repeat="action user_actions">
+       <a href="" tal:attributes="href action/url"
+                  tal:content="action/name">Login</a
+       ><span tal:condition="not: repeat/action/end">&nbsp;|&nbsp;</span>
+      </span>
+      <span tal:condition="nothing"><a href="join_form">Join</a></span>
+    </td>
+
+   </tr>
+
+ </table>
+ <!-- end user_menu_bar -->
+
+ </td>
+ </tr>
+ </table>
+ <!-- end NS4 hack -->
+
+<!-- end user_menu_bar div-->
+</div>
+
+<div id="main_body">
+
+
+ <table class="Forematter"
+        width="100%" border="0" cellpadding="0" cellspacing="0" >
+ <tr>
+ <td width="20%">
+  
+  <!-- actions box -->
+  <table class="ContextActionsBox"
+         width="100%"
+         style="float: left;"
+         metal:define-macro="actions_box">
+
+   <!-- object actions -->
+   <tr class="ContextActionsRow">
+
+    <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.truncID( here.getId(), size=15 )">
+
+     <img src="icon" align="left" title="Type" alt="[X]"
+          height="16" width="16"
+          tal:condition="icon"
+          tal:attributes="src string:${portal_url}/${icon};
+                          alt typ; " /> &nbsp;
+
+     <span tal:replace="structure objID">ID</span>
+    </td>
+   </tr>
+
+   <tr class="ContextActionsRow"
+       tal:condition="python: len( object_actions ) > 1"
+   >
+
+    <td class="ActionLink">
+
+     <span tal:repeat="action object_actions">
+      <a href=""
+         tal:attributes="href action/url"
+         tal:content="action/name">View</a><br>
+     </span>
+
+     <span tal:condition="nothing">
+      <a href="">Edit</a><br>
+     </span>
+
+     <span tal:condition="nothing">
+      <a href="">Metadata</a><br>
+     </span>
+
+    </td>
+   </tr>
+
+   <!-- workflow actions -->
+   <tr class="ContextActionsRow"
+       tal:condition="workflow_actions" >
+
+    <td class="ActionLink"> 
+
+      <span class="ObjectStatus">
+        Status:  <span tal:replace="wf_state">Private</span><br>
+      </span>
+
+      <span tal:repeat="action workflow_actions">
+       <a href="content_submit_form"
+          tal:attributes="href action/url"
+          tal:content="action/name">Submit</a><br>
+      </span>
+    </td>
+   </tr>
+
+   <!-- folder actions -->
+   <tr class="ContextActionsRow"
+       tal:condition="folder_actions"
+   >
+    <td class="ActionLink"> 
+      <span tal:repeat="action folder_actions">
+       <a href="../folder_contents"
+          tal:attributes="href action/url"
+          tal:content="action/name">Folder contents</a><br>
+      </span>
+    </td>
+   </tr>
+
+   <!-- global actions -->
+   <tr class="ContextActionsRow"
+       tal:condition="global_actions"
+   >
+    <td class="ActionLink">
+     <span tal:repeat="action global_actions">
+      <a href="undo_form"
+         tal:attributes="href action/url"
+         tal:content="action/name">Undo</a><br>
+     </span>
+    </td>
+   </tr>
+
+  </table>
+  <!-- end actions_box -->
+
+ </td>
+
+ <td width="2%">
+ <br>
+ </td>
+
+ <td id="ForematterCell" width="78%">
+
+  <p id="Breadcrumbs" style="padding-top: 5px">
+   <span tal:repeat="bc here/breadcrumbs"
+    ><a href="."
+        tal:attributes="href bc/url" tal:content="bc/id"
+     >ID</a><span tal:condition="not: repeat/bc/end">&nbsp;/&nbsp;</span>
+   </span>
+  </p>
+
+  <p id="DesktopStatusBar"
+     tal:condition="request/portal_status_message|nothing"
+     tal:content="request/portal_status_message"> Status message.</p>
+
+  <div metal:define-slot="header">
+
+    <h1 id="DesktopTitle"
+        tal:content="here/Title"> Page Title </h1>
+
+    <div id="DesktopDescription"
+        tal:content="here/Description">
+        Description of the resource goes here, perhaps even wrapping
+        lines;  this is to make it long enough to test.
+    </div>
+
+  </div>
+
+ <!-- end forematter -->
+
+ </td>
+ </tr>
+ </table>
+
+ <div id="Desktop">
+
+ <div metal:define-slot="main">
+
+ <h2> Section Header </h2>
+
+ <p> The content of the object is <a href="render">rendered</a> hre.
+     Lorem ipsum dolorem.  Nihil obstat imprimatur.  Semper ubi sub ubi.
+     Non illegitimi carborundum.  In vino veritas.  E pluribus unam.
+ </p>
+
+ <!-- end main slot -->
+ </div>
+
+ <!-- end Desktop -->
+ </div>
+
+</div>
+
+</body>
+</html>


=== CMF/CMFDefault/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>
+


=== CMF/CMFDefault/skins/zpt_generic/news_box.pt 1.1 => 1.2 ===
+ <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>
+


=== CMF/CMFDefault/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/getUserName">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>
+


=== CMF/CMFDefault/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 tal:condition="python: not(here.portal_membership.checkPermission( 'Set own properties'
+                                                                        , here))">
+    <span tal:define="red_str string: ${here/portal_url}/login_form?came_from=${here/absolute_url};
+                      redirect python: request.RESPONSE.redirect( red_str )"></span>
+  </div>
+
+
+<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|nothing">
+   </td>
+  </tr>
+  <tr>
+   <th valign="top">Listed status</th>
+   <td>
+     <input type="radio" name="listed" 
+	        tal:attributes="checked member/listed|nothing"
+            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: hasattr(member,'listed') and not(member.getProperty( '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>
+


=== CMF/CMFDefault/skins/zpt_generic/recent_news.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="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>
+


=== CMF/CMFDefault/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>


=== CMF/CMFDefault/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>
+


=== CMF/CMFDefault/skins/zpt_generic/review.pt 1.1 => 1.2 ===
+
+<body>
+
+<div metal:fill-slot="main">
+
+<div class="Desktop"
+     tal:define="results python: here.portal_catalog( review_state='pending' );
+                 Batch nocall: modules/ZTUtils/Batch;
+                 def_start string:0;
+                 bstart request/b_start | def_start;
+                 batch python: Batch( results, 25, int( bstart ), orphan=0 );
+                ">
+
+<div tal:condition="results">
+
+<h1> Items pending review </h1>
+
+<form action="/" method="GET"
+      tal:attributes="action here/portal_url"
+>
+
+<table class="SearchResults">
+ <tr>
+  <td width="16"><br></td>
+  <td width="16"><br></td>
+  <th> Title
+  </th>
+  <th> Type
+  </th>
+  <th> Date
+  </th>
+  </tr>
+
+  <tbody tal:repeat="item batch">
+  <tr tal:define="objURL string:${item/getURL}/view;
+                  objPath item/getPath;
+                  title item/Title;
+                 ">
+  <td>
+   <input type="checkbox" name="items:list"
+          tal:attributes="value objPath">
+  </td>
+  <td>
+   <span tal:condition="item/icon">
+   <a href="url"
+      tal:attributes="href objURL"
+   ><img border="0" src="icon" alt="Type" title="Type"
+         tal:attributes="src string:${here/portal_url}/${item/icon};
+                         alt item/Type|nothing;
+                         title item/Type|nothing;
+                        "></a>
+   </span>
+  </td>
+  <td>
+   <a href="url"
+      tal:attributes="href objURL"
+      tal:content="python: title or '(No title)'">Title</a>
+  </td>
+  <td>
+    <span tal:replace="item/Type" />
+  </td>
+  <td>
+    <span tal:replace="item/Date" />
+  </td>
+ </tr>
+
+ <tr tal:define="desc  item/Description">
+  <td>&nbsp;</td>
+  <td colspan="3"
+      tal:define="xdesc python: desc or '(No description)'"
+  >
+   <em><span tal:replace="python: xdesc[:100]">Description</span></em>
+  </td>
+ </tr>
+ </tbody>
+
+ <tr>
+  <td><br></td>
+ </tr>
+
+ <tr>
+  <td><br></td>
+  <td colspan="4">
+   <strong> Comment: </strong> <br>
+   <textarea name="comment:text" rows="3" cols="65" wrap="soft"></textarea>
+  </td>
+ </tr>
+ <tr>
+  <td><br></td>
+  <td colspan="4">
+   <input type="submit" name="publishItems:method" value="Publish">
+   <input type="submit" name="rejectItems:method" value="Reject">
+  </td>
+ </tr>
+  
+</table>
+
+</form>
+
+</div>
+
+
+<div tal:condition="python: not results">
+ <p> There are no items matching your specified criteria.  </p>
+</div>
+
+</div>
+
+</div>
+
+</body>
+</html>


=== CMF/CMFDefault/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"
+     metal:define-macro="roster"
+>
+
+<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>
+


=== CMF/CMFDefault/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>
+


=== CMF/CMFDefault/skins/zpt_generic/search.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> Search Results </h3>
+
+<div tal:define="b_start python:0;b_start request/b_start | b_start;
+                 results python:here.portal_catalog( REQUEST=request );
+	             Batch python:modules['ZTUtils'].Batch;
+	             global batch python:Batch(results, 25, 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" tal:define="mq python:modules['ZTUtils'].make_query">
+ <span tal:define="p batch/previous" tal:condition="p">
+   <a href=""
+      tal:attributes="href python: '?' + mq( request.form, 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: '?' + mq( request.form, b_start=n.first )"
+   >Next <span tal:replace="n/length">n</span> items</a>
+ </span> 
+ </p>
+</div>
+</div>
+</div>
+</body>
+</html>
+


=== CMF/CMFDefault/skins/zpt_generic/search_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>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 size="5">
+     <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="1970/01/01 00:00:00 GMT">Ever</option>
+	<option value=""
+	        tal:condition="python:not(here.portal_membership.isAnonymousUser())"
+			tal:define="member python:here.portal_membership.getAuthenticatedMember();
+                        lastLogin member/last_login_time|nothing"
+			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>
+   </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>
+
+
+


=== CMF/CMFDefault/skins/zpt_generic/setup_talkback_tree.py 1.1 => 1.2 ===
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=tree_root
+##title=Standard Tree
+##
+from ZTUtils import SimpleTreeMaker
+
+tm = SimpleTreeMaker('tb_tree')
+def getKids(object):
+    return object.talkback.getReplies()
+tm.setChildAccess(function=getKids)
+
+tree, rows = tm.cookieTree(tree_root)
+rows.pop(0)
+return {'root': tree, 'rows': rows}


=== CMF/CMFDefault/skins/zpt_generic/standard_error_message.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">
+ 
+
+<div tal:condition="options/error_message"
+     tal:content="structure options/error_message" />
+
+<div tal:condition="not: options/error_message">
+  <H2>Site Error</H2>
+
+  <P>An error was encountered while publishing this resource.
+  </P>
+  
+  <P>
+  <STRONG>Error Type: <span tal:replace="structure options/error_type" /></STRONG><BR>
+  <STRONG>Error Value: <span tal:replace="structure options/error_value" /></STRONG><BR> 
+  </P>
+ 
+  <HR NOSHADE>
+ 
+  <P>Troubleshooting Suggestions</P>
+
+  <UL>
+  <div tal:condition="python: options['error_type'] in ('KeyError','NameError')">
+  <LI>This resource may be trying to reference a
+  nonexistent object or variable <STRONG><span tal:replace="options/error_value" /></STRONG>.</LI>
+  </div>
+  <LI>The URL may be incorrect.</LI>
+  <LI>The parameters passed to this resource may be incorrect.</LI>
+  <LI>A resource that this resource relies on may be encountering
+      an error.</LI>
+  </UL>
+
+  <P>For more detailed information about the error, please
+  refer to the HTML source for this page.
+  </P>
+
+  <P>If the error persists please contact the site maintainer.
+  Thank you for your patience.
+  </P>
+
+</div>
+</div>
+</div>
+</body>
+</html>


=== CMF/CMFDefault/skins/zpt_generic/stxmethod_view.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">
+
+<p tal:replace="structure options/cooked">
+  STX goes here.
+</p>
+
+</div>
+
+</div>
+</body>
+</html>
+


=== CMF/CMFDefault/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>
+


=== CMF/CMFDefault/skins/zpt_generic/unauthRedirect.py 1.1 => 1.2 ===
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=
+##title=clear browser cookie
+##
+REQUEST=context.REQUEST
+REQUEST.RESPONSE.redirect( context.absolute_url())
+


=== CMF/CMFDefault/skins/zpt_generic/undo_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> Undo Transactions </h1>
+<div tal:define="transactions python: here.portal_undo.listUndoableTransactionsFor(here)">
+    <div tal:condition="transactions">
+        <FORM ACTION="undo" METHOD="POST">
+        <p>This application's transactional feature allows you to easily undo changes
+           made to the application's settings or data. You can revert the application
+           to a &quot;snapshot&quot; of it's state at a previous point in time. </p>
+        <P>Select one or more transactions below and then click on the &quot;Undo&quot;
+           button to undo the transactions.  Note that even though a transaction
+           is shown below, you will not be able to undo it if later transactions
+           modified objects that were modified by the transaction. </p>
+       <table class="FormLayout">
+         <tr><td colspan=2 align=center><INPUT TYPE="SUBMIT" VALUE=" Undo ">
+           </td></tr>
+         <tr><td></td></tr>
+         <tbody tal:condition="request/first_transaction">
+           <tr><td colspan=2 align=center>
+            <a href=""
+               tal:attributes="href python:here.portal_url() + '/undo_form?first_transaction:int=' + 
+                               str(request.first_transaction*2-request.last_transaction) +
+                               '&last_transaction:int=' +
+                               str(request.first_transaction) + 
+                               '&PrincipiaUndoBatchSize:int=' +
+                               str(request.PrincipiaUndoBatchSize)">Later Transactions</a>
+           </td></tr>
+         </tbody>
+    <tbody tal:repeat="items transactions">
+      <tr>
+      <td valign=top><input type=checkbox name="transaction_info:list"
+	  value=""
+          tal:attributes="value items/id">
+      </td>
+      <td valign=top>
+	  <strong><span tal:replace="items/description" /></strong> by <strong>
+          <span tal:condition="items/user_name|nothing">
+	     <span tal:replace="items/user_name" />
+          </span>
+          <span condition="python:not(items.description)">
+            <em>Zope</em>
+          </span>
+	  </strong> on <span tal:replace="python: items['time'].Month()" /> <span tal:replace="python: items['time'].day()" /> at
+	  <span tal:replace="python: items['time'].Time()" />
+      </td>
+    </tr>
+    </tbody>
+    <tr><td colspan=2 align=center>
+    <span tal:condition="python: len(transactions) == request.PrincipiaUndoBatchSize">
+        <a href=""
+           tal:attributes="href python: here.absolute_url() + '/undo_form?first_transaction:int=' + str(request.last_transaction) + '&last_transaction:int=' + str(request.last_transaction+request.PrincipiaUndoBatchSize) + '&PrincipiaUndoBatchSize:int=' + str(request.PrincipiaUndoBatchSize)">Earlier Transactions</a>
+    </span>
+    </td></tr>
+    <tr><td></td></tr>
+    <tr><td colspan=2 align=center><INPUT TYPE="SUBMIT" VALUE=" Undo ">
+    </td></tr>
+  </table>
+  </FORM>
+</div>
+<div tal:condition="python: not(transactions)">
+
+  There are no transactions that can be undone.
+
+</div>
+</div>
+</div>
+</div>
+</body>
+</html>


=== CMF/CMFDefault/skins/zpt_generic/viewThreadsAtBottom.pt 1.1 => 1.2 ===
+    <div tal:condition="python: here.talkback.hasReplies(here)">
+      <h4>Comments:</h4>
+      <span tal:replace="structure here/talkback_tree"></span>
+	</div>
+</div>
+


=== CMF/CMFDefault/skins/zpt_generic/zpt_stylesheet.css 1.1 => 1.2 ===
+    background-color: White;
+    color: Black;
+    margin-top: 0;
+    margin-left:2pt;
+    margin-right:2pt;
+    margin-bottom:0;
+}
+
+p {
+    font-family: serif;
+}
+
+h1 {
+    font-family:  sans-serif;
+    font-size:  120%;
+    font-weight:  bold;
+}
+
+h2 {
+    font-family:  sans-serif;
+    font-size:  115%;
+}
+
+h3 {
+    font-family:  sans-serif;
+    font-size:  110%;
+}
+
+h4 {
+    font-family:  sans-serif;
+    font-size:  110%;
+    font-style: italic;
+}
+
+a:link {
+    text-decoration: none;
+    color: #336699;
+}
+
+a:visited {
+    text-decoration: none;
+    color: #336699;
+}
+
+a:active {
+    color: #336699;
+    text-decoration: none;
+}
+
+a:hover {
+    text-decoration: none;
+    color: Blue;
+}
+
+table {
+    border: 0;
+}
+
+td {
+    vertical-align: top;
+}
+
+
+#Masthead {
+    background-color: #336699;
+    border: 1pt;
+    border-color: $336699;
+    padding: none;
+    cell-spacing: none;
+    width: 100%;
+}
+
+#PortalLogo {
+    background-color: #336699;
+    vertical-align: middle;
+    width: 15%;
+    height: 32px;
+}
+
+#PortalTitle {
+    background-color: #336699;
+    color: White;
+    text-align: left;
+    vertical-align: middle;
+    font-family:  sans-serif;
+    font-size: 120%;
+    font-weight: bold;
+    width: 25%;
+    height: 32px;
+}
+
+#NavBar {
+    background-color: #336699;
+    color: #FFFFFF;
+    text-align: right;
+    vertical-align: middle;
+    font-family:  sans-serif;
+    font-size: 80%;
+    width: 60%;
+    height: 32px;
+}
+
+#NavBar a:link {
+    color: #FFFFFF;
+    text-decoration: none;
+}
+
+#NavBar a:visited {
+    color: #FFFFFF;
+    text-decoration: none;
+}
+
+#NavBar a:active {
+    color: #FFFFFF;
+    text-decoration: none;
+}
+
+#NavBar a:hover {
+    color: #5599CC;
+    text-decoration: none;
+}
+
+#MemberActionsBox {
+    color: White;
+    background-color: #5599CC;
+    border-top: solid #AAAAAA;
+    border-top-width: thin;
+}
+
+#ContextActionsBox {
+    border-color: #AAAAAA;
+    background-color: #AAAAAA;
+    padding: none;
+}
+
+.ContextActionsRow {
+    color: White;
+    background-color: #AAAAAA;
+}
+
+
+.ActionTitle {
+    color: Black;
+    font-family: sans-serif;
+    font-weight: bold;
+    font-size: 90%;
+}
+
+.ActionLink {
+    color: Black;
+    font-family: sans-serif;
+    font-size: 90%;
+}
+
+
+.ActionLink a:link {
+    color: White;
+    text-decoration:  none;
+    font-weight: bold;
+}
+
+.ActionLink a:visited {
+    color: White;
+    text-decoration:  none;
+    font-weight: bold;
+}
+
+.ActionLink a:active {
+    color: White;
+    text-decoration:  none;
+    font-weight: bold;
+}
+
+.ActionLink a:hover {
+    color: #336699;
+    text-decoration:  none;
+    font-weight: bold;
+}
+
+.ObjectStatus {
+    font-style: italic;
+}
+
+#ForematterCell {
+    margin-top: 20px;
+}
+
+#DesktopStatusBar {
+    color: Red;
+    background-color: White;
+    font-family: Arial, Verdana, Helvetica, sans-serif;
+    font-style: italic;
+    font-weight: bold;
+    margin-top: 8pt;
+}
+
+#DesktopTitle {
+    margin-top: 8pt;
+}
+
+#DesktopDescription {
+    font-style: italic;
+    margin-left: 20pt;
+    margin-right: 8pt;
+}
+
+#Desktop {
+    margin-left: 8pt;
+    margin-right: 8pt;
+}
+
+#ContentByline {
+    font-size: 90%;
+    font-style: italic;
+}
+
+#DiscussionAbove {
+    margin-left: 16pt;
+    margin-right: 8pt;
+    margin-top: 8pt;
+    margin-bottom: 8pt;
+    font-style: italic;
+}
+
+table.FormLayout {
+    width: 80%;
+}
+
+table.FormLayout tr {
+    vertical-align: top;
+}
+
+table.FormLayout tr th.TextField {
+    vertical-align: top;
+    color: #000000;
+}
+
+table.FormLayout tr td.TextField {
+    vertical-align: top;
+    color: #000000;
+}
+
+table.FormLayout th {
+    text-align: right;
+    font-size: 80%;
+    font-weight: bold;
+}
+
+table.FormLayout dl.FieldHelp dd {
+    font-size: 80%;
+    color: #000000;
+}
+
+table.FormLayout td.ListName {
+    background-color:  #336699;
+    color: #FFFFFF;
+    font-weight: bold;
+    verticle-align: middle;
+}
+
+table.FormLayout td.ListDefinition {
+    font-style: italic;
+    color: #000000;
+}
+
+table.ContentsList tr td {
+    font-size: 100%;
+}
+
+table.ContentsList tr td img {
+    border: 0;
+}
+
+table.SearchResults {
+    width: auto;
+}
+
+table.SearchResults tr th {
+    text-align: left;
+}
+
+table.SearchResults tr td img {
+    border: 0;
+}
+
+table.Wizard {
+    width: auto;
+}
+
+table.Wizard tr {
+    vertical-align: top;
+}
+
+table.Wizard tr th {
+    text-align: right;
+}
+
+div.NewsBar {
+    text-align: right;
+}
+
+table.NewsItems {
+    border: 0;
+}
+
+
+td.NewsBorder {
+    background-color: #336699;
+}
+
+td.NewsListing {
+    background-color: #336699;
+    color:  #FFFFFF;
+    font-size: 80%;
+    font-weight: bold;
+}
+
+td.NewsByLine {
+    background-color:  #CCCCCC;
+    color:  #336699;
+    font-size: 80%;
+    text-align: left;
+    vertical-align: top;
+}
+
+.NewsLeadin {
+    background-color: #FFFFFF;
+    color:  #336699;
+}
+
+.NewsByLine {
+    background-color:  #336699;
+    color:  #FFFFFF;
+}
+
+.NewsDateline {
+    background-color:  #336699;
+    color:  #FFFFFF;
+}
+
+td.NewsTitle {
+    background-color: #336699;
+    color: #FFFFFF;
+    text-align: center;
+    font-size: 90%;
+    font-weight: bold;
+}
+
+.NewsItemRow {
+    background-color: #AAAAAA;
+    font-size: 70%;
+}
+
+p.NewsHeadline {
+    background-color:  #336699;
+}
+