Version 0.1.54 0.1.54
authorThierry Florac <tflorac@ulthar.net>
Fri, 13 Nov 2020 16:34:00 +0100
changeset 534 7d485d40eec3
parent 533 6ad33b7488b7
child 535 8f551cffe155
Version 0.1.54
buildout.cfg
docs/HISTORY.txt
setup.py
src/pyams_default_theme.egg-info/PKG-INFO
src/pyams_default_theme.egg-info/SOURCES.txt
src/pyams_default_theme/component/association/__init__.py
src/pyams_default_theme/component/association/interfaces.py
src/pyams_default_theme/locales/fr/LC_MESSAGES/pyams_default_theme.mo
src/pyams_default_theme/locales/fr/LC_MESSAGES/pyams_default_theme.po
src/pyams_default_theme/locales/pyams_default_theme.pot
src/pyams_default_theme/shared/site/portlet/__init__.py
--- a/buildout.cfg	Fri Nov 13 13:31:59 2020 +0100
+++ b/buildout.cfg	Fri Nov 13 16:34:00 2020 +0100
@@ -80,4 +80,4 @@
 eggs = pyams_default_theme [test]
 
 [versions]
-pyams_default_theme = 0.1.53
+pyams_default_theme = 0.1.54
--- a/docs/HISTORY.txt	Fri Nov 13 13:31:59 2020 +0100
+++ b/docs/HISTORY.txt	Fri Nov 13 16:34:00 2020 +0100
@@ -1,6 +1,12 @@
 History
 =======
 
+0.1.54
+------
+ - added HTML paragraph renderer including logo
+ - added CSS classes getters to manage headers; these classes can be set into request annotations
+ - added options to logos paragraph renderer
+
 0.1.53
 ------
  - added JS code to handle responsive videos
--- a/setup.py	Fri Nov 13 13:31:59 2020 +0100
+++ b/setup.py	Fri Nov 13 16:34:00 2020 +0100
@@ -22,7 +22,7 @@
 README = os.path.join(DOCS, 'README.txt')
 HISTORY = os.path.join(DOCS, 'HISTORY.txt')
 
-version = '0.1.53'
+version = '0.1.54'
 long_description = open(README).read() + '\n\n' + open(HISTORY).read()
 
 tests_require = []
--- a/src/pyams_default_theme.egg-info/PKG-INFO	Fri Nov 13 13:31:59 2020 +0100
+++ b/src/pyams_default_theme.egg-info/PKG-INFO	Fri Nov 13 16:34:00 2020 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: pyams-default-theme
-Version: 0.1.53
+Version: 0.1.54
 Summary: PyAMS default theme
 Home-page: http://hg.ztfy.org/pyams/pyams_default_theme
 Author: Thierry Florac
@@ -11,6 +11,12 @@
         History
         =======
         
+        0.1.54
+        ------
+         - added HTML paragraph renderer including logo
+         - added CSS classes getters to manage headers; these classes can be set into request annotations
+         - added options to logos paragraph renderer
+        
         0.1.53
         ------
          - added JS code to handle responsive videos
--- a/src/pyams_default_theme.egg-info/SOURCES.txt	Fri Nov 13 13:31:59 2020 +0100
+++ b/src/pyams_default_theme.egg-info/SOURCES.txt	Fri Nov 13 16:34:00 2020 +0100
@@ -54,6 +54,7 @@
 src/pyams_default_theme/component/paragraph/interfaces/__init__.py
 src/pyams_default_theme/component/paragraph/interfaces/contact.py
 src/pyams_default_theme/component/paragraph/interfaces/frame.py
+src/pyams_default_theme/component/paragraph/interfaces/html.py
 src/pyams_default_theme/component/paragraph/interfaces/map.py
 src/pyams_default_theme/component/paragraph/interfaces/verbatim.py
 src/pyams_default_theme/component/paragraph/portlet/__init__.py
@@ -65,6 +66,7 @@
 src/pyams_default_theme/component/paragraph/templates/frame-left.pt
 src/pyams_default_theme/component/paragraph/templates/frame-right.pt
 src/pyams_default_theme/component/paragraph/templates/html-default.pt
+src/pyams_default_theme/component/paragraph/templates/html-logos.pt
 src/pyams_default_theme/component/paragraph/templates/keypoints-default.pt
 src/pyams_default_theme/component/paragraph/templates/map-default.pt
 src/pyams_default_theme/component/paragraph/templates/milestone-default.pt
@@ -141,7 +143,6 @@
 src/pyams_default_theme/features/thesaurus/templates/html.pt
 src/pyams_default_theme/features/thesaurus/templates/illustration.pt
 src/pyams_default_theme/locales/pyams_default_theme.pot
-src/pyams_default_theme/locales/fr/LC_MESSAGES/pyams_default_theme (Copie en conflit de dagon 2020-07-20).mo
 src/pyams_default_theme/locales/fr/LC_MESSAGES/pyams_default_theme.mo
 src/pyams_default_theme/locales/fr/LC_MESSAGES/pyams_default_theme.po
 src/pyams_default_theme/resources/css/pyams-default.css
@@ -199,6 +200,7 @@
 src/pyams_default_theme/shared/imagemap/templates/imagemap-default.pt
 src/pyams_default_theme/shared/imagemap/templates/render.pt
 src/pyams_default_theme/shared/logo/__init__.py
+src/pyams_default_theme/shared/logo/interfaces.py
 src/pyams_default_theme/shared/logo/templates/logos-default.pt
 src/pyams_default_theme/shared/resource/__init__.py
 src/pyams_default_theme/shared/resource/templates/search-result.pt
--- a/src/pyams_default_theme/component/association/__init__.py	Fri Nov 13 13:31:59 2020 +0100
+++ b/src/pyams_default_theme/component/association/__init__.py	Fri Nov 13 16:34:00 2020 +0100
@@ -10,23 +10,23 @@
 # FOR A PARTICULAR PURPOSE.
 #
 
-__docformat__ = 'restructuredtext'
-
 from itertools import islice
 
 from persistent import Persistent
 from zope.location import Location
 from zope.schema.fieldproperty import FieldProperty
 
-from pyams_content.component.association.interfaces import IAssociationContainer, IAssociationInfo, \
-    IAssociationParagraph
+from pyams_content.component.association.interfaces import IAssociationContainer, \
+    IAssociationInfo, IAssociationParagraph
 from pyams_content.component.extfile import IExtFile
 from pyams_content.component.links.interfaces import IBaseLink, IInternalLink
-from pyams_content.component.paragraph.interfaces import IParagraphContainer, IParagraphContainerTarget
+from pyams_content.component.paragraph.interfaces import IParagraphContainer, \
+    IParagraphContainerTarget
 from pyams_content.features.renderer.interfaces import IContentRenderer
-from pyams_default_theme import _
-from pyams_default_theme.component.association.interfaces import IAssociationParagraphDefaultRendererSettings, \
-    IAssociationParagraphRemoteContentRendererSettings, IAssociationParagraphSlicedRemoteContentRendererSettings
+from pyams_default_theme.component.association.interfaces import \
+    IAssociationParagraphDefaultRendererSettings, \
+    IAssociationParagraphRemoteContentRendererSettings, \
+    IAssociationParagraphSlicedRemoteContentRendererSettings
 from pyams_default_theme.features.renderer import BaseContentRenderer
 from pyams_skin.layer import IPyAMSLayer
 from pyams_template.template import template_config
