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

Reply via email to