Author: jmorliaguet
Date: Sun Jul  2 22:38:26 2006
New Revision: 3591

Removed:
   cpsskins/branches/paris-sprint-2006/configuration/engines/configure.zcml
Modified:
   cpsskins/branches/paris-sprint-2006/browser/rendering/__init__.py
   cpsskins/branches/paris-sprint-2006/browser/rendering/configure.zcml
   cpsskins/branches/paris-sprint-2006/browser/rendering/renderer.py
   cpsskins/branches/paris-sprint-2006/configuration/configure.zcml
   cpsskins/branches/paris-sprint-2006/configuration/engines/__init__.py
   cpsskins/branches/paris-sprint-2006/locations/sources.py
   cpsskins/branches/paris-sprint-2006/standard/filters/effect/__init__.py
   cpsskins/branches/paris-sprint-2006/standard/filters/widget/__init__.py
   cpsskins/branches/paris-sprint-2006/standard/filters/widget/widgets.css
   cpsskins/branches/paris-sprint-2006/standard/filters/widget/widgets.py

Log:

- fixed bugs in the rendering of widgets

- moved the ++engine++ traversal adapter to browser/rendering



Modified: cpsskins/branches/paris-sprint-2006/browser/rendering/__init__.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/browser/rendering/__init__.py   
(original)
+++ cpsskins/branches/paris-sprint-2006/browser/rendering/__init__.py   Sun Jul 
 2 22:38:26 2006
@@ -17,3 +17,13 @@
 """
 __docformat__ = "reStructuredText"
 
+from zope.traversing.namespace import view
+
+# ++engine++ traverser
+
+class engine(view):
+
+    def traverse(self, name, ignored):
+        self.request.annotations['cpsskins.engine'] = name
+        return self.context
+

Modified: cpsskins/branches/paris-sprint-2006/browser/rendering/configure.zcml
==============================================================================
--- cpsskins/branches/paris-sprint-2006/browser/rendering/configure.zcml        
(original)
+++ cpsskins/branches/paris-sprint-2006/browser/rendering/configure.zcml        
Sun Jul  2 22:38:26 2006
@@ -10,4 +10,21 @@
       permission="zope.Public"
   />
 
+  <!-- /++engine++.../ traverser -->
+
+  <adapter
+    for="*"
+    name="engine"
+    provides="zope.traversing.interfaces.ITraversable"
+    factory=".engine"
+  />
+
+  <view
+    for="*"
+    name="engine"
+    type="cpsskins.browser.skin.cpsskins"
+    provides="zope.traversing.interfaces.ITraversable"
+    factory=".engine"
+  />
+
 </configure>

Modified: cpsskins/branches/paris-sprint-2006/browser/rendering/renderer.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/browser/rendering/renderer.py   
(original)
+++ cpsskins/branches/paris-sprint-2006/browser/rendering/renderer.py   Sun Jul 
 2 22:38:26 2006
@@ -70,6 +70,8 @@
         # apply all the filters in sequence
         for f in self._getFilters(info):
             markup = f(markup, info)
+            if not isinstance(markup, unicode):
+                logger.warning("%s did not return a unicode string.", f)
 
         return markup
 
@@ -85,7 +87,7 @@
         # look for renderers associated to the element's content type
         type = IType(element)
         iface = type.getContentType()
-        name = engine + '.renderer'
+        name = engine + u'.renderer'
         renderer = queryUtility(iface, name)
         if renderer is None:
             # fall back to the element's resource type
@@ -126,7 +128,7 @@
 
                 # the adapted object is a URI which must be resolved
                 if isinstance(adapted, basestring):
-                    adapted = resources.resolve(adapted, element)
+                    adapted = resources.resolve(uri=adapted, context=element)
 
                 # get the adapter
                 filter = queryMultiAdapter((adapted,), IFilterView,

Modified: cpsskins/branches/paris-sprint-2006/configuration/configure.zcml
==============================================================================
--- cpsskins/branches/paris-sprint-2006/configuration/configure.zcml    
(original)
+++ cpsskins/branches/paris-sprint-2006/configuration/configure.zcml    Sun Jul 
 2 22:38:26 2006
@@ -2,6 +2,4 @@
 
   <include package=".i18n" />
 
-  <include package=".engines" />
-
 </configure>

Modified: cpsskins/branches/paris-sprint-2006/configuration/engines/__init__.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/configuration/engines/__init__.py       
(original)
+++ cpsskins/branches/paris-sprint-2006/configuration/engines/__init__.py       
Sun Jul  2 22:38:26 2006
@@ -11,20 +11,10 @@
 # FOR A PARTICULAR PURPOSE.
 #
 ##############################################################################
-"""Rendering engine traverser /++engine++name
+"""
 
 $Id$
 """
 
 __docformat__ = "reStructuredText"
 
-from zope.traversing.namespace import view
-
-# ++engine++ traverser
-class engine(view):
-
-    def traverse(self, name, ignored):
-        self.request.annotations['cpsskins.engine'] = name
-
-        return self.context
-

Modified: cpsskins/branches/paris-sprint-2006/locations/sources.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/locations/sources.py    (original)
+++ cpsskins/branches/paris-sprint-2006/locations/sources.py    Sun Jul  2 
22:38:26 2006
@@ -79,8 +79,9 @@
                 choices[perspective.name] = perspective.name
 
         elif root == u'engines':
-            # FIXME
+            # FIXME: hardcoded
             choices[u'default'] = u'default'
+            choices[u'tableless'] = u'tableless'
 
         return iter(
             [SimpleTerm(value=k, title=v) for k, v in choices.items()])

