[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" />')