@@ -34,6 +34,11 @@
 from pyams_utils.factory import factory_config
 
 
+__docformat__ = 'restructuredtext'
+
+from pyams_default_theme import _
+
+
 #
 # Associations paragraph default renderer
 #
@@ -48,15 +53,19 @@
     description_format = FieldProperty(IAssociationParagraphDefaultRendererSettings['description_format'])
 
 
-@adapter_config(context=IAssociationParagraph, provides=IAssociationParagraphDefaultRendererSettings)
+@adapter_config(context=IAssociationParagraph,
+                provides=IAssociationParagraphDefaultRendererSettings)
 def association_paragraph_default_renderer_settings_factory(context):
     """Associations paragraph default renderer settings factory"""
     return get_annotation_adapter(context, ASSOCIATION_PARAGRAPH_DEFAULT_RENDERER_SETTINGS_KEY,
                                   IAssociationParagraphDefaultRendererSettings)
 
 
-@adapter_config(name='default', context=(IAssociationParagraph, IPyAMSLayer), provides=IContentRenderer)
-@template_config(template='templates/association-default.pt', layer=IPyAMSLayer)
+@adapter_config(name='default',
+                context=(IAssociationParagraph, IPyAMSLayer),
+                provides=IContentRenderer)
+@template_config(template='templates/association-default.pt',
+                 layer=IPyAMSLayer)
 class AssociationParagraphDefaultRenderer(BaseContentRenderer):
     """Associations paragraph default renderer"""
 
@@ -105,15 +114,19 @@
     paragraphs_count = FieldProperty(IAssociationParagraphSlicedRemoteContentRendererSettings['paragraphs_count'])
 
 
-@adapter_config(context=IAssociationParagraph, provides=IAssociationParagraphSlicedRemoteContentRendererSettings)
+@adapter_config(context=IAssociationParagraph,
+                provides=IAssociationParagraphSlicedRemoteContentRendererSettings)
 def association_paragraph_sliced_remote_content_renderer_settings_factory(context):
     """Associations paragraph sliced remote content renderer settings factory"""
     return get_annotation_adapter(context, ASSOCIATION_PARAGRAPH_SLICED_REMOTE_CONTENT_RENDERER_SETTINGS_KEY,
                                   IAssociationParagraphSlicedRemoteContentRendererSettings)
 
 
-@adapter_config(name='reportage', context=(IAssociationParagraph, IPyAMSLayer), provides=IContentRenderer)
-@template_config(template='templates/association-remote-content.pt', layer=IPyAMSLayer)
+@adapter_config(name='reportage',
+                context=(IAssociationParagraph, IPyAMSLayer),
+                provides=IContentRenderer)
+@template_config(template='templates/association-remote-content.pt',
+                 layer=IPyAMSLayer)
 class AssociationParagraphSlicedRemoteContentRenderer(BaseContentRenderer):
     """Associations container sliced remote content renderer"""
 
@@ -151,15 +164,19 @@
     anchors_only = FieldProperty(IAssociationParagraphRemoteContentRendererSettings['anchors_only'])
 
 
-@adapter_config(context=IAssociationParagraph, provides=IAssociationParagraphRemoteContentRendererSettings)
+@adapter_config(context=IAssociationParagraph,
+                provides=IAssociationParagraphRemoteContentRendererSettings)
 def association_paragraph_remote_content_renderer_settings_factory(context):
     """Associations paragraph remote content renderer settings factory"""
     return get_annotation_adapter(context, ASSOCIATION_PARAGRAPH_REMOTE_CONTENT_RENDERER_SETTINGS_KEY,
                                   IAssociationParagraphRemoteContentRendererSettings)
 
 
-@adapter_config(name='remote-content', context=(IAssociationParagraph, IPyAMSLayer), provides=IContentRenderer)
-@template_config(template='templates/association-remote-content.pt', layer=IPyAMSLayer)
+@adapter_config(name='remote-content',
+                context=(IAssociationParagraph, IPyAMSLayer),
+                provides=IContentRenderer)
+@template_config(template='templates/association-remote-content.pt',
+                 layer=IPyAMSLayer)
 class AssociationParagraphRemoteContentRenderer(BaseContentRenderer):
     """Associations container remote content renderer"""
 
--- a/src/pyams_default_theme/component/association/interfaces.py	Fri Nov 13 13:31:59 2020 +0100
+++ b/src/pyams_default_theme/component/association/interfaces.py	Fri Nov 13 16:34:00 2020 +0100
@@ -48,7 +48,8 @@
     """Associations paragraph renderer settings interface"""
 
     paragraphs_count = Int(title=_("Paragraphs count"),
-                           description=_("Number of paragraphs used for each remote content (default=1)"),
+                           description=_("Number of paragraphs used for each remote content "
+                                         "(default=1)"),
                            required=False,
                            default=1)
 
@@ -63,6 +64,7 @@
                     value_type=Choice(vocabulary=PARAGRAPH_FACTORIES_VOCABULARY))
 
     anchors_only = Bool(title=_("Anchors only?"),
-                        description=_("If 'yes', only paragraphs set as 'anchors' will be selected"),
+                        description=_("If 'yes', only paragraphs set as 'anchors' will be "
+                                      "selected"),
                         required=True,
                         default=False)
Binary file src/pyams_default_theme/locales/fr/LC_MESSAGES/pyams_default_theme.mo has changed
--- a/src/pyams_default_theme/locales/fr/LC_MESSAGES/pyams_default_theme.po	Fri Nov 13 13:31:59 2020 +0100
+++ b/src/pyams_default_theme/locales/fr/LC_MESSAGES/pyams_default_theme.po	Fri Nov 13 16:34:00 2020 +0100
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE 1.0\n"
-"POT-Creation-Date: 2020-06-19 18:04+0200\n"
+"POT-Creation-Date: 2020-11-13 11:06+0100\n"
 "PO-Revision-Date: 2017-06-07 12:41+0200\n"
 "Last-Translator: Thierry Florac <tflorac@ulthar.net>\n"
 "Language-Team: French\n"
@@ -73,17 +73,17 @@
 msgid "Selection used to display images thumbnails"
 msgstr "Sélection utilisée pour l'affichage des vignettes"
 
-#: src/pyams_default_theme/component/gallery/templates/renderer-carousel.pt:34
-#: src/pyams_default_theme/features/menu/portlet/navigation/templates/simple-carousel.pt:34
-#: src/pyams_default_theme/shared/view/portlet/templates/view-items-list.pt:57
-#: src/pyams_default_theme/shared/view/portlet/templates/view-items-summary.pt:49
+#: src/pyams_default_theme/component/gallery/templates/renderer-carousel.pt:35
+#: src/pyams_default_theme/features/menu/portlet/navigation/templates/simple-carousel.pt:37
+#: src/pyams_default_theme/shared/view/portlet/templates/view-items-list.pt:58
+#: src/pyams_default_theme/shared/view/portlet/templates/view-items-summary.pt:50
 msgid "Previous"
 msgstr "Précédent"
 
-#: src/pyams_default_theme/component/gallery/templates/renderer-carousel.pt:38
-#: src/pyams_default_theme/features/menu/portlet/navigation/templates/simple-carousel.pt:39
-#: src/pyams_default_theme/shared/view/portlet/templates/view-items-list.pt:63
-#: src/pyams_default_theme/shared/view/portlet/templates/view-items-summary.pt:55
+#: src/pyams_default_theme/component/gallery/templates/renderer-carousel.pt:39
+#: src/pyams_default_theme/features/menu/portlet/navigation/templates/simple-carousel.pt:42
+#: src/pyams_default_theme/shared/view/portlet/templates/view-items-list.pt:64
+#: src/pyams_default_theme/shared/view/portlet/templates/view-items-summary.pt:56
 msgid "Next"
 msgstr "Suivant"
 
