[Checkins] SVN: zf.zscp/trunk/src/zf/zscp/ Worked on package list and package details view.

Stephan Richter srichter at cosmos.phy.tufts.edu
Wed Apr 12 06:04:52 EDT 2006


Log message for revision 66878:
  Worked on package list and package details view.
  

Changed:
  U   zf.zscp/trunk/src/zf/zscp/interfaces.py
  U   zf.zscp/trunk/src/zf/zscp/skin/__init__.py
  U   zf.zscp/trunk/src/zf/zscp/skin/browser/configure.zcml
  U   zf.zscp/trunk/src/zf/zscp/skin/browser/css/base.css
  U   zf.zscp/trunk/src/zf/zscp/skin/browser/css/packages.css
  A   zf.zscp/trunk/src/zf/zscp/skin/browser/css/table.css
  A   zf.zscp/trunk/src/zf/zscp/skin/browser/package_macros.pt
  U   zf.zscp/trunk/src/zf/zscp/skin/browser/standardmacros.py
  U   zf.zscp/trunk/src/zf/zscp/skin/browser/template.pt
  U   zf.zscp/trunk/src/zf/zscp/website/browser/configure.zcml
  U   zf.zscp/trunk/src/zf/zscp/website/browser/package.py
  U   zf.zscp/trunk/src/zf/zscp/website/browser/package.zcml
  U   zf.zscp/trunk/src/zf/zscp/website/browser/package_certifications.pt
  U   zf.zscp/trunk/src/zf/zscp/website/browser/package_classifiers.pt
  A   zf.zscp/trunk/src/zf/zscp/website/browser/package_community.pt
  U   zf.zscp/trunk/src/zf/zscp/website/browser/package_info.pt
  U   zf.zscp/trunk/src/zf/zscp/website/browser/package_releases.pt
  U   zf.zscp/trunk/src/zf/zscp/website/browser/site.py
  U   zf.zscp/trunk/src/zf/zscp/website/browser/site_packages.pt

-=-
Modified: zf.zscp/trunk/src/zf/zscp/interfaces.py
===================================================================
--- zf.zscp/trunk/src/zf/zscp/interfaces.py	2006-04-12 07:40:25 UTC (rev 66877)
+++ zf.zscp/trunk/src/zf/zscp/interfaces.py	2006-04-12 10:04:50 UTC (rev 66878)
@@ -299,7 +299,7 @@
         required=False)
 
     repositoryWebLocation = zope.schema.URI(
-        title=u"Repository Web Location",
+        title=u"Browsable Repository",
         description=u"The URL to the repository's browsable HTML UI.",
         required=False)
 

Modified: zf.zscp/trunk/src/zf/zscp/skin/__init__.py
===================================================================
--- zf.zscp/trunk/src/zf/zscp/skin/__init__.py	2006-04-12 07:40:25 UTC (rev 66877)
+++ zf.zscp/trunk/src/zf/zscp/skin/__init__.py	2006-04-12 10:04:50 UTC (rev 66878)
@@ -17,21 +17,28 @@
 
 __docformat__ = "reStructuredText"
 
+from zope.interface import Interface, directlyProvides
 from zope.publisher.interfaces.browser import IBrowserRequest
 from zope.publisher.interfaces.browser import IDefaultBrowserLayer
 from zope.viewlet.interfaces import IViewletManager
 from zope.viewlet.manager import ViewletManagerBase
+from zope.app.publisher.interfaces.browser import IMenuItemType
 
 
+class IPackageTabs(Interface):
+    """Package Tabs"""
 
+directlyProvides(IPackageTabs, IMenuItemType)
+
+
 class IZSCPLayer(IBrowserRequest):
     """``Layer for ZSCP Website``"""
 
 
 
 class ZSCP(IZSCPLayer, IDefaultBrowserLayer):
