Author: jmorliaguet
Date: Sat Jun 10 00:11:47 2006
New Revision: 3384

Modified:
   cpsskins/branches/paris-sprint-2006/configuration/portlets/__init__.py
   cpsskins/branches/paris-sprint-2006/configuration/portlets/factory.py
   cpsskins/branches/paris-sprint-2006/configuration/portlets/metaconfigure.py
   cpsskins/branches/paris-sprint-2006/ui/screens/common/authoring.css
   cpsskins/branches/paris-sprint-2006/ui/screens/common/configure.zcml
   cpsskins/branches/paris-sprint-2006/ui/screens/common/content_factory.pt
   cpsskins/branches/paris-sprint-2006/ui/screens/common/views.py

Log:

- simplification: portlets are no longer registered via browser:addMenuItem
  we use the portlet factory information instead.



Modified: cpsskins/branches/paris-sprint-2006/configuration/portlets/__init__.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/configuration/portlets/__init__.py      
(original)
+++ cpsskins/branches/paris-sprint-2006/configuration/portlets/__init__.py      
Sat Jun 10 00:11:47 2006
@@ -16,3 +16,5 @@
 $Id$
 """
 __docformat__ = "reStructuredText"
+
+DEFAULT_PROVIDER = u'standard'

Modified: cpsskins/branches/paris-sprint-2006/configuration/portlets/factory.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/configuration/portlets/factory.py       
(original)
+++ cpsskins/branches/paris-sprint-2006/configuration/portlets/factory.py       
Sat Jun 10 00:11:47 2006
@@ -29,11 +29,15 @@
     """
     implements(IPortletFactory)
 
-    def __init__(self, callable, provider=u'', title='', description=''):
+    def __init__(self, callable, name=u'', provider=u'', title='',
+                 description='', icon=u''):
         self._callable = callable
+        self.name = name
         self.provider = provider
-        self.title = title 
+        self.title = title
         self.description = description
+        self.icon = icon
+        self.type_name = u'cpsskins.portlet.%s.%s' % (provider, name)
 
     def getInterfaces(self):
         return implementedBy(self._callable)

Modified: 
cpsskins/branches/paris-sprint-2006/configuration/portlets/metaconfigure.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/configuration/portlets/metaconfigure.py 
(original)
+++ cpsskins/branches/paris-sprint-2006/configuration/portlets/metaconfigure.py 
Sat Jun 10 00:11:47 2006
@@ -22,24 +22,23 @@
 from zope.annotation.interfaces import IAttributeAnnotatable
 from zope.app.component.contentdirective import ClassDirective
 from zope.app.publisher.browser.icon import IconDirective
-from zope.app.publisher.browser.menumeta import addMenuItem
 from zope.app.publisher.browser.resourcemeta import resource
 from zope.app.content.interfaces import IContentType
-from zope.component.factory import Factory
 from zope.component.interface import provideInterface
 from zope.component.zcml import utility
 from zope.configuration.exceptions import ConfigurationError
-from zope.interface import Interface, alsoProvides
+from zope.interface import alsoProvides
 
 from cpsskins import ui
 from cpsskins.browser.rendering.interfaces import IUpdateData
+from cpsskins.configuration.portlets import DEFAULT_PROVIDER
 from cpsskins.configuration.portlets.factory import PortletFactory
 from cpsskins.configuration.portlets.factory import IPortletFactory
 from cpsskins.setup.interfaces import INameType
 
 ui_path = os.path.dirname(ui.__file__)
 
-def portlet(_context, name=None, provider=u'standard', title=None,
+def portlet(_context, name=None, provider=DEFAULT_PROVIDER, title=None,
             description=None, class_=None, schema=None, icon=None):
 
     if not name:
@@ -69,12 +68,6 @@
     # Register the zmi icon
     IconDirective(_context=_context, name="zmi_icon", for_=schema, file=icon)
 
-    # browser:addMenuItem
-    from zope.app.menus import cpsskins_add_portlet
-    addMenuItem(_context=_context, menu=cpsskins_add_portlet, for_=Interface,
-                title=title, description=description, class_=class_,
-                permission="zope.ManageContent", icon=icon_name)
-
     # zope:content
     c = ClassDirective(_context=_context, class_=class_)
     c.implements(_context=_context,interface=(schema, IAttributeAnnotatable))
@@ -84,8 +77,9 @@
               set_schema=(schema, IUpdateData))
 
     # register the portlet factory
