14 |
14 |
15 |
15 |
16 # import standard library |
16 # import standard library |
17 import json |
17 import json |
18 |
18 |
|
19 from pyramid.decorator import reify |
|
20 from pyramid.events import subscriber |
|
21 from pyramid.view import view_config |
|
22 from z3c.form import field, button |
|
23 from z3c.form.interfaces import INPUT_MODE, IDataExtractedEvent |
|
24 from z3c.table.column import GetAttrColumn |
|
25 from z3c.table.interfaces import IValues, IColumn |
|
26 from zope.interface import implementer, Interface, Invalid |
|
27 |
|
28 from pyams_content import _ |
|
29 # import packages |
|
30 from pyams_content.component.paragraph import BaseParagraph |
19 # import interfaces |
31 # import interfaces |
20 from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, IParagraphContainer, \ |
32 from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, IParagraphContainer, \ |
21 PARAGRAPH_HIDDEN_FIELDS |
33 PARAGRAPH_HIDDEN_FIELDS |
22 from pyams_content.component.paragraph.interfaces.pictogram import PICTOGRAM_PARAGRAPH_TYPE, IPictogramParagraph, \ |
34 from pyams_content.component.paragraph.interfaces.pictogram import PICTOGRAM_PARAGRAPH_TYPE, IPictogramParagraph, \ |
23 IPictogramContainer, IPictogramContainerTarget, IPictogramItem |
35 IPictogramContainer, IPictogramContainerTarget, IPictogramItem |
24 from pyams_content.component.paragraph.zmi import IParagraphContainerView, IParagraphEditFormButtons |
|
25 from pyams_content.component.paragraph.zmi.interfaces import IParagraphInnerEditor |
|
26 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION |
|
27 from pyams_content.shared.common import IWfSharedContent |
|
28 from pyams_form.interfaces.form import IInnerForm, IInnerSubForm |
|
29 from pyams_i18n.interfaces import II18n |
|
30 from pyams_skin.interfaces.viewlet import IToolbarAddingMenu, IWidgetTitleViewletManager |
|
31 from pyams_skin.layer import IPyAMSLayer |
|
32 from pyams_zmi.interfaces import IPropertiesEditForm |
|
33 from z3c.form.interfaces import INPUT_MODE, IDataExtractedEvent |
|
34 from z3c.table.interfaces import IValues, IColumn |
|
35 |
|
36 # import packages |
|
37 from pyams_content.component.paragraph import BaseParagraph |
|
38 from pyams_content.component.paragraph.pictogram import PictogramParagraph, PictogramItem |
36 from pyams_content.component.paragraph.pictogram import PictogramParagraph, PictogramItem |
39 from pyams_content.component.paragraph.zmi import BaseParagraphAddMenu, BaseParagraphAJAXAddForm, \ |
37 from pyams_content.component.paragraph.zmi import BaseParagraphAddMenu, BaseParagraphAJAXAddForm, \ |
40 BaseParagraphPropertiesEditForm, BaseParagraphAJAXEditForm |
38 BaseParagraphPropertiesEditForm, BaseParagraphAJAXEditForm |
|
39 from pyams_content.component.paragraph.zmi import IParagraphContainerView, IParagraphEditFormButtons |
|
40 from pyams_content.component.paragraph.zmi.interfaces import IParagraphInnerEditor |
41 from pyams_content.features.renderer.zmi.widget import RendererFieldWidget |
41 from pyams_content.features.renderer.zmi.widget import RendererFieldWidget |
|
42 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION |
42 from pyams_content.reference.pictograms.zmi.widget import PictogramSelectFieldWidget |
43 from pyams_content.reference.pictograms.zmi.widget import PictogramSelectFieldWidget |
|
44 from pyams_content.shared.common import IWfSharedContent |
43 from pyams_file.zmi.image import render_image |
45 from pyams_file.zmi.image import render_image |
44 from pyams_form.form import AJAXAddForm, ajax_config |
46 from pyams_form.form import AJAXAddForm, ajax_config |
|
47 from pyams_form.interfaces.form import IInnerForm, IInnerSubForm |
45 from pyams_form.security import ProtectedFormObjectMixin |
48 from pyams_form.security import ProtectedFormObjectMixin |
46 from pyams_i18n.column import I18nAttrColumn |
49 from pyams_i18n.column import I18nAttrColumn |
|
50 from pyams_i18n.interfaces import II18n |
47 from pyams_pagelet.pagelet import pagelet_config |
51 from pyams_pagelet.pagelet import pagelet_config |
48 from pyams_skin.container import switch_element_visibility |
52 from pyams_skin.container import switch_element_visibility |
49 from pyams_skin.event import get_json_widget_refresh_event, get_json_switched_table_refresh_event, \ |
53 from pyams_skin.event import get_json_widget_refresh_event, get_json_switched_table_refresh_event, \ |
50 get_json_table_row_refresh_event |
54 get_json_table_row_refresh_event |
|
55 from pyams_skin.interfaces.viewlet import IToolbarAddingMenu, IWidgetTitleViewletManager |
|
56 from pyams_skin.layer import IPyAMSLayer |
51 from pyams_skin.table import BaseTable, SorterColumn, I18nColumn, TrashColumn, VisibilitySwitcherColumn |
57 from pyams_skin.table import BaseTable, SorterColumn, I18nColumn, TrashColumn, VisibilitySwitcherColumn |
52 from pyams_skin.viewlet.toolbar import ToolbarAction |
58 from pyams_skin.viewlet.toolbar import ToolbarAction |
53 from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter |
59 from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter |
54 from pyams_utils.text import get_text_start |
60 from pyams_utils.text import get_text_start |
55 from pyams_utils.traversing import get_parent |
61 from pyams_utils.traversing import get_parent |
56 from pyams_utils.url import absolute_url |
62 from pyams_utils.url import absolute_url |
57 from pyams_viewlet.viewlet import viewlet_config |
63 from pyams_viewlet.viewlet import viewlet_config |
58 from pyams_zmi.form import AdminDialogAddForm, AdminDialogEditForm |
64 from pyams_zmi.form import AdminDialogAddForm, AdminDialogEditForm |
|
65 from pyams_zmi.interfaces import IPropertiesEditForm |
59 from pyams_zmi.zmi.table import InnerTableView |
66 from pyams_zmi.zmi.table import InnerTableView |
60 from pyramid.decorator import reify |
|
61 from pyramid.events import subscriber |
|
62 from pyramid.view import view_config |
|
63 from z3c.form import field, button |
|
64 from z3c.table.column import GetAttrColumn |
|
65 from zope.interface import implementer, alsoProvides, Interface, Invalid |
|
66 |
|
67 from pyams_content import _ |
|
68 |
67 |
69 |
68 |
70 class IPictogramsView(Interface): |
69 class IPictogramsView(Interface): |
71 """Pictograms view marker interface""" |
70 """Pictograms view marker interface""" |
72 |
71 |
77 |
76 |
78 @viewlet_config(name='add-pictogram-paragraph.menu', context=IParagraphContainerTarget, view=IParagraphContainerView, |
77 @viewlet_config(name='add-pictogram-paragraph.menu', context=IParagraphContainerTarget, view=IParagraphContainerView, |
79 layer=IPyAMSLayer, manager=IToolbarAddingMenu, weight=600) |
78 layer=IPyAMSLayer, manager=IToolbarAddingMenu, weight=600) |
80 class PictogramParagraphAddMenu(BaseParagraphAddMenu): |
79 class PictogramParagraphAddMenu(BaseParagraphAddMenu): |
81 """Pictogram paragraph add menu""" |
80 """Pictogram paragraph add menu""" |
82 |
81 |
83 label = _("Pictograms...") |
82 label = _("Pictograms...") |
84 label_css_class = 'fa fa-fw fa-linode' |
83 label_css_class = 'fa fa-fw fa-linode' |
85 url = 'add-pictogram-paragraph.html' |
84 url = 'add-pictogram-paragraph.html' |
86 paragraph_type = PICTOGRAM_PARAGRAPH_TYPE |
85 paragraph_type = PICTOGRAM_PARAGRAPH_TYPE |
87 |
86 |
88 |
87 |
89 @pagelet_config(name='add-pictogram-paragraph.html', context=IParagraphContainerTarget, layer=IPyAMSLayer, |
88 @pagelet_config(name='add-pictogram-paragraph.html', context=IParagraphContainerTarget, layer=IPyAMSLayer, |
90 permission=MANAGE_CONTENT_PERMISSION) |
89 permission=MANAGE_CONTENT_PERMISSION) |
91 @ajax_config(name='add-pictogram-paragraph.json', context=IParagraphContainerTarget, layer=IPyAMSLayer, |
90 @ajax_config(name='add-pictogram-paragraph.json', context=IParagraphContainerTarget, layer=IPyAMSLayer, |
92 base=BaseParagraphAJAXAddForm) |
91 base=BaseParagraphAJAXAddForm) |
93 class PictogramParagraphAddForm(AdminDialogAddForm): |
92 class PictogramParagraphAddForm(AdminDialogAddForm): |
94 """Pictogram paragraph add form""" |
93 """Pictogram paragraph add form""" |
95 |
94 |
96 legend = _("Add new pictogram paragraph") |
95 legend = _("Add new pictogram paragraph") |
97 icon_css_class = 'fa fa-fw fa-linode' |
96 icon_css_class = 'fa fa-fw fa-linode' |
98 |
97 |
99 fields = field.Fields(IPictogramParagraph).select('title', 'renderer') |
98 fields = field.Fields(IPictogramParagraph).omit(*PARAGRAPH_HIDDEN_FIELDS) |
100 edit_permission = MANAGE_CONTENT_PERMISSION |
99 edit_permission = MANAGE_CONTENT_PERMISSION |
101 |
100 |
102 def create(self, data): |
101 def create(self, data): |
103 return PictogramParagraph() |
102 return PictogramParagraph() |
104 |
103 |
105 def add(self, object): |
104 def add(self, object): |
106 IParagraphContainer(self.context).append(object) |
105 IParagraphContainer(self.context).append(object) |
107 |
106 |
108 |
107 |
109 @pagelet_config(name='properties.html', context=IPictogramParagraph, layer=IPyAMSLayer, |
108 @pagelet_config(name='properties.html', context=IPictogramParagraph, layer=IPyAMSLayer, |