@@ -109,25 +109,29 @@
 msgid "Default milestones renderer"
 msgstr "Par défaut"
 
-#: src/pyams_default_theme/component/paragraph/html.py:42
+#: src/pyams_default_theme/component/paragraph/html.py:51
 msgid "Default raw HTML renderer"
 msgstr "Code HTML brut (par défaut)"
 
-#: src/pyams_default_theme/component/paragraph/html.py:67
+#: src/pyams_default_theme/component/paragraph/html.py:76
 msgid "Formatted source code renderer"
 msgstr "Code source formatté"
 
-#: src/pyams_default_theme/component/paragraph/html.py:95
+#: src/pyams_default_theme/component/paragraph/html.py:104
 msgid "ReStructuredText renderer"
 msgstr "Texte au format ReStructuredText"
 
-#: src/pyams_default_theme/component/paragraph/html.py:116
+#: src/pyams_default_theme/component/paragraph/html.py:125
 msgid "Markdown renderer"
 msgstr "Texte au format Markdown"
 
-#: src/pyams_default_theme/component/paragraph/html.py:141
+#: src/pyams_default_theme/component/paragraph/html.py:150
 msgid "Default rich text renderer"
-msgstr "Par défaut"
+msgstr "Texte enrichi (par défaut)"
+
+#: src/pyams_default_theme/component/paragraph/html.py:198
+msgid "Rich text renderer with logos"
+msgstr "Texte enrichi avec logo"
 
 #: src/pyams_default_theme/component/paragraph/verbatim.py:97
 msgid "Default verbatim renderer"
@@ -209,6 +213,66 @@
 "Vous pouvez remplacer le libellé par défaut du bouton de contact qui sera "
 "affiché en front-office en l'indiquant ici"
 
+#: src/pyams_default_theme/component/paragraph/interfaces/html.py:37
+msgid "Centered above text"
+msgstr "Centré au-dessus du texte"
+
+#: src/pyams_default_theme/component/paragraph/interfaces/html.py:38
+msgid "Left aligned (default)"
+msgstr "Calé à gauche du texte (par défaut)"
+
+#: src/pyams_default_theme/component/paragraph/interfaces/html.py:39
+msgid "Right aligned"
+msgstr "Calé à droite du texte"
+
+#: src/pyams_default_theme/component/paragraph/interfaces/html.py:40
+msgid "Centered below text"
+msgstr "Centré sous le texte"
+
+#: src/pyams_default_theme/component/paragraph/interfaces/html.py:50
+msgid "Selected logo"
+msgstr "Logo sélectionné"
+
+#: src/pyams_default_theme/component/paragraph/interfaces/html.py:51
+msgid ""
+"Selected logo. You can search a reference using '+' followed by internal "
+"number, of by entering text matching content title."
+msgstr ""
+"Vous pouvez rechercher un logo en indiquant un '+' suivi de son numéro "
+"interne, ou en entrant du texte correspondant à son titre"
+
+#: src/pyams_default_theme/component/paragraph/interfaces/html.py:58
+msgid "Logo position"
+msgstr "Position du logo"
+
+#: src/pyams_default_theme/component/paragraph/interfaces/html.py:63
+#: src/pyams_default_theme/shared/logo/interfaces.py:44
+msgid "Links priority"
+msgstr "Priorité des liens"
+
+#: src/pyams_default_theme/component/paragraph/interfaces/html.py:64
+msgid "Order in which internal and external links are evaluated on logo"
+msgstr ""
+"Ordre dans lequel les liens internes et externes sur le logo sont évalués"
+
+#: src/pyams_default_theme/component/paragraph/interfaces/html.py:70
+#: src/pyams_default_theme/shared/logo/interfaces.py:51
+msgid "Force canonical URL"
+msgstr "Imposer l'URL canonique"
+
+#: src/pyams_default_theme/component/paragraph/interfaces/html.py:71
+#: src/pyams_default_theme/shared/logo/interfaces.py:52
+msgid ""
+"By default, internal links use a \"relative\" URL, which tries to display "
+"link target in the current context; by using a canonical URL, you can "
+"display target in it's attachment context (if defined)"
+msgstr ""
+"Par défaut, les liens internes qui pointent vers des contenus partagés "
+"utilisent une URL \"relative\", qui permet d'afficher la cible du lien dans "
+"le contexte de la page courante ; en imposant l'utilisation d'une URL "
+"\"canonique\", l'URL générée permet de consulter le contenu dans le contexte "
+"de sa rubrique ou de son site de rattachement, s'ils existent"
+
 #: src/pyams_default_theme/component/paragraph/interfaces/verbatim.py:25
 #: src/pyams_default_theme/component/paragraph/interfaces/frame.py:27
 msgid "Center (full width)"
@@ -290,11 +354,11 @@
 msgid "Don't use default map configuration"
 msgstr "Ne pas utiliser la configuration de carte par défaut"
 
-#: src/pyams_default_theme/component/paragraph/templates/contact-default.pt:26
+#: src/pyams_default_theme/component/paragraph/templates/contact-default.pt:27
 msgid "Contact email:"
 msgstr "Contact :"
 
-#: src/pyams_default_theme/component/paragraph/templates/contact-default.pt:33
+#: src/pyams_default_theme/component/paragraph/templates/contact-default.pt:34
 msgid "Phone number:"
 msgstr "Téléphone :"
 
@@ -302,15 +366,15 @@
 msgid "Your browser can not play audio files"
 msgstr "Votre navigateur ne prend pas en charge la lecture des fichiers sons"
 
-#: src/pyams_default_theme/component/association/__init__.py:63
+#: src/pyams_default_theme/component/association/__init__.py:72
 msgid "Default associations renderer"
 msgstr "Par défaut"
 
-#: src/pyams_default_theme/component/association/__init__.py:120
+#: src/pyams_default_theme/component/association/__init__.py:133
 msgid "Include first remote content paragraphs"
 msgstr "Afficher le(s) premier(s) blocs des contenus liés"
 
-#: src/pyams_default_theme/component/association/__init__.py:166
+#: src/pyams_default_theme/component/association/__init__.py:183
 msgid "Include remote content paragraphs"
 msgstr "Afficher une sélection de blocs des contenus liés"
 
@@ -346,11 +410,11 @@
 msgid "Number of paragraphs used for each remote content (default=1)"
 msgstr "Nombre de blocs extraits de chaque contenu lié (1 par défaut)"
 
-#: src/pyams_default_theme/component/association/interfaces.py:59
+#: src/pyams_default_theme/component/association/interfaces.py:60
 msgid "Paragraph types"
 msgstr "Types de blocs"
 
-#: src/pyams_default_theme/component/association/interfaces.py:60
+#: src/pyams_default_theme/component/association/interfaces.py:61
 msgid ""
 "Select list of paragraph types you want to include; an empty selection means "
 "that all paragraphs will be selected"
@@ -358,11 +422,11 @@
 "Sélectionnez le type des blocs de contenu que vous souhaitez intégrer ; si "
 "vous laissez la sélection vide, tous les types de blocs seront pris en compte"
 
