Author: jmorliaguet
Date: Mon Jun  5 00:45:52 2006
New Revision: 3307

Added:
   cpsskins/branches/paris-sprint-2006/browser/tree/theme.py   (contents, props 
changed)
Modified:
   cpsskins/branches/paris-sprint-2006/browser/rendering/viewer.py
   cpsskins/branches/paris-sprint-2006/browser/tree/__init__.py
   cpsskins/branches/paris-sprint-2006/browser/tree/configure.zcml
   cpsskins/branches/paris-sprint-2006/browser/tree/interfaces.py
   cpsskins/branches/paris-sprint-2006/browser/tree/slot.py
   cpsskins/branches/paris-sprint-2006/browser/tree/views.py
   cpsskins/branches/paris-sprint-2006/elements/adapters.py
   cpsskins/branches/paris-sprint-2006/elements/configure.zcml
   cpsskins/branches/paris-sprint-2006/elements/interfaces.py
   cpsskins/branches/paris-sprint-2006/elements/slot.py
   cpsskins/branches/paris-sprint-2006/elements/theme.py
   cpsskins/branches/paris-sprint-2006/setup/manager.py

Log:

- moved the node traversing adapters to cpsskins.browser.tree views



Modified: cpsskins/branches/paris-sprint-2006/browser/rendering/viewer.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/browser/rendering/viewer.py     
(original)
+++ cpsskins/branches/paris-sprint-2006/browser/rendering/viewer.py     Mon Jun 
 5 00:45:52 2006
@@ -29,7 +29,8 @@
 from cpsskins.browser.rendering.context import ContextInfo
 from cpsskins.browser.rendering.interfaces import IUpdateData, IViewer
 from cpsskins.browser.rendering.interfaces import IRendererView, IViewNodeEvent
-from cpsskins.elements.interfaces import INodeTraverser, INode, IElement, ISlot
+from cpsskins.browser.tree.interfaces import INodeTraversing
+from cpsskins.elements.interfaces import INode, IElement, ISlot
 from cpsskins.elements.interfaces import IDisplayable
 from cpsskins.utils import getThemeManager
 
@@ -114,7 +115,7 @@
         if ISlot.providedBy(parent):
             display = IDisplayable(parent).getEffectiveDisplay(perspective)
 
