17 import json |
17 import json |
18 |
18 |
19 # import interfaces |
19 # import interfaces |
20 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION |
20 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION |
21 from pyams_content.component.association.interfaces import IAssociationContainer |
21 from pyams_content.component.association.interfaces import IAssociationContainer |
22 from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, IParagraphContainer, IBaseParagraph |
22 from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, IParagraphContainer, IBaseParagraph, \ |
|
23 IParagraphFactorySettings |
23 from pyams_content.component.paragraph.zmi.interfaces import IParagraphInnerEditor, IParagraphTitleToolbar, \ |
24 from pyams_content.component.paragraph.zmi.interfaces import IParagraphInnerEditor, IParagraphTitleToolbar, \ |
24 IParagraphContainerTable, IParagraphsParentForm, IParagraphContainerView |
25 IParagraphContainerTable, IParagraphContainerView |
25 from pyams_form.interfaces.form import IFormSecurityContext, IInnerSubForm |
26 from pyams_form.interfaces.form import IFormSecurityContext, IInnerSubForm |
26 from pyams_i18n.interfaces import II18n |
27 from pyams_i18n.interfaces import II18n |
27 from pyams_skin.interfaces import IInnerPage, IPageHeader |
28 from pyams_skin.interfaces import IInnerPage, IPageHeader |
28 from pyams_skin.interfaces.container import ITableElementEditor |
29 from pyams_skin.interfaces.container import ITableElementEditor |
29 from pyams_skin.layer import IPyAMSLayer |
30 from pyams_skin.layer import IPyAMSLayer |
41 from pyams_skin.page import DefaultPageHeaderAdapter |
42 from pyams_skin.page import DefaultPageHeaderAdapter |
42 from pyams_skin.table import BaseTable, I18nColumn, TrashColumn, JsActionColumn, SorterColumn, ImageColumn |
43 from pyams_skin.table import BaseTable, I18nColumn, TrashColumn, JsActionColumn, SorterColumn, ImageColumn |
43 from pyams_skin.viewlet.menu import MenuItem |
44 from pyams_skin.viewlet.menu import MenuItem |
44 from pyams_template.template import template_config |
45 from pyams_template.template import template_config |
45 from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter, NullAdapter |
46 from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter, NullAdapter |
|
47 from pyams_utils.traversing import get_parent |
46 from pyams_utils.url import absolute_url |
48 from pyams_utils.url import absolute_url |
47 from pyams_viewlet.manager import viewletmanager_config, WeightOrderedViewletManager, TemplateBasedViewletManager |
49 from pyams_viewlet.manager import viewletmanager_config, WeightOrderedViewletManager, TemplateBasedViewletManager |
48 from pyramid.exceptions import NotFound |
50 from pyramid.exceptions import NotFound |
49 from pyramid.view import view_config |
51 from pyramid.view import view_config |
50 from pyams_viewlet.viewlet import viewlet_config, Viewlet |
52 from pyams_viewlet.viewlet import viewlet_config, Viewlet |
51 from pyams_zmi.form import AdminDialogDisplayForm, InnerAdminDisplayForm |
53 from pyams_zmi.form import AdminDialogDisplayForm |
52 from pyams_zmi.view import AdminView, ContainerAdminView |
54 from pyams_zmi.view import AdminView, ContainerAdminView |
53 from pyramid.decorator import reify |
55 from pyramid.decorator import reify |
54 from z3c.form import field |
56 from z3c.form import field |
55 from z3c.table.column import GetAttrColumn |
57 from z3c.table.column import GetAttrColumn |
56 from zope.interface import implementer, Interface |
58 from zope.interface import implementer, Interface |
111 return list(super(ParagraphContainerBaseTable, self).values) |
113 return list(super(ParagraphContainerBaseTable, self).values) |
112 |
114 |
113 def render(self): |
115 def render(self): |
114 if not self.values: |
116 if not self.values: |
115 translate = self.request.localizer.translate |
117 translate = self.request.localizer.translate |
116 return translate(_("No currently defined paragraph.")) |
118 message = translate(_("No currently defined paragraph.")) |
|
119 manager = get_parent(self.context, IParagraphFactorySettings) |
|
120 if (manager is not None) and not manager.allowed_paragraphs: |
|
121 message = '{0}<br />{1}'.format(message, |
|
122 translate(_("Check allowed paragraph types to be able to create new " |
|
123 "paragraphs."))) |
|
124 return message |
117 return super(ParagraphContainerBaseTable, self).render() |
125 return super(ParagraphContainerBaseTable, self).render() |
118 |
126 |
119 |
127 |
120 @adapter_config(context=(IParagraphContainerTarget, IPyAMSLayer, ParagraphContainerBaseTable), provides=IValues) |
128 @adapter_config(context=(IParagraphContainerTarget, IPyAMSLayer, ParagraphContainerBaseTable), provides=IValues) |
121 class ParagraphContainerValues(ContextRequestViewAdapter): |
129 class ParagraphContainerValues(ContextRequestViewAdapter): |