Modified: 
cpsskins/branches/paris-sprint-2006/standard/filters/effect/__init__.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/standard/filters/effect/__init__.py     
(original)
+++ cpsskins/branches/paris-sprint-2006/standard/filters/effect/__init__.py     
Sun Jul  2 22:38:26 2006
@@ -57,7 +57,7 @@
         element = info.element
 
         if not (PILImage and IImage.providedBy(data)):
-            return data
+            return markup
 
         new_size = (context.width, context.height)
         if context.keep_ratio:
@@ -86,7 +86,7 @@
             except IOError:
                 logger.warning("Effect filter: the image in '%s' "
                                "could not be opened.", repr(element))
-                return data
+                return markup
             else:
                 if new_size == (0, 0):
                     image = Image(image_io)
@@ -97,7 +97,7 @@
         data.path = './cpsskins_getimage?key=%s' % key
         data.url = '' # The cached image may be stored on an external server
         info.data = data
-        return ''
+        return markup
 
     def _resize(self, im, size):
         new_data = StringIO()

Modified: 
cpsskins/branches/paris-sprint-2006/standard/filters/widget/__init__.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/standard/filters/widget/__init__.py     
(original)
+++ cpsskins/branches/paris-sprint-2006/standard/filters/widget/__init__.py     
Sun Jul  2 22:38:26 2006
@@ -66,6 +66,7 @@
             # look for a widget specific to the engine
             factory = queryMultiAdapter((data, request), IWidgetView,
                                          name='%s-%s' % (engine, type))
+            # found a factory
             if factory is not None:
                 break
 

Modified: 
cpsskins/branches/paris-sprint-2006/standard/filters/widget/widgets.css
==============================================================================
--- cpsskins/branches/paris-sprint-2006/standard/filters/widget/widgets.css     
(original)
+++ cpsskins/branches/paris-sprint-2006/standard/filters/widget/widgets.css     
Sun Jul  2 22:38:26 2006
@@ -14,6 +14,9 @@
   display: inline;
 }
 
+div.standardHorizontalScrollbar {
+  overflow-x: scroll;
+}
 
 /* Box decoration */
 

Modified: cpsskins/branches/paris-sprint-2006/standard/filters/widget/widgets.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/standard/filters/widget/widgets.py      
(original)
+++ cpsskins/branches/paris-sprint-2006/standard/filters/widget/widgets.py      
Sun Jul  2 22:38:26 2006
@@ -26,7 +26,7 @@
     """
     markup = '' # the content will be inserted in %(content)s 
 
-    def __call__(self, markup, info, **kw):
+    def __call__(self, markup, info):
         markup = self.markup % {'content': markup}
         # TODO: rendering optional link
         return markup
@@ -39,7 +39,7 @@
     separator = '' # Optional
     end = ''       # Optional
 
-    def __call__(self, markup, info, **kw):
+    def __call__(self, markup, info):
         start = self.start
         repeat = self.repeat
         separator = self.separator
@@ -81,26 +81,32 @@
                </div>
                """
 
-    def __call__(self, markup, info, **kw):
+    def __call__(self, markup, info):
         return '<div>%s</div>' % markup
 
 class PlainImage(WidgetView):
     """Display an image with minimal formatting
     """
-    def __call__(self, markup, info, **kw):
+    preview = u'<img src="" alt="" />'
+
+    def __call__(self, markup, info):
         return Image(self.context, self.request)(info.data)
 
 class PlainMenuItem(WidgetView):
     """Display an item with minimal formatting
     """
-    def __call__(self, markup, info, **kw):
+    preview = u'<a href="">Item</a>'
+
+    def __call__(self, markup, info):
         data = info.data
         return u'<a href="%s">%s</a>' % (data.url, data.title)
 
 class PlainMenuItems(WidgetView):
     """Display a series of items with minimal formatting
     """
-    def __call__(self, markup, info, **kw):
+    preview = u'<a href="">Item 1</a> <a href="">Item 2</a>'
+
+    def __call__(self, markup, info):
         data = info.data
         markup = []
         items_append = markup.append
@@ -114,9 +120,9 @@
 class Image(WidgetView):
     """Display an image
     """
-    preview = u'<img src="#" alt="" style="border: none" />'
+    preview = u'<img src="" alt="" style="border: none" />'
 
-    def __call__(self, markup, info, **kw):
+    def __call__(self, markup, info):
         data = info.data
         markup = ''
         url = data.path or data.url
@@ -205,10 +211,9 @@
                '<a label="link" href="#">some link</a>' \
                '</fieldset>'
 
-    def __call__(self, markup, info, **kw):
-        data = info.data
+    def __call__(self, markup, info):
         metadata = info.metadata
-        title = metadata and metadata.title or ''
+        title = metadata and metadata.title or u''
         return '<fieldset><legend>%s</legend>%s</fieldset>' % (
                 title, PlainHTML(self.context, self.request)(markup, info))
 
@@ -216,8 +221,8 @@
 class HorizontalScrollBar(HTMLView):
     """Display horizontal scroll bars in case of horizontal overflow
     """
-    markup = u'<div style="overflow-x:scroll;">%(content)s</div>'
-    preview = u'<div label="box" style="overflow-x:scroll;">Box content</div>'
+    markup = u'<div>%(content)s</div>'
+    preview = u'<div label="box" style="overflow-x: scroll;">Box content</div>'
 
 class PageBlockFrame(HTMLView):
     """Display a <table><tr> tag
-- 
http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins

Reply via email to