[CMF-checkins] CVS: CMF/CMFDefault/skins/zpt_generic - actions_box.pt:1.1.2.1 breadcrumbs.py:1.1.2.1 content_byline.pt:1.1.2.1 discussion_reply_form.pt:1.1.2.1 discussion_reply_preview.pt:1.1.2.1 expanded_title.py:1.1.2.1 folder_add.pt:1.1.2.1 folder_contents.pt:1.1.2.1 folder_factories.pt:1.1.2.1 folder_filter_form.pt:1.1.2.1 folder_localrole_form.pt:1.1.2.1 folder_rename_form.pt:1.1.2.1 index_html.pt:1.1.2.1 join_form.pt:1.1.2.1 logged_in.pt:1.1.2.1 logged_out.pt:1.1.2.1 login_form.pt:1.1.2.1 mail_password_form.pt:1.1.2.1 mail_password_response.pt:1.1.2.1 main_template.pt:1.1.2.1 metadata_help.pt:1.1.2.1 news_box.pt:1.1.2.1 password_form.pt:1.1.2.1 personalize_form.pt:1.1.2.1 recent_news.pt:1.1.2.1 reconfig_form.pt:1.1.2.1 registered.pt:1.1.2.1 review.pt:1.1.2.1 roster.pt:1.1.2.1 rssDisabled.pt:1.1.2.1 search.pt:1.1.2.1 search_form.pt:1.1.2.1 setup_talkback_tree.py:1.1.2.1 simple_metadata.pt:1.1.2.1 standard_error_message.pt:1.1.2.1 stxmethod_view.pt:1.1.2.1 talkback_tree.pt:1.1! .2.1 unauthRedirect.py:1.1.2.1 undo_form.pt:1.1.2.1 viewThreadsAtBottom.pt:1.1.2.1 zpt_stylesheet.css:1.1.2.1

Andrew Sawyers andrew@zope.com
Wed, 28 Nov 2001 13:10:14 -0500


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

Added Files:
      Tag: CMF-1_2-branch
	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 simple_metadata.pt 
	standard_error_message.pt stxmethod_view.pt talkback_tree.pt 
	unauthRedirect.py undo_form.pt viewThreadsAtBottom.pt 
	zpt_stylesheet.css 
Log Message:

*merge CMFDecor into CMF


=== Added File CMF/CMFDefault/skins/zpt_generic/actions_box.pt ===
<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>



=== Added File CMF/CMFDefault/skins/zpt_generic/breadcrumbs.py ===
## Script (Python) "breadcrumbs.py $Revision: 1.1.2.1 $"
##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


=== Added File CMF/CMFDefault/skins/zpt_generic/content_byline.pt ===
<div id="ContentByline"
     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>


=== Added File CMF/CMFDefault/skins/zpt_generic/discussion_reply_form.pt ===
<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>




=== Added File CMF/CMFDefault/skins/zpt_generic/discussion_reply_preview.pt ===
<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>




=== Added File CMF/CMFDefault/skins/zpt_generic/expanded_title.py ===
## Script (Python) "expanded_title"
##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


=== Added File CMF/CMFDefault/skins/zpt_generic/folder_add.pt ===
<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>



=== Added File CMF/CMFDefault/skins/zpt_generic/folder_contents.pt ===
<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>
			<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>



=== Added File CMF/CMFDefault/skins/zpt_generic/folder_factories.pt ===
<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>



=== Added File CMF/CMFDefault/skins/zpt_generic/folder_filter_form.pt ===
<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>


=== Added File CMF/CMFDefault/skins/zpt_generic/folder_localrole_form.pt ===
<html metal:use-macro="here/main_template/macros/master">
<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>


=== Added File CMF/CMFDefault/skins/zpt_generic/folder_rename_form.pt ===
<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>



=== Added File CMF/CMFDefault/skins/zpt_generic/index_html.pt ===
<html metal:use-macro="here/main_template/macros/master"
>
<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 );
                  ">
  <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 );
                  ">
  <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' } );
                  ">
  <div tal:condition="items">
  <h4> 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>



=== Added File CMF/CMFDefault/skins/zpt_generic/join_form.pt ===
<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>



=== Added File CMF/CMFDefault/skins/zpt_generic/logged_in.pt ===
<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">
		      <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>




=== Added File CMF/CMFDefault/skins/zpt_generic/logged_out.pt ===
<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>


=== Added File CMF/CMFDefault/skins/zpt_generic/login_form.pt ===
<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>



=== Added File CMF/CMFDefault/skins/zpt_generic/mail_password_form.pt ===
<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>



=== Added File CMF/CMFDefault/skins/zpt_generic/mail_password_response.pt ===
<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>



=== Added File CMF/CMFDefault/skins/zpt_generic/main_template.pt ===
<html metal:define-macro="master"
      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>


=== Added File CMF/CMFDefault/skins/zpt_generic/metadata_help.pt ===
<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>



=== Added File CMF/CMFDefault/skins/zpt_generic/news_box.pt ===
 <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>



=== Added File CMF/CMFDefault/skins/zpt_generic/password_form.pt ===
<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/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>



=== Added File CMF/CMFDefault/skins/zpt_generic/personalize_form.pt ===
<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 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>



=== Added File CMF/CMFDefault/skins/zpt_generic/recent_news.pt ===
<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>



=== Added File CMF/CMFDefault/skins/zpt_generic/reconfig_form.pt ===
<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>


=== Added File CMF/CMFDefault/skins/zpt_generic/registered.pt ===
<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>



=== Added File CMF/CMFDefault/skins/zpt_generic/review.pt ===
<html metal:use-macro="here/main_template/macros/master">

<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>


=== Added File CMF/CMFDefault/skins/zpt_generic/roster.pt ===
<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"
     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>



=== Added File CMF/CMFDefault/skins/zpt_generic/rssDisabled.pt ===
<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>



=== Added File CMF/CMFDefault/skins/zpt_generic/search.pt ===
<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 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>



=== Added File CMF/CMFDefault/skins/zpt_generic/search_form.pt ===
<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 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>





=== Added File CMF/CMFDefault/skins/zpt_generic/setup_talkback_tree.py ===
## Script (Python) "setup_talkback_tree"
##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}


=== Added File CMF/CMFDefault/skins/zpt_generic/simple_metadata.pt ===
<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" wrap="soft"
			 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" wrap="soft"
			   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>




=== Added File CMF/CMFDefault/skins/zpt_generic/standard_error_message.pt ===
<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">
 

<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>


=== Added File CMF/CMFDefault/skins/zpt_generic/stxmethod_view.pt ===
<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">

<p tal:replace="structure options/cooked">
  STX goes here.
</p>

</div>

</div>
</body>
</html>



=== Added File CMF/CMFDefault/skins/zpt_generic/talkback_tree.pt ===
<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>



=== Added File CMF/CMFDefault/skins/zpt_generic/unauthRedirect.py ===
## Script (Python) "unauthRedirect.py $Revision: 1.1.2.1 $"
##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())



=== Added File CMF/CMFDefault/skins/zpt_generic/undo_form.pt ===
<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> 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>


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



=== Added File CMF/CMFDefault/skins/zpt_generic/zpt_stylesheet.css ===
body {
    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;
}