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.form import field |
21 from z3c.table.interfaces import IColumn, IValues |
21 from z3c.table.interfaces import IColumn, IValues |
22 from zope.interface import implementer |
22 from zope.interface import implementer |
23 from zope.schema import getFieldNamesInOrder |
|
24 |
23 |
25 from pyams_content import _ |
24 from pyams_content import _ |
26 from pyams_content.features.share.interfaces import ISocialShareInfo, ISocialShareManager, ISocialShareManagerTarget |
25 from pyams_content.features.share.interfaces import ISocialShareInfo, ISocialShareManager, \ |
|
26 ISocialShareManagerTarget |
27 from pyams_content.features.share.zmi.interfaces import ISocialShareMenu |
27 from pyams_content.features.share.zmi.interfaces import ISocialShareMenu |
28 from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION |
28 from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION |
29 from pyams_content.zmi import pyams_content |
29 from pyams_content.zmi import pyams_content |
30 from pyams_form.form import ajax_config |
30 from pyams_form.form import ajax_config |
31 from pyams_form.group import NamedWidgetsGroup |
31 from pyams_form.group import NamedWidgetsGroup |
32 from pyams_pagelet.pagelet import pagelet_config |
32 from pyams_pagelet.pagelet import pagelet_config |
33 from pyams_skin.help import ContentHelp |
33 from pyams_skin.help import ContentHelp |
34 from pyams_skin.interfaces import IContentHelp, IPageHeader |
34 from pyams_skin.interfaces import IContentHelp, IPageHeader |
35 from pyams_skin.layer import IPyAMSLayer |
35 from pyams_skin.layer import IPyAMSLayer |
36 from pyams_skin.page import DefaultPageHeaderAdapter |
36 from pyams_skin.page import DefaultPageHeaderAdapter |
37 from pyams_skin.table import AttributeSwitcherColumn, BaseTable, I18nColumn, I18nValueColumn, SorterColumn, TrashColumn |
37 from pyams_skin.table import AttributeSwitcherColumn, BaseTable, I18nColumn, I18nValueColumn, \ |
|
38 SorterColumn, TrashColumn |
38 from pyams_skin.viewlet.menu import MenuItem |
39 from pyams_skin.viewlet.menu import MenuItem |
39 from pyams_utils.adapter import ContextRequestViewAdapter, adapter_config |
40 from pyams_utils.adapter import ContextRequestViewAdapter, adapter_config |
40 from pyams_utils.fanstatic import get_resource_path |
41 from pyams_utils.fanstatic import get_resource_path |
41 from pyams_utils.url import absolute_url |
42 from pyams_utils.url import absolute_url |
42 from pyams_viewlet.viewlet import viewlet_config |
43 from pyams_viewlet.viewlet import viewlet_config |
94 translate = self.request.localizer.translate |
95 translate = self.request.localizer.translate |
95 return translate(_("No currently defined social network share item.")) |
96 return translate(_("No currently defined social network share item.")) |
96 return super(SocialShareContainerTable, self).render() |
97 return super(SocialShareContainerTable, self).render() |
97 |
98 |
98 |
99 |
99 @adapter_config(context=(ISocialShareManagerTarget, IPyAMSLayer, SocialShareContainerTable), provides=IValues) |
100 @adapter_config(context=(ISocialShareManagerTarget, IPyAMSLayer, SocialShareContainerTable), |
|
101 provides=IValues) |
100 class SocialShareContainerValues(ContextRequestViewAdapter): |
102 class SocialShareContainerValues(ContextRequestViewAdapter): |
101 """Social network share items container values""" |
103 """Social network share items container values""" |
102 |
104 |
103 @property |
105 @property |
104 def values(self): |
106 def values(self): |
105 return ISocialShareManager(self.context).values() |
107 return ISocialShareManager(self.context).values() |
106 |
108 |
107 |
109 |
108 @adapter_config(name='sorter', context=(ISocialShareManagerTarget, IPyAMSLayer, SocialShareContainerTable), |
110 @adapter_config(name='sorter', |
|
111 context=(ISocialShareManagerTarget, IPyAMSLayer, SocialShareContainerTable), |
109 provides=IColumn) |
112 provides=IColumn) |
110 class SocialShareContainerSorterColumn(SorterColumn): |
113 class SocialShareContainerSorterColumn(SorterColumn): |
111 """Social network share items container sorter column""" |
114 """Social network share items container sorter column""" |
112 |
115 |
113 |
116 |
114 @view_config(name='set-social-items-order.json', context=ISocialShareManager, request_type=IPyAMSLayer, |
117 @view_config(name='set-social-items-order.json', context=ISocialShareManager, |
115 permission=MANAGE_SITE_ROOT_PERMISSION, renderer='json', xhr=True) |
118 request_type=IPyAMSLayer, permission=MANAGE_SITE_ROOT_PERMISSION, |
|
119 renderer='json', xhr=True) |
116 def set_social_items_order(request): |
120 def set_social_items_order(request): |
117 """Update social network share items order""" |
121 """Update social network share items order""" |
118 order = list(map(str, json.loads(request.params.get('names')))) |
122 order = list(map(str, json.loads(request.params.get('names')))) |
119 request.context.updateOrder(order) |
123 request.context.updateOrder(order) |
120 return {'status': 'success'} |
124 return {'status': 'success'} |
121 |
125 |
122 |
126 |
123 @adapter_config(name='enable-disable', context=(ISocialShareManagerTarget, IPyAMSLayer, SocialShareContainerTable), |
127 @adapter_config(name='enable-disable', |
|
128 context=(ISocialShareManagerTarget, IPyAMSLayer, SocialShareContainerTable), |
124 provides=IColumn) |
129 provides=IColumn) |
125 class SocialShareContainerEnablerColumn(AttributeSwitcherColumn): |
130 class SocialShareContainerEnablerColumn(AttributeSwitcherColumn): |
126 """Social network share items container enabler switcher column""" |
131 """Social network share items container enabler switcher column""" |
127 |
132 |
128 switch_attribute = 'active' |
133 switch_attribute = 'active' |
133 icon_hint = _("Enable/disable item") |
138 icon_hint = _("Enable/disable item") |
134 |
139 |
135 weight = 6 |
140 weight = 6 |
136 |
141 |
137 |
142 |
138 @view_config(name='switch-item-activity.json', context=ISocialShareManager, request_type=IPyAMSLayer, |
143 @view_config(name='switch-item-activity.json', context=ISocialShareManager, |
139 permission=MANAGE_SITE_ROOT_PERMISSION, renderer='json', xhr=True) |
144 request_type=IPyAMSLayer, permission=MANAGE_SITE_ROOT_PERMISSION, |
|
145 renderer='json', xhr=True) |
140 def switch_social_item_activity(request): |
146 def switch_social_item_activity(request): |
141 """Switch social item activity""" |
147 """Switch social item activity""" |
142 container = ISocialShareManager(request.context) |
148 container = ISocialShareManager(request.context) |
143 item = container.get(str(request.params.get('object_name'))) |
149 item = container.get(str(request.params.get('object_name'))) |
144 if item is None: |
150 if item is None: |
145 raise NotFound() |
151 raise NotFound() |
146 item.active = not item.active |
152 item.active = not item.active |
147 return {'on': item.active} |
153 return { |
148 |
154 'status': 'success', |
149 |
155 'on': item.active |
150 @adapter_config(name='name', context=(ISocialShareManagerTarget, IPyAMSLayer, SocialShareContainerTable), |
156 } |
|
157 |
|
158 |
|
159 @adapter_config(name='name', |
|
160 context=(ISocialShareManagerTarget, IPyAMSLayer, SocialShareContainerTable), |
151 provides=IColumn) |
161 provides=IColumn) |
152 class SocialShareContainerNameColumn(I18nColumn, I18nValueColumn): |
162 class SocialShareContainerNameColumn(I18nColumn, I18nValueColumn): |
153 """Social network share items container name column""" |
163 """Social network share items container name column""" |
154 |
164 |
155 _header = _("Label") |
165 _header = _("Label") |
156 attrName = 'label' |
166 attrName = 'label' |
157 weight = 10 |
167 weight = 10 |
158 |
168 |
159 |
169 |
160 @adapter_config(name='trash', context=(ISocialShareManagerTarget, IPyAMSLayer, SocialShareContainerTable), |
170 @adapter_config(name='trash', |
|
171 context=(ISocialShareManagerTarget, IPyAMSLayer, SocialShareContainerTable), |
161 provides=IColumn) |
172 provides=IColumn) |
162 class SocialShareContainerTrashColumn(TrashColumn): |
173 class SocialShareContainerTrashColumn(TrashColumn): |
163 """Social network share items container trash column""" |
174 """Social network share items container trash column""" |
164 |
175 |
165 permission = MANAGE_SITE_ROOT_PERMISSION |
176 permission = MANAGE_SITE_ROOT_PERMISSION |
172 |
183 |
173 title = _("Social networks share") |
184 title = _("Social networks share") |
174 table_class = SocialShareContainerTable |
185 table_class = SocialShareContainerTable |
175 |
186 |
176 |
187 |
177 @adapter_config(context=(ISocialShareManagerTarget, IAdminLayer, SocialShareContainerView), provides=IPageHeader) |
188 @adapter_config(context=(ISocialShareManagerTarget, IAdminLayer, SocialShareContainerView), |
|
189 provides=IPageHeader) |
178 class SocialShareContainerViewHeaderAdapter(DefaultPageHeaderAdapter): |
190 class SocialShareContainerViewHeaderAdapter(DefaultPageHeaderAdapter): |
179 """Social network share items container view header adapter""" |
191 """Social network share items container view header adapter""" |
180 |
192 |
181 icon_class = 'fa fa-fw fa-share-alt' |
193 icon_class = 'fa fa-fw fa-share-alt' |
182 |
194 |
183 |
195 |
184 @adapter_config(context=(ISocialShareManagerTarget, IAdminLayer, SocialShareContainerView), provides=IContentHelp) |
196 @adapter_config(context=(ISocialShareManagerTarget, IAdminLayer, SocialShareContainerView), |
|
197 provides=IContentHelp) |
185 class SocialShareContainerHelpAdapter(ContentHelp): |
198 class SocialShareContainerHelpAdapter(ContentHelp): |
186 """Social network share items container help adapter""" |
199 """Social network share items container help adapter""" |
187 |
200 |
188 header = _("Social networks share") |
201 header = _("Social networks share") |
189 message = _("""Social networks share items are used to define share options available on your contents. |
202 message = _("""Social networks share items are used to define share options available on your contents. |
195 |
208 |
196 # |
209 # |
197 # General social share info |
210 # General social share info |
198 # |
211 # |
199 |
212 |
200 @viewlet_config(name='social-share-info.menu', context=ISocialShareManagerTarget, layer=IPyAMSLayer, |
213 @viewlet_config(name='social-share-info.menu', context=ISocialShareManagerTarget, |
201 manager=ISocialShareMenu, permission=MANAGE_SITE_ROOT_PERMISSION, weight=10) |
214 layer=IPyAMSLayer, manager=ISocialShareMenu, |
|
215 permission=MANAGE_SITE_ROOT_PERMISSION, weight=10) |
202 class SocialShareInfoMenu(MenuItem): |
216 class SocialShareInfoMenu(MenuItem): |
203 """Social share info menu""" |
217 """Social share info menu""" |
204 |
218 |
205 label = _("Social networks info...") |
219 label = _("Social networks info...") |
206 icon_class = 'fa-twitter' |
220 icon_class = 'fa-twitter' |
207 url = 'social-share-info.html' |
221 url = 'social-share-info.html' |
208 modal_target = True |
222 modal_target = True |
209 |
223 |
210 |
224 |
211 @pagelet_config(name='social-share-info.html', context=ISocialShareManagerTarget, layer=IPyAMSLayer, |
225 @pagelet_config(name='social-share-info.html', context=ISocialShareManagerTarget, |
212 permission=MANAGE_SITE_ROOT_PERMISSION) |
226 layer=IPyAMSLayer, permission=MANAGE_SITE_ROOT_PERMISSION) |
213 @ajax_config(name='social-share-info.json', context=ISocialShareManagerTarget, layer=IPyAMSLayer) |
227 @ajax_config(name='social-share-info.json', context=ISocialShareManagerTarget, layer=IPyAMSLayer) |
214 class SocialShareInfoEditForm(AdminDialogEditForm): |
228 class SocialShareInfoEditForm(AdminDialogEditForm): |
215 """Social share info properties edit form""" |
229 """Social share info properties edit form""" |
216 |
230 |
217 legend = _("Edit social networks properties") |
231 legend = _("Edit social networks properties") |