--- a/src/pyams_content/component/theme/zmi/__init__.py Tue Jul 10 16:59:55 2018 +0200
+++ b/src/pyams_content/component/theme/zmi/__init__.py Wed Jul 11 10:18:10 2018 +0200
@@ -17,12 +17,12 @@
# import interfaces
from pyams_content.component.theme import ITagsTarget, ITagsInfo, ITagsManager, IThemesTarget, IThemesInfo, \
- IThemesManagerTarget, IThemesManager
+ IThemesManagerTarget, IThemesManager, ICollectionsTarget, ICollectionsInfo, ICollectionsManager, \
+ ICollectionsManagerTarget
from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
from pyams_form.interfaces.form import IWidgetForm
from pyams_skin.interfaces import IInnerPage, IPageHeader, IDialog
from pyams_skin.layer import IPyAMSLayer
-from pyams_thesaurus.interfaces.thesaurus import IThesaurus
from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
from pyams_zmi.interfaces.menu import IPropertiesMenu
from pyams_zmi.layer import IAdminLayer
@@ -32,9 +32,8 @@
from pyams_form.form import ajax_config, AJAXEditForm, EditForm
from pyams_pagelet.pagelet import pagelet_config
from pyams_skin.viewlet.menu import MenuItem
-from pyams_thesaurus.widget import ThesaurusTermsTreeFieldWidget
+from pyams_thesaurus.zmi.widget import ThesaurusTermsTreeFieldWidget
from pyams_utils.adapter import adapter_config
-from pyams_utils.registry import query_utility
from pyams_utils.traversing import get_parent
from pyams_viewlet.viewlet import viewlet_config
from pyams_zmi.form import AdminEditForm, AdminDialogEditForm
@@ -72,33 +71,13 @@
fields = field.Fields(ITagsInfo)
fields['tags'].widgetFactory = ThesaurusTermsTreeFieldWidget
- 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
+ if 'tags' in self.widgets:
+ widget = self.widgets['tags']
+ manager = ITagsManager(self.request.root)
+ widget.thesaurus_name = manager.thesaurus_name
+ widget.extract_name = manager.extract_name
@adapter_config(context=(ITagsTarget, IAdminLayer, TagsEditForm), provides=IPageHeader)
@@ -166,3 +145,57 @@
"""Dialog themes edit form"""
dialog_class = 'modal-large'
+
+
+#
+# Collections management
+#
+
+@viewlet_config(name='collections.menu', context=ICollectionsTarget, layer=IAdminLayer,
+ manager=IPropertiesMenu, permission=VIEW_SYSTEM_PERMISSION, weight=354)
+class CollectionsMenu(MenuItem):
+ """Collections menu"""
+
+ label = _("Collections...")
+ icon_class = 'fa-book'
+ url = '#collections.html'
+
+
+@pagelet_config(name='collections.html', context=ICollectionsTarget, layer=IPyAMSLayer,
+ permission=VIEW_SYSTEM_PERMISSION)
+@ajax_config(name='collections.json', context=ICollectionsTarget, layer=IPyAMSLayer,
+ permission=MANAGE_CONTENT_PERMISSION)
+@implementer(IWidgetForm, IInnerPage)
+class CollectionsEditForm(AdminEditForm):
+ """Collections edit form"""
+
+ legend = _("Content collections")
+
+ label_css_class = 'control-label hidden'
+ input_css_class = 'col-md-12'
+
+ fields = field.Fields(ICollectionsInfo)
+ fields['collections'].widgetFactory = ThesaurusTermsTreeFieldWidget
+
+ def __init__(self, context, request):
+ super(CollectionsEditForm, self).__init__(context, request)
+ target = get_parent(self.context, ICollectionsManagerTarget)
+ manager = ICollectionsManager(target)
+ self.thesaurus_name = manager.thesaurus_name
+ self.extract_name = manager.extract_name
+
+ def updateWidgets(self, prefix=None):
+ super(CollectionsEditForm, self).updateWidgets(prefix)
+ if 'collections' in self.widgets:
+ widget = self.widgets['collections']
+ target = get_parent(self.context, ICollectionsManagerTarget)
+ manager = ICollectionsManager(target)
+ widget.thesaurus_name = manager.thesaurus_name
+ widget.extract_name = manager.extract_name
+
+
+@adapter_config(context=(ICollectionsTarget, IAdminLayer, CollectionsEditForm), provides=IPageHeader)
+class CollectionsHeaderAdapter(WfSharedContentHeaderAdapter):
+ """Shared content collections header adapter"""
+
+ icon_class = 'fa fa-fw fa-book'