[Checkins]
SVN: zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/
Added viewlet including Site Management navigation
Roger Ineichen
roger at projekt01.ch
Sun Mar 23 07:39:27 EDT 2008
Log message for revision 84874:
Added viewlet including Site Management navigation
Changed menu configuration
Changed:
U zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/browser.py
U zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/configure.zcml
U zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/menu.py
U zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/menu.zcml
A zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/navigation.py
A zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/navigation.zcml
A zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/registration.pt
A zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/registration.py
A zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/registration.zcml
A zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/siteregistration.pt
-=-
Modified: zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/browser.py
===================================================================
--- zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/browser.py 2008-03-23 11:38:27 UTC (rev 84873)
+++ zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/browser.py 2008-03-23 11:39:27 UTC (rev 84874)
@@ -26,6 +26,6 @@
cssClassEven = u'even'
cssClassOdd = u'odd'
cssClassSelected = u'selected'
-
- batchSize = 2
- startBatchingAt = 2
+
+ batchSize = 25
+ startBatchingAt = 25
Modified: zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/configure.zcml
===================================================================
--- zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/configure.zcml 2008-03-23 11:38:27 UTC (rev 84873)
+++ zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/configure.zcml 2008-03-23 11:39:27 UTC (rev 84874)
@@ -22,7 +22,9 @@
/>
<include file="browser.zcml" />
+ <include file="navigation.zcml" />
<include file="menu.zcml" />
+ <include file="registration.zcml" />
</registerIn>
Modified: zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/menu.py
===================================================================
--- zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/menu.py 2008-03-23 11:38:27 UTC (rev 84873)
+++ zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/menu.py 2008-03-23 11:39:27 UTC (rev 84874)
@@ -16,11 +16,52 @@
"""
__docformat__ = "reStructuredText"
+from zope.app.component.interfaces import ILocalSiteManager
+
from z3c.menu.ready2go import item
-class SiteManagerMenuItem(item.GlobalMenuItem):
+class GlobalSiteManagerMenuItem(item.GlobalMenuItem):
"""Site manager menu item."""
viewName = '++etc++site'
weight = 3
+
+
+class RegistrationAddMenuItem(item.AddMenuItem):
+ """The add registration menu item."""
+
+ viewName = 'addRegistration.html'
+ weight = 150
+
+
+class RegistrationMenuItem(item.ContextMenuItem):
+ """The registrations.html menu item."""
+
+ viewName = 'registration.html'
+ weight = 150
+
+ @property
+ def available(self):
+ return not ILocalSiteManager.providedBy(self.context)
+
+
+class RegistrationsMenuItem(item.ContextMenuItem):
+ """ILocalSiteManager registrations.html menu item."""
+
+ viewName = 'registrations.html'
+ weight = 150
+
+
+class SiteManagementFolderContentsMenuItem(item.ContextMenuItem):
+ """ISiteManagementFolder contents.html menu item."""
+
+ viewName = 'contents.html'
+ weight = 1
+
+
+class LocalSiteManagerContentsMenuItem(item.ContextMenuItem):
+ """ILocalSiteManager contents.html menu item."""
+
+ viewName = 'contents.html'
+ weight = 1
Modified: zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/menu.zcml
===================================================================
--- zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/menu.zcml 2008-03-23 11:38:27 UTC (rev 84873)
+++ zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/menu.zcml 2008-03-23 11:39:27 UTC (rev 84874)
@@ -3,13 +3,65 @@
xmlns="http://namespaces.zope.org/browser"
i18n_domain="zam">
+ <!-- IAddMenu -->
<viewlet
+ name="Registration"
+ for="*"
+ class=".menu.RegistrationAddMenuItem"
+ manager="zam.api.menu.IAddMenu"
+ layer="zam.api.layer.ISiteManagerPluginLayer"
+ permission="zope.ManageServices"
+ />
+
+
+ <!-- IGlobalMenu -->
+ <viewlet
name="Site Manager"
for="*"
- class=".menu.SiteManagerMenuItem"
+ class=".menu.GlobalSiteManagerMenuItem"
manager="zam.api.menu.IGlobalMenu"
layer="zam.api.layer.ISiteManagerPluginLayer"
permission="zope.ManageServices"
/>
+
+ <!-- IContextMenu -->
+ <viewlet
+ name="Contents"
+ for="zope.app.component.interfaces.ISiteManagementFolder"
+ class=".menu.SiteManagementFolderContentsMenuItem"
+ manager="zam.api.menu.IContextMenu"
+ layer="zam.api.layer.ISiteManagerPluginLayer"
+ permission="zope.ManageServices"
+ />
+
+ <viewlet
+ name="Contents"
+ for="zope.app.component.interfaces.ILocalSiteManager"
+ class=".menu.LocalSiteManagerContentsMenuItem"
+ manager="zam.api.menu.IContextMenu"
+ layer="zam.api.layer.ISiteManagerPluginLayer"
+ permission="zope.ManageServices"
+ />
+
+ <viewlet
+ name="Registrations"
+ for="zope.app.component.interfaces.ILocalSiteManager"
+ class=".menu.RegistrationsMenuItem"
+ manager="zam.api.menu.IContextMenu"
+ layer="zam.api.layer.ISiteManagerPluginLayer"
+ permission="zope.ManageServices"
+ />
+
+ <viewlet
+ name="Registration"
+ for="*"
+ class=".menu.RegistrationMenuItem"
+ manager="zam.api.menu.IContextMenu"
+ layer="zam.api.layer.ISiteManagerPluginLayer"
+ permission="zope.ManageServices"
+ />
+
+
+
</configure>
Added: zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/navigation.py
===================================================================
--- zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/navigation.py (rev 0)
+++ zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/navigation.py 2008-03-23 11:39:27 UTC (rev 84874)
@@ -0,0 +1,44 @@
+##############################################################################
+#
+# Copyright (c) 2008 Zope Foundation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""
+$Id:$
+"""
+__docformat__ = "reStructuredText"
+
+from zope.traversing import api
+from zope.app.component import hooks
+
+from z3c.jsontree.browser import tree
+
+
+class SiteManagerTreeViewlet(tree.SimpleJSONTreeViewlet):
+ """Navigation tree starting at site management."""
+
+ z3cJSONTreeId = u'zamPluginSiteManagerTree'
+ z3cJSONTreeName = u'zamPluginSiteManagerTree'
+
+ @property
+ def title(self):
+ return self.__name__
+
+ def getRoot(self):
+ site = hooks.getSite()
+ if not self.root:
+ self.root = site.getSiteManager()
+ return self.root
+
+ def render(self):
+ super(SiteManagerTreeViewlet, self).update()
+ return self.tree
+
Property changes on: zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/navigation.py
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/navigation.zcml
===================================================================
--- zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/navigation.zcml (rev 0)
+++ zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/navigation.zcml 2008-03-23 11:39:27 UTC (rev 84874)
@@ -0,0 +1,85 @@
+<configure
+ xmlns:zope="http://namespaces.zope.org/zope"
+ xmlns="http://namespaces.zope.org/browser"
+ xmlns:z3c="http://namespaces.zope.org/z3c"
+ i18n_domain="zam">
+
+ <configure package="z3c.xmlhttp">
+ <resource
+ name="z3c.xmlhttp.js"
+ file="js/z3c.xmlhttp-0.5.0.js"
+ layer="zam.api.layer.ISiteManagerPluginLayer"
+ />
+
+ <viewlet
+ name="z3c.xmlhttp.js"
+ for="*"
+ manager="zam.api.layer.IJavaScript"
+ class=".browser.XMLHTTPJavaScriptViewlet"
+ permission="zope.Public"
+ layer="zam.api.layer.ISiteManagerPluginLayer"
+ weight="10"
+ />
+ </configure>
+
+ <configure package="z3c.jsonrpcproxy">
+ <resource
+ name="jsonrpcproxy.js"
+ file="js/jsonrpcproxy-0.5.0.js"
+ layer="zam.api.layer.ISiteManagerPluginLayer"
+ />
+
+ <viewlet
+ name="jsonrpcproxy.js"
+ for="*"
+ manager="zam.api.layer.IJavaScript"
+ class=".browser.JSONRPCProxyJavaScriptViewlet"
+ permission="zope.Public"
+ layer="zam.api.layer.ISiteManagerPluginLayer"
+ weight="100"
+ />
+ </configure>
+
+ <configure package="z3c.jsontree.browser">
+ <zrt-resource
+ name="z3c.jsontree.js"
+ file="js/z3c.jsontree-0.5.0.js"
+ layer="zam.api.layer.ISiteManagerPluginLayer"
+ />
+ <resource
+ name="z3c.jsontree.css"
+ file="z3c.jsontree.css"
+ layer="zam.api.layer.ISiteManagerPluginLayer"
+ />
+
+ <viewlet
+ name="z3c.jsontree.js"
+ for="*"
+ manager="zam.api.layer.IJavaScript"
+ class=".Z3CJSONTreeJavaScriptViewlet"
+ permission="zope.Public"
+ layer="zam.api.layer.ISiteManagerPluginLayer"
+ weight="1000"
+ />
+ <viewlet
+ name="z3c.jsontree.css"
+ for="*"
+ manager="zam.api.layer.ICSS"
+ class=".Z3CJSONTreeCSSViewlet"
+ permission="zope.Public"
+ layer="zam.api.layer.ISiteManagerPluginLayer"
+ weight="1000"
+ />
+ </configure>
+
+ <viewlet
+ name="Site Management"
+ for="*"
+ class=".navigation.SiteManagerTreeViewlet"
+ manager="zam.api.layer.ISideBar"
+ layer="zam.api.layer.ISiteManagerPluginLayer"
+ permission="zope.View"
+ weight="2"
+ />
+
+</configure>
Property changes on: zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/navigation.zcml
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/registration.pt
===================================================================
--- zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/registration.pt (rev 0)
+++ zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/registration.pt 2008-03-23 11:39:27 UTC (rev 84874)
@@ -0,0 +1,48 @@
+ <form action="@@addRegistration.html" method="get"
+ tal:condition="not:view/registrations">
+ <p i18n:translate="">This object isn't yet registered.</p>
+ <input type="submit" value="Register this object"
+ i18n:attributes="value register-button" />
+ </form>
+
+ <tal:block tal:condition="view/registrations">
+ <form action="" method="post" tal:attributes="action request/URL">
+ <p i18n:translate="">
+ This object is registered:
+ </p>
+ <table>
+ <tr tal:repeat="registration view/registrations">
+ <td>
+ <input type="checkbox"
+ class="noborder" name="ids:list"
+ tal:attributes="value registration/id;
+ id registration/id;"
+ />
+ </td>
+ <td tal:define="info registration/render">
+ <tal:block content="info/info">
+ zope.app.fooIFoo utility named bob
+ </tal:block>
+ <tal:block condition="info/comment">
+ <br />
+ <tal:block content="info/comment">
+ comment: needed a bob
+ </tal:block>
+ </tal:block>
+ </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>
+ <input type="submit" value="Unregister" name="deactivate"
+ i18n:attributes="value unregister-button" />
+ </td>
+ </tr>
+ </table>
+ </form>
+
+ <form action="@@addRegistration.html" method="get">
+ <input type="submit" value="Register this object again"
+ i18n:attributes="value register-again-button" />
+ </form>
+ </tal:block>
Property changes on: zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/registration.pt
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/registration.py
===================================================================
--- zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/registration.py (rev 0)
+++ zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/registration.py 2008-03-23 11:39:27 UTC (rev 84874)
@@ -0,0 +1,256 @@
+##############################################################################
+#
+# Copyright (c) 2007 Zope Foundation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""
+$Id: __init__.py 97 2007-03-29 22:58:27Z rineichen $
+"""
+__docformat__ = "reStructuredText"
+
+import warnings
+
+import zope.interface
+import zope.component
+import zope.schema
+
+from zope.publisher.browser import BrowserPage
+from zope.security.proxy import removeSecurityProxy
+import zope.component.interfaces
+import zope.publisher.interfaces.browser
+
+import zope.app.pagetemplate
+from zope.app.component.browser.registration import IRegistrationDisplay
+from zope.app.component.browser.registration import ISiteRegistrationDisplay
+
+from z3c.template.template import getPageTemplate
+from z3c.formui import form
+from z3c.form import field
+from z3c.form import button
+from z3c.pagelet import browser
+
+from zam.api.i18n import MessageFactory as _
+
+
+def _registrations(context, comp):
+ sm = zope.component.getSiteManager(context)
+ for r in sm.registeredUtilities():
+ if r.component == comp or comp is None:
+ yield r
+ for r in sm.registeredAdapters():
+ if r.factory == comp or comp is None:
+ yield r
+ for r in sm.registeredSubscriptionAdapters():
+ if r.factory == comp or comp is None:
+ yield r
+ for r in sm.registeredHandlers():
+ if r.factory == comp or comp is None:
+ yield r
+
+
+class RegistrationView(browser.BrowserPagelet):
+
+ zope.component.adapts(None, zope.publisher.interfaces.browser.IBrowserRequest)
+
+ template = getPageTemplate()
+
+ def registrations(self):
+ registrations = [
+ zope.component.getMultiAdapter((r, self.request), IRegistrationDisplay)
+ for r in sorted(_registrations(self.context, self.context))
+ ]
+ return registrations
+
+ def update(self):
+ registrations = dict([(r.id(), r) for r in self.registrations()])
+ for id in self.request.form.get('ids', ()):
+ r = registrations.get(id)
+ if r is not None:
+ r.unregister()
+
+ def render(self):
+ return self.template()
+
+
+class UtilityRegistrationDisplay(object):
+ """Utility Registration Details"""
+
+ zope.component.adapts(zope.component.interfaces.IUtilityRegistration,
+ zope.publisher.interfaces.browser.IBrowserRequest)
+ zope.interface.implements(IRegistrationDisplay)
+
+ def __init__(self, context, request):
+ self.context = context
+ self.request = request
+
+ def provided(self):
+ provided = self.context.provided
+ return provided.__module__ + '.' + provided.__name__
+
+ def id(self):
+ return 'R' + (("%s %s" % (self.provided(), self.context.name))
+ .encode('utf8')
+ .encode('base64')
+ .replace('+', '_')
+ .replace('=', '')
+ .replace('\n', '')
+ )
+
+ def _comment(self):
+ comment = self.context.info or ''
+ if comment:
+ comment = _("comment: ${comment}", mapping={"comment": comment})
+ return comment
+
+ def _provided(self):
+ name = self.context.name
+ provided = self.provided()
+ if name:
+ info = _("${provided} utility named '${name}'",
+ mapping={"provided": provided, "name": name})
+ else:
+ info = _("${provided} utility",
+ mapping={"provided": provided})
+ return info
+
+ def render(self):
+ return {
+ "info": self._provided(),
+ "comment": self._comment()
+ }
+
+ def unregister(self):
+ self.context.registry.unregisterUtility(
+ self.context.component,
+ self.context.provided,
+ self.context.name,
+ )
+
+
+class SiteRegistrationView(RegistrationView):
+
+ def registrations(self):
+ registrations = [
+ zope.component.getMultiAdapter((r, self.request),
+ ISiteRegistrationDisplay)
+ for r in sorted(_registrations(self.context, None))
+ ]
+ return registrations
+
+
+class UtilitySiteRegistrationDisplay(UtilityRegistrationDisplay):
+ """Utility Registration Details"""
+
+ zope.interface.implementsOnly(ISiteRegistrationDisplay)
+
+ def render(self):
+ url = zope.component.getMultiAdapter(
+ (self.context.component, self.request), name='absolute_url')
+ try:
+ url = url()
+ except TypeError:
+ url = ""
+
+ cname = getattr(self.context.component, '__name__', '')
+ if not cname:
+ cname = _("(unknown name)")
+ if url:
+ url += "/@@SelectedManagementView.html"
+
+ return {
+ "cname": cname,
+ "url": url,
+ "info": self._provided(),
+ "comment": self._comment()
+ }
+
+
+class AddUtilityRegistration(form.Form):
+ """View for registering utilities
+
+ Normally, the provided interface and name are input.
+
+ A subclass can provide an empty 'name' attribute if the component should
+ always be registered without a name.
+
+ A subclass can provide a 'provided' attribute if a component
+ should always be registered with the same interface.
+
+ """
+ zope.component.adapts(None, zope.publisher.interfaces.browser.IBrowserRequest)
+
+ formErrorsMessage = _('There were some errors.')
+ ignoreContext = True
+
+ fields = field.Fields(
+ zope.schema.Choice(
+ __name__ = 'provided',
+ title=_("Provided interface"),
+ description=_("The interface provided by the utility"),
+ vocabulary="Utility Component Interfaces",
+ required=True,
+ ),
+ zope.schema.TextLine(
+ __name__ = 'name',
+ title=_("Register As"),
+ description=_("The name under which the utility will be known."),
+ required=False,
+ default=u'',
+ missing_value=u''
+ ),
+ zope.schema.Text(
+ __name__ = 'comment',
+ title=_("Comment"),
+ required=False,
+ default=u'',
+ missing_value=u''
+ ),
+ )
+
+ name = provided = None
+
+ prefix = 'field' # in hopes of making old tests pass. :)
+
+ def __init__(self, context, request):
+ if self.name is not None:
+ self.fields = self.fields.omit('name')
+ if self.provided is not None:
+ self.fields = self.fields.omit('provided')
+ super(AddUtilityRegistration, self).__init__(context, request)
+
+ @property
+ def label(self):
+ return _("Register a $classname",
+ mapping=dict(classname=self.context.__class__.__name__)
+ )
+
+ @button.buttonAndHandler(_('Register'), name='register')
+ def handleRegister(self, action):
+ data, errors = self.extractData()
+ if errors:
+ self.status = self.formErrorsMessage
+ return
+
+ sm = zope.component.getSiteManager(self.context)
+ name = self.name
+ if name is None:
+ name = data['name']
+ provided = self.provided
+ if provided is None:
+ provided = data['provided']
+
+ # We have to remove the security proxy to save the registration
+ sm.registerUtility(
+ removeSecurityProxy(self.context),
+ provided, name,
+ data['comment'] or '')
+
+ self.request.response.redirect('@@registration.html')
Property changes on: zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/registration.py
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/registration.zcml
===================================================================
--- zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/registration.zcml (rev 0)
+++ zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/registration.zcml 2008-03-23 11:39:27 UTC (rev 84874)
@@ -0,0 +1,51 @@
+<configure
+ xmlns:zope="http://namespaces.zope.org/zope"
+ xmlns="http://namespaces.zope.org/browser"
+ xmlns:z3c="http://namespaces.zope.org/z3c"
+ i18n_domain="zam">
+
+ <z3c:pagelet
+ for="*"
+ name="registration.html"
+ class=".registration.RegistrationView"
+ permission="zope.ManageSite"
+ layer="zam.api.layer.ISiteManagerPluginLayer"
+ />
+
+ <z3c:template
+ for=".registration.RegistrationView"
+ template="registration.pt"
+ layer="zam.api.layer.ISiteManagerPluginLayer"
+ />
+
+
+ <z3c:pagelet
+ for="*"
+ name="addRegistration.html"
+ class=".registration.AddUtilityRegistration"
+ layer="zam.api.layer.ISiteManagerPluginLayer"
+ permission="zope.ManageSite"
+ />
+
+ <zope:adapter
+ factory=".registration.UtilityRegistrationDisplay"
+ />
+ <zope:adapter
+ factory=".registration.UtilitySiteRegistrationDisplay"
+ />
+
+ <z3c:pagelet
+ name="registrations.html"
+ for="zope.app.component.interfaces.ILocalSiteManager"
+ class=".registration.SiteRegistrationView"
+ permission="zope.ManageSite"
+ layer="zam.api.layer.ISiteManagerPluginLayer"
+ />
+
+ <z3c:template
+ for=".registration.SiteRegistrationView"
+ template="siteregistration.pt"
+ layer="zam.api.layer.ISiteManagerPluginLayer"
+ />
+
+</configure>
Property changes on: zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/registration.zcml
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/siteregistration.pt
===================================================================
--- zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/siteregistration.pt (rev 0)
+++ zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/siteregistration.pt 2008-03-23 11:39:27 UTC (rev 84874)
@@ -0,0 +1,55 @@
+<form tal:attributes="action request/URL"
+ method="POST"
+ >
+ <div tal:condition="not:view/registrations">
+ <p i18n:translate="">Nothing is registered for this site.</p>
+ </div>
+ <div tal:condition="view/registrations">
+ <p i18n:translate="">
+ Registrations for this site:
+ </p>
+ <table>
+ <tr tal:repeat="registration view/registrations">
+ <td>
+ <input type="checkbox"
+ class="noborder" name="ids:list"
+ tal:attributes="value registration/id;
+ id registration/id;
+ "
+ />
+ </td>
+ <td tal:define="info registration/render">
+ <tal:block condition="info/url">
+ <a href="foo/bar" tal:attributes="href info/url"
+ tal:content="info/cname">foo/bar</a>
+ </tal:block>
+ <tal:block condition="not: info/url"
+ i18n:translate="">
+ <tal:block i18n:name="name" content="info/cname">
+ foo/bar
+ </tal:block>
+ (moved or deleted)
+ </tal:block>
+ <br />
+ <tal:block content="info/info">
+ zope.app.fooIFoo utility named bob
+ </tal:block>
+ <tal:block condition="info/comment">
+ <br />
+ <tal:block content="info/comment">
+ comment: needed a bob
+ </tal:block>
+ </tal:block>
+ </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>
+ <input type="submit" value="Unregister" name="deactivate"
+ i18n:attributes="value unregister-button" />
+ </td>
+ </tr>
+ </table>
+ </div>
+
+</form>
Property changes on: zamplugin.sitemanager/trunk/src/zamplugin/sitemanager/siteregistration.pt
___________________________________________________________________
Name: svn:eol-style
+ native
More information about the Checkins
mailing list