--- a/src/pyams_content/component/theme/zmi/__init__.py Thu Jul 05 08:48:47 2018 +0200
+++ b/src/pyams_content/component/theme/zmi/__init__.py Thu Jul 05 08:53:43 2018 +0200
@@ -9,6 +9,7 @@
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
+from pyams_content.component.theme import ITagsTarget, ITagsInfo, ITagsManagerTarget, ITagsManager
__docformat__ = 'restructuredtext'
@@ -43,8 +44,74 @@
from pyams_content import _
+#
+# Tags management
+#
+
+@viewlet_config(name='tags.menu', context=ITagsTarget, layer=IAdminLayer,
+ manager=IPropertiesMenu, permission=VIEW_SYSTEM_PERMISSION, weight=350)
+class TagsMenu(MenuItem):
+ """Tags menu"""
+
+ label = _("Tags...")
+ icon_class = 'fa-tag'
+ url = '#tags.html'
+
+
+@pagelet_config(name='tags.html', context=ITagsTarget, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION)
+@template_config(template='templates/themes-info.pt', layer=IPyAMSLayer)
+@ajax_config(name='tags.json', context=ITagsTarget, layer=IPyAMSLayer, permission=MANAGE_CONTENT_PERMISSION)
+@implementer(IWidgetForm, IInnerPage)
+class TagsEditForm(AdminEditForm):
+ """Tags edit form"""
+
+ legend = _("Content tags")
+
+ fields = field.Fields(ITagsInfo)
+ fieldname = 'tags'
+
+ def __init__(self, context, request):
+ super(TagsEditForm, self).__init__(context, request)
+ manager = ITagsManager(request.root)
+ self.thesaurus_name = manager.thesaurus_name
+ self.extract_name = manager.extract_name
+
+ def updateWidgets(self, prefix=None):
+ super(TagsEditForm, self).updateWidgets(prefix)
+ widget = self.widgets['tags']
+ widget.thesaurus_name = self.thesaurus_name
+ widget.extract_name = self.extract_name
+
+ @property
+ def top_terms(self):
+ thesaurus = query_utility(IThesaurus, name=self.thesaurus_name)
+ if thesaurus is not None:
+ return sorted(thesaurus.get_top_terms(extract=self.extract_name),
+ key=lambda x: x.label)
+ else:
+ return ()
+
+ def get_subterms(self, term):
+ for subterm in term.specifics:
+ if (not self.extract_name) or (self.extract_name in subterm.extracts):
+ yield subterm
+ for another in self.get_subterms(subterm):
+ yield another
+
+
+@adapter_config(context=(ITagsTarget, IAdminLayer, TagsEditForm), provides=IPageHeader)
+class TagsHeaderAdapter(WfSharedContentHeaderAdapter):
+ """Shared content tags header adapter"""
+
+ icon_class = 'fa fa-fw fa-tag'
+
+
+#
+# Themes management
+#
+
@viewlet_config(name='themes.menu', context=IThemesTarget, layer=IAdminLayer,
- manager=IPropertiesMenu, permission=VIEW_SYSTEM_PERMISSION, weight=350)
+ manager=IPropertiesMenu, permission=VIEW_SYSTEM_PERMISSION, weight=352)
class ThemesMenu(MenuItem):
"""Themes menu"""
@@ -63,6 +130,7 @@
legend = _("Content themes")
fields = field.Fields(IThemesInfo)
+ fieldname = 'themes'
def __init__(self, context, request):
super(ThemesEditForm, self).__init__(context, request)