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