-#: src/pyams_default_theme/component/association/interfaces.py:65
+#: src/pyams_default_theme/component/association/interfaces.py:66
 msgid "Anchors only?"
 msgstr "Ancres seulement ?"
 
-#: src/pyams_default_theme/component/association/interfaces.py:66
+#: src/pyams_default_theme/component/association/interfaces.py:67
 msgid "If 'yes', only paragraphs set as 'anchors' will be selected"
 msgstr ""
 "Si 'oui', seuls les blocs de contenu désignés comme ancres seront "
@@ -388,7 +452,7 @@
 msgid "Zoom on click?"
 msgstr "Zoom sur clic ?"
 
-#: src/pyams_default_theme/features/share/portlet/__init__.py:35
+#: src/pyams_default_theme/features/share/portlet/__init__.py:34
 msgid "Default toolbox"
 msgstr "Par défaut"
 
@@ -551,48 +615,48 @@
 "ce bouton permet d'afficher un lien en dessous de chaque résultat permettant "
 "d'accéder au contenu"
 
-#: src/pyams_default_theme/features/search/portlet/templates/search-results.pt:20
-#: src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:20
+#: src/pyams_default_theme/features/search/portlet/templates/search-results.pt:27
+#: src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:27
 msgid "${count} result(s) found"
 msgstr "${count} résultat(s) trouvé(s)"
 
-#: src/pyams_default_theme/features/search/portlet/templates/search-results.pt:23
-#: src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:23
+#: src/pyams_default_theme/features/search/portlet/templates/search-results.pt:30
+#: src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:30
 msgid "No result found!"
 msgstr "Aucun résultat."
 
-#: src/pyams_default_theme/features/search/portlet/templates/search-results.pt:33
-#: src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:33
+#: src/pyams_default_theme/features/search/portlet/templates/search-results.pt:40
+#: src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:40
 msgid "Sort by relevance"
 msgstr "Trier par pertinence"
 
-#: src/pyams_default_theme/features/search/portlet/templates/search-results.pt:36
-#: src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:36
+#: src/pyams_default_theme/features/search/portlet/templates/search-results.pt:43
+#: src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:43
 msgid "Sort by publication date"
 msgstr "Trier par date de publication"
 
-#: src/pyams_default_theme/features/search/portlet/templates/search-results.pt:39
-#: src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:39
+#: src/pyams_default_theme/features/search/portlet/templates/search-results.pt:46
+#: src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:46
 msgid "Sort by last modification date"
 msgstr "Trier par date de dernière modification"
 
-#: src/pyams_default_theme/features/search/portlet/templates/search-results.pt:43
-#: src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:43
+#: src/pyams_default_theme/features/search/portlet/templates/search-results.pt:50
+#: src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:50
 msgid "Page length:"
 msgstr "Résultats par page :"
 
-#: src/pyams_default_theme/features/search/portlet/templates/search-results.pt:62
-#: src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:69
+#: src/pyams_default_theme/features/search/portlet/templates/search-results.pt:69
+#: src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:76
 msgid "Pagination"
 msgstr "Pagination"
 
-#: src/pyams_default_theme/features/search/portlet/templates/search-results.pt:70
-#: src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:77
+#: src/pyams_default_theme/features/search/portlet/templates/search-results.pt:77
+#: src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:84
 msgid "Previous page"
 msgstr "Page précédente"
 
-#: src/pyams_default_theme/features/search/portlet/templates/search-results.pt:90
-#: src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:97
+#: src/pyams_default_theme/features/search/portlet/templates/search-results.pt:108
+#: src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:115
 msgid "Next page"
 msgstr "Page suivante"
 
@@ -605,7 +669,7 @@
 msgid "Search"
 msgstr "Chercher"
 
-#: src/pyams_default_theme/features/search/portlet/templates/folder-head-specificities.pt:14
+#: src/pyams_default_theme/features/search/portlet/templates/folder-head-specificities.pt:21
 msgid "Refine search"
 msgstr "Affiner la recherche"
 
@@ -633,11 +697,11 @@
 msgid "See:"
 msgstr "Voir :"
 
-#: src/pyams_default_theme/features/header/interfaces.py:28
+#: src/pyams_default_theme/features/header/interfaces.py:35
 msgid "Apply on root?"
 msgstr "Appliquer sur l'accueil ?"
 
-#: src/pyams_default_theme/features/header/interfaces.py:29
+#: src/pyams_default_theme/features/header/interfaces.py:36
 msgid ""
 "If 'no', header settings will not be applied on site root but only on inner "
 "sites"
@@ -645,27 +709,27 @@
 "Si 'non', l'en-tête de page ne sera pas utilisé à l'accueil du site, mais "
 "pourra être hérité dans les pages intérieures"
 
-#: src/pyams_default_theme/features/header/interfaces.py:34
+#: src/pyams_default_theme/features/header/interfaces.py:41
 msgid "Banner image"
 msgstr "Bandeau"
 
-#: src/pyams_default_theme/features/header/interfaces.py:35
+#: src/pyams_default_theme/features/header/interfaces.py:42
 msgid "Image displayed as header background"
 msgstr "Image affichée en tête de page"
 
-#: src/pyams_default_theme/features/header/interfaces.py:38
+#: src/pyams_default_theme/features/header/interfaces.py:45
 msgid "Logo"
 msgstr "Logo"
 
-#: src/pyams_default_theme/features/header/interfaces.py:39
+#: src/pyams_default_theme/features/header/interfaces.py:46
 msgid "Logo displayed in header"
 msgstr "Logo superposé au bandeau"
 
-#: src/pyams_default_theme/features/header/interfaces.py:42
+#: src/pyams_default_theme/features/header/interfaces.py:49
 msgid "Search form target"
 msgstr "Cible de la recherche"
 
-#: src/pyams_default_theme/features/header/interfaces.py:43
+#: src/pyams_default_theme/features/header/interfaces.py:50
 msgid "Site or folder handling site search"
 msgstr "Site ou rubrique qui prend en charge la recherche"
 
@@ -673,11 +737,11 @@
 msgid "Top menus"
 msgstr "Menus de navigation"
 
-#: src/pyams_default_theme/features/header/skin/__init__.py:125
+#: src/pyams_default_theme/features/header/skin/__init__.py:172
 msgid "Hidden header"
 msgstr "NON affiché"
 
-#: src/pyams_default_theme/features/header/skin/__init__.py:148
+#: src/pyams_default_theme/features/header/skin/__init__.py:195
 msgid "PyAMS simple header with banner and tabs"
 msgstr "PyAMS: en-tête simple avec bandeau et onglets de navigation"
 
@@ -689,131 +753,136 @@
 msgid "Search..."
 msgstr "Recherche..."
 
-#: src/pyams_default_theme/shared/resource/__init__.py:51
+#: src/pyams_default_theme/shared/resource/__init__.py:68
 msgid "from {0.min_value} to {0.max_value}"
 msgstr "de {0.min_value} à {0.max_value} ans"
 
-#: src/pyams_default_theme/shared/resource/__init__.py:53
+#: src/pyams_default_theme/shared/resource/__init__.py:70
 msgid "from {0.min_value}"
 msgstr "{0.min_value} ans et +"
 
-#: src/pyams_default_theme/shared/resource/__init__.py:55
+#: src/pyams_default_theme/shared/resource/__init__.py:72
 msgid "up to {0.max_value}"
 msgstr "jusqu'à {0.max_value} ans"
 
