Author: jmorliaguet
Date: Tue Jun 20 22:59:29 2006
New Revision: 3477

Modified:
   cpsskins/branches/paris-sprint-2006/standard/negotiation/__init__.py
   cpsskins/branches/paris-sprint-2006/standard/negotiation/interfaces.py
   cpsskins/branches/paris-sprint-2006/standard/negotiation/page.py
   cpsskins/branches/paris-sprint-2006/standard/negotiation/page.zcml
   cpsskins/branches/paris-sprint-2006/standard/negotiation/perspective.py
   cpsskins/branches/paris-sprint-2006/standard/negotiation/perspective.zcml

Log:

- use different negotiations schemes to set the location in view mode
  and in edit mode



Modified: cpsskins/branches/paris-sprint-2006/standard/negotiation/__init__.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/standard/negotiation/__init__.py        
(original)
+++ cpsskins/branches/paris-sprint-2006/standard/negotiation/__init__.py        
Tue Jun 20 22:59:29 2006
@@ -23,5 +23,6 @@
            'IQueryParameterNegotiationScheme', 'ICookieNegotiationScheme',
            'ILocalNegotiationScheme', 'IDefaultNegotiationScheme',
            'IContextNegotiationScheme', 'IRequestNegotiationScheme',
-           'ILocationNegotiationScheme', 'ISessionNegotiationScheme')
+           'ILocationNegotiationScheme', 'ISessionNegotiationScheme',
+           'ICookieLocationNegotiationScheme')
 

Modified: cpsskins/branches/paris-sprint-2006/standard/negotiation/interfaces.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/standard/negotiation/interfaces.py      
(original)
+++ cpsskins/branches/paris-sprint-2006/standard/negotiation/interfaces.py      
Tue Jun 20 22:59:29 2006
@@ -51,3 +51,6 @@
     """Location negotiation.
     """
 
+class ICookieLocationNegotiationScheme(INegotiationScheme):
+    """Cookie-based location negotiation.
+    """

Modified: cpsskins/branches/paris-sprint-2006/standard/negotiation/page.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/standard/negotiation/page.py    
(original)
+++ cpsskins/branches/paris-sprint-2006/standard/negotiation/page.py    Tue Jun 
20 22:59:29 2006
@@ -29,6 +29,7 @@
 from cpsskins.standard.negotiation import IDefaultNegotiationScheme
 from cpsskins.standard.negotiation import IContextNegotiationScheme
 from cpsskins.standard.negotiation import ILocationNegotiationScheme
+from cpsskins.standard.negotiation import ICookieLocationNegotiationScheme
 from cpsskins.utils import getThemeManager
 
 class QueryParameter(NegotiationScheme):
@@ -81,17 +82,33 @@
         return None
 
 class Location(NegotiationScheme):
-    """Look for a page among locations
+    """Look for a page among locations. The path is obtained from
+    the context.
     """
     implements(ILocationNegotiationScheme)
 
     def __call__(self):
         context = self.context
+        tmutil = getThemeManager(context)
+        path = getPath(context)
+        location = tmutil.getLocation(path, root=u'pages')
+        if location is not None:
+            return location()
+
+class CookieLocation(NegotiationScheme):
+    """Look for a page among locations. The path is obtained from
+    cookies.
+    """
+    implements(ICookieLocationNegotiationScheme)
+
+    def __call__(self):
+        context = self.context
+        tmutil = getThemeManager(context)
         path = self.request.cookies.get('cpsskins_location')
         if path is None:
-            path = getPath(context)
-        location = getThemeManager(context).getLocation(path, root=u'pages')
+            return None
+        location = tmutil.getLocation(path, root=u'pages')
         if location is not None:
-            page_name = location()
-            return tmutil.getPageByName(page_name)
+            return location()
+
 

Modified: cpsskins/branches/paris-sprint-2006/standard/negotiation/page.zcml
==============================================================================
--- cpsskins/branches/paris-sprint-2006/standard/negotiation/page.zcml  
(original)
+++ cpsskins/branches/paris-sprint-2006/standard/negotiation/page.zcml  Tue Jun 
20 22:59:29 2006
@@ -33,8 +33,8 @@
   <negotiationchain name="page" strategy="editor">
 
     <scheme
-        class=".page.Location"
-        interface=".interfaces.ILocationNegotiationScheme"
+        class=".page.CookieLocation"
+        interface=".interfaces.ICookieLocationNegotiationScheme"
     />
 
     <scheme

Modified: 
cpsskins/branches/paris-sprint-2006/standard/negotiation/perspective.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/standard/negotiation/perspective.py     
(original)
+++ cpsskins/branches/paris-sprint-2006/standard/negotiation/perspective.py     
Tue Jun 20 22:59:29 2006
@@ -24,19 +24,35 @@
 from cpsskins.browser.negotiation.scheme import NegotiationScheme
 from cpsskins.standard.negotiation import ISessionNegotiationScheme
 from cpsskins.standard.negotiation import ILocationNegotiationScheme
+from cpsskins.standard.negotiation import ICookieLocationNegotiationScheme
 from cpsskins.utils import getThemeManager
 
 class Location(NegotiationScheme):
-    """Look for a perspective among locations
+    """Look for a perspective among locations. The path is obtained from
+    the context.
     """
     implements(ILocationNegotiationScheme)
 
     def __call__(self):
         context = self.context
         tmutil = getThemeManager(context)
+        path = getPath(context)
+        location = tmutil.getLocation(path, root=u'perspectives')
+        if location is not None:
+            return location()
+
+class CookieLocation(NegotiationScheme):
+    """Look for a perspective among locations. The path is obtained from
+    cookies.
+    """
+    implements(ICookieLocationNegotiationScheme)
+
+    def __call__(self):
+        context = self.context
+        tmutil = getThemeManager(context)
         path = self.request.cookies.get('cpsskins_location')
         if path is None:
-            path = getPath(context)
+            return None
         location = tmutil.getLocation(path, root=u'perspectives')
         if location is not None:
             return location()

Modified: 
cpsskins/branches/paris-sprint-2006/standard/negotiation/perspective.zcml
==============================================================================
--- cpsskins/branches/paris-sprint-2006/standard/negotiation/perspective.zcml   
(original)
+++ cpsskins/branches/paris-sprint-2006/standard/negotiation/perspective.zcml   
Tue Jun 20 22:59:29 2006
@@ -28,8 +28,8 @@
     />
 
     <scheme
-        class=".perspective.Location"
-        interface=".interfaces.ILocationNegotiationScheme"
+        class=".perspective.CookieLocation"
+        interface=".interfaces.ICookieLocationNegotiationScheme"
     />
 
   </negotiationchain>
-- 
http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins

Reply via email to