-    """The `ZSCP` skin 
-    
+    """The `ZSCP` skin
+
     This skin is based on IZSCPLayer and IDefaultBrowserLayer.
     and accessible via `++skin++ZSCP`.
     """
@@ -49,4 +56,5 @@
                 return viewlet.weight
             except:
                 return 0
-        return sorted(viewlets, lambda x, y: cmp(getWeight(x[1]), getWeight(y[1])))
+        return sorted(viewlets,
+                      lambda x, y: cmp(getWeight(x[1]), getWeight(y[1])))

Modified: zf.zscp/trunk/src/zf/zscp/skin/browser/configure.zcml
===================================================================
--- zf.zscp/trunk/src/zf/zscp/skin/browser/configure.zcml	2006-04-12 07:40:25 UTC (rev 66877)
+++ zf.zscp/trunk/src/zf/zscp/skin/browser/configure.zcml	2006-04-12 10:04:50 UTC (rev 66878)
@@ -1,9 +1,15 @@
 <configure
   xmlns="http://namespaces.zope.org/zope"
-  xmlns:browser="http://namespaces.zope.org/browser"  
+  xmlns:browser="http://namespaces.zope.org/browser"
   i18n_domain="zf.zscp"
   >
-  
+
+  <browser:menu
+      title="Package Tabs"
+      description="ZSCP Package Tabs"
+      interface="zf.zscp.skin.IPackageTabs"
+      />
+
   <browser:resource
       name="base.css"
       file="css/base.css"
@@ -17,7 +23,7 @@
       layer="zf.zscp.skin.IZSCPLayer"
       permission="zope.Public"
       />
-      
+
   <browser:resource
       name="packages.css"
       file="css/packages.css"
@@ -32,6 +38,13 @@
       permission="zope.Public"
       />
 
+  <browser:resource
+      name="table.css"
+      file="css/table.css"
+      layer="zf.zscp.skin.IZSCPLayer"
+      permission="zope.Public"
+      />
+
   <browser:resourceDirectory
       directory="img"
       name="img"
@@ -47,6 +60,14 @@
 
   <browser:page
       for="*"
+      name="package_macros"
+      permission="zope.Public"
+      template="package_macros.pt"
+      layer="zf.zscp.skin.IZSCPLayer"
+      />
+
+  <browser:page
+      for="*"
       name="standard_macros"
       permission="zope.Public"
       class=".standardmacros.StandardMacros"

Modified: zf.zscp/trunk/src/zf/zscp/skin/browser/css/base.css
===================================================================
--- zf.zscp/trunk/src/zf/zscp/skin/browser/css/base.css	2006-04-12 07:40:25 UTC (rev 66877)
+++ zf.zscp/trunk/src/zf/zscp/skin/browser/css/base.css	2006-04-12 10:04:50 UTC (rev 66878)
@@ -32,7 +32,7 @@
 
 h1,h2,h3,h4,h5,h6 {
     color: #666;
-    margin-top: 20px;
+    margin-top: 10px;
     margin-bottom: 8px;
 }
 

Modified: zf.zscp/trunk/src/zf/zscp/skin/browser/css/packages.css
===================================================================
--- zf.zscp/trunk/src/zf/zscp/skin/browser/css/packages.css	2006-04-12 07:40:25 UTC (rev 66877)
+++ zf.zscp/trunk/src/zf/zscp/skin/browser/css/packages.css	2006-04-12 10:04:50 UTC (rev 66878)
@@ -13,12 +13,13 @@
     border-bottom: 2px solid #ccc;
     min-height: 260px;
     background: #eee url(/@@/img/packageBodyBg.jpg) repeat-x left top;
-    padding: 30px 30px 20px 20px;
+    padding: 10px 30px 20px 20px;
 }
 #package-tabs {
     border-bottom: 1px solid #ccc;
 }
 .packageTab {
+    margin: 0px;
     position: relative;
     bottom: 1px;
     display: inline;
@@ -37,6 +38,7 @@
     background: url(/@@/img/packageTabCurLeft.png) no-repeat left top;
 }
 .packageTab.selected a {
+    font-size: 110%;
     background: url(/@@/img/packageTabCurRight.png) no-repeat right top;
     font-weight: bold;
 }
@@ -73,6 +75,14 @@
     top: 15px; right: 15px;
     width: 56px; height: 56px;
 }
+
+hr.white-line {
+  background-color: #ffffff;
+  color: #ffffff;
+  border: #ffffff;
+  height: 2px;
+}
+
 #certifiedGold {
     background: url(/@@/img/certifiedGold.png) no-repeat left top;
 }

Added: zf.zscp/trunk/src/zf/zscp/skin/browser/css/table.css
===================================================================
--- zf.zscp/trunk/src/zf/zscp/skin/browser/css/table.css	2006-04-12 07:40:25 UTC (rev 66877)
+++ zf.zscp/trunk/src/zf/zscp/skin/browser/css/table.css	2006-04-12 10:04:50 UTC (rev 66878)
@@ -0,0 +1,4 @@
+div.package-table {
+}
+div.package-table table {
+}


Property changes on: zf.zscp/trunk/src/zf/zscp/skin/browser/css/table.css
___________________________________________________________________
Name: svn:eol-style
   + native

Added: zf.zscp/trunk/src/zf/zscp/skin/browser/package_macros.pt
===================================================================
--- zf.zscp/trunk/src/zf/zscp/skin/browser/package_macros.pt	2006-04-12 07:40:25 UTC (rev 66877)
+++ zf.zscp/trunk/src/zf/zscp/skin/browser/package_macros.pt	2006-04-12 10:04:50 UTC (rev 66878)
@@ -0,0 +1,48 @@
+<metal:block define-macro="package-view">
+  <html metal:use-macro="context/@@standard_macros/view"
+        i18n:domain="zf.zscp">
+  <body>
+  <div metal:fill-slot="body">
+
+    <div id="documentFirstHeading">
+      <metal:block define-slot="package-heading">
+        Package:
+        <span tal:replace="context/name">zope.demo</span>
+        (<span tal:replace="context/publication/name">Zope Demo</span>)
+      </metal:block>
+    </div>
+
+    <div id="package-wrapper">
+      <metal:block use-macro="context/@@standard_macros/package-tabs" />
+      <div id="package-info" class="packageBody">
+        <metal:block define-slot="package-info">
+          Package Info.
+        </metal:block>
+      </div>
+    </div>
+  </div>
+  </body>
+  </html>
+</metal:block>
+
+<metal:block define-macro="package-tabs">
+
+  <div id="package-tabs">
+    <tal:block
+         repeat="tab context/@@view_get_menu/zf.zscp.skin.IPackageTabs">
+      <div class="packageTab selected"
+           tal:condition="tab/selected">
+        <a href="index.html"
+           tal:attributes="href tab/action"
+           tal:content="tab/title">Info</a>
+      </div>
+      <div class="packageTab"
+           tal:condition="not: tab/selected">
+        <a href="index.html"
+           tal:attributes="href tab/action"
+           tal:content="tab/title">Info</a>
+      </div>
+    </tal:block>
+  </div>
+
+</metal:block>


Property changes on: zf.zscp/trunk/src/zf/zscp/skin/browser/package_macros.pt
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: zf.zscp/trunk/src/zf/zscp/skin/browser/standardmacros.py
===================================================================
--- zf.zscp/trunk/src/zf/zscp/skin/browser/standardmacros.py	2006-04-12 07:40:25 UTC (rev 66877)
+++ zf.zscp/trunk/src/zf/zscp/skin/browser/standardmacros.py	2006-04-12 10:04:50 UTC (rev 66878)
@@ -19,5 +19,5 @@
 from zope.app.basicskin.standardmacros import StandardMacros as BaseMacros
 
 class StandardMacros(BaseMacros):
-    macro_pages = ('skin_macros', 'view_macros', 'dialog_macros'
-                  , 'navigation_macros')
+    macro_pages = ('skin_macros', 'view_macros', 'dialog_macros',
+                   'package_macros')

Modified: zf.zscp/trunk/src/zf/zscp/skin/browser/template.pt
===================================================================
--- zf.zscp/trunk/src/zf/zscp/skin/browser/template.pt	2006-04-12 07:40:25 UTC (rev 66877)
+++ zf.zscp/trunk/src/zf/zscp/skin/browser/template.pt	2006-04-12 10:04:50 UTC (rev 66878)
@@ -1,28 +1,31 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <metal:block define-macro="page">
-	<metal:block define-slot="doctype">
-		<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-	</metal:block>
-	<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" i18n:domain="zf.zscp">
-	<head>
-		<title metal:define-slot="title"
-			tal:content="string:WebSite: ${context/zope:title_or_name}">WebSite:
-			title</title>
-		
-		<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
-		
-		<!-- css viewlets -->
-		<link rel="stylesheet" type="text/css" media="all"		
-			tal:attributes="href string:${context/++resource++base.css}" />
-		<link rel="stylesheet" type="text/css" media="all"		
-			tal:attributes="href string:${context/++resource++home.css}" />
-		<link rel="stylesheet" type="text/css" media="all"		
-			tal:attributes="href string:${context/++resource++packages.css}" />	
-		<link rel="stylesheet" type="text/css" media="all"		
-			tal:attributes="href string:${context/++resource++viewlets.css}" />
-		
-	</head>
+  <metal:block define-slot="doctype">
+    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+  </metal:block>
+  <html xmlns="http://www.w3.org/1999/xhtml"
+        xml:lang="en" lang="en" i18n:domain="zf.zscp">
+  <head>
+    <title metal:define-slot="title"
+      tal:content="string:WebSite: ${context/zope:title_or_name}">WebSite:
+      title</title>
 
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
+
+    <!-- css viewlets -->
+    <link rel="stylesheet" type="text/css" media="all"
+      tal:attributes="href string:${context/++resource++base.css}" />
+    <link rel="stylesheet" type="text/css" media="all"
+      tal:attributes="href string:${context/++resource++home.css}" />
+    <link rel="stylesheet" type="text/css" media="all"
+      tal:attributes="href string:${context/++resource++packages.css}" />
+    <link rel="stylesheet" type="text/css" media="all"
+      tal:attributes="href string:${context/++resource++viewlets.css}" />
+    <link rel="stylesheet" type="text/css" media="all"
+      tal:attributes="href string:${context/++resource++table.css}" />
+
+  </head>
+
 <body>
 
 
@@ -43,55 +46,59 @@
     <div id="portal-columns">
         <!-- begin left column -->
         <div id="portal-column-one">
-			<tal:block replace="structure provider:ILeft" />
+      <tal:block replace="structure provider:ILeft" />
         </div>
         <!-- end left column -->
         <!-- begin main column -->
-		<div id="portal-column-content">
-            <!-- begin breadcrumbs 
-			
+    <div id="portal-column-content">
+            <!-- begin breadcrumbs
+
             <tal:block replace="structure provider:IBreadcrumb">logo</tal:block>
-					
-				 end breadcrumbs -->			
 
-			<!-- begin main content area -->
-			<div id="region-content" >
+         end breadcrumbs -->
 
-				<!-- main home image -->
-				<tal:block replace="structure provider:ILogo">logo</tal:block>
+      <!-- begin main content area -->
+      <div id="region-content" >
 
-				<!-- text below main image -->
-				<div id="body" metal:define-slot="body">
-				</div>
-				
-			</div>
-			<!-- end main content area -->
-		</div>
+        <!-- main home image -->
+        <tal:block replace="structure provider:ILogo">logo</tal:block>
+
+        <!-- text below main image -->
+        <div id="body" metal:define-slot="body">
+        </div>
+
+      </div>
+      <!-- end main content area -->
+    </div>
         <!-- end main column -->
     </div>
     <!-- end portal body -->
-	
-	
+
+
     <!-- begin portal footer -->
     <div id="portal-footer">
-        <div id="footer-left">
-            This page conforms to revision <div tal:replace="pageversion | string: n/a">0.8</div>
-			of the normative document. The latest version can be found 
-			<a href="@@ProcessAndRepository.html">here</a>.
-        </div>
-        <div id="footer-right">
-            Design by <a href="http://www.adaptivewave.com" target="_blank">AdaptiveWave</a>
-        </div>
-        <div id="footer-left">
-            <span class="footerItem">Copyright &copy; 2006, Zope Foundation.  All rights reserved.</span>
-            <span class="footerItem"><a href="@@about.html">About</a></span>
-            <span class="footerItem"><a href="@@contact.html">Contact</a></span>
-        </div>
+      <div id="footer-left">
+        This page conforms to revision
+        <span tal:replace="pageversion | string: n/a">0.8</span>
+        of the normative document. The latest version can be found
+        <a href="@@ProcessAndRepository.html">here</a>.
+      </div>
+      <div id="footer-right">
+        Design by
+        <a href="http://www.adaptivewave.com" target="_blank">AdaptiveWave</a>
+      </div>
+      <div id="footer-left">
+        <span class="footerItem">
+          Copyright &copy; 2006, Zope Foundation.  All rights reserved.
+        </span>
+        <span class="footerItem"><a href="@@about.html">About</a></span>
+        <span class="footerItem"><a href="@@contact.html">Contact</a></span>
+      </div>
     </div>
     <!-- end footer -->
 </div>
-    
+
 </body>
 
 </html>
-</metal:block>
\ No newline at end of file
+</metal:block>

Modified: zf.zscp/trunk/src/zf/zscp/website/browser/configure.zcml
===================================================================
--- zf.zscp/trunk/src/zf/zscp/website/browser/configure.zcml	2006-04-12 07:40:25 UTC (rev 66877)
+++ zf.zscp/trunk/src/zf/zscp/website/browser/configure.zcml	2006-04-12 10:04:50 UTC (rev 66878)
@@ -3,6 +3,9 @@
     xmlns="http://namespaces.zope.org/browser"
     i18n_domain="zf.zscp">
 
+  <include package="zc.table" />
+
+
   <include file="site.zcml" />
   <include file="package.zcml" />
   <include file="repository.zcml" />

Modified: zf.zscp/trunk/src/zf/zscp/website/browser/package.py
===================================================================
--- zf.zscp/trunk/src/zf/zscp/website/browser/package.py	2006-04-12 07:40:25 UTC (rev 66877)
+++ zf.zscp/trunk/src/zf/zscp/website/browser/package.py	2006-04-12 10:04:50 UTC (rev 66878)
@@ -22,6 +22,7 @@
 from zf.zscp.interfaces import IRelease
 from zf.zscp.interfaces import ICertification
 from zf.zscp.interfaces import CERTIFICATION_LEVELS
+from zf.zscp.interfaces import CERTIFICATION_ACTIONS
 from zope.app.pagetemplate import ViewPageTemplateFile
 
 
@@ -44,7 +45,7 @@
     def setUpWidgets(self, ignore_request=False):
         self.adapters = {}
         self.widgets = form.setUpEditWidgets(
-            self.form_fields, self.prefix, self.context.publication, 
+            self.form_fields, self.prefix, self.context.publication,
             self.request, adapters=self.adapters, ignore_request=ignore_request
             )
 
@@ -61,28 +62,24 @@
     template = ViewPageTemplateFile('package_info.pt')
 
     def update(self):
+        formatter = self.request.locale.dates.getFormatter('date', 'medium')
         publication = self.context.publication
         info = {}
-        info['packageName'] = publication.packageName
-        info['name'] = publication.name
-        info['summary'] = publication.summary
-        info['description'] = publication.description
-        info['homePage'] = publication.homePage
-        info['developersMailinglist'] = publication.developersMailinglist
-        info['usersMailinglist'] = publication.usersMailinglist
-        info['issueTracker'] = publication.issueTracker
-        info['repositoryLocation'] = publication.repositoryLocation
-        info['repositoryWebLocation'] = publication.repositoryWebLocation
-        info['certificationLevel'] = publication.certificationLevel
-        info['certificationDate'] = publication.certificationDate
-        info['metadataVersion'] = publication.metadataVersion
+        for name, field in zope.schema.getFieldsInOrder(IPublication):
+            info[name] = getattr(publication, name)
 
+        info['certificationLevel'] = CERTIFICATION_LEVELS.getTerm(
+            publication.certificationLevel).title
+        info['certificationDate'] = formatter.format(
+            publication.certificationDate)
+
+        info['author'] = [
+            {'name': name, 'email': email}
+            for name, email in zip(publication.author, publication.authorEmail)]
+
         # list of strings converted to strings
-        info['author'] = listToString(publication.author)
-        info['authorEmail'] = listToString(publication.authorEmail)
         info['license'] = listToString(publication.license)
         info['platform'] = listToString(publication.platform)
-        info['classifier'] = listToString(publication.classifier)
 
         self._info = info
 
@@ -95,7 +92,11 @@
         return self.template()
 
 
+class PackageCommunity(PackageInfo):
 
+    template = ViewPageTemplateFile('package_community.pt')
+
+
 class PackageReleases(page.Page):
     """Release view."""
 
@@ -131,8 +132,7 @@
     template = ViewPageTemplateFile('package_classifiers.pt')
 
     def update(self):
-        certifications = self.context.certifications
-        info = {}
+        info = {'classifier': self.context.publication.classifier}
         self._info = info
 
     def render(self):
@@ -153,36 +153,29 @@
     template = ViewPageTemplateFile('package_certifications.pt')
 
     def update(self):
-        info = {}
+        pass
 
-        # publication info
-        publication = self.context.publication
-        info['packageName'] = publication.packageName
-        info['name'] = publication.name
-        self._info = info
+    def info(self):
+        return {'packageName': self.context.publication.packageName,
+                'name': self.context.publication.name}
 
-        # certification info
+    def certifications(self):
         certifications = []
         certs = self.context.certifications
+        formatter = self.request.locale.dates.getFormatter('date', 'medium')
+        levels = CERTIFICATION_LEVELS
+        actions = CERTIFICATION_ACTIONS
         for cert in certs:
             info = {}
-            info['action'] = cert.action
-            info['sourceLevel'] = cert.sourceLevel
-            info['targetLevel'] = cert.targetLevel
-            info['date'] = cert.date
-            info['certificationManger'] = cert.certificationManger
+            info['action'] = actions.getTerm(cert.action).title
+            info['sourceLevel'] = levels.getTerm(cert.sourceLevel).title
+            info['targetLevel'] = levels.getTerm(cert.targetLevel).title
+            info['date'] = formatter.format(cert.date)
+            info['certificationManager'] = cert.certificationManager
             info['comments'] = cert.comments
             certifications.append(info)
-        self._certifications = certifications
+        return certifications
 
-    @property
-    def info(self):
-        return self._info
-
-    @property
-    def certifications(self):
-        return self._certifications
-
     def __call__(self):
         self.update()
         return self.template()

Modified: zf.zscp/trunk/src/zf/zscp/website/browser/package.zcml
===================================================================
--- zf.zscp/trunk/src/zf/zscp/website/browser/package.zcml	2006-04-12 07:40:25 UTC (rev 66877)
+++ zf.zscp/trunk/src/zf/zscp/website/browser/package.zcml	2006-04-12 10:04:50 UTC (rev 66878)
@@ -18,7 +18,35 @@
       layer="zf.zscp.skin.IZSCPLayer"
       />
 
+  <menuItem
+      title="Summary"
+      action="index.html"
+      for="zf.zscp.interfaces.IPackage"
+      menu="zf.zscp.skin.IPackageTabs"
+      layer="zf.zscp.skin.IZSCPLayer"
+      order="1"
+      permission="zope.Public"
+      />
+
   <page
+      name="community.html"
+      for="zf.zscp.interfaces.IPackage"
+      class=".package.PackageCommunity"
+      permission="zope.Public"
+      layer="zf.zscp.skin.IZSCPLayer"
+      />
+
+  <menuItem
+      title="Community"
+      action="community.html"
+      for="zf.zscp.interfaces.IPackage"
+      menu="zf.zscp.skin.IPackageTabs"
+      layer="zf.zscp.skin.IZSCPLayer"
+      order="2"
+      permission="zope.Public"
+      />
+
+  <page
       name="releases.html"
       for="zf.zscp.interfaces.IPackage"
       class=".package.PackageReleases"
@@ -26,6 +54,16 @@
       layer="zf.zscp.skin.IZSCPLayer"
       />
 
+  <menuItem
+      title="Releases"
+      action="releases.html"
+      for="zf.zscp.interfaces.IPackage"
+      menu="zf.zscp.skin.IPackageTabs"
+      layer="zf.zscp.skin.IZSCPLayer"
+      order="3"
+      permission="zope.Public"
+      />
+
   <page
       name="classifiers.html"
       for="zf.zscp.interfaces.IPackage"
@@ -34,6 +72,16 @@
       layer="zf.zscp.skin.IZSCPLayer"
       />
 
+  <menuItem
+      title="Classifiers"
+      action="classifiers.html"
+      for="zf.zscp.interfaces.IPackage"
+      menu="zf.zscp.skin.IPackageTabs"
+      layer="zf.zscp.skin.IZSCPLayer"
+      order="4"
+      permission="zope.Public"
+      />
+
   <page
       name="certifications.html"
       for="zf.zscp.interfaces.IPackage"
@@ -42,4 +90,14 @@
       layer="zf.zscp.skin.IZSCPLayer"
       />
 
+  <menuItem
+      title="Certifications"
+      action="certifications.html"
+      for="zf.zscp.interfaces.IPackage"
+      menu="zf.zscp.skin.IPackageTabs"
+      layer="zf.zscp.skin.IZSCPLayer"
+      order="5"
+      permission="zope.Public"
+      />
+
 </configure>

Modified: zf.zscp/trunk/src/zf/zscp/website/browser/package_certifications.pt
===================================================================
--- zf.zscp/trunk/src/zf/zscp/website/browser/package_certifications.pt	2006-04-12 07:40:25 UTC (rev 66877)
+++ zf.zscp/trunk/src/zf/zscp/website/browser/package_certifications.pt	2006-04-12 10:04:50 UTC (rev 66878)
@@ -1,83 +1,56 @@
-<html metal:use-macro="context/@@standard_macros/view"
-    i18n:domain="zf.zscp">
-	<body>
-		<div metal:fill-slot="body"
-					tal:define="global pageversion string: 0.8;
-											info view/info;
-											certifications view/certifications">
-			
-			<div id="documentFirstHeading">Release Detail for: TODO</div>
-			<div id="package-wrapper">
-				<!-- begin package tabs -->
-				<div id="package-tabs">
-					<div id="tab-info" class="packageTab"><a href="index.html">Info</a>
-					</div>
-					<div id="tab-classifiers" class="packageTab"><a href="classifiers.html">
-						Classifiers</a>
-					</div>
-					<div id="tab-releases" class="packageTab"><a href="releases.html">
-						Releases</a>
-					</div>
-					<div id="tab-classifiers" class="packageTab selected"><a href="certifications.html">
-						Certifications</a>
-					</div>
-				</div>
-				<!-- end package tabs -->
-				<!-- begin package body -->
-				<div id="package-info" class="packageBody"
-							tal:define="packageName info/packageName;
-													 name info/name">
-					<div class="infoRow" tal:condition="python:packageName and name">
-						<label>Name:</label>
-						<div class="infoString">
-							<tal:block content="packageName">zope.search</tal:block>&nbsp;
-							(<tal:block content="name">Zope Search</tal:block>)
-						</div>
-					</div>
+<html metal:use-macro="context/@@standard_macros/package-view">
+<body>
 
-					<!-- start certifications -->
-					<tal:block repeat="cert certifications">
-						<tal:block define="action cert/action;
-															 sourceLevel cert/sourceLevel;
-															 targetLevel cert/targetLevel;
-															 date cert/date;
-															 certificationManger cert/certificationManger;
-															 comments cert/comments">
-							<div id="certifiedSilver" class="certSeal">&nbsp;
-							</div>
-		
-							<div class="infoRow">
-								<label>Action:</label>
-								<div class="infoString"
-											tal:content="action">Action</div>
-							</div>
-							<div class="infoRow">
-								<label>Source Level:</label>
-								<div class="infoString"
-											tal:content="sourceLevel">Action</div>
-							</div>
-							<div class="infoRow">
-								<label>Date:</label>
-								<div class="infoString"
-											tal:content="date">January 31, 2006</div>
-							</div>
-							<div class="infoRow">
-								<label>Certification Manger:</label>
-								<div class="infoString"
-											tal:content="certificationManger">January 31, 2006</div>
-							</div>
-							<div class="infoRow">
-								<label>Comments:</label>
-								<div class="infoString"
-											tal:content="comments">January 31, 2006</div>
-							</div>
-						</tal:block>
-					</tal:block>
-					<!-- end releases -->
-				</div>
-				<!-- end package body -->
-			</div>
+  <div metal:fill-slot="package-info">
 
-		</div>
-	</body>
-</html>
\ No newline at end of file
+    <div style="height: 10px;"></div>
+
+    <tal:block repeat="cert view/certifications">
+      <div class="infoRow">
+        <label>Action:</label>
+        <div class="infoString"
+              tal:content="cert/action">Action</div>
+      </div>
+      <div class="infoRow">
+        <label>Source Level:</label>
+        <div class="infoString"
+              tal:content="cert/sourceLevel">None</div>
+      </div>
+      <div class="infoRow">
+        <label>Target Level:</label>
+        <div class="infoString"
+              tal:content="cert/targetLevel">Listed</div>
+      </div>
+      <div class="infoRow">
+        <label>Date:</label>
+        <div class="infoString"
+              tal:content="cert/date">January 31, 2006</div>
+      </div>
+      <div class="infoRow">
+        <label>Cert. Manager:</label>
+        <div class="infoString">
+          <span tal:replace="cert/certificationManager/name" />
+          <a href=""
+             tal:attributes="href
+                 string:mailto:${cert/certificationManager/email}"
+             tal:content="cert/certificationManager/email" />
+        </div>
+      </div>
+      <div class="infoRow"
+           tal:condition="cert/comments">
+        <label>Comments:</label>
+        <div class="infoString"
+             tal:content="cert/comments">January 31, 2006</div>
+      </div>
+
+      <div class="infoRow"
+           tal:condition="not:repeat/cert/end">
+        <hr class="white-line" />
+      </div>
+
+    </tal:block>
+
+  </div>
+
+</body>
+</html>

Modified: zf.zscp/trunk/src/zf/zscp/website/browser/package_classifiers.pt
===================================================================
--- zf.zscp/trunk/src/zf/zscp/website/browser/package_classifiers.pt	2006-04-12 07:40:25 UTC (rev 66877)
+++ zf.zscp/trunk/src/zf/zscp/website/browser/package_classifiers.pt	2006-04-12 10:04:50 UTC (rev 66878)
@@ -1,45 +1,14 @@
-<html metal:use-macro="context/@@standard_macros/view"
-    i18n:domain="zf.zscp">
-	<body>
-		<div metal:fill-slot="body"
-					tal:define="global pageversion string: 0.8;
-											info view/info">
-			
-			<div id="documentFirstHeading">Classifier Detail for: TODO</div>
-			<div id="package-wrapper">
-				<!-- begin package tabs -->
-				<div id="package-tabs">
-					<div id="tab-info" class="packageTab"><a href="index.html">Info</a>
-					</div>
-					<div id="tab-classifiers" class="packageTab selected"><a href="classifiers.html">
-						Classifiers</a>
-					</div>
-					<div id="tab-releases" class="packageTab"><a href="releases.html">
-						Releases</a>
-					</div>
-					<div id="tab-classifiers" class="packageTab"><a href="certifications.html">
-						Certifications</a>
-					</div>
-				</div>
-				<!-- end package tabs -->
-				<!-- begin package body -->
-				<div id="package-info" class="packageBody">
-					<div id="certifiedSilver" class="certSeal">&nbsp;
-					</div>
-					<div class="infoRow">
-						<label>Name:</label>
-						<div class="infoString">zope.search (Zope Search)</div>
-					</div>
-					<div class="infoRow">
-						<label>Description:</label>
-						<div class="infoString"> The Zope search package provides
-							generic user interface components, such as live search and
-							advanced search forms. </div>
-					</div>
-				</div>
-				<!-- end package body -->
-			</div>
+<html metal:use-macro="context/@@standard_macros/package-view">
+<body>
 
-		</div>
-	</body>
-</html>
\ No newline at end of file
+  <div metal:fill-slot="package-info">
+
+    <div style="height: 10px;"></div>
+
+    <div tal:repeat="classifier view/info/classifier"
+         tal:content="classifier" />
+
+  </div>
+
+</body>
+</html>

Added: zf.zscp/trunk/src/zf/zscp/website/browser/package_community.pt
===================================================================
--- zf.zscp/trunk/src/zf/zscp/website/browser/package_community.pt	2006-04-12 07:40:25 UTC (rev 66877)
+++ zf.zscp/trunk/src/zf/zscp/website/browser/package_community.pt	2006-04-12 10:04:50 UTC (rev 66878)
@@ -0,0 +1,68 @@
+<html metal:use-macro="context/@@standard_macros/package-view">
+<body>
+
+  <div metal:fill-slot="package-info"
+       tal:define="pub view/info">
+
+    <h2>Mailing Lists</h2>
+
+    <div class="infoRow" tal:condition="pub/developersMailinglist">
+      <label>Developers:</label>
+      <div class="infoString">
+        <a href=""
+           tal:content="pub/developersMailinglist"
+           tal:attributes="href string:mailto:${pub/developersMailinglist}">
+          zope at zope.org
+        </a>
+      </div>
+    </div>
+
+    <div class="infoRow" tal:condition="pub/usersMailinglist">
+      <label>Users:</label>
+      <div class="infoString">
+        <a href=""
+           tal:content="pub/usersMailinglist"
+           tal:attributes="href string:mailto:${pub/usersMailinglist}">
+          zope at zope.org
+        </a>
+      </div>
+    </div>
+
+    <h2>Development Sites</h2>
+
+    <div class="infoRow" tal:condition="pub/issueTracker">
+      <label>Issue Tracker:</label>
+      <div class="infoString">
+        <a href=""
+           tal:content="pub/issueTracker"
+           tal:attributes="href pub/issueTracker">
+          zope at zope.org
+        </a>
+      </div>
+    </div>
+
+    <div class="infoRow" tal:condition="pub/repositoryLocation">
+      <label>Repository:</label>
+      <div class="infoString">
+        <a href=""
+           tal:content="pub/repositoryLocation"
+           tal:attributes="href pub/repositoryLocation">
+          zope at zope.org
+        </a>
+      </div>
+    </div>
+
+    <div class="infoRow" tal:condition="pub/repositoryWebLocation">
+      <label>Browsable:</label>
+      <div class="infoString">
+        <a href=""
+           tal:content="pub/repositoryWebLocation"
+           tal:attributes="href pub/repositoryWebLocation">
+          zope at zope.org
+        </a>
+      </div>
+    </div>
+
+  </div>
+</body>
+</html>


Property changes on: zf.zscp/trunk/src/zf/zscp/website/browser/package_community.pt
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: zf.zscp/trunk/src/zf/zscp/website/browser/package_info.pt
===================================================================
--- zf.zscp/trunk/src/zf/zscp/website/browser/package_info.pt	2006-04-12 07:40:25 UTC (rev 66877)
+++ zf.zscp/trunk/src/zf/zscp/website/browser/package_info.pt	2006-04-12 10:04:50 UTC (rev 66878)
@@ -1,92 +1,64 @@
-<html metal:use-macro="context/@@standard_macros/view"
-    i18n:domain="zf.zscp">
-	<body>
-		<div metal:fill-slot="body"
-					tal:define="global pageversion string: 0.8;
-											info view/info">
-			
-			<div id="documentFirstHeading">Package Detail for: TODO</div>
-			<div id="package-wrapper">
-				<!-- begin package tabs -->
-				<div id="package-tabs">
-					<div id="tab-info" class="packageTab selected"><a href="index.html">Info</a>
-					</div>
-					<div id="tab-classifiers" class="packageTab"><a href="classifiers.html">
-						Classifiers</a>
-					</div>
-					<div id="tab-releases" class="packageTab"><a href="releases.html">
-						Releases</a>
-					</div>
-					<div id="tab-classifiers" class="packageTab"><a href="certifications.html">
-						Certifications</a>
-					</div>
-				</div>
-				<!-- end package tabs -->
-				<!-- begin package body -->
-				<div id="package-info" class="packageBody"
-							tal:define="packageName info/packageName;
-													name info/name;
-													certificationLevel info/certificationLevel;
-													certificationDate info/certificationDate;
-													summary info/summary;
-													license info/license;
-													author info/author;
-													homePage info/homePage;
-													description info/description">
-					
-					<!-- certification Seal (possible values: certified[Gold | Silver| Bronze]) -->
-					<div id="certifiedSilver" class="certSeal">&nbsp;
-					</div>
-					<div class="infoRow" tal:condition="python:packageName and name">
-						<label>Name:</label>
-						<div class="infoString">
-							<tal:block content="packageName">zope.search</tal:block>&nbsp;
-							(<tal:block content="name">Zope Search</tal:block>)
-						</div>
-					</div>
-					<div class="infoRow" tal:condition="python:certificationLevel and certificationDate">
-						<label>Certification:</label>
-						<div class="infoString">
-							<tal:block content="certificationLevel">Silver</tal:block>&nbsp;
-							(<tal:block content="certificationDate">January 31, 2006</tal:block>)
-						</div>
-					</div>
-					<div class="infoRow" tal:condition="summary">
-						<label>Summary:</label>
-						<div class="infoString"
-									tal:content="summary">Zope Search UI Package</div>
-					</div>
-					<div class="infoRow" tal:condition="license">
-						<label>License:</label>
-						<div class="infoString"
-									tal:content="license">ZPL</div>
-					</div>
-					<div class="infoRow" tal:condition="author">
-						<label>Author(s):</label>
-						<div class="infoString"
-									tal:content="author">Stephan Richter (stephan.richter
-							[at] tufts.edu)</div>
-					</div>
-					<div class="infoRow" tal:condition="homePage">
-						<label>Homepage:</label>
-						<div class="infoString"> <a
-								href="http://www.zope.org/Products/zope.search"
-									tal:content="info/homePage"
-									tal:attributes="href homePage">
-							http://www.zope.org/Products/zope.search</a>
-						</div>
-					</div>
-					<div class="infoRow" tal:condition="description">
-						<label>Description:</label>
-						<div class="infoString"
-									tal:content="description"> The Zope search package provides
-							generic user interface components, such as live search and
-							advanced search forms. </div>
-					</div>
-				</div>
-				<!-- end package body -->
-			</div>
+<html metal:use-macro="context/@@standard_macros/package-view">
+<body>
 
-		</div>
-	</body>
-</html>
\ No newline at end of file
+  <div metal:fill-slot="package-info"
+       tal:define="pub view/info">
+
+    <div style="height: 10px;"></div>
+
+    <div class="infoRow">
+      <div class="infoString"
+           tal:content="pub/summary">Zope Search UI Package</div>
+    </div>
+    <div class="infoRow"
+         tal:condition="pub/certificationLevel">
+      <label>Certification:</label>
+      <div class="infoString">
+        <tal:block content="pub/certificationLevel">Level 1</tal:block>&nbsp;
+        (<tal:block content="pub/certificationDate">
+          January 31, 2006</tal:block>)
+      </div>
+    </div>
+    <div class="infoRow" tal:condition="pub/license">
+      <label>License:</label>
+      <div class="infoString"
+           tal:content="pub/license">ZPL</div>
+    </div>
+    <div class="infoRow" tal:condition="pub/author">
+      <label>Author(s):</label>
+      <div class="infoString">
+        <div tal:repeat="author pub/author">
+          <span tal:replace="author/name" /> &ndash;
+          <a href=""
+             tal:attributes="href string:mailto:${author/email}"
+             tal:content="author/email" />
+        </div>
+      </div>
+    </div>
+    <div class="infoRow" tal:condition="pub/homePage">
+      <label>Homepage:</label>
+      <div class="infoString"> <a
+          href="http://www.zope.org/Products/zope.search"
+            tal:content="pub/homePage"
+            tal:attributes="href pub/homePage">
+        http://www.zope.org/Products/zope.search</a>
+      </div>
+    </div>
+    <div class="infoRow" tal:condition="pub/description">
+      <label>Description:</label>
+      <div class="infoString"
+            tal:content="pub/description"> The Zope search package provides
+        generic user interface components, such as live search and
+        advanced search forms.
+      </div>
+    </div>
+    <div class="infoRow" tal:condition="pub/description">
+      <label>Platform:</label>
+      <div class="infoString"
+            tal:content="pub/platform">all
+      </div>
+    </div>
+
+  </div>
+</body>
+</html>

Modified: zf.zscp/trunk/src/zf/zscp/website/browser/package_releases.pt
===================================================================
--- zf.zscp/trunk/src/zf/zscp/website/browser/package_releases.pt	2006-04-12 07:40:25 UTC (rev 66877)
+++ zf.zscp/trunk/src/zf/zscp/website/browser/package_releases.pt	2006-04-12 10:04:50 UTC (rev 66878)
@@ -1,112 +1,85 @@
-<html metal:use-macro="context/@@standard_macros/view"
-    i18n:domain="zf.zscp">
+<html metal:use-macro="context/@@standard_macros/package-view">
 <body>
-<div metal:fill-slot="body"
-      tal:define="global pageversion string: 0.8;
-                  releases view/releases">
 
-  <div id="documentFirstHeading">Release Detail for: TODO</div>
-  <div id="package-wrapper">
-    <!-- begin package tabs -->
-    <div id="package-tabs">
-      <div id="tab-info" class="packageTab"><a href="index.html">Info</a>
-      </div>
-      <div id="tab-classifiers" class="packageTab">
-        <a href="classifiers.html">Classifiers</a>
-      </div>
-      <div id="tab-releases" class="packageTab selected">
-        <a href="releases.html">Releases</a>
-      </div>
-      <div id="tab-classifiers" class="packageTab">
-        <a href="certifications.html">Certifications</a>
-      </div>
+  <div metal:fill-slot="package-info">
+
+    <div tal:condition="not: view/releases"
+         i18n:translate="">
+      There are no releases for this package.
     </div>
-    <!-- end package tabs -->
 
-    <!-- begin package body -->
-    <div id="package-info" class="packageBody">
+    <div tal:repeat="release view/releases">
 
-      <div tal:condition="not: releases"
-           i18n:translate="">
-        There are no releases for this package.
-      </div>
+      <h2>
+        <span tal:replace="release/name" />
+        <span tal:replace="release/version" />
+        <span tal:condition="release/codename">
+          ("<span tal:replace="release/codename" />")
+        </span>
+      </h2>
 
-      <div tal:repeat="release releases">
-
-        <h2>
-          <span tal:replace="release/name" />
-          <span tal:replace="release/version" />
-          <span tal:condition="release/codename">
-            ("<span tal:replace="release/codename" />")
-          </span>
-        </h2>
-
-        <div class="infoRow">
-          <label>Release Date:</label>
-          <div class="infoString"
-               tal:content="release/date" />
+      <div class="infoRow">
+        <label>Release Date:</label>
+        <div class="infoString"
+             tal:content="release/date" />
+      </div>
+      <div class="infoRow">
+        <label>Certification:</label>
+        <div class="infoString"
+             tal:content="release/certification" />
+      </div>
+      <div class="infoRow">
+        <label>Package:</label>
+        <div class="infoString">
+          <a href=""
+             tal:attributes="href release/package"
+             tal:content="release/package" />
         </div>
-        <div class="infoRow">
-          <label>Certification:</label>
-          <div class="infoString"
-               tal:content="release/certification" />
+      </div>
+      <div class="infoRow"
+           tal:condition="release/source">
+        <label>Source:</label>
+        <div class="infoString">
+          <a href=""
+             tal:attributes="href release/source"
+             tal:content="release/source" />
         </div>
-        <div class="infoRow">
-          <label>Package:</label>
-          <div class="infoString">
-            <a href=""
-               tal:attributes="href release/package"
-               tal:content="release/package" />
-          </div>
+      </div>
+      <div class="infoRow"
+           tal:condition="release/announcement">
+        <label>Announcement:</label>
+        <div class="infoString">
+          <a href=""
+             tal:attributes="href release/announcement"
+             tal:content="release/announcement" />
         </div>
-        <div class="infoRow"
-             tal:condition="release/source">
-          <label>Source:</label>
-          <div class="infoString">
-            <a href=""
-               tal:attributes="href release/source"
-               tal:content="release/source" />
-          </div>
+      </div>
+      <div class="infoRow"
+           tal:condition="release/releaseManager">
+        <label>Release Manager:</label>
+        <div class="infoString">
+          <span tal:replace="release/releaseManager/name" />
+          <a href=""
+             tal:attributes="href
+                 string:mailto:${release/releaseManager/email}"
+             tal:content="release/releaseManager/email" />
         </div>
-        <div class="infoRow"
-             tal:condition="release/announcement">
-          <label>Announcement:</label>
-          <div class="infoString">
-            <a href=""
-               tal:attributes="href release/announcement"
-               tal:content="release/announcement" />
-          </div>
+      </div>
+      <div class="infoRow"
+           tal:condition="release/pressContact">
+        <label>Press Contact:</label>
+        <div class="infoString">
+          <span tal:replace="release/pressContact/name" />
+          <a href=""
+             tal:attributes="href
+                 string:mailto:${release/pressContact/email}"
+             tal:content="release/pressContact/email" />
         </div>
-        <div class="infoRow"
-             tal:condition="release/releaseManager">
-          <label>Release Manager:</label>
-          <div class="infoString">
-            <span tal:replace="release/releaseManager/name" />
-            <a href=""
-               tal:attributes="href
-                   string:mailto:${release/releaseManager/email}"
-               tal:content="release/releaseManager/email" />
-          </div>
-        </div>
-        <div class="infoRow"
-             tal:condition="release/pressContact">
-          <label>Press Contact:</label>
-          <div class="infoString">
-            <span tal:replace="release/pressContact/name" />
-            <a href=""
-               tal:attributes="href
-                   string:mailto:${release/pressContact/email}"
-               tal:content="release/pressContact/email" />
-          </div>
-        </div>
-
       </div>
 
     </div>
 
-    <!-- end package body -->
   </div>
 
-</div>
 </body>
 </html>

Modified: zf.zscp/trunk/src/zf/zscp/website/browser/site.py
===================================================================
--- zf.zscp/trunk/src/zf/zscp/website/browser/site.py	2006-04-12 07:40:25 UTC (rev 66877)
+++ zf.zscp/trunk/src/zf/zscp/website/browser/site.py	2006-04-12 10:04:50 UTC (rev 66878)
@@ -19,13 +19,16 @@
 from zope.interface import Interface
 from zope.interface import implements
 from zope.formlib import page
+from zope.app import zapi
 from zope.app.traversing.browser.absoluteurl import absoluteURL
 from zope.app.pagetemplate import ViewPageTemplateFile
+from zc.table import table, column
 
+from zf.zscp import interfaces
 
 class ISiteIndex(Interface):
     """Marker interface for Site index.
