7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED |
7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED |
8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS |
9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS |
10 # FOR A PARTICULAR PURPOSE. |
10 # FOR A PARTICULAR PURPOSE. |
11 # |
11 # |
12 |
|
13 __docformat__ = 'restructuredtext' |
|
14 |
12 |
15 import json |
13 import json |
16 |
14 |
17 from pyramid.decorator import reify |
15 from pyramid.decorator import reify |
18 from pyramid.exceptions import NotFound |
16 from pyramid.exceptions import NotFound |
24 from zope.interface import Interface, implementer |
22 from zope.interface import Interface, implementer |
25 |
23 |
26 from pyams_content.component.association.interfaces import IAssociationContainer |
24 from pyams_content.component.association.interfaces import IAssociationContainer |
27 from pyams_content.component.association.zmi import AssociationsContainerView |
25 from pyams_content.component.association.zmi import AssociationsContainerView |
28 from pyams_content.component.paragraph import BaseParagraph, IParagraphTitle |
26 from pyams_content.component.paragraph import BaseParagraph, IParagraphTitle |
29 from pyams_content.component.paragraph.interfaces import IBaseParagraph, IParagraphContainer, IParagraphContainerTarget, \ |
27 from pyams_content.component.paragraph.interfaces import IBaseParagraph, IParagraphContainer, \ |
30 IParagraphFactorySettings |
28 IParagraphContainerTarget, IParagraphFactorySettings |
31 from pyams_content.component.paragraph.zmi.interfaces import IParagraphContainerTable, IParagraphContainerView, \ |
29 from pyams_content.component.paragraph.zmi.interfaces import IParagraphContainerTable, \ |
32 IParagraphInnerEditor, IParagraphTitleToolbar |
30 IParagraphContainerView, IParagraphInnerEditor, IParagraphTitleToolbar |
33 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION |
31 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION |
34 from pyams_content.shared.common.zmi import WfModifiedContentColumnMixin |
32 from pyams_content.shared.common.zmi import WfModifiedContentColumnMixin |
35 from pyams_content.zmi import pyams_content |
33 from pyams_content.zmi import pyams_content |
36 from pyams_form.interfaces.form import IFormSecurityContext, IInnerSubForm |
34 from pyams_form.interfaces.form import IFormSecurityContext, IInnerSubForm |
37 from pyams_form.security import ProtectedFormObjectMixin |
35 from pyams_form.security import ProtectedFormObjectMixin |
40 from pyams_skin.container import switch_element_attribute, switch_element_visibility |
38 from pyams_skin.container import switch_element_attribute, switch_element_visibility |
41 from pyams_skin.interfaces import IInnerPage, IPageHeader |
39 from pyams_skin.interfaces import IInnerPage, IPageHeader |
42 from pyams_skin.interfaces.container import ITableElementEditor |
40 from pyams_skin.interfaces.container import ITableElementEditor |
43 from pyams_skin.layer import IPyAMSLayer |
41 from pyams_skin.layer import IPyAMSLayer |
44 from pyams_skin.page import DefaultPageHeaderAdapter |
42 from pyams_skin.page import DefaultPageHeaderAdapter |
45 from pyams_skin.table import AttributeSwitcherColumn, BaseTable, I18nColumn, ImageColumn, SorterColumn, TrashColumn, \ |
43 from pyams_skin.table import AttributeSwitcherColumn, BaseTable, I18nColumn, ImageColumn, \ |
46 VisibilitySwitcherColumn |
44 SorterColumn, TrashColumn, VisibilitySwitcherColumn |
47 from pyams_skin.viewlet.menu import MenuItem |
45 from pyams_skin.viewlet.menu import MenuItem |
48 from pyams_template.template import template_config |
46 from pyams_template.template import template_config |
49 from pyams_utils.adapter import ContextRequestViewAdapter, NullAdapter, adapter_config |
47 from pyams_utils.adapter import ContextRequestViewAdapter, NullAdapter, adapter_config |
50 from pyams_utils.fanstatic import get_resource_path |
48 from pyams_utils.fanstatic import get_resource_path |
51 from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION |
49 from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION |
52 from pyams_utils.traversing import get_parent |
50 from pyams_utils.traversing import get_parent |
53 from pyams_utils.url import absolute_url |
51 from pyams_utils.url import absolute_url |
54 from pyams_viewlet.manager import TemplateBasedViewletManager, WeightOrderedViewletManager, viewletmanager_config |
52 from pyams_viewlet.manager import TemplateBasedViewletManager, WeightOrderedViewletManager, \ |
|
53 viewletmanager_config |
55 from pyams_viewlet.viewlet import Viewlet, viewlet_config |
54 from pyams_viewlet.viewlet import Viewlet, viewlet_config |
56 from pyams_zmi.form import AdminDialogDisplayForm |
55 from pyams_zmi.form import AdminDialogDisplayForm |
57 from pyams_zmi.interfaces.menu import IPropertiesMenu |
56 from pyams_zmi.interfaces.menu import IPropertiesMenu |
58 from pyams_zmi.layer import IAdminLayer |
57 from pyams_zmi.layer import IAdminLayer |
59 from pyams_zmi.view import AdminView, ContainerAdminView |
58 from pyams_zmi.view import AdminView, ContainerAdminView |
60 from pyams_zmi.zmi.table import InnerTableView |
59 from pyams_zmi.zmi.table import InnerTableView |
61 |
60 |
|
61 |
|
62 __docformat__ = 'restructuredtext' |
|
63 |
62 from pyams_content import _ |
64 from pyams_content import _ |
63 |
65 |
64 |
66 |
65 @viewlet_config(name='paragraphs.menu', context=IParagraphContainerTarget, layer=IAdminLayer, |
67 @viewlet_config(name='paragraphs.menu', context=IParagraphContainerTarget, layer=IAdminLayer, |
66 manager=IPropertiesMenu, permission=VIEW_SYSTEM_PERMISSION, weight=50) |
68 manager=IPropertiesMenu, permission=VIEW_SYSTEM_PERMISSION, weight=100) |
67 class ParagraphsContainerMenu(MenuItem): |
69 class ParagraphsContainerMenu(MenuItem): |
68 """Paragraphs container menu""" |
70 """Paragraphs container menu""" |
69 |
71 |
70 label = _("Contents...") |
72 label = _("Contents...") |
71 icon_class = 'fa-paragraph' |
73 icon_class = 'fa-paragraph' |
403 # |
405 # |
404 # Paragraphs associations view |
406 # Paragraphs associations view |
405 # |
407 # |
406 |
408 |
407 @viewlet_config(name='paragraphs-associations.menu', context=IParagraphContainerTarget, layer=IAdminLayer, |
409 @viewlet_config(name='paragraphs-associations.menu', context=IParagraphContainerTarget, layer=IAdminLayer, |
408 manager=IPropertiesMenu, permission=VIEW_SYSTEM_PERMISSION, weight=60) |
410 manager=IPropertiesMenu, permission=VIEW_SYSTEM_PERMISSION, weight=110) |
409 class ParagraphsAssociationsMenu(MenuItem): |
411 class ParagraphsAssociationsMenu(MenuItem): |
410 """Paragraphs associations container menu""" |
412 """Paragraphs associations container menu""" |
411 |
413 |
412 label = _("Links and attachments...") |
414 label = _("Links and attachments...") |
413 icon_class = 'fa-link' |
415 icon_class = 'fa-link' |