[Libreoffice-commits] .: Branch 'newbranch' - liboextensioncenter/am.liboextensioncenter
Andreas Mantke
andreasma at kemper.freedesktop.org
Fri Apr 15 09:13:31 PDT 2011
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/.directory | 4
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/by-category.pt | 108 +++
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/findParentProjectURL.py | 11
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/getUpcomingReleases.py | 37 +
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/liboextensioncenter.css.dtml | 66 ++
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/liboextensioncenter_ploneorg.pt | 314 ++++++++++
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/liboextensioncenter_ploneorg.pt.metadata | 2
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/liboextensioncenter_view.pt | 169 +++++
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/liboextensioncenter_view.pt.metadata | 2
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/portlet_project_info.pt | 56 +
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/portlet_project_resources.pt | 133 ++++
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/portlet_project_roadmap.pt | 81 ++
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/portlet_releases.pt | 89 ++
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_categories_view.pt | 69 ++
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_file_view.pt | 70 ++
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_improvements_listing.pt | 146 ++++
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_improvements_view.pt | 113 +++
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_project_view.pt | 269 ++++++++
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_release_listing.pt | 60 +
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_release_view.pt | 244 +++++++
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_releasefolder_view.pt | 163 +++++
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_roadmap.pt | 303 +++++++++
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_view_ploneorg.pt | 270 ++++++++
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_view_ploneorg.pt.metadata | 2
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter_images/documentation_icon.gif |binary
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter_images/documentation_icon.gif.metadata | 3
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter_images/download_icon.gif |binary
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter_images/download_icon.gif.metadata | 3
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter_images/hour_icon.gif |binary
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter_images/hour_icon.gif.metadata | 3
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter_images/improvementproposal_icon.gif |binary
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter_images/improvementproposal_icon.gif.metadata | 3
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter_images/issuetracker_icon.gif |binary
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter_images/issuetracker_icon.gif.metadata | 3
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter_images/platform_all_platforms.gif |binary
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter_images/platform_all_platforms.gif.metadata | 3
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter_images/platform_beos.gif |binary
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter_images/platform_beos.gif.metadata | 3
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter_images/platform_bsd.gif |binary
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter_images/platform_bsd.gif.metadata | 3
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter_images/platform_linux.gif |binary
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter_images/platform_linux.gif.metadata | 3
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter_images/platform_linux_bsd_unix.gif |binary
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter_images/platform_linux_bsd_unix.gif.metadata | 3
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter_images/platform_mac_os_x.gif |binary
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter_images/platform_mac_os_x.gif.metadata | 3
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter_images/platform_os_2.gif |binary
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter_images/platform_os_2.gif.metadata | 3
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter_images/platform_qnx.gif |binary
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter_images/platform_qnx.gif.metadata | 3
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter_images/platform_solaris.gif |binary
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter_images/platform_solaris.gif.metadata | 3
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter_images/platform_suse_linux.gif |binary
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter_images/platform_suse_linux.gif.metadata | 3
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter_images/platform_unix__other_.gif |binary
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter_images/platform_unix__other_.gif.metadata | 3
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter_images/platform_windows.gif |binary
liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter_images/platform_windows.gif.metadata | 3
58 files changed, 2832 insertions(+)
New commits:
commit d95af929776e300bf86f558ccca533189888d9b1
Author: Andreas Mantke <maand at gmx.de>
Date: Fri Apr 15 18:13:12 2011 +0200
new naming of directories and files with liboextensioncenter
diff --git a/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/.directory b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/.directory
new file mode 100644
index 0000000..6d1d12c
--- /dev/null
+++ b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/.directory
@@ -0,0 +1,4 @@
+[Dolphin]
+AdditionalInfo=3
+Timestamp=2011,4,15,18,4,17
+ViewMode=1
diff --git a/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/by-category.pt b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/by-category.pt
new file mode 100644
index 0000000..29cc7b2
--- /dev/null
+++ b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/by-category.pt
@@ -0,0 +1,108 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xml:lang="en"
+ lang="en"
+ xmlns:tal="http://xml.zope.org/namespaces/tal"
+ xmlns:metal="http://xml.zope.org/namespaces/metal"
+ metal:use-macro="here/main_template/macros/master"
+ xmlns:i18n="http://xml.zope.org/namespaces/i18n"
+ i18n:domain="liboextensioncenter">
+
+<head>
+ <metal:top fill-slot="top_slot">
+ <tal:border define="dummy python:request.set('disable_border', 1)"/>
+ </metal:top>
+ <metal:css fill-slot="style_slot">
+ <style type="text/css" media="all"
+ tal:content="string:@import url($portal_url/liboextensioncenter.css);"></style>
+ </metal:css>
+ <metal:override fill-slot="column_two_slot" />
+</head>
+
+<body>
+
+ <div metal:fill-slot="main"
+ id="content"
+ tal:define="view context/@@category_view;
+ global getInfoFor nocall:here/portal_workflow/getInfoFor;
+ category python:request.traverse_subpath and request.traverse_subpath[0] or nothing;">
+
+ <tal:logic condition="not:category">
+ <tal:redirect define="dummy python:request.RESPONSE.redirect(here.absolute_url())"/>
+ </tal:logic>
+
+ <tal:projects condition="category"
+ define="packages python: view.by_category(category)">
+
+ <h1 class="documentFirstHeading" i18n:translate="label_projects_by_category">
+ Projects in category <span i18n:name="label_projects_category_name" tal:replace="python:view.category_name(category)" />
+ </h1>
+
+ <a href=""
+ class="link-parent"
+ i18n:translate="label_up_to_project_overview"
+ tal:define="parent_url here/absolute_url"
+ tal:condition="parent_url"
+ tal:attributes="href parent_url">
+ « Back to project overview
+ </a>
+
+ <tal:nopackages condition="not:nocall:packages">
+ <div class="discreet" i18n:translate="no_packages_found">
+ No projects found in this category.
+ </div>
+ </tal:nopackages>
+
+ <tal:packages condition="nocall:packages">
+ <p class="documentDescription"
+ tal:content="python:view.category_description(category)">
+ Description
+ </p>
+
+ <p class="discreet" i18n:translate="available_projects_category">
+ The available projects in this category, alphabetized.
+ </p>
+
+
+ <div class="tileItem visualIEFloatFix"
+ tal:repeat="package packages">
+<!--
+ <div class="visualIEFloatFix" style="margin-top: 1em;"
+ tal:condition="package/screenshot_thumb | nothing">
+ <div style="float:right; text-align: center; margin: 1em 0 1em 1em;">
+ <a class="discreet"
+ tal:attributes="href string:${package/absolute_url}/screenshot/image_view_fullscreen">
+ <img tal:replace="structure package/screenshot_thumb" />
+ <br />
+ <img tal:replace="structure here/search_icon.gif" />
+ <span i18n:translate="label_click_to_enlarge">
+ Click to enlarge
+ </span>
+ </a>
+ </div>
+ </div>
+-->
+ <h2 class="tileHeadline">
+ <a tal:attributes="href package/getURL" tal:content="package/Title">Title</a>
+ </h2>
+ <p class="tileBody"
+ tal:content="package/Description">
+ Description
+ </p>
+
+ <p class="tileFooter">
+ <a href=""
+ tal:attributes="href package/getURL"
+ i18n:translate="read_more">
+ Read More…
+ </a>
+ </p>
+ </div>
+ </tal:packages>
+
+ </tal:projects>
+
+ </div>
+
+</body>
+
+</html>
diff --git a/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/findParentProjectURL.py b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/findParentProjectURL.py
new file mode 100755
index 0000000..ad41f0f
--- /dev/null
+++ b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/findParentProjectURL.py
@@ -0,0 +1,11 @@
+## Script (Python) "findParentProjectURL"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=releaseUrl
+##title=Calculate the parent project URL for the given release URL
+
+parts = releaseUrl.split('/')
+return '/'.join(parts[:-2])
\ No newline at end of file
diff --git a/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/getUpcomingReleases.py b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/getUpcomingReleases.py
new file mode 100755
index 0000000..b7df530
--- /dev/null
+++ b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/getUpcomingReleases.py
@@ -0,0 +1,37 @@
+## Script (Python) "getUpcomingReleases"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=releasesFolder='../releases', states=['pre-release', 'alpha', 'beta', 'release-candidate']
+##title=Get upcoming software releases
+
+from Products.CMFCore.utils import getToolByName
+
+wftool = getToolByName(context, 'portal_workflow')
+folder = context.restrictedTraverse(releasesFolder)
+
+typesFilter = {'portal_type' : ['PSCRelease']}
+
+# Return a list of items sorted by expected release dates in reverse order;
+# items with no expected date set are returned at the end, in folder-order.
+
+datedReleases = []
+undatedReleases = []
+
+for r in folder.folderlistingFolderContents(contentFilter = typesFilter):
+ if wftool.getInfoFor(r, 'review_state') in states:
+ if r.getExpectedReleaseDate():
+ datedReleases.append(r)
+ else:
+ undatedReleases.append(r)
+
+datedReleases.sort(lambda x, y: \
+ cmp(x.getExpectedReleaseDate(), y.getExpectedReleaseDate()))
+
+releases = datedReleases + undatedReleases
+
+return releases
+
+
diff --git a/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/liboextensioncenter.css.dtml b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/liboextensioncenter.css.dtml
new file mode 100644
index 0000000..77a8272
--- /dev/null
+++ b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/liboextensioncenter.css.dtml
@@ -0,0 +1,66 @@
+/*
+** liboextensioncenter style sheet for CSS2-capable browsers.
+**
+** Copyright Alexander Limi - http://www.plonesolutions.com
+**
+** Feel free to use whole or parts of this for your own designs, but give credit
+** where credit is due.
+**
+*/
+
+/* <dtml-with base_properties> */
+
+.portletHalfWidth {
+ width: 45%;
+ float: left;
+ margin: 0 1em 1em 0 !important;
+}
+
+.portletThirdWidth {
+ width: 30%;
+ float: left;
+ margin: 0 1em 1em 0 !important;
+}
+
+/* This portlet link selector can be removed once Plone 2.1.3 and later is more common */
+.portlet a {
+ display: inline;
+}
+
+
+.state-being-discussed {
+ color: Black;
+}
+
+.state-in-progress {
+ color: &dtml-notifyBorderColor;;
+}
+
+.state-completed {
+ color: &dtml-linkColor;;
+}
+
+.state-rejected {
+ color: &dtml-discreetColor;;
+}
+
+.state-deferred {
+ color: Red;
+}
+
+.state-ready-for-merge {
+ color: #74AE0B;
+}
+
+.poweredBy {
+}
+
+.note {
+ border-color: #CCCCCC;
+ border-style: solid;
+ border-width: thin 0 0 thin;
+ margin: 2em;
+ padding: 0 0.5em 0 1em;
+}
+
+/* </dtml-with> */
diff --git a/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/liboextensioncenter_ploneorg.pt b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/liboextensioncenter_ploneorg.pt
new file mode 100644
index 0000000..ab02ecf
--- /dev/null
+++ b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/liboextensioncenter_ploneorg.pt
@@ -0,0 +1,314 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xml:lang="en"
+ lang="en"
+ xmlns:tal="http://xml.zope.org/namespaces/tal"
+ xmlns:metal="http://xml.zope.org/namespaces/metal"
+ metal:use-macro="here/main_template/macros/master"
+ xmlns:i18n="http://xml.zope.org/namespaces/i18n"
+ i18n:domain="plonehelpcenter">
+
+<head>
+ <metal:css fill-slot="style_slot">
+ <style type="text/css" media="all"
+ tal:content="string:@import url($portal_url/liboextensioncenter.css);">
+ </style>
+ <style type="text/css">
+ .screenshot {
+ float: right;
+ }
+ .project {
+ margin-top: 1em;
+ padding-top: 1em;
+ border-top: 1px solid #8CACBB;
+ }
+ </style>
+ </metal:css>
+ <metal:block fill-slot="top_slot">
+ <tal:noborder condition="python:not user.has_permission('Modify portal content', context)">
+ <tal:noborderset tal:define="dummy python:request.set('disable_border', 1)" />
+ </tal:noborder>
+ </metal:block>
+</head>
+
+<body>
+ <div metal:fill-slot="main"
+ tal:define="view context/@@category_view;
+ global getInfoFor nocall:here/portal_workflow/getInfoFor;
+ catalog nocall:here/portal_catalog;
+ herePath python:'/'.join(here.getPhysicalPath());
+ currentCategory request/getCategories | string:;
+ currentVersion request/getCompatibility | string:any;
+ currentVersion python:test(currentVersion=='current',['Plone 3.0','Plone 2.5'],currentVersion);
+ currentVersion python:test(currentVersion=='any','',currentVersion);
+ getCategoryName nocall:view/category_name;
+ normalizeString nocall:context/@@plone/normalizeString;
+ toLocalizedTime nocall:context/@@plone/toLocalizedTime;
+ cropText nocall:context/@@plone/cropText;">
+
+ <h1 tal:content="here/title_or_id" class="documentFirstHeading">
+ Title or id
+ </h1>
+
+ <div class="feedButton" >
+ <a href="" tal:attributes="href string:${context/absolute_url}/search_rss?portal_type=PSCRelease"><img
+ i18n:attributes="title title_rss_feed; alt label_rss_feed;"
+ tal:attributes="src string:$portal_url/rss.gif" src="rss.gif"
+ alt="RSS Feed" title="RSS feed of the latest releases" /></a>
+ </div>
+
+ <p class="discreet" tal:define="projectsCount python:len(catalog(portal_type = 'PSCProject', path = herePath));
+ releasesCount python:len(catalog(portal_type = 'PSCRelease', path = herePath))"
+ i18n:translate="help_download_currently_listing">
+ Currently listing <span i18n:name="results_projects_count" tal:replace="projectsCount" /> projects with <span i18n:name="results_releases_count" tal:replace="releasesCount" /> releases.
+ </p>
+
+ <p class="documentDescription" tal:content="here/Description">
+ Description
+ </p>
+
+ <div class="visualClear"><!-- --></div>
+
+ <tal:featured_project_wrapper tal:condition="python: here.getFeaturedProject()">
+ <dl class="portlet" style="width: 23em; float: left">
+ <dt class="portletHeader" i18n:translate="label_psc_ploneorg_featured_project">
+ Get <tal:featured_project tal:replace="python: here.getFeaturedProject().Title()"
+ i18n:name="label_psc_ploneorg_get_featured_project">
+ Featured Project </tal:featured_project>
+ for your platform
+ </dt>
+ <dd class="portletItem" style="text-align: center"
+ tal:define="project_url python: here.getFeaturedProject().absolute_url()">
+ <a tal:attributes="href project_url"><img
+ height="40" width="40" alt="Windows" src="platform_windows.gif" /><img
+ height="40" width="40" alt="Mac" src="platform_mac_os_x.gif" /><img
+ height="40" width="40" alt="Linux" src="platform_linux.gif" /></a>
+ <h3>
+ <a tal:attributes="href project_url" title="Download projects"
+ style="border-bottom: 1px solid #8CACBB"
+ i18n:attributes="title title_psc_ploneorg_get_download">
+ <span i18n:translate="label_psc_ploneorg_get_download">Download</span>
+ <tal:featured_project tal:replace="python: here.getFeaturedProject().Title()">Featured Project</tal:featured_project>
+ </a>
+ </h3>
+ <span class="discreet"
+ i18n:translate="label_psc_ploneorg_latest_release">Latest release:
+ <tal:latest_release tal:replace="python: here.getFeaturedProjectRelease().getId()"
+ i18n:name="title_psc_ploneorg_latest_release">
+ Latest Release
+ </tal:latest_release>
+ </span>
+ </dd>
+ </dl>
+ </tal:featured_project_wrapper>
+
+ <dl class="portlet" style="float:right; width: 23em;">
+ <dt class="portletHeader"
+ i18n:translate="heading_search_addon_packages">Search for add-on packages</dt>
+
+ <dd class="portletItem">
+ <form style="text-align: center;"
+ name="searchform" id="searchform"
+ action="/search" tal:attributes="action string:${portal_url}/search">
+
+ <label for="searchGadget"
+ class="hiddenStructure">
+ Search add-ons
+ </label>
+ <input type="hidden" name="path" tal:attributes="value python:'/'.join(here.getPhysicalPath())" />
+ <input type="hidden" name="portal_type" value="PSCProject" />
+ <input name="SearchableText" type="text"
+ size="12"
+ style="font-size: 150%"
+ title="Search add-ons"
+ accesskey="accesskeys-search"
+ i18n:attributes="title label_search_addon"
+ tabindex="0" />
+
+ <input class="searchButton" name="Search"
+ style="font-size: 150%; background-position: 3px 5px; padding-left: 25px; padding-right: 10px"
+ type="submit" value="Search" i18n:attributes="value label_search_package_releases"
+ accesskey="accesskeys-search" />
+ </form>
+ </dd>
+ </dl>
+
+ <dl class="portlet" style="float:right; clear: right; width: 23em">
+
+ <dt class="portletHeader"
+ i18n:translate="heading_want_addon_package">Want to list your add-on package?</dt>
+ <dd class="portletItem" style="text-align: center">
+ <form action="createObject"
+ tal:condition="python: user.has_permission('liboextensioncenter: Add Project', context)">
+ <input name="type_name"
+ type="hidden"
+ value="PSCProject"
+ />
+ <input class="standalone"
+ type="submit"
+ style="font-size: 110%; padding: 3px 5px 3px 26px; background-position: 10px 5px"
+ value="Add new project"
+ i18n:attributes="value label_add_new_project"
+ />
+ </form>
+
+ <form tal:define="pss modules/Products/PythonScripts/standard;
+ isAnon context/@@plone_portal_state/anonymous;"
+ tal:condition="python: not user.has_permission('Add portal content', context) and isAnon"
+ tal:attributes="action python:'%s/login_form?came_from=%s' %
+ (here.portal_url(),
+ pss.url_quote(request['URL']))">
+
+ <input class="standalone"
+ type="submit"
+ style="font-size: 110%; padding: 3px 5px 3px 26px; background-position: 10px 5px"
+ value="Log in to add your project"
+ i18n:attributes="value label_login_add_project"
+ />
+ </form>
+ </dd>
+ </dl>
+
+ <!-- <select style="float: left;"
+ onchange="window.location.href=this.options[this.selectedIndex].value">
+ <option value="">Go directly to project…</option>
+ <option tal:repeat="project here/getActiveProjects"
+ tal:content="python:project.Title[:30]"
+ tal:attributes="value project/getURL">
+ </option>
+ </select> -->
+
+
+
+ <div class="visualClear"><!----></div>
+
+ <h2 style="margin-top:1em" i18n:translate="heading_addon_package_releases">
+ Add-on Package Releases
+ </h2>
+
+ <form id="product_select" class="even" style="padding: 1em" action="#" tal:attributes="action string:${here/absolute_url}">
+ <label i18n:translate="label_show">Show</label>
+ <select name="getCategories">
+ <option value="" i18n:translate="label_all_categories">All categories</option>
+ <tal:block tal:repeat="cat here/availableCategories">
+ <option tal:define="csplit python:[s.strip() for s in cat.split('|')];
+ cid python:csplit[0]"
+ tal:content="python:csplit[1]"
+ tal:attributes="value cid;
+ selected python:test(cid==currentCategory,'selected',nothing)" />
+ </tal:block>
+ </select>
+ <label i18n:translate="label_for">for</label>
+ <select name="getCompatibility">
+ <tal:block tal:repeat="version here/getAvailableVersions">
+ <option tal:content="version"
+ tal:attributes="value version;
+ selected python:test(currentVersion==version,'selected',nothing)">
+ Plone 3.0
+ </option>
+ </tal:block>
+ <option value="any" tal:attributes="selected python:test(currentVersion=='','selected',nothing)"
+ i18n:translate="label_any_version">
+ Any version
+ </option>
+ <tal:block condition="nothing" tal:repeat="version python:catalog.uniqueValuesFor('getCompatibility')">
+ <option tal:content="version"
+ tal:attributes="value version;
+ selected python:test(currentVersion==version,'selected',nothing)">
+ Plone 3.0
+ </option>
+ </tal:block>
+ </select>
+
+ <input class="context" type="submit" name="product_search" value="Update"
+ i18n:attributes="value label_update_form_package_releases" />
+ </form>
+
+ <div tal:define="results python:catalog(getCategories=currentCategory,
+ getCompatibility=currentVersion,
+ portal_type='PSCRelease',
+ sort_on='effective',
+ sort_order='reverse');
+ Batch python:modules['Products.CMFPlone'].Batch;
+ b_size python:20;b_start python:0;b_start request/b_start | b_start;
+ desc_length site_properties/search_results_description_length;
+ desc_ellipsis site_properties/ellipsis;">
+
+ <p tal:condition="not: results">
+ <strong i18n:translate="description_no_results_found">No results were found.</strong>
+ </p>
+
+ <p class="discreet" i18n:translate="help_releases_matching_criteria">
+ <span i18n:name="results_releases_matching_criteria" tal:replace="python:len(results)">234</span> releases matching your criteria, sorted with latest releases first.
+ </p>
+
+ <div tal:condition="results"
+ tal:define="batch python:Batch(results, b_size, int(b_start), orphan=1);">
+
+ <div class="project" tal:repeat="result batch">
+ <tal:entry define="obj result/getObject;
+ project python:obj.aq_parent.aq_parent;
+ project python:test(project.portal_type=='PSCProject',project,obj);
+ url result/getURL;
+ projectURL project/absolute_url;
+ result_type result/portal_type;">
+
+ <div class="screenshot" tal:condition="project/logo|nothing">
+ <a href="#" tal:attributes="href projectURL"><img tal:replace="structure project/logo" /></a>
+ </div>
+
+ <div class="project_details">
+ <h3 tal:define="item_wf_state result/review_state;
+ item_wf_state_class python:'state-' + normalizeString(item_wf_state);"
+ tal:attributes="class item_wf_state_class">
+
+ <a href="#" style="border-bottom: 1px solid #8CACBB" tal:attributes="href projectURL;"
+ tal:content="result/pretty_title_or_id">Software Project</a>
+
+ <span class="discreet" tal:content="python:toLocalizedTime(result.ModificationDate, long_format=0)">
+ Modification Date
+ </span>
+
+ </h3>
+
+ <p class="discreet"
+ tal:condition="not:currentCategory">
+ in <span tal:replace="python:', '.join([getCategoryName(id) for id in result.getCategories])" />
+ </p>
+
+ <div class="description">
+ <p tal:content="python:cropText(project.Description(), desc_length, desc_ellipsis)">
+ Project Description
+ </p>
+ <p>
+ <strong i18n:translate="label_new_this_release">New in this release:</strong> <br />
+ <span tal:content="python:cropText(result.Description, desc_length, desc_ellipsis)">
+ Release Description
+ </span>
+ </p>
+ </div>
+ </div>
+ </tal:entry>
+ </div>
+
+ <!-- Navigation -->
+ <div metal:use-macro="here/batch_macros/macros/navigation" />
+
+ </div>
+ </div>
+
+
+ <div class="visualClear"><!----></div>
+
+ <div class="poweredBy" i18n:translate="label_powered_by_ploneorg">
+ Powered by <img src="product_icon.gif" alt="liboextensioncenter's Home Page"
+ i18n:attributes="alt label_psc_homepage">
+ <a class="link-plain"
+ href="http://plone.org/products/liboextensioncenter"
+ title="liboextensioncenterr's Home Page"
+ i18n:attributes="title title_psc_homepage">liboextensioncenter</a>
+ </div>
+
+ </div>
+
+</body>
+</html>
diff --git a/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/liboextensioncenter_ploneorg.pt.metadata b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/liboextensioncenter_ploneorg.pt.metadata
new file mode 100644
index 0000000..3873470
--- /dev/null
+++ b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/liboextensioncenter_ploneorg.pt.metadata
@@ -0,0 +1,2 @@
+[default]
+title= View by release
diff --git a/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/liboextensioncenter_view.pt b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/liboextensioncenter_view.pt
new file mode 100644
index 0000000..5b5ea5e
--- /dev/null
+++ b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/liboextensioncenter_view.pt
@@ -0,0 +1,169 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xml:lang="en"
+ lang="en"
+ xmlns:tal="http://xml.zope.org/namespaces/tal"
+ xmlns:metal="http://xml.zope.org/namespaces/metal"
+ metal:use-macro="context/main_template/macros/master"
+ xmlns:i18n="http://xml.zope.org/namespaces/i18n"
+ i18n:domain="liboextensioncenter">
+
+<head>
+ <metal:css fill-slot="style_slot">
+ <style type="text/css" media="all"
+ tal:content="string:@import url($portal_url/liboextensioncenter.css);"></style>
+ </metal:css>
+</head>
+
+<body>
+
+ <div metal:fill-slot="main"
+ tal:define="view context/@@softwarecenter_view">
+
+ <h1 tal:content="context/title_or_id" class="documentFirstHeading">
+ Title or id
+ </h1>
+
+ <div class="feedButton" >
+ <a href="" tal:attributes="href view/rss_url">
+ <img i18n:attributes="title title_rss_feed; alt label_rss_feed;"
+ tal:attributes="src string:$portal_url/rss.gif"
+ src="rss.gif"
+ alt="RSS Feed"
+ title="RSS feed of the latest releases" />
+ </a>
+ </div>
+
+ <p class="documentDescription"
+ tal:content="context/Description">
+ Description.
+ </p>
+
+ <form>
+ <select style="float: right; clear: right"
+ onchange="window.location.href=this.options[this.selectedIndex].value">
+ <option value="" i18n:translate="label_go_directly_project">Go directly to project…</option>
+ <option tal:repeat="project view/active_projects"
+ tal:content="python:project.Title[:30]"
+ tal:attributes="value project/getURL">
+ </option>
+ </select>
+ </form>
+
+ <form action="createObject"
+ tal:condition="view/can_add_project">
+ <input name="type_name"
+ type="hidden"
+ value="PSCProject"
+ />
+ <input class="standalone"
+ type="submit"
+ value="Add New Software Project"
+ i18n:attributes="value label_add_new_software_project"
+ />
+ </form>
+
+ <form action="createObject"
+ tal:condition="context/@@plone_portal_state/anonymous">
+
+ <input name="type_name"
+ type="hidden"
+ value="PSCProject"
+ />
+ <input class="standalone"
+ type="submit"
+ value="Log in to add Software Project"
+ i18n:attributes="value"
+ />
+ </form>
+
+ <p class="discreet"
+ style="text-align: right; clear: both;"
+ i18n:translate="label_currently_listing_projects_releases">
+ Currently listing <span i18n:name="label_project_count" tal:replace="view/project_count" /> projects
+ with <span i18n:name="label_release_count" tal:replace="view/release_count" /> releases.
+ </p>
+
+
+ <p class="discreet" i18n:translate="help_latest_releases_each_category">
+ The latest releases in each category. To see all projects in a specific
+ category, click "Show all".
+ </p>
+
+ <div tal:repeat="category view/categories">
+ <dl class="portlet portletThirdWidth">
+ <dt class="portletHeader">
+ <tal:syndicate condition="context/portal_syndication/isSiteSyndicationAllowed">
+ <a class="feedButton" href="" tal:attributes="href category/rss_url">
+ <img i18n:attributes="title title_rss_feed; alt label_rss_feed;"
+ tal:attributes="src string:$portal_url/rss.gif"
+ src="rss.gif"
+ alt="RSS"
+ title="RSS feed for the latest releases in this category" />
+ </a>
+ </tal:syndicate>
+ <a href=""
+ tal:content="category/name"
+ tal:attributes="href string:${context/absolute_url}/by-category/${category/id}"
+ i18n:translate="">
+ Category heading
+ </a>
+ </dt>
+ <tal:releases tal:define="releases category/releases"
+ tal:condition="nocall:releases">
+
+ <tal:list repeat="release releases">
+
+ <dd class="portletItem"
+ tal:define="oddrow repeat/release/odd"
+ tal:attributes="class python:test(oddrow, 'portletItem even', 'portletItem odd')">
+ <a href=""
+ tal:attributes="href release/parent_url;
+ title release/description;
+ class string:state-${release/review_state}">
+ <img tal:replace="structure context/product_icon.gif" />
+ <span tal:replace="release/title">Project</span>
+ <span class="portletItemDetails"
+ tal:content="python:context.toLocalizedTime(release['date'])">May 5</span>
+
+ </a>
+ </dd>
+ </tal:list>
+
+ <tal:nolist condition="not:nocall:releases">
+ <dd class="portletItem odd">
+ <span class="discreet" i18n:translate="no_releases_found">
+ No releases made in this category yet
+ </span>
+ </dd>
+ </tal:nolist>
+
+ <dd class="portletFooter">
+ <a href="" title="Show all the projects in this category"
+ tal:attributes="href string:${context/absolute_url}/by-category/${category/id}"
+ i18n:attributes="title title_psc_show_all_projects">
+ <span i18n:translate="label_psc_show_all_projects">Show all </span>
+ <span tal:content="category/num_projects" />
+ <span i18n:translate="label_psc_show_all_projects_category"> projects in this category…</span>
+ </a>
+ </dd>
+ </tal:releases>
+ </dl>
+
+ <div class="visualClear" tal:condition="python: repeat['category'].number() % 3 == 0"><!----></div>
+ </div>
+
+ <div class="visualClear"><!----></div>
+
+ <div class="poweredBy">
+ <span i18n:translate="label_powered_by">Powered by </span>
+ <a class="link-plain" href="http://libreoffice.org"
+ title="The homepage of LibreOffice"
+ i18n:attributes="title title_psc_homepage">
+ <span i18n:translate="label_powered_by_psc">the LibreOffice community</span>
+ </a>
+ </div>
+
+ </div>
+
+</body>
+</html>
diff --git a/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/liboextensioncenter_view.pt.metadata b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/liboextensioncenter_view.pt.metadata
new file mode 100644
index 0000000..a7f5165
--- /dev/null
+++ b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/liboextensioncenter_view.pt.metadata
@@ -0,0 +1,2 @@
+[default]
+title= View by topic
diff --git a/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/portlet_project_info.pt b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/portlet_project_info.pt
new file mode 100644
index 0000000..48bf57c
--- /dev/null
+++ b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/portlet_project_info.pt
@@ -0,0 +1,56 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xml:lang="en"
+ lang="en"
+ xmlns:tal="http://xml.zope.org/namespaces/tal"
+ xmlns:metal="http://xml.zope.org/namespaces/metal"
+ xmlns:i18n="http://xml.zope.org/namespaces/i18n"
+ i18n:domain="liboextensioncenter">
+
+<body>
+
+<div metal:define-macro="portlet"
+ tal:define="project_view context/getView">
+
+ <dl class="portlet">
+ <dt class="portletHeader hiddenStructure">Info</dt>
+ <dd class="portletItem" style="text-align: center"
+ tal:condition="here/screenshot_thumb | nothing">
+ <a class="discreet"
+ tal:attributes="href string:${here/absolute_url}/screenshot/image_view_fullscreen"
+ ><img tal:replace="structure here/screenshot_thumb" /></a>
+ </dd>
+
+ <dd class="portletItem even" style="text-align: center">
+ <strong i18n:translate="label_portlet_project_info_category">Category:</strong> <span tal:replace="project_view/display_categories" />
+
+ <span tal:replace="structure context/@@user_rating_view|nothing" />
+ <span tal:replace="structure context/@@user_rating_set|nothing" />
+ </dd>
+
+
+ <tal:disabled replace="nothing">
+ <p>
+ <a href=""
+ tal:attributes="href project_view/similar_search_url"
+ i18n:translate="label_other_products_author"
+ >Other products by this author</a>
+ </p>
+ </tal:disabled>
+
+ <tal:disabled replace="nothing">
+ This is disabled until we have a consensus about what to do with
+ recommended projects (politically, practically). If this is re-
+ enabled, it must also be re-enabled in schemata.py and
+ psc_releasefolder_view.pt.
+
+ <div tal:condition="here/isRecommended"
+ i18n:translate="label_portlet_project_info_recommended">
+ This is a recommended project.
+ </div>
+ </tal:disabled>
+
+ </dl>
+
+</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/portlet_project_resources.pt b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/portlet_project_resources.pt
new file mode 100644
index 0000000..5fa73f3
--- /dev/null
+++ b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/portlet_project_resources.pt
@@ -0,0 +1,133 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xml:lang="en"
+ lang="en"
+ xmlns:tal="http://xml.zope.org/namespaces/tal"
+ xmlns:metal="http://xml.zope.org/namespaces/metal"
+ xmlns:i18n="http://xml.zope.org/namespaces/i18n"
+ i18n:domain="liboextensioncenter">
+
+<body>
+
+<div metal:define-macro="portlet"
+ tal:define="project_view context/getView">
+
+ <dl class="portlet">
+ <dt class="portletHeader"
+ i18n:translate="label_project_resources">Project Resources</dt>
+ <dd class="portletItem">
+
+
+ <ul>
+ <li tal:repeat="resource project_view/additional_resources">
+ <a href=""
+ class="link-plain"
+ tal:attributes="href resource/absolute_url;
+ title resource/Description;">
+ <span tal:replace="resource/Title">Folder resource</span></a>
+ </li>
+ <li tal:condition="project_view/has_documentation_link">
+ <a href=""
+ title="Documentation for this project"
+ i18n:attributes="title title_project_resources_documentation"
+ tal:attributes="href project_view/documentation_url;
+ class project_view/documentation_link_class">
+ <span i18n:translate="label_project_resources_documentation"> Documentation</span>
+ </a>
+ </li>
+
+ <li tal:condition="here/getHomepage">
+ <a href=""
+ class="link-plain"
+ title="Additional home page for this project"
+ i18n:attributes="title title_resource_project_page"
+ tal:attributes="href here/getHomepage">
+ <span i18n:translate="label_resource_project_page"> External project page</span>
+ </a>
+ </li>
+
+ <li tal:condition="here/getRepository">
+ <a href=""
+ class="link-plain"
+ title="Version control repository location for this project"
+ i18n:attributes="title title_resource_code_repository"
+ tal:attributes="href here/getRepository">
+ <span i18n:translate="label_resource_code_repository"> Code repository</span>
+ </a>
+ </li>
+
+ <li tal:condition="here/getTracker">
+ <a href=""
+ class="link-plain"
+ title="A place to submit bug reports and feature requests for this project"
+ i18n:attributes="title title_resource_issue_tracker"
+ tal:attributes="href here/getTracker">
+ <span i18n:translate="label_resource_issue_tracker"> Issue tracker</span>
+ </a>
+ </li>
+
+ <li tal:condition="here/getMailingList">
+ <a href=""
+ class="link-plain"
+ title="Support options for this product"
+ i18n:attributes="title title_resource_support"
+ tal:attributes="href here/getMailingList">
+ <span i18n:translate="label_resource_support"> Support</span>
+ </a>
+ </li>
+
+ <li tal:condition="here/getContactAddress">
+ <a href=""
+ class="link-plain"
+ title="Contact address for this project"
+ i18n:attributes="title title_resource_contact_address"
+ tal:attributes="href here/getContactAddress">
+ <span i18n:translate="label_resource_contact_address"> Contact address</span>
+ </a>
+ </li>
+ </ul>
+
+
+ <p style="text-align: center"
+ tal:condition="creator"
+ tal:define="creator here/Creator; author python:context.portal_membership.getMemberInfo(creator)"
+ i18n:translate="label_portlet_project_resources_owner">
+ Project owner:
+ <a href="#"
+ tal:attributes="href string:${context/portal_url}/author/${creator}"
+ tal:content="python:author and author['fullname'] or creator"
+ tal:omit-tag="not:author" i18n:name="name_portlet_project_resources_owner">
+ Bob Dobalina
+ </a>
+ </p>
+
+ <p style="text-align: center;"
+ tal:condition="context/portal_syndication/isSiteSyndicationAllowed | nothing">
+ <a href="" title="Subscribe to updates for this project"
+ tal:attributes="href project_view/release_rss_url | nothing"
+ i18n:attributes="title title_portlet_project_resources_subscribe_updates">
+ <img tal:attributes="src here/rss.gif/absolute_url"
+ alt="Subscribe to updates for this project"
+ i18n:attributes="title title_portlet_project_resources_subscribe_updates" />
+ <span
+ i18n:translate="title_portlet_project_resources_subscribe_updates"> Subscribe to updates for this project</span>
+ </a>
+ </p>
+
+
+ </dd>
+ </dl>
+
+ <div style="text-align: center; margin-bottom: 1em"
+ tal:condition="here/screenshot_preview | nothing"
+ class="thumbzoom">
+ <img tal:attributes="src here/screenshot_preview/absolute_url"
+ width="240" alt=""
+ title="Screenshot — click to enlarge"
+ i18n:attributes="title label_screenshot_click_to_enlarge;"
+ />
+ </div>
+
+
+</div>
+</body>
+</html>
diff --git a/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/portlet_project_roadmap.pt b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/portlet_project_roadmap.pt
new file mode 100644
index 0000000..3f99096
--- /dev/null
+++ b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/portlet_project_roadmap.pt
@@ -0,0 +1,81 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xml:lang="en"
+ lang="en"
+ xmlns:tal="http://xml.zope.org/namespaces/tal"
+ xmlns:metal="http://xml.zope.org/namespaces/metal"
+ xmlns:i18n="http://xml.zope.org/namespaces/i18n"
+ i18n:domain="liboextensioncenter">
+
+<body>
+
+<!-- Experimental releases portlet -->
+
+<div metal:define-macro="portlet"
+ tal:define="project_view context/getView;
+ upcomingReleases project_view/upcoming_releases | nothing">
+
+ <dl class="portlet"
+ tal:condition="nocall:upcomingReleases">
+
+ <dt class="portletHeader"
+ i18n:translate="label_experimental_releases">Experimental Releases</dt>
+
+ <tal:release repeat="upcoming upcomingReleases">
+ <tal:block define="upcoming_view upcoming/@@release_view">
+ <dd class="portletItem">
+ <a href=""
+ tal:content="upcoming/Title"
+ tal:attributes="href upcoming/absolute_url">Release 1.2.2</a><br />
+
+ <tal:releasedate condition="upcoming_view/is_released">
+ <span class="discreet"
+ i18n:translate="portlet_project_roadmap_released_date">
+ Released <tal:date i18n:name="name_released_date" replace="upcoming_view/release_date" /><br />
+ </span>
+ </tal:releasedate>
+
+ <tal:norelease condition="not: upcoming_view/is_released">
+ <span class="discreet" tal:condition="upcoming_view/release_date"
+ i18n:translate="portlet_project_roadmap_upcoming_release">
+ Planned release: <tal:date i18n:name="name_upcoming_release" replace="upcoming_view/release_date" /><br />
+ </span>
+ </tal:norelease>
+ <span tal:content="upcoming/Description">
+ Release description
+ </span>
+ </dd>
+ </tal:block>
+ </tal:release>
+
+ <dd class="portletItem"
+ tal:define="roadmapFolder here/getRoadmapFolder"
+ tal:condition="roadmapFolder">
+
+ <a i18n:translate="label_show_upcoming_releases"
+ tal:attributes="href roadmapFolder/absolute_url">
+ Release roadmap for
+ <tal:projectname tal:replace="here/title_or_id"
+ i18n:name="project">
+ Project
+ </tal:projectname>…</a>
+ </dd>
+
+
+ <dd class="portletItem">
+ <ul>
+ <li i18n:translate="help_show_upcoming_alpha_releases"><strong>Alpha</strong> releases should only be used for testing and
+ development.</li>
+ <li i18n:translate="help_show_upcoming_beta_releases"><strong>Beta releases</strong> and <strong>Release Candidates</strong> are normally
+ released for production testing, but should not be used on
+ mission-critical sites.</li>
+ <li i18n:translate="help_show_upcoming_test_releases">Always install on a separate test server first, and
+ <a href="/documentation/faq/plone-backup-move">make
+ sure you have proper backups</a> before installing.</li>
+ </ul>
+ </dd>
+
+ </dl>
+</div>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/portlet_releases.pt b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/portlet_releases.pt
new file mode 100644
index 0000000..0c49231
--- /dev/null
+++ b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/portlet_releases.pt
@@ -0,0 +1,89 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xml:lang="en"
+ lang="en"
+ xmlns:tal="http://xml.zope.org/namespaces/tal"
+ xmlns:metal="http://xml.zope.org/namespaces/metal"
+ xmlns:i18n="http://xml.zope.org/namespaces/i18n"
+ i18n:domain="liboextensioncenter">
+
+<body>
+
+<!-- Release portlet -->
+
+<div metal:define-macro="portlet"
+ tal:condition="results"
+ tal:define="results python:context.portal_catalog(
+ portal_type='PSCRelease',
+ sort_on='Date',
+ sort_order='reverse',
+ sort_limit=5,
+ review_state=('alpha','beta','release-candidate','final',)
+ )[:5];
+ psc python:context.portal_catalog(
+ portal_type='liboextensioncenter',
+ sort_on='Date',
+ sort_order='reverse',
+ sort_limit=1)[:1]">
+
+<dl class="portlet" id="portlet-releases">
+
+ <dt class="portletHeader">
+ <tal:syndicate condition="context/portal_syndication/isSiteSyndicationAllowed">
+ <a class="feedButton" href="" tal:attributes="href string:$here_url/search_rss?portal_type=PSCRelease&sort_on=Date&sort_order=reverse&review_state=alpha&review_state=beta&review_state=release-candidate&review_state=final">
+ <img i18n:attributes="title title_rss_feed; alt label_rss_feed;"
+ tal:attributes="src string:$portal_url/rss.gif"
+ src="rss.gif"
+ alt="RSS Feed"
+ title="RSS feed of the latest releases" />
+ </a>
+ </tal:syndicate>
+ <a href=""
+ tal:omit-tag="not: nocall:psc"
+ tal:attributes="href python:psc[0].getURL()"
+ i18n:translate="box_latest_releases">
+ Latest releases
+ </a>
+ </dt>
+
+ <tal:releases tal:repeat="obj results">
+ <dd tal:define="oddrow repeat/obj/odd"
+ tal:attributes="class python:test(oddrow, 'portletItem even', 'portletItem odd')">
+
+ <a href=""
+ tal:attributes="href python:here.findParentProjectURL(obj.getURL());
+ title obj/Description">
+ <tal:block replace="structure here/product_icon.gif"/>
+ <span tal:replace="python:test(obj.Title, obj.Title, obj.getId)">
+ Product
+ </span>
+ </a>
+
+ <div class="discreet"
+ tal:define="categories obj/getCategoryTitles | nothing"
+ tal:condition="categories"
+ tal:content="python: ', '.join(categories)">
+ Category
+ </div>
+
+ <div class="portletDetails"
+ tal:content="python:here.toLocalizedTime(obj.Date)">
+ July 7, 08:11
+ </div>
+ </dd>
+ </tal:releases>
+
+ <dd class="portletFooter" tal:condition="nocall:psc">
+
+ <a href=""
+ class="portletMore"
+ tal:attributes="href python:psc[0].getURL()"
+ i18n:translate="box_more_projects">
+ More Releases…
+ </a>
+
+ </dd>
+</dl>
+
+</div>
+</body>
+</html>
diff --git a/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_categories_view.pt b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_categories_view.pt
new file mode 100644
index 0000000..c4bcc67
--- /dev/null
+++ b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_categories_view.pt
@@ -0,0 +1,69 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xml:lang="en"
+ lang="en"
+ xmlns:tal="http://xml.zope.org/namespaces/tal"
+ xmlns:metal="http://xml.zope.org/namespaces/metal"
+ metal:use-macro="here/main_template/macros/master"
+ xmlns:i18n="http://xml.zope.org/namespaces/i18n"
+ i18n:domain="liboextensioncenter">
+
+<head>
+ <metal:css fill-slot="style_slot">
+ <style type="text/css" media="all"
+ tal:content="string:@import url($portal_url/liboextensioncenter.css);"></style>
+ </metal:css>
+</head>
+
+<body>
+
+<div metal:fill-slot="main"
+ tal:define="categories python:modules['am.liboextensioncenter.config'].CATEGORY_LIST">
+
+ <div metal:define-macro="main">
+
+ <h1 class="documentFirstHeading">
+ <img tal:replace="structure here/product_icon.gif" />
+ <span tal:replace="here/title_or_id">Title or id</span>
+ </h1>
+
+ <a href=""
+ class="link-parent"
+ i18n:translate="label_up_to_product_page"
+ tal:define="parent_url python:here.navigationParent(here, template.getId())"
+ tal:condition="parent_url"
+ tal:attributes="href parent_url">
+ « Back to project overview
+ </a>
+
+ <p class="documentDescription"
+ tal:content="here/Description">
+ description
+ </p>
+
+ <h2 i18n:translate="heading_available_categories">
+ Available categories
+ </h2>
+
+ <tal:categories repeat="category categories">
+ <h3 tal:content="category">
+ Category
+ </h3>
+ <tal:catalog define="results python:here.portal_catalog.searchResults(
+ portal_type='PSCProject'
+ , Categories=category
+ , review_state='published')[:5]">
+ <ul tal:condition="results" tal:repeat="obj results">
+ <li tal:content="obj/Title">
+ Project
+ </li>
+ </ul>
+ </tal:catalog>
+ </tal:categories>
+
+ </div>
+
+</div>
+
+</body>
+
+</html>
diff --git a/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_file_view.pt b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_file_view.pt
new file mode 100644
index 0000000..9f103e1
--- /dev/null
+++ b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_file_view.pt
@@ -0,0 +1,70 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xml:lang="en"
+ lang="en"
+ xmlns:tal="http://xml.zope.org/namespaces/tal"
+ xmlns:metal="http://xml.zope.org/namespaces/metal"
+ metal:use-macro="here/main_template/macros/master"
+ xmlns:i18n="http://xml.zope.org/namespaces/i18n"
+ i18n:domain="liboextensioncenter">
+
+<head>
+ <metal:css fill-slot="style_slot">
+ <style type="text/css" media="all"
+ tal:content="string:@import url($portal_url/liboextensioncenter.css);"></style>
+ </metal:css>
+</head>
+
+<body>
+
+<div metal:fill-slot="main">
+
+ <div metal:define-macro="main"
+ tal:define="view here/@@file_view">
+
+ <dl class="portalMessage info"
+ tal:define="is_editable context/@@plone_context_state/is_editable;"
+ tal:condition="python: is_editable">
+ <dt>Info</dt>
+ <dd>
+ <span i18n:translate="help_message_remember_is_editable">Remember to publish your release once all files have been added by </span>
+ <a href="" tal:attributes="href here/aq_parent/absolute_url">
+ <span i18n:translate="help_message_remember_back_release_page"> going back to the release page</span>
+ </a>.
+ </dd>
+ </dl>
+
+ <h1 class="documentFirstHeading">
+ <img tal:replace="structure here/product_icon.gif" />
+ <span tal:replace="here/aq_parent/title_or_id">Title or id</span> -
+ <span tal:replace="here/title_or_id">Title or id</span>
+ </h1>
+
+ <div tal:content="structure provider:plone.belowcontenttitle" />
+
+ <p class="documentDescription"
+ tal:content="here/aq_parent/Description">
+ description
+ </p>
+
+ <p tal:define="downloadURL view/direct_url">
+ <a tal:attributes="href downloadURL"
+ tal:condition="view/file_size">
+ <img tal:replace="structure here/download_icon.gif" />
+ </a>
+ <a tal:attributes="href downloadURL"
+ tal:define="filename python:here.getFilename('downloadableFile')">
+ Download <tal:filename condition="filename"
+ replace="string:$filename" />
+ </a>
+ <tal:size define="fileSize view/file_size"
+ condition="fileSize">
+ (<span tal:replace="fileSize">256KB</span>)
+ </tal:size>
+ </p>
+
+ </div>
+
+</div>
+
+</body>
+</html>
diff --git a/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_improvements_listing.pt b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_improvements_listing.pt
new file mode 100644
index 0000000..4a37302
--- /dev/null
+++ b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_improvements_listing.pt
@@ -0,0 +1,146 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US"
+ lang="en-US"
+ xmlns:tal="http://xml.zope.org/namespaces/tal"
+ xmlns:metal="http://xml.zope.org/namespaces/metal"
+ metal:use-macro="here/main_template/macros/master"
+ xmlns:i18n="http://xml.zope.org/namespaces/i18n"
+ i18n:domain="plone">
+
+<head>
+ <metal:css fill-slot="style_slot">
+ <style type="text/css" media="all"
+ tal:content="string:@import url($portal_url/liboextensioncenter.css);"></style>
+ </metal:css>
+</head>
+
+<body>
+
+
+<div metal:fill-slot="main"
+ tal:define="view context/@@roadmap_view;
+ state python:request.get('state', []);
+ plips python:view.improvement_proposals(review_state = state);
+ b_start python:request.get('b_start', 0);
+ Batch python:modules['Products.CMFPlone'].Batch;
+ batch python:Batch(plips, 50, int(b_start), orphan=0);
+ releaseFolderUrl python:'/'.join(here.absolute_url().split('/')[:-1]) + '/releases';
+ ">
+
+ <h1>
+ <span i18n:translate="label_improvements_listing">Improvement Proposals </span>
+ <span tal:condition="state">"</span><span tal:replace="python:(', ').join(state).capitalize()" /><span tal:condition="state">"</span>
+ <span i18n:translate="label_improvements_proposals_for"> for </span>
+ <span tal:replace="here/aq_parent/Title" />
+ </h1>
+
+ <p class="documentDescription"
+ tal:condition="plips">
+ <span i18n:translate="help_improvements_listing">
+ If you want to see the feature proposals displayed according
+ to what release they are assigned to, go to the
+ </span>
+ <a href="psc_roadmap" title="Roadmap page"
+ i18n:attributes="title title_improvements_listing_roadmap_page">
+ <span i18n:translate="title_improvements_listing_roadmap_page">Roadmap page</span>
+ </a>.
+ </p>
+
+
+
+ <!-- Navigation -->
+ <div metal:use-macro="here/batch_macros/macros/navigation" />
+
+ <table id="sortable"
+ class="listing"
+ summary="Improvement Proposal listing"
+ tal:condition="plips">
+
+ <thead>
+
+ <tr>
+
+ <th style="width: 50%"> <tal:title i18n:translate="listingheader_title"
+ >Title</tal:title> </th>
+
+ <th> <tal:title i18n:translate="listingheader_title"
+ >Category</tal:title> </th>
+
+ <th> <tal:modified i18n:translate="listingheader_modified"
+ >Modified</tal:modified> </th>
+
+ <th> <tal:state i18n:translate="listingheader_status"
+ >Status</tal:state> </th>
+
+ <th> <tal:version i18n:translate="listingheader_target_release"
+ >Target Release</tal:version> </th>
+ </tr>
+ </thead>
+
+ <tbody>
+ <metal:block tal:repeat="item batch">
+ <tr tal:define="oddrow repeat/item/odd;
+ review_state item/review_state;"
+ tal:attributes="class python:test(oddrow, 'even', 'odd')">
+
+ <td>
+ <a href="#" tal:attributes="href item/getURL; title item/Description;">
+ <img
+ alt="" tal:attributes="src string:${portal_url}/improvementproposal_icon.gif"
+ /> <span tal:replace="item/Title">Title</span>
+ </a>
+ </td>
+
+ <td tal:content="python: ', '.join(item.getProposalTypes)">
+ Category
+ </td>
+
+ <td tal:content="item/ModificationDate">
+ 08/19/2001 03:01 AM
+ </td>
+
+ <td>
+ <a tal:attributes="href string:${here/absolute_url}/${template/id}?state=${review_state};
+ class string:state-$review_state"
+ tal:content="structure python:test(review_state, review_state, ' ')"
+ i18n:translate="">
+ State
+ </a>
+ </td>
+
+ <td>
+
+ <span tal:repeat="release item/getRelatedReleases">
+ <a tal:content="release"
+ tal:attributes="href string:${releaseFolderUrl}/${release}">
+ [item]
+ </a>
+ </span>
+ </td>
+ </tr>
+ </metal:block>
+ </tbody>
+ </table>
+
+ <a style="display:block; text-align:right"
+ href="" title="Show all"
+ tal:condition="state"
+ tal:attributes="href string:${here/absolute_url}/${template/id}"
+ i18n:attributes="title title_improvements_listing_show_all">
+ <span i18n:translate="label_improvements_listing_show_all">Show all</span>
+ </a>
+
+ <p class="discreet"
+ tal:condition="not: plips"
+ i18n:translate="label_improvements_listing_no_proposals_added">
+ There are no improvement proposals added for any versions. Use the add
+ menu to add proposals and/or feature specifications to be used in the
+ roadmap.
+ </p>
+
+ <!-- Navigation -->
+ <div metal:use-macro="here/batch_macros/macros/navigation" />
+</div>
+
+
+</body>
+</html>
diff --git a/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_improvements_view.pt b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_improvements_view.pt
new file mode 100644
index 0000000..3627fd7
--- /dev/null
+++ b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_improvements_view.pt
@@ -0,0 +1,113 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+ lang="en-US"
+ xmlns:tal="http://xml.zope.org/namespaces/tal"
+ xmlns:metal="http://xml.zope.org/namespaces/metal"
+ metal:use-macro="here/main_template/macros/master"
+ xmlns:i18n="http://xml.zope.org/namespaces/i18n"
+ i18n:domain="plone">
+
+<head>
+ <metal:css fill-slot="style_slot">
+ <style type="text/css" media="all"
+ tal:content="string:@import url($portal_url/liboextensioncenter.css);"></style>
+ </metal:css>
+</head>
+
+
+<body>
+<div metal:fill-slot="main"
+ tal:define="view here/@@proposal_view;
+ wtool context/portal_workflow;
+ portal_type python:here.getPortalTypeName().lower();
+ view_template python:'%s_view' % portal_type;
+ view_macros python:path('here/%s/macros|nothing' % view_template);
+ body_macro view_macros/body|nothing;
+ errors python:request.get('errors', {})">
+
+ <h1>
+ <span tal:replace="view/title" />
+ </h1>
+
+
+ <tal:fields define="fieldNames python: ['definitions',
+ 'motivation',
+ 'assumptions',
+ 'proposal',
+ 'implementation',
+ 'deliverables',
+ 'risks',
+ 'timeline',
+ 'participants']">
+
+ <dl class="portlet" style="margin-left: 0.5em; width: 40%; float: right; clear: right;">
+ <dt class="portletHeader" i18n:translate="heading_improvements_contents">Contents</dt>
+ <dd class="portletItem">
+ <ol>
+ <tal:section tal:repeat="f fieldNames">
+ <li tal:define="field python: here.Schema()[f]"
+ tal:condition="python: field.getAccessor(here)()">
+ <a href=""
+ tal:attributes="href string:${here/absolute_url}#${field/getName}"
+ tal:content="field/widget/label" />
+ </li>
+ </tal:section>
+ </ol>
+ </dd>
+ </dl>
+
+ <div tal:replace="structure provider:plone.belowcontenttitle" />
+
+ <p class="documentDescription"
+ tal:content="here/Description">
+ Description
+ </p>
+
+ <dl>
+ <dt i18n:translate="label_improvements_proposed_by">Proposed by</dt> <dd tal:content="here/getProposer" />
+ <tal:seconder tal:condition="here/getSeconder">
+ <dt i18n:translate="label_improvements_seconded_by">Seconded by</dt> <dd tal:content="here/getSeconder" />
+ </tal:seconder>
+ <dt i18n:translate="label_improvements_proposal_type">Proposal type</dt> <dd tal:content="python: ', '.join(here.getProposalTypes())" />
+
+ <tal:releases define="releases here/getBackReferences"
+ condition="releases">
+ <dt i18n:translate="label_improvements_assigned_release">Assigned to release</dt>
+ <dd>
+ <ul>
+ <li tal:repeat="release releases">
+ <a tal:attributes="href release/absolute_url"
+ tal:content="release/Title"/>
+ </li>
+ </ul>
+ </dd>
+ </tal:releases>
+
+ <tal:branch condition="here/getBranch">
+ <dt i18n:translate="label_improvements_repository_branch">Repository branch</dt>
+ <dd> <a tal:content="python: here.getBranch().split('/')[-1]"
+ tal:attributes="href here/getBranch">Branch name</a> </dd>
+ </tal:branch>
+
+ <dt i18n:translate="label_improvements_state">State</dt> <dd tal:content="python: wtool.getInfoFor(context, 'review_state')" />
+ </dl>
+
+ <div class="visualClear"></div>
+
+ <tal:sections repeat="f fieldNames">
+ <tal:section tal:define="field python: here.Schema()[f]"
+ tal:condition="python: field.getAccessor(here)()">
+ <a tal:attributes="name field/getName"
+ tal:content="nothing">Anchor</a>
+ <h2 tal:content="field/widget/label" />
+ <span metal:use-macro="python: here.widget(field.getName(),
+ mode='view',
+ use_label=0)" />
+ </tal:section>
+ </tal:sections>
+
+ </tal:fields>
+
+</div>
+
+</body>
+</html>
diff --git a/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_project_view.pt b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_project_view.pt
new file mode 100644
index 0000000..09401c6
--- /dev/null
+++ b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_project_view.pt
@@ -0,0 +1,269 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xml:lang="en"
+ lang="en"
+ xmlns:tal="http://xml.zope.org/namespaces/tal"
+ xmlns:metal="http://xml.zope.org/namespaces/metal"
+ metal:use-macro="here/main_template/macros/master"
+ xmlns:i18n="http://xml.zope.org/namespaces/i18n"
+ i18n:domain="liboextensioncenter">
+
+<head>
+ <metal:css fill-slot="style_slot">
+ <style type="text/css" media="all"
+ tal:content="string:@import url($portal_url/liboextensioncenter.css);"></style>
+ </metal:css>
+</head>
+
+<body>
+
+<div metal:fill-slot="main"
+ tal:define="view context/@@project_view">
+
+ <div metal:define-macro="main" tal:define="latestRelease view/latest_release;
+ all_releases view/all_releases;
+ is_editable context/@@plone_context_state/is_editable;
+ upcomingReleases view/upcoming_releases | nothing">
+
+ <h1 class="documentFirstHeading">
+ <span tal:replace="here/title_or_id">Title or id</span>
+ </h1>
+
+ <dl class="portalMessage error" tal:condition="context/mayBeUnmaintained">
+ <dt>Warning</dt>
+ <dd>This product has not had a release in over 1 year and may no longer be maintained. </dd>
+ </dl>
+
+ <div tal:content="structure provider:plone.belowcontenttitle" />
+ <p class="documentDescription"
+ tal:content="here/Description">
+ description
+ </p>
+
+ <p class="portalMessage info"
+ tal:condition="python: is_editable and not view.is_public()"
+ i18n:domain="plone" i18n:translate="description_cannot_add_before_approved">
+ You can not add releases, documentation or feature proposals until the
+ project itself is approved, make sure you submit it for approval when
+ the relevant project information has been entered.
+ </p>
+
+
+ <h2 i18n:translate="label_project_description">Project Description</h2>
+
+ <div id="project_logo_wrapper"
+ tal:condition="here/getLogo | nothing">
+ <a tal:omit-tag="not: here/getLogoURL"
+ tal:attributes="href here/getLogoURL">
+ <img tal:replace="structure here/getLogo" />
+ </a>
+ </div>
+
+ <div tal:replace="structure here/getText" />
+
+ <div class="visualClear"></div>
+
+ <tal:block tal:condition="python: view.has_criteria_info()">
+ <h2 i18n:translate="label_self_certification">Self-Certification</h2>
+ <tal:block repeat="criterion view/criteria_info">
+ <p>
+ <tal:block condition="criterion/selected">[X]</tal:block>
+ <tal:block condition="not:criterion/selected">[ ]</tal:block>
+ <tal:block content="criterion/text" />
+ </p>
+ </tal:block>
+ </tal:block>
+
+ <tal:block tal:condition="view/has_review_comment|nothing">
+ <h2 i18n:translate="label_independent_review">Independent Review</h2>
+ <p content="structure here/getReviewComment" />
+ <p tal:condition="here/isApproved|nothing">
+ <i i18n:translate="help_independent_review">This project has been approved via independent review.</i>
+ </p>
+ </tal:block>
+
+ <div class="visualClear"></div>
+ <tal:nostable condition="nocall:not:latestRelease">
+
+ <h2 i18n:translate="label_current_stable_release">Current Release</h2>
+ <p
+ i18n:translate="help_not_stable_release">
+ No stable release available yet.
+ </p>
+
+ <tal:noreleases tal:condition="python:latestRelease is None and not upcomingReleases">
+
+ <p class="discreet"
+ tal:condition="here/getRepository">
+ <span i18n:translate="label_resource_getting_code">
+ If you are interested in getting the source code of
+ this project, you can get it from the
+ </span>
+ <a href=""
+ class="link-plain"
+ title="Version control repository location for this project"
+ i18n:attributes="title title_resource_code_repository"
+ tal:attributes="href here/getRepository">
+ <span i18n:translate="label_resource_code_repository"> code repository</span>
+ </a>.
+ </p>
+
+ <p class="discreet"
+ tal:condition="python: is_editable and view.is_public()">
+ <a i18n:translate="label_goto_release_folder"
+ tal:attributes="href view/release_folder_url">
+ Go to the release folder to add or publish a release.
+ </a>
+ </p>
+
+ <p class="discreet"
+ tal:condition="python:is_editable and view.is_public()">
+ <tal:noreleases i18n:translate="description_no_available_releases">
+ There are no published releases in this project yet.
+ </tal:noreleases>
+ <tal:prioritize i18n:translate="description_prioritize_releases">
+ This listing will prioritize final releases,
+ but will list the latest published release of any
+ other type if no final release exists. If you list
+ the source code repository in this project, it
+ will show up, so people know where to go to check
+ out in the code in the meantime.
+ </tal:prioritize>
+ </p>
+
+ </tal:noreleases>
+
+ </tal:nostable>
+
+
+ <tal:stable condition="nocall:latestRelease">
+ <div class="pane">
+ <h2>
+ Current Release <br />
+ <a href="#" title="Current release for the project"
+ i18n:attributes="title title_latest_release_project"
+ tal:attributes="href latestRelease/absolute_url"
+ tal:content="latestRelease/Title">Ploneboard 1.0
+ </a>
+ </h2>
+
+ <p class="discreet">
+ <tal:releasedate condition="latestRelease/effective">
+ Released <span tal:replace="view/latest_release_date" />
+ </tal:releasedate>
+
+ <tal:compatibility condition="latestRelease/getCompatibility">
+ — tested with
+ <metal:versions
+ metal:use-macro="python:latestRelease.widget('compatibility')">
+ Plone 1.0, Plone 2.0...
+ </metal:versions>
+ </tal:compatibility>
+ </p>
+
+ <p tal:condition="latestRelease/Description">
+ <span tal:replace="latestRelease/Description">
+ Main focus for this release is blah blah.
+ </span><br />
+ <a href="#"
+ i18n:translate="label_release_details"
+ tal:attributes="href latestRelease/absolute_url">More about this release…</a>
+ </p>
+
+ <dl>
+ <tal:downloads repeat="file latestRelease/contentValues">
+ <dt>
+ <a class="link-plain" title="Download file"
+ i18n:attributes="title"
+ tal:attributes="href file/@@file_view/direct_url">
+ <img src="" alt="Download file" i18n:attributes="alt"
+ style="float: left; clear:left; display: block; margin: 0 0.5em 0.5em 0;"
+ tal:attributes="src string:${here/portal_url}/${file/@@file_view/downloadicon_name}" />
+ </a>
+
+ <a class="link-plain"
+ tal:attributes="href file/@@file_view/direct_url">
+ <span i18n:translate="label_get">Get</span>
+ <span tal:replace="here/Title">Ploneboard 1.0</span>
+ for
+ <span tal:replace="file/getPlatform" /></a>
+
+ <!--comment out size
+ <span class="discreet"
+ tal:define="fileSize file/@@file_view/file_size">
+ <tal:size tal:condition="fileSize">
+ (<span tal:replace="fileSize">256KB</span>)
+ </tal:size>
+ <tal:extsize condition="not: fileSize">
+ <tal:extfile condition="file/getExternalFileSize" tal:on-error="string:Unknown">
+ (<span tal:replace="file/getExternalFileSize">256KB</span>)
+ </tal:extfile>
+ </tal:extsize>
+ </span>
+ -->
+ </dt>
+
+ <dd class="discreet" tal:content="file/Title">
+ Windows installer.
+ </dd>
+
+ </tal:downloads>
+ <dt>If you have difficulties with the installation of the extension see <A href="http://libreoffice.org">our howto on installing extensions</a> for more information.
+ </dt>
+ </dl>
+ </div>
+ </tal:stable>
+
+ <div class="pane">
+ <h2>All Releases</h2>
+ <table class="listing release_table">
+ <thead>
+ <tr>
+ <th>Version</th>
+ <th>Released</th>
+ <th>Description</th>
+ <th>Compatibility</th>
+ <th>Status</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tal:loop repeat="release all_releases">
+ <tr tal:define="maturity release/getMaturity;
+ stable python:maturity not in ['pre-release', 'alpha', 'beta'];
+ stability python:stable and 'stable-release' or 'unstable-release'"
+ tal:attributes="class stability">
+ <td class="version">
+ <a tal:content="release/id"
+ tal:attributes="href release/absolute_url"/>
+ </td>
+ <td class="release-date">
+ <span tal:condition="python:stable and release.effective()">
+ <span tal:replace="python:context.toLocalizedTime(release.effective())" />
+ </span>
+ </td>
+ <td class="release-description">
+ <span tal:content="release/Description"/>
+ <a href="#"
+ i18n:translate="label_release_details"
+ tal:attributes="href release/absolute_url">More about this release…</a>
+
+ </td>
+ <td class="compatability">
+ <tal:loop repeat="compatibility release/compatibility">
+ <div tal:content="compatibility"/>
+ </tal:loop>
+ </td>
+ <td class="maturity" tal:content="maturity"/>
+ </tr>
+ </tal:loop>
+ </tbody>
+ </table>
+ </div>
+
+ <div class="visualClear"></div>
+
+ </div>
+
+</div>
+
+</body>
+</html>
diff --git a/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_release_listing.pt b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_release_listing.pt
new file mode 100644
index 0000000..50361e7
--- /dev/null
+++ b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_release_listing.pt
@@ -0,0 +1,60 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xml:lang="en"
+ lang="en"
+ xmlns:tal="http://xml.zope.org/namespaces/tal"
+ xmlns:metal="http://xml.zope.org/namespaces/metal"
+ metal:use-macro="context/main_template/macros/master"
+ xmlns:i18n="http://xml.zope.org/namespaces/i18n"
+ i18n:domain="liboextensioncenter">
+
+<body>
+
+<!-- Macro used to show releases, since we need two near identical lists -->
+<!-- Call this with a variable 'releases' defined -->
+
+<metal:macro define-macro="release_listing">
+
+ <tal:releases repeat="release releases">
+
+ <div class="visualIEFloatFix" style="margin-top: 1em;">
+
+ <dl>
+
+ <dt>
+ <a href="#" title=""
+ tal:content="release/Title"
+ tal:attributes="href release/absolute_url;
+ title release/Title">Ploneboard 1.0</a>
+
+ <tal:released condition="release/EffectiveDate">
+ (<span tal:replace="python:context.toLocalizedTime(release.EffectiveDate())">
+ Feb 1, 2009
+ </span>)
+ </tal:released>
+ </dt>
+
+ <dd>
+ <span tal:replace="release/Description">
+ Main focus for this release is blah blah.
+ </span>
+
+ <br />
+ <a href="#" title="Read more…"
+ i18n:attributes="title label_read_more"
+ tal:attributes="href release/absolute_url">
+ <span i18n:translate="label_read_more">Read more…</span>
+ </a>
+
+ </dd>
+
+
+ </dl>
+ </div>
+
+ <div class="visualClear"></div>
+
+ </tal:releases>
+</metal:macro>
+
+</body>
+</html>
diff --git a/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_release_view.pt b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_release_view.pt
new file mode 100644
index 0000000..fb654f7
--- /dev/null
+++ b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_release_view.pt
@@ -0,0 +1,244 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xml:lang="en"
+ lang="en"
+ xmlns:tal="http://xml.zope.org/namespaces/tal"
+ xmlns:metal="http://xml.zope.org/namespaces/metal"
+ metal:use-macro="here/main_template/macros/master"
+ xmlns:i18n="http://xml.zope.org/namespaces/i18n"
+ i18n:domain="liboextensioncenter">
+
+<head>
+ <metal:css fill-slot="style_slot">
+ <style type="text/css" media="all"
+ tal:content="string:@import url($portal_url/liboextensioncenter.css);"></style>
+ </metal:css>
+</head>
+
+<body>
+
+<div metal:fill-slot="main">
+
+ <div metal:define-macro="main"
+ tal:define="view here/@@release_view;
+ maturity here/getMaturity;
+ released python:maturity != 'pre-release';
+ final python:maturity == 'final';
+ outdated view/is_outdated;
+ is_editable context/@@plone_context_state/is_editable;
+ wftool here/portal_workflow">
+
+ <h1 class="documentFirstHeading">
+ <span tal:replace="here/title_or_id">Title or id</span>
+ <span tal:condition="view/release_date">
+ (<span tal:replace="view/release_date">Feb 1, 2009</span>)
+ </span>
+ </h1>
+
+ <div style="float:right; margin: 0 0 1em 1em;"
+ tal:condition="here/getLogo | nothing">
+ <a tal:omit-tag="not: here/getLogoURL"
+ tal:attributes="href here/getLogoURL">
+ <img tal:replace="structure here/getLogo" />
+ </a>
+ </div>
+
+ <p class="portalMessage warning" tal:condition="python:outdated and released"
+ i18n:translate="label_message_no_longer_supported">
+ This release is no longer supported! If you are using this release,
+ please upgrade to a newer version if possible.
+ </p>
+
+ <p class="portalMessage info" tal:condition="not:final"
+ i18n:translate="label_message_not_final_release">
+ This is not a final release. Experimental releases should only be used for
+ testing and development. Do not use these on production sites, and make
+ sure you have proper backups before installing.
+ </p>
+
+ <p class="documentDescription"
+ tal:content="here/Description">
+ description
+ </p>
+
+ <p class="discreet"
+ tal:condition="python: is_editable and not released"
+ i18n:translate="label_message_not_released">
+ A release needs to be published before it will show up in the download
+ listings of the software center. You should make a release using the
+ 'state' drop-down when work on the release is completed and downloadable
+ files have been added. There is no approval required to make a release.
+ </p>
+
+ <p tal:define="parent_url python:here.aq_parent.aq_parent.absolute_url()"
+ tal:condition="parent_url">
+ <a href="" tal:attributes="href parent_url" title="The project page"
+ i18n:attributes="title title_release_additional_information">
+ <span i18n:translate="label_release_additional_information">
+ For additional information about this project, please visit the overview page
+ </span>
+ </a>.
+ </p>
+
+ <h2 i18n:translate="heading_available_downloads">
+ Available downloads
+ </h2>
+
+ <div style="margin-top: 1em;">
+
+ <tal:nodownloads tal:condition="not: here/contentValues">
+
+ <div class="discreet">
+ <span i18n:translate="description_no_available_files">
+ There are no available software files in this release yet.
+ </span>
+ <span tal:condition="is_editable"
+ i18n:translate="description_use_add_menu_to_add_files">
+ Use the Add menu to add software files.
+ </span>
+ </div>
+
+ </tal:nodownloads>
+
+ <div tal:repeat="file here/contentValues">
+ <a class="link-plain"
+ tal:attributes="href file/@@file_view/direct_url">
+ <img src="" alt=""
+ style="float: left; display: block; margin: 0 0.5em 0.5em 0;"
+ tal:attributes="src string:${here/portal_url}/${file/@@file_view/downloadicon_name}" />
+ </a>
+
+ <a class="link-plain"
+ tal:attributes="href file/@@file_view/direct_url">
+ <span tal:replace="file/Title">Product Package</span>
+ </a>
+
+ <p class="discreet"
+ tal:define="fileSize file/@@file_view/file_size">
+ For
+ <span tal:replace="file/getPlatform" />
+ <tal:size tal:condition="fileSize">
+ (<span tal:replace="fileSize">256KB</span>)
+ </tal:size>
+ <tal:extsize condition="not: fileSize">
+ <tal:extfile condition="file/getExternalFileSize" tal:on-error="string:Unknown">
+ (<span tal:replace="file/getExternalFileSize">256KB</span>)
+ </tal:extfile>
+ </tal:extsize>
+ </p>
+
+ </div>
+
+
+
+ </div>
+
+
+
+ <div class="visualClear"></div>
+
+ <tal:relnotes condition="here/getText">
+ <h2 i18n:translate="heading_release_notes">Release Notes</h2>
+
+ <table class="vertical listing" style="float: right; margin: 0 0 1em 1em;">
+ <tr tal:condition="here/compatibility">
+ <th i18n:translate="heading_tested_with">
+ Tested with
+ </th>
+ <td>
+ <metal:versions
+ metal:use-macro="python:context.widget('compatibility')">
+ Plone 1.0, Plone 2.0...
+ </metal:versions>
+ </td>
+ </tr>
+ <tr>
+ <th i18n:translate="heading_state">State</th>
+ <td tal:content="python:wftool.getTitleForStateOnType(here.getMaturity(), 'PSCRelease')"
+ i18n:translate="">
+ Stable
+ </td>
+ </tr>
+ <tr tal:define="licenseData python:here.getDataGridRow('availableLicenses', here.getLicense())"
+ tal:condition="licenseData">
+ <th i18n:translate="heading_license">License</th>
+ <td>
+ <a class="link-plain"
+ tal:content="licenseData/id"
+ tal:attributes="href licenseData/url;
+ title licenseData/title"
+ i18n:translate="">
+ GPL
+ </a>
+ </td>
+ </tr>
+ <tr tal:condition="here/getReleaseManager">
+ <th i18n:translate="heading_relmanager">Release Manager</th>
+ <td>
+ <a href=""
+ tal:omit-tag="not: here/getReleaseManagerContact"
+ tal:attributes="href string:mailto:${here/getReleaseManagerContact}">
+ <span tal:replace="here/getReleaseManager">Some Guy</span>
+ </a>
+ </td>
+ </tr>
+ <tr tal:condition="here/getExpectedReleaseDate">
+ <th tal:condition="not:released"
+ i18n:translate="heading_expecteddate">
+ Expected Release</th>
+ <th tal:condition="released"
+ i18n:translate="heading_released">
+ Released</th>
+ <td i18n:translate=""
+ tal:content="here/getExpectedReleaseDate">Date</td>
+ </tr>
+ </table>
+
+ <div tal:replace="structure here/getText" />
+
+ </tal:relnotes>
+
+ <div class="visualClear"></div>
+
+ <tal:proposals define="proposals here/getRelatedFeatures;"
+ condition="nocall:proposals">
+
+ <h2
+ i18n:translate="heading_feature_enhancements_release">
+ Feature enhancements in this release
+ </h2>
+
+ <p i18n:translate="help_feature_enhancements_release">
+ The following features are associated with this release:
+ </p>
+
+ <dl>
+ <tal:proposals repeat="proposal proposals">
+
+ <dt>
+ <a tal:attributes="href proposal/absolute_url;"
+ tal:content="proposal/title_or_id">
+ #1: Improvement Title
+ </a>
+ </dt>
+
+ <dd tal:content="proposal/Description">
+ Improvement Description
+ </dd>
+
+ </tal:proposals>
+ </dl>
+
+ </tal:proposals>
+
+ <tal:changelog condition="here/getChangelog">
+ <h2 i18n:translate="heading_change_log">Change log</h2>
+
+ <div tal:replace="structure here/getChangelog"></div>
+ </tal:changelog>
+
+ </div>
+
+</div>
+
+</body>
+</html>
diff --git a/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_releasefolder_view.pt b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_releasefolder_view.pt
new file mode 100644
index 0000000..3a94550
--- /dev/null
+++ b/liboextensioncenter/am.liboextensioncenter/am/liboextensioncenter/skins/liboextensioncenter/psc_releasefolder_view.pt
@@ -0,0 +1,163 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xml:lang="en"
+ lang="en"
+ xmlns:tal="http://xml.zope.org/namespaces/tal"
+ xmlns:metal="http://xml.zope.org/namespaces/metal"
+ metal:use-macro="context/main_template/macros/master"
+ xmlns:i18n="http://xml.zope.org/namespaces/i18n"
+ i18n:domain="liboextensioncenter">
+
+<head>
+ <metal:css fill-slot="style_slot">
+ <style type="text/css" media="all"
+ tal:content="string:@import url($portal_url/liboextensioncenter.css);"></style>
+ </metal:css>
+</head>
+
+<body>
+
+<div metal:fill-slot="main"
+ tal:define="view context/@@releasefolder_view;
+ is_editable context/@@plone_context_state/is_editable;
+ wtool context/portal_workflow;">
+
+ <div metal:define-macro="main">
+
+ <h1 class="documentFirstHeading">
+ <span tal:replace="context/title_or_id">Title or id</span>
+ </h1>
+
+ <p class="documentDescription"
+ tal:content="context/Description">
+ description
+ </p>
+
+ <p>
+ <a href=""
+ class="link-parent"
+ i18n:translate="label_up_to_product_page"
+ tal:define="parent_url python:here.aq_parent.absolute_url()"
+ tal:condition="parent_url"
+ tal:attributes="href parent_url">
+ « Back to project page
+ </a>
+ </p>
+ <p class="portalMessage"
+ tal:condition="python: is_editable and wtool.getInfoFor(context.aq_parent, 'review_state')!='published'"
+ i18n:domain="plone" i18n:translate="description_cannot_add_before_approved">
+ You can not add releases, documentation or feature proposals until the
+ project itself is approved, make sure you submit it for approval when
+ the relevant project information has been entered.
+ </p>
+
+ <tal:releases define="upcoming view/upcoming_releases;
+ previous view/previous_releases">
+
+ <tal:noreleases condition="python:not(upcoming or previous)">
+ <div class="discreet">
+ <span i18n:translate="description_no_available_releases">
+ No releases found.
+ </span>
+ <span tal:condition="is_editable"
+ i18n:translate="description_use_add_menu_to_add_releases">
+ Use the Add menu to add releases.
+ </span>
+ </div>
+ </tal:noreleases>
+
+
+<tal:comment replace="nothing">
+
+<!-- XXX Why does this release_listing macro fail w/traversal error? It appears to be a valid macro. -->
+
+ <tal:block define="global releases upcoming" condition="nocall:upcoming">
+ <h2 i18n:translate="heading_experimental_releases">Experimental Releases</h2>
+ <metal:macro use-macro="context/psc_release_listing/macros/release_listing"/>
+ </tal:block>
+
+ <tal:block define="global releases previous" condition="nocall:previous">
+ <h2 i18n:translate="heading_stable_releases">Stable Releases</h2>
+ <metal:macro use-macro="context/psc_release_listing/macros/release_listing"/>
+ </tal:block>
+
+</tal:comment>
+
+ <h2 i18n:translate="heading_experimental_releases">Experimental Releases</h2>
+ <tal:release_iter repeat="release upcoming">
+ <div class="visualIEFloatFix" style="margin-top: 1em;">
+ <dl>
+ <dt>
+ <a href="#" title=""
+ tal:content="release/Title"
+ tal:attributes="href release/absolute_url;
+ title release/Title">Ploneboard 1.0</a>
+
+ <tal:released condition="release/EffectiveDate">
+ (<span tal:replace="python:context.toLocalizedTime(release.EffectiveDate())">
+ Feb 1, 2009
+ </span>)
+ </tal:released>
+ </dt>
+
+ <dd>
+ <span tal:replace="release/Description">
+ Main focus for this release is blah blah.
+ </span>
+
+ <br />
+ <a href="#" title="Read more…"
+ i18n:attributes="title label_read_more"
+ tal:attributes="href release/absolute_url">
+ <span i18n:translate="label_read_more">Read more…</span>
+ </a>
+
+ </dd>
+ </dl>
+ </div>
+ <div class="visualClear"></div>
+ </tal:release_iter>
+
+ <h2 i18n:translate="heading_stable_releases">Stable Releases</h2>
+ <tal:release_iter repeat="release previous">
+ <div class="visualIEFloatFix" style="margin-top: 1em;">
+ <dl>
+ <dt>
+ <a href="#" title=""
+ tal:content="release/Title"
+ tal:attributes="href release/absolute_url;
+ title release/Title">Ploneboard 1.0</a>
+
+ <tal:released condition="release/EffectiveDate">
+ (<span tal:replace="python:context.toLocalizedTime(release.EffectiveDate())">
+ Feb 1, 2009
+ </span>)
+ </tal:released>
+ </dt>
+
+ <dd>
... etc. - the rest is truncated
More information about the Libreoffice-commits
mailing list