Author: reebalazs
Date: Sun Sep 30 20:06:23 2007
New Revision: 47044
Added:
kukit/kss.core/trunk/kss/core/pluginregistry/browser/interfaces.py
Modified:
kukit/kss.core/trunk/kss/core/pluginregistry/browser/configure.zcml
kukit/kss.core/trunk/kss/core/pluginregistry/browser/develui.pt
kukit/kss.core/trunk/kss/core/pluginregistry/browser/develview.py
Log:
Fix @@kss_devel_mode to work on Zope 3.
Modified: kukit/kss.core/trunk/kss/core/pluginregistry/browser/configure.zcml
==============================================================================
--- kukit/kss.core/trunk/kss/core/pluginregistry/browser/configure.zcml
(original)
+++ kukit/kss.core/trunk/kss/core/pluginregistry/browser/configure.zcml Sun Sep
30 20:06:23 2007
@@ -10,7 +10,7 @@
class=".develview.DevelView"
name="kss_devel_mode"
permission="zope.Public"
- allowed_attributes="ison isoff set unset ui ui_js ui_css ui_kss"
+ allowed_interface=".interfaces.IDevelView"
/>
<browser:resource
Modified: kukit/kss.core/trunk/kss/core/pluginregistry/browser/develui.pt
==============================================================================
--- kukit/kss.core/trunk/kss/core/pluginregistry/browser/develui.pt
(original)
+++ kukit/kss.core/trunk/kss/core/pluginregistry/browser/develui.pt Sun Sep
30 20:06:23 2007
@@ -53,7 +53,7 @@
</script>
</head>
- <body tal:define="devel_mode python: view.ison();
+ <body tal:define="devel_mode python: options.get('devel_mode', view.ison());
referer request/referer|request/HTTP_REFERER|nothing">
<h2>Kss mode setup</h2>
@@ -93,7 +93,7 @@
</form>
- <p><a tal:attributes="href referer">Back</a></p>
+ <p tal:condition="referer"><a tal:attributes="href referer">Back</a></p>
</body>
</html>
Modified: kukit/kss.core/trunk/kss/core/pluginregistry/browser/develview.py
==============================================================================
--- kukit/kss.core/trunk/kss/core/pluginregistry/browser/develview.py
(original)
+++ kukit/kss.core/trunk/kss/core/pluginregistry/browser/develview.py Sun Sep
30 20:06:23 2007
@@ -6,12 +6,41 @@
from zope.publisher.browser import BrowserView
from zope.app.pagetemplate.viewpagetemplatefile import ViewPageTemplateFile
+from interfaces import IDevelView
+from zope.interface import implements
+from zope.traversing.interfaces import ITraverser
+from zope.publisher.interfaces import NotFound
COOKIE_NAME = '__kss_devel'
class DevelView(BrowserView):
+ implements(IDevelView)
- def ison(self, REQUEST=None):
+ # Zope3 requires the implementation of
+ # IBrowserPublisher, in order for the methods
+ # to be traversable.
+ #
+ # An alternative would be:
+ # <browser:pages class="...">
+ # <page name="..." attribute="..." />
+ # <page name="..." attribute="..." />
+ # </browser:pages>
+
+ def publishTraverse(self, request, name):
+ try:
+ return getattr(self, name)
+ except AttributeError:
+ raise NotFound(self.context, name, request)
+
+ def browserDefault(self, request):
+ # make ui the default method
+ return self, ('ui', )
+
+ # --
+ # Accessable methods
+ # --
+
+ def ison(self):
'''Checks if running in development mode
Two ways to induce development mode:
@@ -36,8 +65,6 @@
pass
result = bool(ison)
- if REQUEST is not None:
- result = str(result)
return result
def isoff(self, REQUEST=None):
@@ -48,40 +75,46 @@
return result
def set(self):
- 'XXX'
+ 'Sets development mode cookie'
self.request.response.setCookie(COOKIE_NAME, '1', path='/')
def unset(self):
- 'XXX'
+ 'Unsets development mode cookie'
self.request.response.expireCookie(COOKIE_NAME, path='/')
_ui = ViewPageTemplateFile('develui.pt',
content_type='text/html;charset=utf-8')
def ui(self):
- 'XXX'
+ 'User interface for interactive switching'
+ options = {}
if 'devel' in self.request.form:
self.set()
- self.request.cookies[COOKIE_NAME] = '1'
+ # setting it also to have immediate effect in the page
+ options['devel_mode'] = True
if 'prod' in self.request.form:
self.unset()
if COOKIE_NAME in self.request.cookies:
- del self.request.cookies[COOKIE_NAME]
- return self._ui()
+ # setting it also to have immediate effect in the page
+ options['devel_mode'] = False
+ return self._ui(**options)
def ui_js(self):
- 'XXX'
- resource =
self.context.restrictedTraverse('++resource++kss_devel_ui.js')
+ 'Javascript needed for the ui'
+ resource =
ITraverser(self.context).traverse('++resource++kss_devel_ui.js',
+ request=self.request)
cooked = resource.GET()
return cooked
def ui_css(self):
- 'XXX'
- resource =
self.context.restrictedTraverse('++resource++kss_devel_ui.css')
+ 'CSS needed for the ui'
+ resource =
ITraverser(self.context).traverse('++resource++kss_devel_ui.css',
+ request=self.request)
cooked = resource.GET()
return cooked
def ui_kss(self):
- 'XXX'
- resource =
self.context.restrictedTraverse('++resource++kss_devel_ui.kss')
+ 'KSS needed for the ui'
+ resource =
ITraverser(self.context).traverse('++resource++kss_devel_ui.kss',
+ request=self.request)
cooked = resource.GET()
return cooked
Added: kukit/kss.core/trunk/kss/core/pluginregistry/browser/interfaces.py
==============================================================================
--- (empty file)
+++ kukit/kss.core/trunk/kss/core/pluginregistry/browser/interfaces.py Sun Sep
30 20:06:23 2007
@@ -0,0 +1,40 @@
+
+
+from zope.publisher.interfaces.browser import IBrowserPublisher
+
+class IDevelView(IBrowserPublisher):
+
+ def ison():
+ '''Checks if running in development mode
+
+ Two ways to induce development mode:
+
+ - set the cookie on the request
+
+ - switch portal_js tool into debug mode, this will
+ select development mode without the cookie
+
+ '''
+
+ def isoff():
+ 'Check if running in production mode'
+
+ def set():
+ 'Sets development mode cookie'
+
+ def unset():
+ 'Unsets development mode cookie'
+
+ def ui():
+ 'User interface for interactive switching'
+
+ def ui_js():
+ 'Javascript needed for the ui'
+
+ def ui_css():
+ 'CSS needed for the ui'
+
+ def ui_kss():
+ 'KSS needed for the ui'
+
+
_______________________________________________
Kukit-checkins mailing list
[email protected]
http://codespeak.net/mailman/listinfo/kukit-checkins