-    traverser = INodeTraverser(node)
+    traverser = getMultiAdapter((node, globals.request), INodeTraversing)
     children = traverser.getChildNodes(display=display, 
perspective=perspective)
 
     info = ContextInfo({

Modified: cpsskins/branches/paris-sprint-2006/browser/tree/__init__.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/browser/tree/__init__.py        
(original)
+++ cpsskins/branches/paris-sprint-2006/browser/tree/__init__.py        Mon Jun 
 5 00:45:52 2006
@@ -20,4 +20,4 @@
 from zope.deferredimport import defineFrom
 
 defineFrom('cpsskins.browser.tree.views', 'NodeAdding', 'NodeMoving',
-           'NodeRemoving', 'NodeOrdering', 'NodeDuplicating')
+           'NodeRemoving', 'NodeOrdering', 'NodeDuplicating', 'NodeTraversing')

Modified: cpsskins/branches/paris-sprint-2006/browser/tree/configure.zcml
==============================================================================
--- cpsskins/branches/paris-sprint-2006/browser/tree/configure.zcml     
(original)
+++ cpsskins/branches/paris-sprint-2006/browser/tree/configure.zcml     Mon Jun 
 5 00:45:52 2006
@@ -18,6 +18,13 @@
   <adapter
       for="cpsskins.elements.interfaces.ITheme
            zope.publisher.interfaces.IRequest"
+      factory=".theme.NodeTraversing"
+      provides=".interfaces.INodeTraversing"
+  />
+
+  <adapter
+      for="cpsskins.elements.interfaces.ITheme
+           zope.publisher.interfaces.IRequest"
       factory=".NodeAdding"
       provides=".interfaces.INodeAdding"
   />
@@ -55,6 +62,13 @@
   <adapter
       for="cpsskins.elements.interfaces.IThemePage
            zope.publisher.interfaces.IRequest"
+      factory=".NodeTraversing"
+      provides=".interfaces.INodeTraversing"
+  />
+
+  <adapter
+      for="cpsskins.elements.interfaces.IThemePage
+           zope.publisher.interfaces.IRequest"
       factory=".NodeAdding"
       provides=".interfaces.INodeAdding"
   />
@@ -92,6 +106,13 @@
   <adapter
       for="cpsskins.elements.interfaces.IPageBlock
            zope.publisher.interfaces.IRequest"
+      factory=".NodeTraversing"
+      provides=".interfaces.INodeTraversing"
+  />
+
+  <adapter
+      for="cpsskins.elements.interfaces.IPageBlock
+           zope.publisher.interfaces.IRequest"
       factory=".NodeAdding"
       provides=".interfaces.INodeAdding"
   />
@@ -129,6 +150,13 @@
   <adapter
       for="cpsskins.elements.interfaces.ICell
            zope.publisher.interfaces.IRequest"
+      factory=".NodeTraversing"
+      provides=".interfaces.INodeTraversing"
+  />
+
+  <adapter
+      for="cpsskins.elements.interfaces.ICell
+           zope.publisher.interfaces.IRequest"
       factory=".NodeAdding"
       provides=".interfaces.INodeAdding"
   />
@@ -166,6 +194,13 @@
   <adapter
       for="cpsskins.elements.interfaces.ISlot
            zope.publisher.interfaces.IRequest"
+      factory=".slot.NodeTraversing"
+      provides=".interfaces.INodeTraversing"
+  />
+
+  <adapter
+      for="cpsskins.elements.interfaces.ISlot
+           zope.publisher.interfaces.IRequest"
       factory=".slot.SlotAdding"
       provides=".interfaces.INodeAdding"
   />
@@ -198,4 +233,12 @@
       provides=".interfaces.INodeDuplicating"
   />
 
+  <!-- Portlet -->
+  <adapter
+      for="cpsskins.elements.interfaces.IPortlet
+           zope.publisher.interfaces.IRequest"
+      factory=".NodeTraversing"
+      provides=".interfaces.INodeTraversing"
+  />
+
 </configure>

Modified: cpsskins/branches/paris-sprint-2006/browser/tree/interfaces.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/browser/tree/interfaces.py      
(original)
+++ cpsskins/branches/paris-sprint-2006/browser/tree/interfaces.py      Mon Jun 
 5 00:45:52 2006
@@ -19,6 +19,12 @@
 
 from zope.component.interfaces import IView
 
+# Travesing tree nodes
+class INodeTraversing(IView):
+
+    def getChildNodes(display, perspective):
+        """Return the list of child nodes"""
+
 # Adding elements to nodes
 class INodeAdding(IView):
     """Adding elements to nodes."""

Modified: cpsskins/branches/paris-sprint-2006/browser/tree/slot.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/browser/tree/slot.py    (original)
+++ cpsskins/branches/paris-sprint-2006/browser/tree/slot.py    Mon Jun  5 
00:45:52 2006
@@ -26,13 +26,43 @@
 from cpsskins.browser.negotiation.interfaces import INegotiation
 from cpsskins.browser.tree.interfaces import INodeAdding, INodeRemoving
 from cpsskins.browser.tree.interfaces import INodeOrdering, INodeMoving
-from cpsskins.browser.tree.interfaces import INodeDuplicating
+from cpsskins.browser.tree.interfaces import INodeDuplicating, INodeTraversing
 from cpsskins.elements.interfaces import IPortlet, IDisplayable
 from cpsskins.ontology import hasPortlet, hasPortletFromPerspective
 from cpsskins.relations import DyadicRelation, TriadicRelation
 from cpsskins.relations.interfaces import IRelationTool
 from cpsskins.utils import getThemeManager
 
+class NodeTraversing(BrowserView):
+    """This adapter makes slot nodes traversable.
+    """
+    implements(INodeTraversing)
+
+    def getChildNodes(self, display=None, perspective=None):
+        """Return the list of child nodes implementing the specified interface
+           Override this method if the element is a virtual container.
+        """
+        context = self.context
+        reltool = IRelationTool(context)
+
+        if perspective is None or display.mode == IGNORE_PERSPECTIVES:
+            portlets = reltool.getSeconds(predicate=hasPortlet, first=context)
+        elif display.mode == USE_CURRENT_PERSPECTIVE:
+            portlets = reltool.getSeconds(predicate=hasPortletFromPerspective,
+                                          first=context, third=perspective)
+
+        # the portlet order is obtained from the display, if the display is
+        # iterable otherwise the portlets are sorted by their identifier.
+        def cmp_by_order(a, b):
+           if a in display and b in display:
+               index = display.index
+               return cmp(index(a), index(b))
+           return cmp(a.identifier, b.identifier)
+
+        # sort the portlets
+        #portlets.sort(cmp_by_order)
+        return portlets
+
 class SlotAdding(Adding):
     """A view for adding elements into slots
     """

Added: cpsskins/branches/paris-sprint-2006/browser/tree/theme.py
==============================================================================
--- (empty file)
+++ cpsskins/branches/paris-sprint-2006/browser/tree/theme.py   Mon Jun  5 
00:45:52 2006
@@ -0,0 +1,35 @@
+##############################################################################
+#
+# Copyright (c) 2005-2006 Nuxeo 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.interface import implements
+from zope.publisher.browser import BrowserView
+
+from cpsskins.browser.tree.interfaces import INodeTraversing
+
+class NodeTraversing(BrowserView):
+    """A view to make theme nodes traversable.
+    """
+    implements(INodeTraversing)
+
+    def getChildNodes(self, display=None, perspective=None):
+        """Get the child elements in the rendering tree.
+        TODO: Return the effective page instead
+        """
+        return [self.context.getDefaultPage()]
+

Modified: cpsskins/branches/paris-sprint-2006/browser/tree/views.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/browser/tree/views.py   (original)
+++ cpsskins/branches/paris-sprint-2006/browser/tree/views.py   Mon Jun  5 
00:45:52 2006
@@ -24,9 +24,24 @@
 from zope.traversing.api import getName, getParent
 from zope.interface import implements
 
+from cpsskins.elements.interfaces import ILeaf
 from cpsskins.browser.tree.interfaces import INodeAdding, INodeRemoving
 from cpsskins.browser.tree.interfaces import INodeOrdering, INodeMoving
-from cpsskins.browser.tree.interfaces import INodeDuplicating
+from cpsskins.browser.tree.interfaces import INodeDuplicating, INodeTraversing
+
+class NodeTraversing(BrowserView):
+    """A view for traversing tree nodes.
+    """
+    implements(INodeTraversing)
+
+    def getChildNodes(self, display=None, perspective=None):
+        """Return the list of child nodes implementing the specified interface
+           Override this method if the element is a virtual container.
+        """
+        context = self.context
+        if ILeaf.providedBy(context):
+            return []
+        return context.values()
 
 class NodeAdding(Adding):
     """A view for adding element into nodes

Modified: cpsskins/branches/paris-sprint-2006/elements/adapters.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/elements/adapters.py    (original)
+++ cpsskins/branches/paris-sprint-2006/elements/adapters.py    Mon Jun  5 
00:45:52 2006
@@ -21,8 +21,7 @@
 from zope.interface import implements
 from zope.traversing.api import getParent
 
-from cpsskins.elements.interfaces import IElement, INode
-from cpsskins.elements.interfaces import ILeaf, INodeTraverser
+from cpsskins.elements.interfaces import IElement
 from cpsskins.relations.interfaces import IRelatable
 from cpsskins.setup.interfaces import IType, IIdentifiable
 
@@ -62,21 +61,3 @@
 
         return 'cpsskins://%s:%s' % (type_name, identifier)
 
-class NodeTraverser(object):
-    """An adapter for traversing the tree.
-    """
-    adapts(INode)
-    implements(INodeTraverser)
-
-    def __init__(self, node):
-        self.node = node
-
-    def getChildNodes(self, display=None, perspective=None):
-        """Return the list of child nodes implementing the specified interface
-           Override this method if the element is a virtual container.
-        """
-        node = self.node
-        if ILeaf.providedBy(node):
-            return []
-        return node.values()
-

Modified: cpsskins/branches/paris-sprint-2006/elements/configure.zcml
==============================================================================
--- cpsskins/branches/paris-sprint-2006/elements/configure.zcml (original)
+++ cpsskins/branches/paris-sprint-2006/elements/configure.zcml Mon Jun  5 
00:45:52 2006
@@ -17,21 +17,6 @@
   />
 
 
-  <!-- these adapters make nodes traversable -->
-
-  <adapter
-      factory=".adapters.NodeTraverser"
-  />
-
-  <adapter
-      factory=".theme.NodeTraverser"
-  />
-
-  <adapter
-      factory=".slot.NodeTraverser"
-  />
-
-
   <!-- this adapter makes elements displayable -->
 
   <adapter

Modified: cpsskins/branches/paris-sprint-2006/elements/interfaces.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/elements/interfaces.py  (original)
+++ cpsskins/branches/paris-sprint-2006/elements/interfaces.py  Mon Jun  5 
00:45:52 2006
@@ -43,11 +43,6 @@
 class ILeaf(INode):
     """A leaf node has no children"""
 
-class INodeTraverser(Interface):
-
-    def getChildNodes(display, perspective):
-        """Return the list of child nodes
-        """
 
 class ICanvas(IElement):
     """A canvas element"""

Modified: cpsskins/branches/paris-sprint-2006/elements/slot.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/elements/slot.py        (original)
+++ cpsskins/branches/paris-sprint-2006/elements/slot.py        Mon Jun  5 
00:45:52 2006
@@ -21,12 +21,9 @@
 from zope.component import adapts, getUtility
 from zope.component.factory import Factory
 
-from cpsskins.elements.display import IGNORE_PERSPECTIVES
-from cpsskins.elements.display import USE_CURRENT_PERSPECTIVE
 from cpsskins.elements.element import InnerNode
-from cpsskins.elements.interfaces import ISlot, INodeTraverser
-from cpsskins.ontology import hasPortlet, hasPortletFromPerspective
-from cpsskins.relations.interfaces import IRelatable, IRelationTool
+from cpsskins.elements.interfaces import ISlot
+from cpsskins.relations.interfaces import IRelatable
 from cpsskins.storage.portlets import IPortletStorage
 
 class Slot(InnerNode):
@@ -90,39 +87,6 @@
         """
         return str(self.element)
 
-class NodeTraverser(object):
-    """This adapter makes slot nodes traversable.
-    """
-    adapts(ISlot)
-    implements(INodeTraverser)
-
-    def __init__(self, node):
-        self.node = node
-
-    def getChildNodes(self, display=None, perspective=None):
-        """Return the list of child nodes implementing the specified interface
-           Override this method if the element is a virtual container.
-        """
-        node = self.node
-        reltool = IRelationTool(node)
-
-        if perspective is None or display.mode == IGNORE_PERSPECTIVES:
-            portlets = reltool.getSeconds(predicate=hasPortlet, first=node)
-        elif display.mode == USE_CURRENT_PERSPECTIVE:
-            portlets = reltool.getSeconds(predicate=hasPortletFromPerspective,
-                                          first=node, third=perspective)
-
-        # the portlet order is obtained from the display, if the display is
-        # iterable otherwise the portlets are sorted by their identifier.
-        def cmp_by_order(a, b):
-           if a in display and b in display:
-               index = display.index
-               return cmp(index(a), index(b))
-           return cmp(a.identifier, b.identifier)
-
-        # sort the portlets
-        #portlets.sort(cmp_by_order)
-        return portlets
 
 class Sublocations(object):
     """Get the sublocations of the slot

Modified: cpsskins/branches/paris-sprint-2006/elements/theme.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/elements/theme.py       (original)
+++ cpsskins/branches/paris-sprint-2006/elements/theme.py       Mon Jun  5 
00:45:52 2006
@@ -17,13 +17,11 @@
 """
 __docformat__ = "reStructuredText"
 
-from zope.component import adapts
 from zope.component.factory import Factory
 from zope.component.persistentregistry import PersistentComponents
 from zope.interface import implements
 from zope.app.container.btree import BTreeContainer
 
-from cpsskins.elements.interfaces import INodeTraverser
 from cpsskins.elements.interfaces import ITheme
 from cpsskins.utils import getThemeManager
 
@@ -72,19 +70,4 @@
 
     name = property(getThemeName)
 
-class NodeTraverser(object):
-    """This adapter makes theme nodes traversable.
-    """
-    adapts(ITheme)
-    implements(INodeTraverser)
-
-    def __init__(self, node):
-        self.node = node
-
-    def getChildNodes(self, iface=None, display=None, perspective=None):
-        """Get the child elements in the rendering tree.
-        TODO: Return the effective page instead
-        """
-        return [self.node.getDefaultPage()]
-
 ThemeFactory = Factory(Theme)

Modified: cpsskins/branches/paris-sprint-2006/setup/manager.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/setup/manager.py        (original)
+++ cpsskins/branches/paris-sprint-2006/setup/manager.py        Mon Jun  5 
00:45:52 2006
@@ -18,7 +18,6 @@
 __docformat__ = "reStructuredText"
 
 import logging
-from copy import deepcopy
 
 from zope.app.container.interfaces import INameChooser
 from zope.interface import implements
-- 
http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins

Reply via email to