-#: src/pyams_default_theme/shared/resource/templates/specificities.pt:53
+#: src/pyams_default_theme/shared/resource/templates/specificities.pt:54
+#: src/pyams_default_theme/shared/resource/templates/specificities.pt:117
+msgid "Collection:"
+msgstr "Collection :"
+
+#: src/pyams_default_theme/shared/resource/templates/specificities.pt:55
+msgid "Collections:"
+msgstr "Collections :"
+
+#: src/pyams_default_theme/shared/resource/templates/specificities.pt:69
 msgid "Original country:"
 msgstr "Pays d'origine :"
 
-#: src/pyams_default_theme/shared/resource/templates/specificities.pt:57
+#: src/pyams_default_theme/shared/resource/templates/specificities.pt:73
 msgid "Original title:"
 msgstr "Titre original :"
 
-#: src/pyams_default_theme/shared/resource/templates/specificities.pt:61
+#: src/pyams_default_theme/shared/resource/templates/specificities.pt:77
 msgid "Author:"
 msgstr "Auteur :"
 
-#: src/pyams_default_theme/shared/resource/templates/specificities.pt:65
+#: src/pyams_default_theme/shared/resource/templates/specificities.pt:81
 msgid "Translator:"
 msgstr "Traducteur :"
 
-#: src/pyams_default_theme/shared/resource/templates/specificities.pt:69
+#: src/pyams_default_theme/shared/resource/templates/specificities.pt:85
 msgid "Illustrator:"
 msgstr "Illustrateur :"
 
-#: src/pyams_default_theme/shared/resource/templates/specificities.pt:73
+#: src/pyams_default_theme/shared/resource/templates/specificities.pt:89
 msgid "Drawer:"
 msgstr "Dessinateur :"
 
-#: src/pyams_default_theme/shared/resource/templates/specificities.pt:77
+#: src/pyams_default_theme/shared/resource/templates/specificities.pt:93
 msgid "Colourist:"
 msgstr "Coloriste :"
 
-#: src/pyams_default_theme/shared/resource/templates/specificities.pt:81
+#: src/pyams_default_theme/shared/resource/templates/specificities.pt:97
 msgid "Lettering:"
 msgstr "Lettrage :"
 
-#: src/pyams_default_theme/shared/resource/templates/specificities.pt:85
+#: src/pyams_default_theme/shared/resource/templates/specificities.pt:101
 msgid "Producer:"
 msgstr "Producteur :"
 
-#: src/pyams_default_theme/shared/resource/templates/specificities.pt:89
+#: src/pyams_default_theme/shared/resource/templates/specificities.pt:105
 msgid "Director:"
 msgstr "Réalisateur :"
 
-#: src/pyams_default_theme/shared/resource/templates/specificities.pt:93
+#: src/pyams_default_theme/shared/resource/templates/specificities.pt:109
 msgid "Actors:"
 msgstr "Acteurs :"
 
-#: src/pyams_default_theme/shared/resource/templates/specificities.pt:97
+#: src/pyams_default_theme/shared/resource/templates/specificities.pt:113
 msgid "Editor:"
 msgstr "Éditeur :"
 
-#: src/pyams_default_theme/shared/resource/templates/specificities.pt:101
-msgid "Collection:"
-msgstr "Collection :"
-
-#: src/pyams_default_theme/shared/resource/templates/specificities.pt:105
+#: src/pyams_default_theme/shared/resource/templates/specificities.pt:121
 msgid "Series:"
 msgstr "Série :"
 
-#: src/pyams_default_theme/shared/resource/templates/specificities.pt:109
+#: src/pyams_default_theme/shared/resource/templates/specificities.pt:125
 msgid "Volume:"
 msgstr "Volume :"
 
-#: src/pyams_default_theme/shared/resource/templates/specificities.pt:113
+#: src/pyams_default_theme/shared/resource/templates/specificities.pt:129
 msgid "Format:"
 msgstr "Format :"
 
-#: src/pyams_default_theme/shared/resource/templates/specificities.pt:117
+#: src/pyams_default_theme/shared/resource/templates/specificities.pt:133
 msgid "Number of pages:"
 msgstr "Nombre de pages : "
 
-#: src/pyams_default_theme/shared/resource/templates/specificities.pt:121
+#: src/pyams_default_theme/shared/resource/templates/specificities.pt:137
 msgid "Duration:"
 msgstr "Durée :"
 
-#: src/pyams_default_theme/shared/resource/templates/specificities.pt:125
+#: src/pyams_default_theme/shared/resource/templates/specificities.pt:141
 msgid "Age range:"
 msgstr "Tranche d'âge :"
 
-#: src/pyams_default_theme/shared/resource/templates/specificities.pt:129
+#: src/pyams_default_theme/shared/resource/templates/specificities.pt:145
 msgid "Release year:"
 msgstr "Année de parution :"
 
-#: src/pyams_default_theme/shared/resource/templates/specificities.pt:133
+#: src/pyams_default_theme/shared/resource/templates/specificities.pt:149
 msgid "Awards:"
 msgstr "Récompenses :"
 
-#: src/pyams_default_theme/shared/resource/templates/specificities.pt:141
+#: src/pyams_default_theme/shared/resource/templates/specificities.pt:157
 msgid "Editor reference:"
 msgstr "Référence chez l'éditeur :"
 
-#: src/pyams_default_theme/shared/resource/templates/specificities.pt:145
+#: src/pyams_default_theme/shared/resource/templates/specificities.pt:161
 msgid "ISBN number:"
 msgstr "Numéro ISBN :"
 
-#: src/pyams_default_theme/shared/resource/templates/specificities.pt:149
+#: src/pyams_default_theme/shared/resource/templates/specificities.pt:165
 msgid "Price:"
 msgstr "Prix :"
 
-#: src/pyams_default_theme/shared/resource/templates/specificities.pt:150
+#: src/pyams_default_theme/shared/resource/templates/specificities.pt:166
 msgid "€ ${price}"
 msgstr "${price} €"
 
-#: src/pyams_default_theme/shared/resource/templates/specificities.pt:158
+#: src/pyams_default_theme/shared/resource/templates/specificities.pt:174
 msgid "Summary"
 msgstr "Résumé"
 
-#: src/pyams_default_theme/shared/resource/templates/specificities.pt:163
+#: src/pyams_default_theme/shared/resource/templates/specificities.pt:179
 msgid "Synopsis"
 msgstr "Synopsis"
 
-#: src/pyams_default_theme/shared/resource/templates/specificities.pt:168
+#: src/pyams_default_theme/shared/resource/templates/specificities.pt:184
 msgid "Publisher's words"
 msgstr "Nos commentaires"
 
-#: src/pyams_default_theme/shared/resource/templates/specificities.pt:173
+#: src/pyams_default_theme/shared/resource/templates/specificities.pt:189
 msgid "More resource info:"
 msgstr "Plus d'informations :"
 
@@ -940,15 +1009,15 @@
 msgid "Default specificities renderer"
 msgstr "Par défaut"
 
-#: src/pyams_default_theme/shared/site/portlet/__init__.py:48
+#: src/pyams_default_theme/shared/site/portlet/__init__.py:50
 msgid "Site container summary"
 msgstr "Par défaut"
 
-#: src/pyams_default_theme/shared/site/portlet/__init__.py:59
+#: src/pyams_default_theme/shared/site/portlet/__init__.py:61
 msgid "Three vertical panels with panoramic illustrations"
 msgstr "Trois panneaux verticaux avec illustrations panoramiques"
 