-    
+
     Provider like logo provider need this for show up at the index view.
     """
 
@@ -36,7 +39,20 @@
     implements(ISiteIndex)
 
 
+class NameColumn(column.SortingColumn):
 
+    def renderCell(self, item, formatter):
+        url = zapi.absoluteURL(item, formatter.request)
+        return '<a href="%s">%s</a>' %(url, item.name)
+
+    def getSortKey(self, item, formatter):
+        return item.name
+
+def getCertification(item, formatter):
+    return interfaces.CERTIFICATION_LEVELS.getTerm(
+        item.publication.certificationLevel).title
+
+
 class PackageList(page.Page):
     """Show a list of packages."""
 
@@ -61,3 +77,21 @@
 
     def getPackageInfo(self):
         return self.packageInfos
+
+
+    def table(self):
+
+        columns = [
+            NameColumn(u'Package Name', name='packageName'),
+            column.GetterColumn(u'Name', name='name',
+                                getter=lambda i,f: i.publication.name),
+            column.GetterColumn(u'Certification', getCertification,
+                                name='certification'),
+            ]
+
+        formatter = table.FormSortFormatter(
+            self.context, self.request, self.context['packages'].values(),
+            columns=columns,
+            sort_on=(('certification', True), ('packageName', False))
+            )
+        return formatter()

Modified: zf.zscp/trunk/src/zf/zscp/website/browser/site_packages.pt
===================================================================
--- zf.zscp/trunk/src/zf/zscp/website/browser/site_packages.pt	2006-04-12 07:40:25 UTC (rev 66877)
+++ zf.zscp/trunk/src/zf/zscp/website/browser/site_packages.pt	2006-04-12 10:04:50 UTC (rev 66878)
@@ -2,11 +2,17 @@
 <body>
 <div align="center" metal:fill-slot="body">
 <div id="documentFirstHeading">Package List</div>
-	<div tal:repeat="info view/getPackageInfo">
-		<a href="#"
-				tal:content="info/name"
-				tal:attributes="href info/url">name</a>
-	</div>
+
+<form action=""
+      tal:attributes="action request/URL">
+
+  <div class="package-table">
+    <div tal:replace="structure view/table" />
+  </div>
+
+</form>
+
 </div>
+
 </body>
 </html>



More information about the Checkins mailing list