src/pyams_content/component/theme/zmi/manager.py
changeset 800 2b5460ecb254
parent 591 b694d5667d17
child 829 f933926ed0a1
--- a/src/pyams_content/component/theme/zmi/manager.py	Thu Jul 05 08:48:47 2018 +0200
+++ b/src/pyams_content/component/theme/zmi/manager.py	Thu Jul 05 08:53:43 2018 +0200
@@ -16,8 +16,9 @@
 # import standard library
 
 # import interfaces
-from pyams_content.component.theme.interfaces import IThemesManagerTarget, IThemesManager
-from pyams_content.interfaces import MANAGE_TOOL_PERMISSION
+from pyams_content.component.theme.interfaces import ITagsManagerTarget, ITagsManager, IThemesManagerTarget, \
+    IThemesManager
+from pyams_content.interfaces import MANAGE_TOOL_PERMISSION, MANAGE_SITE_ROOT_PERMISSION
 from pyams_skin.layer import IPyAMSLayer
 from pyams_utils.interfaces.data import IObjectData
 from pyams_zmi.interfaces.menu import IPropertiesMenu
@@ -37,8 +38,59 @@
 from pyams_content import _
 
 
+#
+# Tags management view
+#
+
+@viewlet_config(name='tags-manager.menu', context=ITagsManagerTarget, layer=IAdminLayer,
+                manager=IPropertiesMenu, permission=MANAGE_SITE_ROOT_PERMISSION, weight=40)
+class TagsManagerMenu(MenuItem):
+    """Tags menu"""
+
+    label = _("Tags settings...")
+    icon_class = 'fa-tag'
+    url = 'tags.html'
+    modal_target = True
+
+
+@pagelet_config(name='tags.html', context=ITagsManagerTarget, layer=IPyAMSLayer,
+                permission=MANAGE_TOOL_PERMISSION)
+@ajax_config(name='tags.json', context=ITagsManagerTarget, layer=IPyAMSLayer)
+class TagsManagerEditForm(AdminDialogEditForm):
+    """Tags manager edit form"""
+
+    prefix = 'manager_tags.'
+
+    legend = _("Selected tags")
+
+    fields = field.Fields(ITagsManager)
+    edit_permission = MANAGE_SITE_ROOT_PERMISSION
+
+    def updateWidgets(self, prefix=None):
+        super(TagsManagerEditForm, self).updateWidgets(prefix)
+        widget = self.widgets['thesaurus_name']
+        widget.object_data = {
+            'ams-plugins': 'pyams_content',
+            'ams-plugin-pyams_content-src': get_resource_path(pyams_content),
+            'ams-plugin-pyams_content-callback': 'PyAMS_content.themes.initExtracts',
+            'ams-plugin-pyams_content-async': 'false'
+        }
+        alsoProvides(widget, IObjectData)
+        widget = self.widgets['extract_name']
+        widget.object_data = {
+            'ams-events-handlers': {
+                'select2-open': 'PyAMS_content.themes.getExtracts'
+            }
+        }
+        alsoProvides(widget, IObjectData)
+
+
+#
+# Themes management view
+#
+
 @viewlet_config(name='themes-manager.menu', context=IThemesManagerTarget, layer=IAdminLayer,
-                manager=IPropertiesMenu, permission=MANAGE_TOOL_PERMISSION, weight=40)
+                manager=IPropertiesMenu, permission=MANAGE_TOOL_PERMISSION, weight=41)
 class ThemesManagerMenu(MenuItem):
     """Themes menu"""
 
@@ -54,7 +106,7 @@
 class ThemesManagerEditForm(AdminDialogEditForm):
     """Themes manager edit form"""
 
-    prefix = 'manager_themes.'
+    prefix = 'manager_tags.'
 
     legend = _("Selected themes")
 
@@ -63,12 +115,18 @@
 
     def updateWidgets(self, prefix=None):
         super(ThemesManagerEditForm, self).updateWidgets(prefix)
-        if 'extract_name' in self.widgets:
-            widget = self.widgets['extract_name']
-            widget.object_data = {
-                'ams-plugins': 'pyams_content',
-                'ams-plugin-pyams_content-src': get_resource_path(pyams_content),
-                'ams-plugin-pyams_content-callback': 'PyAMS_content.themes.initExtracts',
-                'ams-plugin-pyams_content-async': 'false'
+        widget = self.widgets['thesaurus_name']
+        widget.object_data = {
+            'ams-plugins': 'pyams_content',
+            'ams-plugin-pyams_content-src': get_resource_path(pyams_content),
+            'ams-plugin-pyams_content-callback': 'PyAMS_content.themes.initExtracts',
+            'ams-plugin-pyams_content-async': 'false'
+        }
+        alsoProvides(widget, IObjectData)
+        widget = self.widgets['extract_name']
+        widget.object_data = {
+            'ams-events-handlers': {
+                'select2-open': 'PyAMS_content.themes.getExtracts'
             }
-            alsoProvides(widget, IObjectData)
+        }
+        alsoProvides(widget, IObjectData)