[silva.ui][Sylvain Viollon] Update icons.

[email protected] Wed, 28 Aug 2013 11:08:42 +0200
Newsgroups gmane.comp.web.zope.silva.cvs
Message-ID <[email protected]>
author:    Sylvain Viollon
date:      Wed Aug 28 11:08:38 2013 +0200
revision:  652:587318a75547 in silva.ui
branch:    
details:   https://hg.infrae.com/silva.ui?cmd=changeset;node=587318a75547
modified:  src/silva/ui/icon.py src/silva/ui/interfaces.py src/silva/ui/tests/test_icon.py
added:     
removed:   
log:       Update icons.


diffstat:

 src/silva/ui/icon.py            |  81 +++++++++++++++++-----------------------
 src/silva/ui/interfaces.py      |   2 +-
 src/silva/ui/tests/test_icon.py |  26 ++++++++++++-
 3 files changed, 60 insertions(+), 49 deletions(-)

diffs (152 lines):

diff -r e8d341ea06f9 -r 587318a75547 src/silva/ui/icon.py
--- a/src/silva/ui/icon.py	Sun Aug 25 17:51:00 2013 +0200
+++ b/src/silva/ui/icon.py	Wed Aug 28 11:08:38 2013 +0200
@@ -2,59 +2,46 @@
 # Copyright (c) 2011-2013 Infrae. All rights reserved.
 # See also LICENSE.txt
 
-
 from Products.Silva import icon
 from five import grok
 from silva.ui.interfaces import ISilvaUITheme
 
-ICON_SPRITE = {
-    'Silva AutoTOC': 'silva_autotoc',
-    'Silva CSV Source': 'silva_csvsource',
-    'Silva Document': 'silva_document',
-    'Silva Page': 'silva_page',
-    'Silva File': 'silva_file',
-    'Silva Find': 'silva_find',
-    'Silva Folder': 'silva_folder',
-    'Silva Ghost Folder': 'silva_ghostfolder',
-    'Silva Ghost': 'silva_ghost',
-    'Silva Image': 'silva_image',
-    'Silva Indexer': 'silva_indexer',
-    'Silva Link': 'silva_link',
-    'Silva Permanent Redirect Link': 'silva_permanentredirectlink',
-    'Silva Publication': 'silva_publication',
-    'Silva Root': 'silva_root',
-    'Silva Source Asset': 'silva_sourceasset',
-    'Silva Agenda Item': 'silva_agendaitem',
-    'Silva Agenda Page': 'silva_agendapage',
-    'Silva Agenda Filter': 'silva_agendafilter',
-    'Silva Agenda Viewer': 'silva_agendaviewer',
-    'Silva News Item': 'silva_newsitem',
-    'Silva News Page': 'silva_newspage',
-    'Silva News Filter': 'silva_newsfilter',
-    'Silva News Category Filter': 'silva_newscategoryfilter',
-    'Silva News Viewer': 'silva_newsviewer',
-    'Silva News Publication': 'silva_newspublication',
-    'Silva RSS Aggregator': 'silva_rssaggregator',
-    }
+
+ICON_SPRITE = icon.IconSprite(
+    sprite={
+        'Silva AutoTOC': 'silva_autotoc',
+        'Silva CSV Source': 'silva_csvsource',
+        'Silva Document': 'silva_document',
+        'Silva Page': 'silva_page',
+        'Silva File': 'silva_file',
+        'Silva Find': 'silva_find',
+        'Silva Folder': 'silva_folder',
+        'Silva Ghost Folder': 'silva_ghostfolder',
+        'Silva Ghost': 'silva_ghost',
+        'Silva Image': 'silva_image',
+        'Silva Indexer': 'silva_indexer',
+        'Silva Link': 'silva_link',
+        'Silva Permanent Redirect Link': 'silva_permanentredirectlink',
+        'Silva Publication': 'silva_publication',
+        'Silva Root': 'silva_root',
+        'Silva Source Asset': 'silva_sourceasset',
+        'Silva Agenda Item': 'silva_agendaitem',
+        'Silva Agenda Page': 'silva_agendapage',
+        'Silva Agenda Filter': 'silva_agendafilter',
+        'Silva Agenda Viewer': 'silva_agendaviewer',
+        'Silva News Item': 'silva_newsitem',
+        'Silva News Page': 'silva_newspage',
+        'Silva News Filter': 'silva_newsfilter',
+        'Silva News Category Filter': 'silva_newscategoryfilter',
+        'Silva News Viewer': 'silva_newsviewer',
+        'Silva News Publication': 'silva_newspublication',
+        'Silva RSS Aggregator': 'silva_rssaggregator',
+        },
+    url = lambda self, resolver, content: self.icon,
+    template = """<ins class="icon {url}"></ins>""")
 
 
 class SMIIconResolver(icon.IconResolver):
     grok.context(ISilvaUITheme)
 
