From 255d47f5dabf7520bcee01bf9131afdc92c796ed Mon Sep 17 00:00:00 2001 From: helmutm Date: Wed, 5 Mar 2008 09:18:58 +0000 Subject: [PATCH] put skin spec in dialog URLs, making dialog forms customizable git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@2432 fd906abe-77d9-0310-91a1-e0d9ade77398 --- browser/action.py | 7 ++++--- browser/form.py | 1 + browser/form_macros.pt | 2 +- browser/node.py | 11 +++++++++++ 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/browser/action.py b/browser/action.py index 4bf3106..7271ebc 100644 --- a/browser/action.py +++ b/browser/action.py @@ -19,7 +19,7 @@ """ Base classes (sort of views) for action portlet items. -$Id$ +$Id: action.py 2313 2008-01-15 13:00:34Z helmutm $ """ from urllib import urlencode @@ -68,8 +68,9 @@ class DialogAction(Action): if self.fixedType: urlParams['fixed_type'] = 'yes' urlParams.update(self.addParams) - return self.jsOnClick % (self.dialogName, self.page.virtualTargetUrl, - self.viewName, urlencode(urlParams)) + url = self.page.virtualTargetUrlWithSkin + return self.jsOnClick % (self.dialogName, url, self.viewName, + urlencode(urlParams)) @Lazy def innerHtmlId(self): diff --git a/browser/form.py b/browser/form.py index e5bf62b..91336eb 100644 --- a/browser/form.py +++ b/browser/form.py @@ -225,6 +225,7 @@ class CreateObjectForm(ObjectForm): def macro(self): return self.template.macros['create'] defaultTitle = u'Create Resource, Type = ' + defaultType = '.loops/concepts/textdocument' form_action = 'create_resource' dialog_name = 'create' diff --git a/browser/form_macros.pt b/browser/form_macros.pt index 5779aba..345cc9e 100644 --- a/browser/form_macros.pt +++ b/browser/form_macros.pt @@ -68,7 +68,7 @@ tal:define="qualifier request/qualifier | string:resource; innerForm request/inner_form | string:inner_form.html; typeToken python: request.get('form.type') - or '.loops/concepts/textdocument'; + or view.defaultType; fixedType request/fixed_type | nothing"> diff --git a/browser/node.py b/browser/node.py index 19ac927..9603cd1 100644 --- a/browser/node.py +++ b/browser/node.py @@ -22,6 +22,7 @@ View class for Node objects. $Id$ """ +from urlparse import urlparse, urlunparse from zope import component, interface, schema from zope.cachedescriptors.property import Lazy from zope.app import zapi @@ -343,6 +344,16 @@ class NodeView(BaseView): else: return self.url + @Lazy + def virtualTargetUrlWithSkin(self): + url = self.virtualTargetUrl + if self.skin: + parts = urlparse(url) + url = urlunparse(parts[:2] + + ('/++skin++' + self.skin.__name__ + parts[2],) + + parts[3:]) + return url + @Lazy def realTargetUrl(self): target = self.virtualTargetObject