[Zope3-checkins] CVS: Zope3/src/zope/app/browser - absoluteurl.py:1.4
Albertas Agejevas
alga@codeworks.lt
Tue, 15 Apr 2003 06:57:39 -0400
Update of /cvs-repository/Zope3/src/zope/app/browser
In directory cvs.zope.org:/tmp/cvs-serv31824/src/zope/app/browser
Modified Files:
absoluteurl.py
Log Message:
Added virtual hosting support to the @@absolute_url view.
Attempted to reduce code duplication in AbsoluteURL and SiteAbsoluteURL.
This changes behaviour of breadcrumbs if IContainmentRoot is wrapped in
something other than a side effect. Should not matter.
=== Zope3/src/zope/app/browser/absoluteurl.py 1.3 => 1.4 ===
--- Zope3/src/zope/app/browser/absoluteurl.py:1.3 Sat Mar 1 16:13:59 2003
+++ Zope3/src/zope/app/browser/absoluteurl.py Tue Apr 15 06:57:08 2003
@@ -20,65 +20,75 @@
from zope.proxy.context import getWrapperContainer, getInnerWrapperData
from zope.component import getView
-class AbsoluteURL(BrowserView):
+class AbsoluteURLBase(BrowserView):
def __str__(self):
context = self.context
dict = getInnerWrapperData(context)
name = dict and dict.get('name') or None
- container = getWrapperContainer(context)
- if name is None or container is None:
- raise TypeError, 'Not enough context information to get a URL'
if name == '.':
name = dict.get('side_effect_name', name)
-
+ if name.startswith('++vh++'):
+ return self.request.getApplicationURL()
+ container = getWrapperContainer(context)
return "%s/%s" % (getView(container, 'absolute_url', self.request),
name)
- __call__ = __str__
-
def breadcrumbs(self):
context = self.context
dict = getInnerWrapperData(context)
name = dict and dict.get('name') or None
container = getWrapperContainer(context)
- if name is None or container is None:
- raise TypeError, 'Not enough context information to get a URL'
+ base = getView(container, 'absolute_url', self.request).breadcrumbs()
if name == '.':
# The name is meaningless. There is a side-efect name
# that we need to preserve in the urls (only)
name = dict.get('side_effect_name', name)
- base = getView(container, 'absolute_url',
- self.request).breadcrumbs()
+ if name.startswith('++vh++'):
+ return ({'name':'', 'url': self.request.getApplicationURL()}, )
# replace the last step in base with a step with the same
# name and an augmented url
- base = base[:-1] + ({
- 'name': base[-1]['name'],
- 'url': ("%s/%s" % (base[-1]['url'], name)),
- }, )
+ base = base[:-1] + (
+ {'name': base[-1]['name'],
+ 'url': ("%s/%s" % (base[-1]['url'], name))}, )
return base
- base = getView(container, 'absolute_url', self.request).breadcrumbs()
base += ({'name': name, 'url': ("%s/%s" % (base[-1]['url'], name))}, )
return base
-
-class SiteAbsoluteURL(BrowserView):
+class AbsoluteURL(AbsoluteURLBase):
def __str__(self):
+ dict = getInnerWrapperData(self.context)
+ name = dict and dict.get('name') or None
+ container = getWrapperContainer(self.context)
+ if name is None or container is None:
+ raise TypeError, 'Not enough context information to get a URL'
+ return super(AbsoluteURL, self).__str__()
+
+ __call__ = __str__
+
+ def breadcrumbs(self):
context = self.context
dict = getInnerWrapperData(context)
name = dict and dict.get('name') or None
- if name:
- if name == '.':
- name = dict.get('side_effect_name', name)
- container = getWrapperContainer(context)
- return "%s/%s" % (getView(container, 'absolute_url', self.request),
- name)
+ container = getWrapperContainer(context)
+ if name is None or container is None:
+ raise TypeError, 'Not enough context information to get a URL'
+
+ return super(AbsoluteURL, self).breadcrumbs()
+
+class SiteAbsoluteURL(AbsoluteURLBase):
+
+ def __str__(self):
+ dict = getInnerWrapperData(self.context)
+ name = dict and dict.get('name') or None
+ if name:
+ return super(SiteAbsoluteURL, self).__str__()
return self.request.getApplicationURL()
__call__ = __str__
@@ -88,18 +98,5 @@
dict = getInnerWrapperData(context)
name = dict and dict.get('name') or None
if name:
- # The name is meaningless. There is a side-efect name
- # that we need to preserve in the urls (only)
- if name == '.':
- name = dict.get('side_effect_name', name)
- container = getWrapperContainer(context)
- base = getView(container, 'absolute_url',
- self.request).breadcrumbs()
- # replace the last step in base with a step with the same
- # name ans an augmented url
- base = base[:-1] + (
- {'name': base[-1]['name'],
- 'url': ("%s/%s" % (base[-1]['url'], name))}, )
- return base
-
+ return super(SiteAbsoluteURL, self).breadcrumbs()
return ({'name':'', 'url': self.request.getApplicationURL()}, )