15 import json |
15 import json |
16 |
16 |
17 from pyramid.decorator import reify |
17 from pyramid.decorator import reify |
18 from pyramid.exceptions import NotFound |
18 from pyramid.exceptions import NotFound |
19 from pyramid.view import view_config |
19 from pyramid.view import view_config |
|
20 from z3c.form import field |
20 from z3c.table.interfaces import IColumn, IValues |
21 from z3c.table.interfaces import IColumn, IValues |
21 |
22 from zope.interface import implementer |
22 from pyams_content.features.share.interfaces import ISocialShareManager, ISocialShareManagerTarget |
23 from zope.schema import getFieldNamesInOrder |
|
24 |
|
25 from pyams_content import _ |
|
26 from pyams_content.features.share.interfaces import ISocialShareInfo, ISocialShareManager, ISocialShareManagerTarget |
|
27 from pyams_content.features.share.zmi.interfaces import ISocialShareMenu |
23 from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION |
28 from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION |
24 from pyams_content.zmi import pyams_content |
29 from pyams_content.zmi import pyams_content |
|
30 from pyams_form.form import ajax_config |
|
31 from pyams_form.group import NamedWidgetsGroup |
25 from pyams_pagelet.pagelet import pagelet_config |
32 from pyams_pagelet.pagelet import pagelet_config |
26 from pyams_skin.help import ContentHelp |
33 from pyams_skin.help import ContentHelp |
27 from pyams_skin.interfaces import IContentHelp, IPageHeader |
34 from pyams_skin.interfaces import IContentHelp, IPageHeader |
28 from pyams_skin.layer import IPyAMSLayer |
35 from pyams_skin.layer import IPyAMSLayer |
29 from pyams_skin.page import DefaultPageHeaderAdapter |
36 from pyams_skin.page import DefaultPageHeaderAdapter |
31 from pyams_skin.viewlet.menu import MenuItem |
38 from pyams_skin.viewlet.menu import MenuItem |
32 from pyams_utils.adapter import ContextRequestViewAdapter, adapter_config |
39 from pyams_utils.adapter import ContextRequestViewAdapter, adapter_config |
33 from pyams_utils.fanstatic import get_resource_path |
40 from pyams_utils.fanstatic import get_resource_path |
34 from pyams_utils.url import absolute_url |
41 from pyams_utils.url import absolute_url |
35 from pyams_viewlet.viewlet import viewlet_config |
42 from pyams_viewlet.viewlet import viewlet_config |
36 from pyams_zmi.interfaces.menu import IPropertiesMenu |
43 from pyams_zmi.form import AdminDialogEditForm |
|
44 from pyams_zmi.interfaces.menu import ISiteManagementMenu |
37 from pyams_zmi.layer import IAdminLayer |
45 from pyams_zmi.layer import IAdminLayer |
38 from pyams_zmi.view import ContainerAdminView |
46 from pyams_zmi.view import ContainerAdminView |
39 |
47 |
40 from pyams_content import _ |
|
41 |
|
42 |
48 |
43 @viewlet_config(name='social-share.menu', context=ISocialShareManagerTarget, layer=IPyAMSLayer, |
49 @viewlet_config(name='social-share.menu', context=ISocialShareManagerTarget, layer=IPyAMSLayer, |
44 manager=IPropertiesMenu, permission=MANAGE_SITE_ROOT_PERMISSION, weight=25) |
50 manager=ISiteManagementMenu, permission=MANAGE_SITE_ROOT_PERMISSION, weight=25) |
|
51 @implementer(ISocialShareMenu) |
45 class SocialShareMenu(MenuItem): |
52 class SocialShareMenu(MenuItem): |
46 """Social network share menu""" |
53 """Social network share menu""" |
47 |
54 |
48 label = _("Network shares...") |
55 label = _("Network shares...") |
49 icon_class = 'fa-share-alt' |
56 icon_class = 'fa-share-alt' |
182 message = _("""Social networks share items are used to define share options available on your contents. |
189 message = _("""Social networks share items are used to define share options available on your contents. |
183 |
190 |
184 **WARNING**: don't forget to include a toolbox in your presentation template to display social networks shares!! |
191 **WARNING**: don't forget to include a toolbox in your presentation template to display social networks shares!! |
185 """) |
192 """) |
186 message_format = 'rest' |
193 message_format = 'rest' |
|
194 |
|
195 |
|
196 # |
|
197 # General social share info |
|
198 # |
|
199 |
|
200 @viewlet_config(name='social-share-info.menu', context=ISocialShareManagerTarget, layer=IPyAMSLayer, |
|
201 manager=ISocialShareMenu, permission=MANAGE_SITE_ROOT_PERMISSION, weight=10) |
|
202 class SocialShareInfoMenu(MenuItem): |
|
203 """Social share info menu""" |
|
204 |
|
205 label = _("Social networks info...") |
|
206 icon_class = 'fa-twitter' |
|
207 url = 'social-share-info.html' |
|
208 modal_target = True |
|
209 |
|
210 |
|
211 @pagelet_config(name='social-share-info.html', context=ISocialShareManagerTarget, layer=IPyAMSLayer, |
|
212 permission=MANAGE_SITE_ROOT_PERMISSION) |
|
213 @ajax_config(name='social-share-info.json', context=ISocialShareManagerTarget, layer=IPyAMSLayer) |
|
214 class SocialShareInfoEditForm(AdminDialogEditForm): |
|
215 """Social share info properties edit form""" |
|
216 |
|
217 legend = _("Edit social networks properties") |
|
218 |
|
219 fields = field.Fields(ISocialShareInfo) |
|
220 |
|
221 label_css_class = 'control-label col-md-4' |
|
222 input_css_class = 'col-md-8' |
|
223 |
|
224 def updateGroups(self): |
|
225 self.add_group(NamedWidgetsGroup(self, 'twitter', self.widgets, |
|
226 getFieldNamesInOrder(ISocialShareInfo), |
|
227 legend=_("Twitter account"), |
|
228 css_class='inner')) |
|
229 super(SocialShareInfoEditForm, self).updateGroups() |