-    def get_tag(self, content=None, identifier=None):
-        if content is not None:
-            identifier = getattr(content, 'meta_type', None)
-        if identifier in ICON_SPRITE:
-            return """<ins class="icon %s"></ins>""" % ICON_SPRITE[identifier]
-        return super(SMIIconResolver, self).get_tag(content, identifier)
-
-    def get_identifier_url(self, identifier):
-        if identifier in ICON_SPRITE:
-            return ICON_SPRITE[identifier]
-        return super(SMIIconResolver, self).get_identifier_url(identifier)
-
-    def get_content_url(self, content):
-        meta_type = getattr(content, 'meta_type', None)
-        if meta_type in ICON_SPRITE:
-            return ICON_SPRITE[meta_type]
-        return super(SMIIconResolver, self).get_content_url(content)
+    sprite = ICON_SPRITE
diff -r e8d341ea06f9 -r 587318a75547 src/silva/ui/interfaces.py
--- a/src/silva/ui/interfaces.py	Sun Aug 25 17:51:00 2013 +0200
+++ b/src/silva/ui/interfaces.py	Wed Aug 28 11:08:38 2013 +0200
@@ -33,7 +33,7 @@
     """
     silvaconf.resource(jqueryui.jqueryui)
     # This creates bugs in Internet Explorer (due to wrong deps).
-    # silvaconf.resource(jqueryui.jqueryui_i18n)
+    silvaconf.resource(jqueryui.jqueryui_i18n)
     silvaconf.resource(jsontemplate.jsontemplate)
     silvaconf.resource('js/infrae.js')
     silvaconf.resource('js/infrae.deferred.js')
diff -r e8d341ea06f9 -r 587318a75547 src/silva/ui/tests/test_icon.py
--- a/src/silva/ui/tests/test_icon.py	Sun Aug 25 17:51:00 2013 +0200
+++ b/src/silva/ui/tests/test_icon.py	Wed Aug 28 11:08:38 2013 +0200
@@ -20,6 +20,30 @@
         self.root = self.layer.get_application()
         self.layer.login('author')
 
+    def test_icon_resolver(self):
+        """Test adapter to retrieve icon urls'.
+        """
+        request = TestRequest(layers=[ISilvaUITheme])
+        resolver = queryAdapter(request, IIconResolver)
+        self.assertTrue(verifyObject(IIconResolver, resolver))
+
+        # Class are return instead of URLs for a direct access to the sprite.
+        self.assertEqual(
+            resolver.get_content_url(self.root),
+            'silva_root')
+        self.assertEqual(
+            resolver.get_content_url(None),
+            'http://localhost/root/++static++/silva.icons/missing.png')
+        self.assertEqual(
+            resolver.get_identifier_url('Silva Root'),
+            'silva_root')
+        self.assertEqual(
+            resolver.get_identifier_url(None),
+            'http://localhost/root/++static++/silva.icons/missing.png')
+        self.assertEqual(
+            resolver.get_identifier_url('best content in the world'),
+            'http://localhost/root/++static++/silva.icons/generic.gif')
+
     def test_icon_tag(self):
         """SMI skin define a custom policy for icon.
         """
@@ -38,7 +62,7 @@
             '<ins class="icon silva_root"></ins>')
         self.assertEqual(
             resolver.get_tag(identifier='default'),
-            '<img height="16" width="16" src="http://localhost/root/++static++/silva.icons/silvageneric.gif" alt="default" />')
+            '<img height="16" width="16" src="http://localhost/root/++static++/silva.icons/generic.gif" alt="default" />')
         self.assertEqual(
             resolver.get_tag(),
             '<img height="16" width="16" src="http://localhost/root/++static++/silva.icons/missing.png" alt="Missing" />')