-    factory = PortletFactory(callable=class_, provider=provider, title=title,
-                             description=description)
+    factory = PortletFactory(callable=class_, provider=provider, name=name,
+                             title=title, description=description,
+                             icon=icon_name)
     utility(_context=_context, provides=IPortletFactory, component=factory,
             name=u'cpsskins.portlet.%s' % dotted_name)
     utility(_context=_context, provides=IPortletFactory, component=factory,

Modified: cpsskins/branches/paris-sprint-2006/ui/screens/common/authoring.css
==============================================================================
--- cpsskins/branches/paris-sprint-2006/ui/screens/common/authoring.css 
(original)
+++ cpsskins/branches/paris-sprint-2006/ui/screens/common/authoring.css Sat Jun 
10 00:11:47 2006
@@ -53,9 +53,16 @@
 
 .toolbox .header {
   border-bottom: 1px solid #000;
-  padding-left: 30px;
-  background-color: #ccc;
+  background-color: #999;
   font-size: 1.1em;
+  color: white;
+  padding: 2px 0px 2px 30px;
+}
+
+.toolbox .section {
+  border-bottom: 1px solid #999;
+  background-color: #ccc;
+  padding: 0px 0px 1px 30px;
 }
 
 .toolbox div.item {

Modified: cpsskins/branches/paris-sprint-2006/ui/screens/common/configure.zcml
==============================================================================
--- cpsskins/branches/paris-sprint-2006/ui/screens/common/configure.zcml        
(original)
+++ cpsskins/branches/paris-sprint-2006/ui/screens/common/configure.zcml        
Sat Jun 10 00:11:47 2006
@@ -6,11 +6,6 @@
 
   <include package=".images" />
 
-  <menu
-      id="cpsskins_add_portlet"
-      title="Add a portlet"
-  />
-
   <resource
       name="authoring.css" file="authoring.css"
       layer="cpsskins.browser.skin.cpsskins" />
@@ -21,6 +16,7 @@
 
   <pages
       for="*"
+      class=".views.Panels"
       layer="cpsskins.browser.skin.cpsskins"
       permission="zope.ManageContent">
 

Modified: 
cpsskins/branches/paris-sprint-2006/ui/screens/common/content_factory.pt
==============================================================================
--- cpsskins/branches/paris-sprint-2006/ui/screens/common/content_factory.pt    
(original)
+++ cpsskins/branches/paris-sprint-2006/ui/screens/common/content_factory.pt    
Sat Jun 10 00:11:47 2006
@@ -1,17 +1,17 @@
-<tal:block define="portlets context/@@view_get_menu/cpsskins_add_portlet"
-           condition="portlets">
+<tal:block i18n:domain="cpsskins">
   <div class="header">Portlets</div>
-  <div class="factory" tal:repeat="portlet portlets"
-       tal:attributes="type_name portlet/action">
-    <div tal:define="title portlet/title;
-                     odd repeat/portlet/odd;"
-      tal:attributes="type_name portlet/action;
-                      class python: odd and 'item odd' or 'item'">
-      <img class="icon" i18n:attributes="title"
-           tal:attributes="title title;
-           src string:++resource++${portlet/icon}" />
-      <span class="title" tal:content="title" /> &mdash;
-      <span class="description" tal:content="portlet/description" />
+  <tal:block repeat="info view/listPortlets">
+    <div class="section" i18n:translate=""
+     tal:content="string:provider.${info/provider}" />
+    <div class="factory" tal:repeat="factory info/factories"
+     tal:attributes="type_name factory/type_name">
+      <div tal:define="title factory/title; odd repeat/factory/odd;"
+       tal:attributes="class python: odd and 'item odd' or 'item'">
+        <img class="icon" i18n:attributes="title"
+         tal:attributes="title title; src string:++resource++${factory/icon}" 
/>
+        <span class="title" tal:content="factory/title" /> &mdash;
+        <span class="description" tal:content="factory/description" />
+      </div>
     </div>
-  </div>
+  </tal:block>
 </tal:block>

Modified: cpsskins/branches/paris-sprint-2006/ui/screens/common/views.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/ui/screens/common/views.py      
(original)
+++ cpsskins/branches/paris-sprint-2006/ui/screens/common/views.py      Sat Jun 
10 00:11:47 2006
@@ -19,8 +19,8 @@
 
 from zope.app.container.browser.contents import Contents
 from zope.app.session.interfaces import ISession
-from zope.component import getUtility, createObject, getMultiAdapter
-from zope.component import queryMultiAdapter
+from zope.component import getUtility, getAllUtilitiesRegisteredFor
+from zope.component import queryMultiAdapter, getMultiAdapter, createObject
 from zope.event import notify
 from zope.i18nmessageid import MessageFactory
 from zope.interface import implements, Interface
@@ -35,6 +35,8 @@
 from cpsskins.browser.tree.interfaces import INodeMoving, INodeOrdering
 from cpsskins.browser.tree.interfaces import INodeDuplicating
 from cpsskins.browser.rendering.interfaces import IViewer
+from cpsskins.configuration.portlets.factory import IPortletFactory
+from cpsskins.configuration.portlets import DEFAULT_PROVIDER
 from cpsskins.elements.theme import Theme
 from cpsskins.elements.themepage import ThemePage
 from cpsskins.elements.interfaces import IPresentable, IDisplayable
@@ -116,7 +118,6 @@
 class Rendering(object):
     """Rendering of page elements
     """
-
     def __init__(self, context, request):
         self.context = context
         self.request = request
@@ -131,6 +132,30 @@
         viewer = getMultiAdapter((page, self.request), IViewer)
         return viewer(engine=engine)
 
+class Panels(object):
+    """Panels view
+    """
+    def __init__(self, context, request):
+        self.context = context
+        self.request = request
+
+    def listPortlets(self):
+        """Return the factories of all registered portlets by provider name.
+        """
+        factories = getAllUtilitiesRegisteredFor(IPortletFactory)
+        providers = {}
+        for factory in factories:
+            providers.setdefault(factory.provider, []).append(factory)
+
+        # return a sorted list, with the default provider first
+        names = providers.keys()
+        names.remove(DEFAULT_PROVIDER)
+        names.sort()
+        names.insert(0, DEFAULT_PROVIDER)
+
+        return [{'provider': name, 'factories': providers[name]}
+                for name in names]
+
 class IAuthoring(Interface):
     """ """
 
@@ -142,7 +167,6 @@
     def __init__(self, context, request):
         self.context = context
         self.request = request
-
         self.tmutil = getThemeManager(context)
 
     def getSessionInfo(self):
-- 
http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins

Reply via email to