[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/ CSS for icons now comes from a view. Would like to be able to register the view just for the portal for better caching and needs a work around for News Item.

Charlie Clark charlie at begeistert.org
Sat Apr 3 11:27:18 EDT 2010


Log message for revision 110458:
  CSS for icons now comes from a view. Would like to be able to register the view just for the portal for better caching and needs a work around for News Item.

Changed:
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/configure.zcml
  A   Products.CMFDefault/trunk/Products/CMFDefault/browser/icons.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/skins/absolut/css/icons.css
  U   Products.CMFDefault/trunk/Products/CMFDefault/skins/absolut/main_template.pt

-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/configure.zcml
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/configure.zcml	2010-04-03 11:04:00 UTC (rev 110457)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/configure.zcml	2010-04-03 15:27:17 UTC (rev 110458)
@@ -160,5 +160,13 @@
       class=".ursa.UrsineGlobals"
       permission="zope.Public"
       />
+      
+  <browser:page
+     for="*"
+     layer="..interfaces.ICMFDefaultSkin"
+     name="icons.css"
+     class=".icons.View"
+     permission="zope.Public"
+     />
 
 </configure>

Added: Products.CMFDefault/trunk/Products/CMFDefault/browser/icons.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/icons.py	                        (rev 0)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/icons.py	2010-04-03 15:27:17 UTC (rev 110458)
@@ -0,0 +1,73 @@
+"""CSS for action icons
+$Id$
+"""
+from logging import getLogger
+
+LOG = getLogger("Action Icons CSS")
+
+from zope.component import getUtility
+
+from Products.Five.browser import BrowserView
+
+from Products.CMFCore.interfaces import IPropertiesTool
+from Products.CMFCore.Expression import getExprContext
+from Products.CMFCore.utils import getToolByName
+
+from Products.CMFDefault.browser.utils import memoize
+
+class View(BrowserView):
+    
+    def __init__(self, context, request):
+        super(View, self).__init__(context, request)
+        self.show_icons = self._show_icons
+
+    @property
+    @memoize
+    def _show_icons(self):
+        """Are action icons enabled?"""
+        ptool = getUtility(IPropertiesTool)
+        show = ptool.getProperty('enable_actionicons')
+        if show:
+            self.icon = ".icon {padding-left: 1.5em;}\n\n"
+        else:
+            self.icon = ".icon {padding-left: 0.5em;}\n\n"
+        return show
+
+    @property
+    @memoize
+    def template(self):
+        """Always return a template so there are no browser errors"""
+        if self.show_icons:    
+            return ".%s {background: url(%s) no-repeat 0.1em}"
+        else:
+            return ".%s {/* %s */}"
+
+    @memoize
+    def actions(self):
+        """List all action icons"""
+        atool = getToolByName(self.context, 'portal_actions')
+        all_actions = atool.listFilteredActionsFor(self.context)
+        icons = []
+        for cat in ['user', 'object', 'folder', 'workflow', 'global']:
+            cat_actions = all_actions[cat]
+            icons.append("/* %s actions */" % cat)
+            for a in cat_actions:
+                icons.append(self.template % (a['id'], a['icon']))
+        return "\n\n".join(icons)
+
+    @memoize
+    def types(self):
+        """List all type icons"""
+        ttool = getToolByName(self.context, 'portal_types')
+        types = ttool.listTypeInfo()
+        econtext = getExprContext(self.context)
+        icons = [self.template %  (t.id,
+                                  t.getIconExprObject()(econtext)) \
+                for t in types]
+        return "\n\n".join(icons)
+
+    def __call__(self):
+        self.request.response.setHeader("content-type", "text/css")
+        self.request.response.write(self.icon)
+        self.request.response.write(self.actions())
+        self.request.response.write(self.types())


Property changes on: Products.CMFDefault/trunk/Products/CMFDefault/browser/icons.py
___________________________________________________________________
Added: svn:keywords
   + Id
Added: svn:eol-style
   + native

Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/absolut/css/icons.css
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/absolut/css/icons.css	2010-04-03 11:04:00 UTC (rev 110457)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/absolut/css/icons.css	2010-04-03 15:27:17 UTC (rev 110458)
@@ -1,7 +1,7 @@
 /*Action and content icons*/
 
 .icon {
-    padding-left: 24px;
+    padding-left: 1.5em;
 }
 
 /*content icons*/

Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/absolut/main_template.pt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/absolut/main_template.pt	2010-04-03 11:04:00 UTC (rev 110457)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/absolut/main_template.pt	2010-04-03 15:27:17 UTC (rev 110458)
@@ -26,7 +26,7 @@
       tal:attributes="href string:${portal_url}/css/screen.css" 
       href="/screen.css" media="screen"/>
   <link rel="stylesheet" type="text/css" 
-     tal:attributes="href string:${portal_url}/css/icons.css" 
+     tal:attributes="href string:${context/absolute_url}/@@icons.css" 
      href="/icons.css" media="screen"/>
  <link rel="stylesheet" type="text/css" 
       tal:attributes="href string:${portal_url}/css/print.css"



More information about the checkins mailing list