# HG changeset patch # User Thierry Florac # Date 1507876183 -7200 # Node ID 533d8603d145e8d7235bc524e8575150349af295 # Parent fd2f6aaa2478f9d68fa398c1d22acca26cca7a59 Added count marker base interface diff -r fd2f6aaa2478 -r 533d8603d145 src/pyams_content/component/paragraph/zmi/container.py --- a/src/pyams_content/component/paragraph/zmi/container.py Fri Oct 13 08:29:05 2017 +0200 +++ b/src/pyams_content/component/paragraph/zmi/container.py Fri Oct 13 08:29:43 2017 +0200 @@ -9,7 +9,6 @@ # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS # FOR A PARTICULAR PURPOSE. # -from pyams_skin.interfaces.container import ITableElementEditor __docformat__ = 'restructuredtext' @@ -20,13 +19,13 @@ # import interfaces from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION from pyams_content.component.association.interfaces import IAssociationContainer -from pyams_content.component.extfile.interfaces import IExtFileContainerTarget, IExtFile -from pyams_content.component.links.interfaces import ILinkContainerTarget, IBaseLink from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, IParagraphContainer, IBaseParagraph -from pyams_content.component.paragraph.zmi.interfaces import IParagraphInnerEditor, IParagraphTitleToolbar +from pyams_content.component.paragraph.zmi.interfaces import IParagraphInnerEditor, IParagraphTitleToolbar, \ + IParagraphContainerTable from pyams_form.interfaces.form import IFormSecurityContext from pyams_i18n.interfaces import II18n from pyams_skin.interfaces import IInnerPage, IPageHeader +from pyams_skin.interfaces.container import ITableElementEditor from pyams_skin.layer import IPyAMSLayer from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION from pyams_zmi.interfaces.menu import IPropertiesMenu @@ -71,6 +70,7 @@ # Paragraphs container view # +@implementer(IParagraphContainerTable) class ParagraphContainerTable(ProtectedFormObjectMixin, BaseTable): """Paragraphs container table""" @@ -94,6 +94,8 @@ 'data-ams-plugin-pyams_content-src': '/--static--/pyams_content/js/pyams_content{MyAMS.devext}.js', 'data-ams-location': absolute_url(IParagraphContainer(self.context), self.request), + 'data-ams-pre-reload': 'PyAMS_content.paragraphs.preReload', + 'data-ams-post-reload': 'PyAMS_content.paragraphs.postReload', 'data-ams-tablednd-drag-handle': 'td.sorter', 'data-ams-tablednd-drop-target': 'set-paragraphs-order.json'} return attributes @@ -235,6 +237,14 @@ return II18n(obj).query_attribute('title', request=self.request) or ' - - - - - - - -' +@template_config(template='templates/paragraph-title-icon.pt', layer=IPyAMSLayer) +class ParagraphContainerCounterBase(Viewlet): + """Paragraph container base counter viewlet""" + + weight = 0 + count = None + + @adapter_config(name='trash', context=(IParagraphContainerTarget, IPyAMSLayer, ParagraphContainerTable), provides=IColumn) class ParagraphContainerTrashColumn(ProtectedFormObjectMixin, TrashColumn): @@ -258,38 +268,6 @@ icon_class = 'fa fa-fw fa-paragraph' -@viewlet_config(name='links', context=ILinkContainerTarget, layer=IPyAMSLayer, view=ParagraphContainerTable, - manager=IParagraphTitleToolbar, permission=VIEW_SYSTEM_PERMISSION, weight=10) -@template_config(template='templates/paragraph-title-icon.pt', layer=IPyAMSLayer) -class ParagraphContainerLinksCounter(Viewlet): - """Paragraph container external links count column""" - - action_class = 'action links nowrap width-40' - icon_class = 'fa fa-fw fa-link' - icon_hint = _("Links") - - @property - def count(self): - return len([file for file in IAssociationContainer(self.context).values() - if IBaseLink.providedBy(file)]) - - -@viewlet_config(name='files', context=IExtFileContainerTarget, layer=IPyAMSLayer, view=ParagraphContainerTable, - manager=IParagraphTitleToolbar, permission=VIEW_SYSTEM_PERMISSION, weight=10) -@template_config(template='templates/paragraph-title-icon.pt', layer=IPyAMSLayer) -class ParagraphContainerExtFileCounter(Viewlet): - """Paragraph container external files count column""" - - action_class = 'action extfiles nowrap width-40' - icon_class = 'fa fa-fw fa-file-text-o' - icon_hint = _("External files") - - @property - def count(self): - return len([file for file in IAssociationContainer(self.context).values() - if IExtFile.providedBy(file)]) - - @view_config(name='set-paragraphs-order.json', context=IParagraphContainer, request_type=IPyAMSLayer, permission=MANAGE_CONTENT_PERMISSION, renderer='json', xhr=True) def set_paragraphs_order(request):