[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