39 from pyams_content.component.paragraph import BaseParagraph |
39 from pyams_content.component.paragraph import BaseParagraph |
40 from pyams_content.shared.common.zmi import WfModifiedContentColumnMixin |
40 from pyams_content.shared.common.zmi import WfModifiedContentColumnMixin |
41 from pyams_content.skin import pyams_content |
41 from pyams_content.skin import pyams_content |
42 from pyams_form.security import ProtectedFormObjectMixin |
42 from pyams_form.security import ProtectedFormObjectMixin |
43 from pyams_pagelet.pagelet import pagelet_config |
43 from pyams_pagelet.pagelet import pagelet_config |
44 from pyams_skin.container import switch_element_visibility |
44 from pyams_skin.container import switch_element_visibility, switch_element_attribute |
45 from pyams_skin.page import DefaultPageHeaderAdapter |
45 from pyams_skin.page import DefaultPageHeaderAdapter |
46 from pyams_skin.table import BaseTable, I18nColumn, TrashColumn, SorterColumn, ImageColumn, \ |
46 from pyams_skin.table import BaseTable, I18nColumn, TrashColumn, SorterColumn, ImageColumn, \ |
47 VisibilitySwitcherColumn |
47 VisibilitySwitcherColumn |
48 from pyams_skin.viewlet.menu import MenuItem |
48 from pyams_skin.viewlet.menu import MenuItem |
49 from pyams_template.template import template_config |
49 from pyams_template.template import template_config |
106 'data-ams-location': absolute_url(IParagraphContainer(self.context), self.request), |
106 'data-ams-location': absolute_url(IParagraphContainer(self.context), self.request), |
107 'data-ams-pre-reload': 'PyAMS_content.paragraphs.preReload', |
107 'data-ams-pre-reload': 'PyAMS_content.paragraphs.preReload', |
108 'data-ams-post-reload': 'PyAMS_content.paragraphs.postReload', |
108 'data-ams-post-reload': 'PyAMS_content.paragraphs.postReload', |
109 'data-ams-tablednd-drag-handle': 'td.sorter', |
109 'data-ams-tablednd-drag-handle': 'td.sorter', |
110 'data-ams-tablednd-drop-target': 'set-paragraphs-order.json', |
110 'data-ams-tablednd-drop-target': 'set-paragraphs-order.json', |
111 'data-ams-visibility-switcher': 'switch-paragraph-visibility.json' |
111 'data-ams-visibility-switcher': 'switch-paragraph-visibility.json', |
|
112 'data-ams-anchor-switcher': 'switch-paragraph-anchor.json' |
112 }) |
113 }) |
113 return attributes |
114 return attributes |
114 |
115 |
115 |
116 |
116 class ParagraphContainerTable(ParagraphContainerBaseTable): |
117 class ParagraphContainerTable(ParagraphContainerBaseTable): |
181 def showhide_column_security_context_factory(column): |
182 def showhide_column_security_context_factory(column): |
182 """Show/hide column security context factory""" |
183 """Show/hide column security context factory""" |
183 return column.table.context |
184 return column.table.context |
184 |
185 |
185 |
186 |
|
187 @adapter_config(name='anchor', context=(IParagraphContainerTarget, IPyAMSLayer, ParagraphContainerBaseTable), |
|
188 provides=IColumn) |
|
189 class ParagraphContainerAnchorColumn(ProtectedFormObjectMixin, VisibilitySwitcherColumn): |
|
190 """Paragraphs container anchor switcher column""" |
|
191 |
|
192 switch_attribute = 'anchor' |
|
193 visible_icon_class = 'fa fa-fw fa-anchor' |
|
194 hidden_icon_class = 'fa fa-fw fa-anchor txt-color-silver opacity-50' |
|
195 |
|
196 icon_hint = _("Set navigation anchor") |
|
197 |
|
198 url = 'PyAMS_content.paragraphs.switchAnchor' |
|
199 weight = 6 |
|
200 |
|
201 |
|
202 @view_config(name='switch-paragraph-anchor.json', context=IParagraphContainer, request_type=IPyAMSLayer, |
|
203 permission=MANAGE_CONTENT_PERMISSION, renderer='json', xhr=True) |
|
204 def switch_paragraph_anchor(request): |
|
205 """Switch paragraph anchor""" |
|
206 return switch_element_attribute(request, IParagraphContainer, attribute_name='anchor') |
|
207 |
|
208 |
|
209 @adapter_config(context=ParagraphContainerAnchorColumn, provides=IFormSecurityContext) |
|
210 def anchor_column_security_context_factory(column): |
|
211 """Anchor column security context factory""" |
|
212 return column.table.context |
|
213 |
|
214 |
186 @adapter_config(name='pictogram', context=(IParagraphContainerTarget, IPyAMSLayer, ParagraphContainerBaseTable), |
215 @adapter_config(name='pictogram', context=(IParagraphContainerTarget, IPyAMSLayer, ParagraphContainerBaseTable), |
187 provides=IColumn) |
216 provides=IColumn) |
188 class ParagraphContainerPictogramColumn(ImageColumn): |
217 class ParagraphContainerPictogramColumn(ImageColumn): |
189 """Paragraph container pictogram column""" |
218 """Paragraph container pictogram column""" |
190 |
219 |
191 weight = 6 |
220 weight = 8 |
192 |
221 |
193 def get_icon_class(self, item): |
222 def get_icon_class(self, item): |
194 return item.icon_class |
223 return item.icon_class |
195 |
224 |
196 def get_icon_hint(self, item): |
225 def get_icon_hint(self, item): |