-#: src/pyams_default_theme/shared/site/portlet/__init__.py:70
+#: src/pyams_default_theme/shared/site/portlet/__init__.py:72
 msgid "Four vertical panels with portrait illustrations"
 msgstr "Quatre panneaux verticaux avec illustrations en portrait"
 
@@ -990,14 +1059,33 @@
 msgid "Image map preview"
 msgstr "Aperçu des zones cliquables"
 
-#: src/pyams_default_theme/shared/logo/__init__.py:34
+#: src/pyams_default_theme/shared/logo/__init__.py:65
 msgid "Default logos renderer"
 msgstr "Par défaut"
 
+#: src/pyams_default_theme/shared/logo/interfaces.py:32
+msgid "Disabled link"
+msgstr "Ne pas afficher le lien"
+
+#: src/pyams_default_theme/shared/logo/interfaces.py:33
+msgid "Use internal reference first"
+msgstr "Privilégier la référence interne"
+
+#: src/pyams_default_theme/shared/logo/interfaces.py:34
+msgid "Use external URL first"
+msgstr "Privilégier l'URL externe"
+
+#: src/pyams_default_theme/shared/logo/interfaces.py:45
+msgid "Order in which internal and external links are evaluated"
+msgstr "Ordre dans lequel les liens internes et externes sont évalués"
+
 #: src/pyams_default_theme/viewlet/logo/templates/logo.pt:5
 msgid "Back home"
 msgstr "Revenir à l'accueil"
 
+#~ msgid "Centered"
+#~ msgstr "Centré au-dessus du texte"
+
 #~ msgid "yes"
 #~ msgstr "oui"
 
--- a/src/pyams_default_theme/locales/pyams_default_theme.pot	Fri Nov 13 13:31:59 2020 +0100
+++ b/src/pyams_default_theme/locales/pyams_default_theme.pot	Fri Nov 13 16:34:00 2020 +0100
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE 1.0\n"
-"POT-Creation-Date: 2020-06-19 18:04+0200\n"
+"POT-Creation-Date: 2020-11-13 11:06+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -73,17 +73,17 @@
 msgid "Selection used to display images thumbnails"
 msgstr ""
 
-#: ./src/pyams_default_theme/component/gallery/templates/renderer-carousel.pt:34
-#: ./src/pyams_default_theme/features/menu/portlet/navigation/templates/simple-carousel.pt:34
-#: ./src/pyams_default_theme/shared/view/portlet/templates/view-items-list.pt:57
-#: ./src/pyams_default_theme/shared/view/portlet/templates/view-items-summary.pt:49
+#: ./src/pyams_default_theme/component/gallery/templates/renderer-carousel.pt:35
+#: ./src/pyams_default_theme/features/menu/portlet/navigation/templates/simple-carousel.pt:37
+#: ./src/pyams_default_theme/shared/view/portlet/templates/view-items-list.pt:58
+#: ./src/pyams_default_theme/shared/view/portlet/templates/view-items-summary.pt:50
 msgid "Previous"
 msgstr ""
 
-#: ./src/pyams_default_theme/component/gallery/templates/renderer-carousel.pt:38
-#: ./src/pyams_default_theme/features/menu/portlet/navigation/templates/simple-carousel.pt:39
-#: ./src/pyams_default_theme/shared/view/portlet/templates/view-items-list.pt:63
-#: ./src/pyams_default_theme/shared/view/portlet/templates/view-items-summary.pt:55
+#: ./src/pyams_default_theme/component/gallery/templates/renderer-carousel.pt:39
+#: ./src/pyams_default_theme/features/menu/portlet/navigation/templates/simple-carousel.pt:42
+#: ./src/pyams_default_theme/shared/view/portlet/templates/view-items-list.pt:64
+#: ./src/pyams_default_theme/shared/view/portlet/templates/view-items-summary.pt:56
 msgid "Next"
 msgstr ""
 
@@ -109,26 +109,30 @@
 msgid "Default milestones renderer"
 msgstr ""
 
-#: ./src/pyams_default_theme/component/paragraph/html.py:42
+#: ./src/pyams_default_theme/component/paragraph/html.py:51
 msgid "Default raw HTML renderer"
 msgstr ""
 
-#: ./src/pyams_default_theme/component/paragraph/html.py:67
+#: ./src/pyams_default_theme/component/paragraph/html.py:76
 msgid "Formatted source code renderer"
 msgstr ""
 
-#: ./src/pyams_default_theme/component/paragraph/html.py:95
+#: ./src/pyams_default_theme/component/paragraph/html.py:104
 msgid "ReStructuredText renderer"
 msgstr ""
 
-#: ./src/pyams_default_theme/component/paragraph/html.py:116
+#: ./src/pyams_default_theme/component/paragraph/html.py:125
 msgid "Markdown renderer"
 msgstr ""
 
-#: ./src/pyams_default_theme/component/paragraph/html.py:141
+#: ./src/pyams_default_theme/component/paragraph/html.py:150
 msgid "Default rich text renderer"
 msgstr ""
 
+#: ./src/pyams_default_theme/component/paragraph/html.py:198
+msgid "Rich text renderer with logos"
+msgstr ""
+
 #: ./src/pyams_default_theme/component/paragraph/verbatim.py:97
 msgid "Default verbatim renderer"
 msgstr ""
@@ -203,6 +207,58 @@
 msgid "Custom label of the contact button displayed by front-office template"
 msgstr ""
 
+#: ./src/pyams_default_theme/component/paragraph/interfaces/html.py:37
+msgid "Centered above text"
+msgstr ""
+
+#: ./src/pyams_default_theme/component/paragraph/interfaces/html.py:38
+msgid "Left aligned (default)"
+msgstr ""
+
+#: ./src/pyams_default_theme/component/paragraph/interfaces/html.py:39
+msgid "Right aligned"
+msgstr ""
+
+#: ./src/pyams_default_theme/component/paragraph/interfaces/html.py:40
+msgid "Centered below text"
+msgstr ""
+
+#: ./src/pyams_default_theme/component/paragraph/interfaces/html.py:50
+msgid "Selected logo"
+msgstr ""
+
+#: ./src/pyams_default_theme/component/paragraph/interfaces/html.py:51
+msgid ""
+"Selected logo. You can search a reference using '+' followed by internal "
+"number, of by entering text matching content title."
+msgstr ""
+
+#: ./src/pyams_default_theme/component/paragraph/interfaces/html.py:58
+msgid "Logo position"
+msgstr ""
+
+#: ./src/pyams_default_theme/component/paragraph/interfaces/html.py:63
+#: ./src/pyams_default_theme/shared/logo/interfaces.py:44
+msgid "Links priority"
+msgstr ""
+
+#: ./src/pyams_default_theme/component/paragraph/interfaces/html.py:64
+msgid "Order in which internal and external links are evaluated on logo"
+msgstr ""
+
+#: ./src/pyams_default_theme/component/paragraph/interfaces/html.py:70
+#: ./src/pyams_default_theme/shared/logo/interfaces.py:51
+msgid "Force canonical URL"
+msgstr ""
+
+#: ./src/pyams_default_theme/component/paragraph/interfaces/html.py:71
+#: ./src/pyams_default_theme/shared/logo/interfaces.py:52
+msgid ""
+"By default, internal links use a \"relative\" URL, which tries to display "
+"link target in the current context; by using a canonical URL, you can display"
+" target in it's attachment context (if defined)"
+msgstr ""
+
 #: ./src/pyams_default_theme/component/paragraph/interfaces/verbatim.py:25
 #: ./src/pyams_default_theme/component/paragraph/interfaces/frame.py:27
 msgid "Center (full width)"
