src/pyams_content/features/share/zmi/container.py
changeset 1239 b6d9396beffd
parent 1138 6de2ab88b4fe
child 1247 2b1abe98ff47
--- a/src/pyams_content/features/share/zmi/container.py	Wed Jan 16 15:55:23 2019 +0100
+++ b/src/pyams_content/features/share/zmi/container.py	Wed Jan 16 19:10:46 2019 +0100
@@ -17,11 +17,18 @@
 from pyramid.decorator import reify
 from pyramid.exceptions import NotFound
 from pyramid.view import view_config
+from z3c.form import field
 from z3c.table.interfaces import IColumn, IValues
+from zope.interface import implementer
+from zope.schema import getFieldNamesInOrder
 
-from pyams_content.features.share.interfaces import ISocialShareManager, ISocialShareManagerTarget
+from pyams_content import _
+from pyams_content.features.share.interfaces import ISocialShareInfo, ISocialShareManager, ISocialShareManagerTarget
+from pyams_content.features.share.zmi.interfaces import ISocialShareMenu
 from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION
 from pyams_content.zmi import pyams_content
+from pyams_form.form import ajax_config
+from pyams_form.group import NamedWidgetsGroup
 from pyams_pagelet.pagelet import pagelet_config
 from pyams_skin.help import ContentHelp
 from pyams_skin.interfaces import IContentHelp, IPageHeader
@@ -33,15 +40,15 @@
 from pyams_utils.fanstatic import get_resource_path
 from pyams_utils.url import absolute_url
 from pyams_viewlet.viewlet import viewlet_config
-from pyams_zmi.interfaces.menu import IPropertiesMenu
+from pyams_zmi.form import AdminDialogEditForm
+from pyams_zmi.interfaces.menu import ISiteManagementMenu
 from pyams_zmi.layer import IAdminLayer
 from pyams_zmi.view import ContainerAdminView
 
-from pyams_content import _
-
 
 @viewlet_config(name='social-share.menu', context=ISocialShareManagerTarget, layer=IPyAMSLayer,
-                manager=IPropertiesMenu, permission=MANAGE_SITE_ROOT_PERMISSION, weight=25)
+                manager=ISiteManagementMenu, permission=MANAGE_SITE_ROOT_PERMISSION, weight=25)
+@implementer(ISocialShareMenu)
 class SocialShareMenu(MenuItem):
     """Social network share menu"""
 
@@ -184,3 +191,39 @@
 **WARNING**: don't forget to include a toolbox in your presentation template to display social networks shares!!
 """)
     message_format = 'rest'
+
+
+#
+# General social share info
+#
+
+@viewlet_config(name='social-share-info.menu', context=ISocialShareManagerTarget, layer=IPyAMSLayer,
+                manager=ISocialShareMenu, permission=MANAGE_SITE_ROOT_PERMISSION, weight=10)
+class SocialShareInfoMenu(MenuItem):
+    """Social share info menu"""
+
+    label = _("Social networks info...")
+    icon_class = 'fa-twitter'
+    url = 'social-share-info.html'
+    modal_target = True
+
+
+@pagelet_config(name='social-share-info.html', context=ISocialShareManagerTarget, layer=IPyAMSLayer,
+                permission=MANAGE_SITE_ROOT_PERMISSION)
+@ajax_config(name='social-share-info.json', context=ISocialShareManagerTarget, layer=IPyAMSLayer)
+class SocialShareInfoEditForm(AdminDialogEditForm):
+    """Social share info properties edit form"""
+
+    legend = _("Edit social networks properties")
+
+    fields = field.Fields(ISocialShareInfo)
+
+    label_css_class = 'control-label col-md-4'
+    input_css_class = 'col-md-8'
+
+    def updateGroups(self):
+        self.add_group(NamedWidgetsGroup(self, 'twitter', self.widgets,
+                                         getFieldNamesInOrder(ISocialShareInfo),
+                                         legend=_("Twitter account"),
+                                         css_class='inner'))
+        super(SocialShareInfoEditForm, self).updateGroups()