22 from pyams_content.component.paragraph.interfaces.pictogram import PICTOGRAM_PARAGRAPH_TYPE, IPictogramParagraph, \ |
21 from pyams_content.component.paragraph.interfaces.pictogram import PICTOGRAM_PARAGRAPH_TYPE, IPictogramParagraph, \ |
23 IPictogramContainer, IPictogramContainerTarget, IPictogramItem |
22 IPictogramContainer, IPictogramContainerTarget, IPictogramItem |
24 from pyams_content.component.paragraph.zmi import IParagraphContainerView, IParagraphEditFormButtons |
23 from pyams_content.component.paragraph.zmi import IParagraphContainerView, IParagraphEditFormButtons |
25 from pyams_content.component.paragraph.zmi.interfaces import IParagraphInnerEditor |
24 from pyams_content.component.paragraph.zmi.interfaces import IParagraphInnerEditor |
26 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION |
25 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION |
27 from pyams_content.reference.pictograms.interfaces import IPictogramTable |
|
28 from pyams_content.shared.common import IWfSharedContent |
26 from pyams_content.shared.common import IWfSharedContent |
29 from pyams_form.interfaces.form import IInnerForm, IInnerSubForm |
27 from pyams_form.interfaces.form import IInnerForm, IInnerSubForm |
30 from pyams_i18n.interfaces import II18n |
28 from pyams_i18n.interfaces import II18n |
31 from pyams_skin.interfaces.viewlet import IToolbarAddingMenu, IWidgetTitleViewletManager |
29 from pyams_skin.interfaces.viewlet import IToolbarAddingMenu, IWidgetTitleViewletManager |
32 from pyams_skin.layer import IPyAMSLayer |
30 from pyams_skin.layer import IPyAMSLayer |
33 from pyams_utils.interfaces.data import IObjectData |
|
34 from pyams_zmi.interfaces import IPropertiesEditForm |
31 from pyams_zmi.interfaces import IPropertiesEditForm |
35 from z3c.form.interfaces import INPUT_MODE, IDataExtractedEvent |
32 from z3c.form.interfaces import INPUT_MODE, IDataExtractedEvent |
36 from z3c.table.interfaces import IValues, IColumn |
33 from z3c.table.interfaces import IValues, IColumn |
37 |
34 |
38 # import packages |
35 # import packages |
39 from pyams_content.component.paragraph import BaseParagraph |
36 from pyams_content.component.paragraph import BaseParagraph |
40 from pyams_content.component.paragraph.pictogram import PictogramParagraph, PictogramItem |
37 from pyams_content.component.paragraph.pictogram import PictogramParagraph, PictogramItem |
41 from pyams_content.component.paragraph.zmi import BaseParagraphAddMenu, BaseParagraphAJAXAddForm, \ |
38 from pyams_content.component.paragraph.zmi import BaseParagraphAddMenu, BaseParagraphAJAXAddForm, \ |
42 BaseParagraphPropertiesEditForm, BaseParagraphAJAXEditForm |
39 BaseParagraphPropertiesEditForm, BaseParagraphAJAXEditForm |
43 from pyams_content.features.renderer.zmi.widget import RendererFieldWidget |
40 from pyams_content.features.renderer.zmi.widget import RendererFieldWidget |
|
41 from pyams_content.reference.pictograms.zmi.widget import PictogramSelectFieldWidget |
44 from pyams_form.form import AJAXAddForm, ajax_config |
42 from pyams_form.form import AJAXAddForm, ajax_config |
45 from pyams_form.security import ProtectedFormObjectMixin |
43 from pyams_form.security import ProtectedFormObjectMixin |
46 from pyams_i18n.column import I18nAttrColumn |
44 from pyams_i18n.column import I18nAttrColumn |
47 from pyams_pagelet.pagelet import pagelet_config |
45 from pyams_pagelet.pagelet import pagelet_config |
48 from pyams_skin.container import switch_element_visibility |
46 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, \ |
47 from pyams_skin.event import get_json_widget_refresh_event, get_json_switched_table_refresh_event, \ |
50 get_json_table_row_refresh_event |
48 get_json_table_row_refresh_event |
51 from pyams_skin.table import BaseTable, SorterColumn, I18nColumn, TrashColumn, VisibilitySwitcherColumn |
49 from pyams_skin.table import BaseTable, SorterColumn, I18nColumn, TrashColumn, VisibilitySwitcherColumn |
52 from pyams_skin.viewlet.toolbar import ToolbarAction |
50 from pyams_skin.viewlet.toolbar import ToolbarAction |
53 from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter |
51 from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter |
54 from pyams_utils.registry import query_utility |
|
55 from pyams_utils.text import get_text_start |
52 from pyams_utils.text import get_text_start |
56 from pyams_utils.traversing import get_parent |
53 from pyams_utils.traversing import get_parent |
57 from pyams_utils.url import absolute_url |
54 from pyams_utils.url import absolute_url |
58 from pyams_viewlet.viewlet import viewlet_config |
55 from pyams_viewlet.viewlet import viewlet_config |
59 from pyams_zmi.form import AdminDialogAddForm, AdminDialogEditForm |
56 from pyams_zmi.form import AdminDialogAddForm, AdminDialogEditForm |
318 |
315 |
319 legend = _("Add new pictogram") |
316 legend = _("Add new pictogram") |
320 icon_css_class = 'fa fa-fw fa-arrow-h' |
317 icon_css_class = 'fa fa-fw fa-arrow-h' |
321 |
318 |
322 fields = field.Fields(IPictogramItem).omit('__parent__', '__name__', 'visible') |
319 fields = field.Fields(IPictogramItem).omit('__parent__', '__name__', 'visible') |
|
320 fields['pictogram_name'].widgetFactory = PictogramSelectFieldWidget |
|
321 |
323 edit_permission = MANAGE_CONTENT_PERMISSION |
322 edit_permission = MANAGE_CONTENT_PERMISSION |
324 |
323 |
325 def updateWidgets(self, prefix=None): |
324 def updateWidgets(self, prefix=None): |
326 super(PictogramAddForm, self).updateWidgets(prefix) |
325 super(PictogramAddForm, self).updateWidgets(prefix) |
327 if 'pictogram_name' in self.widgets: |
|
328 pictograms = query_utility(IPictogramTable) |
|
329 if pictograms is not None: |
|
330 label_id = '{0}_pictogram_label'.format(self.id) |
|
331 widget = self.widgets['pictogram_name'] |
|
332 widget.after_widget_notice = '<span id="{0}" class="text-info">{1}</span>'.format( |
|
333 label_id, |
|
334 self.request.localizer.translate(_("Default header: --"))) |
|
335 widget.object_data = { |
|
336 'ams-change-handler': 'MyAMS.helpers.select2ChangeHelper', |
|
337 'ams-stop-propagation': 'true', |
|
338 'ams-select2-helper-type': 'html', |
|
339 'ams-select2-helper-url': absolute_url(pictograms, self.request, 'get-pictogram-header.html'), |
|
340 'ams-select2-helper-target': '#{0}'.format(label_id) |
|
341 } |
|
342 alsoProvides(widget, IObjectData) |
|
343 if 'body' in self.widgets: |
326 if 'body' in self.widgets: |
344 self.widgets['body'].widget_css_class = 'textarea height-100' |
327 self.widgets['body'].widget_css_class = 'textarea height-100' |
345 |
328 |
346 def create(self, data): |
329 def create(self, data): |
347 return PictogramItem() |
330 return PictogramItem() |
374 |
357 |
375 legend = _("Edit pictogram properties") |
358 legend = _("Edit pictogram properties") |
376 icon_css_class = 'fa fa-fw fa-linode' |
359 icon_css_class = 'fa fa-fw fa-linode' |
377 |
360 |
378 fields = field.Fields(IPictogramItem).omit('__parent__', '__name__', 'visible') |
361 fields = field.Fields(IPictogramItem).omit('__parent__', '__name__', 'visible') |
|
362 fields['pictogram_name'].widgetFactory = PictogramSelectFieldWidget |
|
363 |
379 edit_permission = MANAGE_CONTENT_PERMISSION |
364 edit_permission = MANAGE_CONTENT_PERMISSION |
380 |
365 |
381 def updateWidgets(self, prefix=None): |
366 def updateWidgets(self, prefix=None): |
382 super(PictogramPropertiesEditForm, self).updateWidgets(prefix) |
367 super(PictogramPropertiesEditForm, self).updateWidgets(prefix) |
383 if 'pictogram_name' in self.widgets: |
|
384 pictograms = query_utility(IPictogramTable) |
|
385 if pictograms is not None: |
|
386 pictogram = pictograms.get(self.context.pictogram_name) |
|
387 label_id = '{0}_pictogram_label'.format(self.id) |
|
388 widget = self.widgets['pictogram_name'] |
|
389 widget.required = True |
|
390 if pictogram is None: |
|
391 widget.after_widget_notice = '<span id="{0}" class="text-info">--</span>'.format(label_id) |
|
392 else: |
|
393 widget.after_widget_notice = '<span id="{0}" class="text-info">{1}</span>'.format( |
|
394 label_id, |
|
395 get_pictogram_header(pictogram, self.request)) |
|
396 widget.object_data = { |
|
397 'ams-change-handler': 'MyAMS.helpers.select2ChangeHelper', |
|
398 'ams-stop-propagation': 'true', |
|
399 'ams-select2-helper-type': 'html', |
|
400 'ams-select2-helper-url': absolute_url(pictograms, self.request, 'get-pictogram-header.html'), |
|
401 'ams-select2-helper-target': '#{0}'.format(label_id) |
|
402 } |
|
403 alsoProvides(widget, IObjectData) |
|
404 if 'body' in self.widgets: |
368 if 'body' in self.widgets: |
405 self.widgets['body'].widget_css_class = 'textarea height-100' |
369 self.widgets['body'].widget_css_class = 'textarea height-100' |
406 |
370 |
407 def get_ajax_output(self, changes): |
371 def get_ajax_output(self, changes): |
408 output = super(self.__class__, self).get_ajax_output(changes) |
372 output = super(self.__class__, self).get_ajax_output(changes) |