@@ -274,11 +330,11 @@
 msgid "Don't use default map configuration"
 msgstr ""
 
-#: ./src/pyams_default_theme/component/paragraph/templates/contact-default.pt:26
+#: ./src/pyams_default_theme/component/paragraph/templates/contact-default.pt:27
 msgid "Contact email:"
 msgstr ""
 
-#: ./src/pyams_default_theme/component/paragraph/templates/contact-default.pt:33
+#: ./src/pyams_default_theme/component/paragraph/templates/contact-default.pt:34
 msgid "Phone number:"
 msgstr ""
 
@@ -286,15 +342,15 @@
 msgid "Your browser can not play audio files"
 msgstr ""
 
-#: ./src/pyams_default_theme/component/association/__init__.py:63
+#: ./src/pyams_default_theme/component/association/__init__.py:72
 msgid "Default associations renderer"
 msgstr ""
 
-#: ./src/pyams_default_theme/component/association/__init__.py:120
+#: ./src/pyams_default_theme/component/association/__init__.py:133
 msgid "Include first remote content paragraphs"
 msgstr ""
 
-#: ./src/pyams_default_theme/component/association/__init__.py:166
+#: ./src/pyams_default_theme/component/association/__init__.py:183
 msgid "Include remote content paragraphs"
 msgstr ""
 
@@ -330,21 +386,21 @@
 msgid "Number of paragraphs used for each remote content (default=1)"
 msgstr ""
 
-#: ./src/pyams_default_theme/component/association/interfaces.py:59
+#: ./src/pyams_default_theme/component/association/interfaces.py:60
 msgid "Paragraph types"
 msgstr ""
 
-#: ./src/pyams_default_theme/component/association/interfaces.py:60
+#: ./src/pyams_default_theme/component/association/interfaces.py:61
 msgid ""
 "Select list of paragraph types you want to include; an empty selection means "
 "that all paragraphs will be selected"
 msgstr ""
 
-#: ./src/pyams_default_theme/component/association/interfaces.py:65
+#: ./src/pyams_default_theme/component/association/interfaces.py:66
 msgid "Anchors only?"
 msgstr ""
 
-#: ./src/pyams_default_theme/component/association/interfaces.py:66
+#: ./src/pyams_default_theme/component/association/interfaces.py:67
 msgid "If 'yes', only paragraphs set as 'anchors' will be selected"
 msgstr ""
 
@@ -368,7 +424,7 @@
 msgid "Zoom on click?"
 msgstr ""
 
-#: ./src/pyams_default_theme/features/share/portlet/__init__.py:35
+#: ./src/pyams_default_theme/features/share/portlet/__init__.py:34
 msgid "Default toolbox"
 msgstr ""
 
@@ -526,48 +582,48 @@
 " you can override this label by giving a custom title here"
 msgstr ""
 
-#: ./src/pyams_default_theme/features/search/portlet/templates/search-results.pt:20
-#: ./src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:20
+#: ./src/pyams_default_theme/features/search/portlet/templates/search-results.pt:27
+#: ./src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:27
 msgid "${count} result(s) found"
 msgstr ""
 
-#: ./src/pyams_default_theme/features/search/portlet/templates/search-results.pt:23
-#: ./src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:23
+#: ./src/pyams_default_theme/features/search/portlet/templates/search-results.pt:30
+#: ./src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:30
 msgid "No result found!"
 msgstr ""
 
-#: ./src/pyams_default_theme/features/search/portlet/templates/search-results.pt:33
-#: ./src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:33
+#: ./src/pyams_default_theme/features/search/portlet/templates/search-results.pt:40
+#: ./src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:40
 msgid "Sort by relevance"
 msgstr ""
 
-#: ./src/pyams_default_theme/features/search/portlet/templates/search-results.pt:36
-#: ./src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:36
-msgid "Sort by publication date"
-msgstr ""
-
-#: ./src/pyams_default_theme/features/search/portlet/templates/search-results.pt:39
-#: ./src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:39
-msgid "Sort by last modification date"
-msgstr ""
-
 #: ./src/pyams_default_theme/features/search/portlet/templates/search-results.pt:43
 #: ./src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:43
+msgid "Sort by publication date"
+msgstr ""
+
+#: ./src/pyams_default_theme/features/search/portlet/templates/search-results.pt:46
+#: ./src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:46
+msgid "Sort by last modification date"
+msgstr ""
+
+#: ./src/pyams_default_theme/features/search/portlet/templates/search-results.pt:50
+#: ./src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:50
 msgid "Page length:"
 msgstr ""
 
-#: ./src/pyams_default_theme/features/search/portlet/templates/search-results.pt:62
-#: ./src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:69
+#: ./src/pyams_default_theme/features/search/portlet/templates/search-results.pt:69
+#: ./src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:76
 msgid "Pagination"
 msgstr ""
 
-#: ./src/pyams_default_theme/features/search/portlet/templates/search-results.pt:70
-#: ./src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:77
+#: ./src/pyams_default_theme/features/search/portlet/templates/search-results.pt:77
+#: ./src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:84
 msgid "Previous page"
 msgstr ""
 
-#: ./src/pyams_default_theme/features/search/portlet/templates/search-results.pt:90
-#: ./src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:97
+#: ./src/pyams_default_theme/features/search/portlet/templates/search-results.pt:108
+#: ./src/pyams_default_theme/features/search/portlet/templates/search-panels.pt:115
 msgid "Next page"
 msgstr ""
 
@@ -580,7 +636,7 @@
 msgid "Search"
 msgstr ""
 
-#: ./src/pyams_default_theme/features/search/portlet/templates/folder-head-specificities.pt:14
+#: ./src/pyams_default_theme/features/search/portlet/templates/folder-head-specificities.pt:21
 msgid "Refine search"
 msgstr ""
 
@@ -608,37 +664,37 @@
 msgid "See:"
 msgstr ""
 
-#: ./src/pyams_default_theme/features/header/interfaces.py:28
+#: ./src/pyams_default_theme/features/header/interfaces.py:35
 msgid "Apply on root?"
 msgstr ""
 
-#: ./src/pyams_default_theme/features/header/interfaces.py:29
+#: ./src/pyams_default_theme/features/header/interfaces.py:36
 msgid ""
 "If 'no', header settings will not be applied on site root but only on inner "
 "sites"
 msgstr ""
 
-#: ./src/pyams_default_theme/features/header/interfaces.py:34
+#: ./src/pyams_default_theme/features/header/interfaces.py:41
 msgid "Banner image"
 msgstr ""
 
-#: ./src/pyams_default_theme/features/header/interfaces.py:35
+#: ./src/pyams_default_theme/features/header/interfaces.py:42
 msgid "Image displayed as header background"
 msgstr ""
 
-#: ./src/pyams_default_theme/features/header/interfaces.py:38
+#: ./src/pyams_default_theme/features/header/interfaces.py:45
 msgid "Logo"
 msgstr ""
 
-#: ./src/pyams_default_theme/features/header/interfaces.py:39
+#: ./src/pyams_default_theme/features/header/interfaces.py:46
 msgid "Logo displayed in header"
 msgstr ""
 
