src/pyams_content/component/paragraph/zmi/container.py
changeset 844 36af332b6dd0
parent 677 d4d704d82df7
child 873 5f40601f9cb0
--- a/src/pyams_content/component/paragraph/zmi/container.py	Fri Jul 13 08:51:55 2018 +0200
+++ b/src/pyams_content/component/paragraph/zmi/container.py	Fri Jul 13 09:23:53 2018 +0200
@@ -41,7 +41,7 @@
 from pyams_content.skin import pyams_content
 from pyams_form.security import ProtectedFormObjectMixin
 from pyams_pagelet.pagelet import pagelet_config
-from pyams_skin.container import switch_element_visibility
+from pyams_skin.container import switch_element_visibility, switch_element_attribute
 from pyams_skin.page import DefaultPageHeaderAdapter
 from pyams_skin.table import BaseTable, I18nColumn, TrashColumn, SorterColumn, ImageColumn, \
     VisibilitySwitcherColumn
@@ -108,7 +108,8 @@
             'data-ams-post-reload': 'PyAMS_content.paragraphs.postReload',
             'data-ams-tablednd-drag-handle': 'td.sorter',
             'data-ams-tablednd-drop-target': 'set-paragraphs-order.json',
-            'data-ams-visibility-switcher': 'switch-paragraph-visibility.json'
+            'data-ams-visibility-switcher': 'switch-paragraph-visibility.json',
+            'data-ams-anchor-switcher': 'switch-paragraph-anchor.json'
         })
         return attributes
 
@@ -183,12 +184,40 @@
     return column.table.context
 
 
+@adapter_config(name='anchor', context=(IParagraphContainerTarget, IPyAMSLayer, ParagraphContainerBaseTable),
+                provides=IColumn)
+class ParagraphContainerAnchorColumn(ProtectedFormObjectMixin, VisibilitySwitcherColumn):
+    """Paragraphs container anchor switcher column"""
+
+    switch_attribute = 'anchor'
+    visible_icon_class = 'fa fa-fw fa-anchor'
+    hidden_icon_class = 'fa fa-fw fa-anchor txt-color-silver opacity-50'
+
+    icon_hint = _("Set navigation anchor")
+
+    url = 'PyAMS_content.paragraphs.switchAnchor'
+    weight = 6
+
+
+@view_config(name='switch-paragraph-anchor.json', context=IParagraphContainer, request_type=IPyAMSLayer,
+             permission=MANAGE_CONTENT_PERMISSION, renderer='json', xhr=True)
+def switch_paragraph_anchor(request):
+    """Switch paragraph anchor"""
+    return switch_element_attribute(request, IParagraphContainer, attribute_name='anchor')
+
+
+@adapter_config(context=ParagraphContainerAnchorColumn, provides=IFormSecurityContext)
+def anchor_column_security_context_factory(column):
+    """Anchor column security context factory"""
+    return column.table.context
+
+
 @adapter_config(name='pictogram', context=(IParagraphContainerTarget, IPyAMSLayer, ParagraphContainerBaseTable),
                 provides=IColumn)
 class ParagraphContainerPictogramColumn(ImageColumn):
     """Paragraph container pictogram column"""
 
-    weight = 6
+    weight = 8
 
     def get_icon_class(self, item):
         return item.icon_class