src/pyams_content/component/paragraph/zmi/container.py
changeset 844 36af332b6dd0
parent 677 d4d704d82df7
child 873 5f40601f9cb0
equal deleted inserted replaced
843:11e06690bc32 844:36af332b6dd0
    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):