-#: ./src/pyams_default_theme/features/header/interfaces.py:42
+#: ./src/pyams_default_theme/features/header/interfaces.py:49
 msgid "Search form target"
 msgstr ""
 
-#: ./src/pyams_default_theme/features/header/interfaces.py:43
+#: ./src/pyams_default_theme/features/header/interfaces.py:50
 msgid "Site or folder handling site search"
 msgstr ""
 
@@ -646,11 +702,11 @@
 msgid "Top menus"
 msgstr ""
 
-#: ./src/pyams_default_theme/features/header/skin/__init__.py:125
+#: ./src/pyams_default_theme/features/header/skin/__init__.py:172
 msgid "Hidden header"
 msgstr ""
 
-#: ./src/pyams_default_theme/features/header/skin/__init__.py:148
+#: ./src/pyams_default_theme/features/header/skin/__init__.py:195
 msgid "PyAMS simple header with banner and tabs"
 msgstr ""
 
@@ -662,131 +718,136 @@
 msgid "Search..."
 msgstr ""
 
-#: ./src/pyams_default_theme/shared/resource/__init__.py:51
+#: ./src/pyams_default_theme/shared/resource/__init__.py:68
 msgid "from {0.min_value} to {0.max_value}"
 msgstr ""
 
-#: ./src/pyams_default_theme/shared/resource/__init__.py:53
+#: ./src/pyams_default_theme/shared/resource/__init__.py:70
 msgid "from {0.min_value}"
 msgstr ""
 
-#: ./src/pyams_default_theme/shared/resource/__init__.py:55
+#: ./src/pyams_default_theme/shared/resource/__init__.py:72
 msgid "up to {0.max_value}"
 msgstr ""
 
-#: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:53
-msgid "Original country:"
+#: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:54
+#: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:117
+msgid "Collection:"
 msgstr ""
 
-#: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:57
-msgid "Original title:"
-msgstr ""
-
-#: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:61
-msgid "Author:"
-msgstr ""
-
-#: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:65
-msgid "Translator:"
+#: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:55
+msgid "Collections:"
 msgstr ""
 
 #: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:69
-msgid "Illustrator:"
+msgid "Original country:"
 msgstr ""
 
 #: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:73
-msgid "Drawer:"
+msgid "Original title:"
 msgstr ""
 
 #: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:77
-msgid "Colourist:"
+msgid "Author:"
 msgstr ""
 
 #: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:81
-msgid "Lettering:"
+msgid "Translator:"
 msgstr ""
 
 #: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:85
-msgid "Producer:"
+msgid "Illustrator:"
 msgstr ""
 
 #: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:89
-msgid "Director:"
+msgid "Drawer:"
 msgstr ""
 
 #: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:93
-msgid "Actors:"
+msgid "Colourist:"
 msgstr ""
 
 #: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:97
-msgid "Editor:"
+msgid "Lettering:"
 msgstr ""
 
 #: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:101
-msgid "Collection:"
+msgid "Producer:"
 msgstr ""
 
 #: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:105
-msgid "Series:"
+msgid "Director:"
 msgstr ""
 
 #: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:109
-msgid "Volume:"
+msgid "Actors:"
 msgstr ""
 
 #: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:113
-msgid "Format:"
-msgstr ""
-
-#: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:117
-msgid "Number of pages:"
+msgid "Editor:"
 msgstr ""
 
 #: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:121
-msgid "Duration:"
+msgid "Series:"
 msgstr ""
 
 #: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:125
-msgid "Age range:"
+msgid "Volume:"
 msgstr ""
 
 #: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:129
-msgid "Release year:"
+msgid "Format:"
 msgstr ""
 
 #: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:133
-msgid "Awards:"
+msgid "Number of pages:"
+msgstr ""
+
+#: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:137
+msgid "Duration:"
 msgstr ""
 
 #: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:141
-msgid "Editor reference:"
+msgid "Age range:"
 msgstr ""
 
 #: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:145
+msgid "Release year:"
+msgstr ""
+
+#: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:149
+msgid "Awards:"
+msgstr ""
+
+#: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:157
+msgid "Editor reference:"
+msgstr ""
+
+#: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:161
 msgid "ISBN number:"
 msgstr ""
 
-#: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:149
+#: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:165
 msgid "Price:"
 msgstr ""
 
-#: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:150
+#: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:166
 msgid "€ ${price}"
 msgstr ""
 
-#: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:158
+#: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:174
 msgid "Summary"
 msgstr ""
 
-#: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:163
+#: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:179
 msgid "Synopsis"
 msgstr ""
 
-#: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:168
+#: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:184
 msgid "Publisher's words"
 msgstr ""
 
-#: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:173
+#: ./src/pyams_default_theme/shared/resource/templates/specificities.pt:189
 msgid "More resource info:"
 msgstr ""
 
@@ -906,15 +967,15 @@
 msgid "Default specificities renderer"
 msgstr ""
 
-#: ./src/pyams_default_theme/shared/site/portlet/__init__.py:48
+#: ./src/pyams_default_theme/shared/site/portlet/__init__.py:50
 msgid "Site container summary"
 msgstr ""
 
-#: ./src/pyams_default_theme/shared/site/portlet/__init__.py:59
+#: ./src/pyams_default_theme/shared/site/portlet/__init__.py:61
 msgid "Three vertical panels with panoramic illustrations"
 msgstr ""
 
-#: ./src/pyams_default_theme/shared/site/portlet/__init__.py:70
+#: ./src/pyams_default_theme/shared/site/portlet/__init__.py:72
 msgid "Four vertical panels with portrait illustrations"
 msgstr ""
 
@@ -950,10 +1011,26 @@
 msgid "Image map preview"
 msgstr ""
 
-#: ./src/pyams_default_theme/shared/logo/__init__.py:34
+#: ./src/pyams_default_theme/shared/logo/__init__.py:65
 msgid "Default logos renderer"
 msgstr ""
 
+#: ./src/pyams_default_theme/shared/logo/interfaces.py:32
+msgid "Disabled link"
+msgstr ""
+
+#: ./src/pyams_default_theme/shared/logo/interfaces.py:33
+msgid "Use internal reference first"
+msgstr ""
+
+#: ./src/pyams_default_theme/shared/logo/interfaces.py:34
+msgid "Use external URL first"
+msgstr ""
+
+#: ./src/pyams_default_theme/shared/logo/interfaces.py:45
+msgid "Order in which internal and external links are evaluated"
+msgstr ""
+
 #: ./src/pyams_default_theme/viewlet/logo/templates/logo.pt:5
 msgid "Back home"
 msgstr ""
--- a/src/pyams_default_theme/shared/site/portlet/__init__.py	Fri Nov 13 13:31:59 2020 +0100
+++ b/src/pyams_default_theme/shared/site/portlet/__init__.py	Fri Nov 13 16:34:00 2020 +0100
@@ -33,10 +33,12 @@
     def visible_items(self):
         container = ISiteContainer(self.context, None)
         if container is not None:
-            registry = self.request.registry
+            request = self.request
+            registry = request.registry
             yield from filter(lambda x: x is not None,
-                              [registry.queryMultiAdapter((item, self.request), IContentSummaryInfo)
-                               for item in container.get_visible_items(self.request)])
+                              map(lambda x: registry.queryMultiAdapter((x, request),
+                                                                       IContentSummaryInfo),
+                                  container.get_visible_items(request)))
 
 
 @adapter_config(context=(IPortalContext, IPyAMSLayer, Interface, ISiteContainerSummaryPortletSettings),