13 __docformat__ = 'restructuredtext' |
13 __docformat__ = 'restructuredtext' |
14 |
14 |
15 |
15 |
16 # import standard library |
16 # import standard library |
17 import json |
17 import json |
|
18 import locale |
18 |
19 |
19 # import interfaces |
20 # import interfaces |
20 from pyams_content.interfaces import MANAGE_TOOL_PERMISSION |
21 from pyams_content.interfaces import MANAGE_TOOL_PERMISSION |
21 from pyams_content.reference.pictograms.interfaces import IPictogramManagerTarget, IPictogramManager, IPictogramTable |
22 from pyams_content.reference.pictograms.interfaces import IPictogramManagerTarget, IPictogramManager, IPictogramTable |
22 from pyams_form.interfaces.form import IWidgetForm, IWidgetsSuffixViewletsManager, IUncheckedEditFormButtons |
23 from pyams_form.interfaces.form import IWidgetForm, IWidgetsSuffixViewletsManager, IUncheckedEditFormButtons |
|
24 from pyams_i18n.interfaces import II18n |
23 from pyams_skin.interfaces import IInnerPage |
25 from pyams_skin.interfaces import IInnerPage |
24 from pyams_skin.layer import IPyAMSLayer |
26 from pyams_skin.layer import IPyAMSLayer |
25 from pyams_utils.interfaces.data import IObjectData |
27 from pyams_utils.interfaces.data import IObjectData |
26 from pyams_zmi.interfaces.menu import IPropertiesMenu |
28 from pyams_zmi.interfaces.menu import IPropertiesMenu |
27 from pyams_zmi.layer import IAdminLayer |
29 from pyams_zmi.layer import IAdminLayer |
83 view=PictogramManagerEditForm, manager=IWidgetsSuffixViewletsManager, permission=MANAGE_TOOL_PERMISSION) |
85 view=PictogramManagerEditForm, manager=IWidgetsSuffixViewletsManager, permission=MANAGE_TOOL_PERMISSION) |
84 @template_config(template='templates/manager-selection.pt', layer=IAdminLayer) |
86 @template_config(template='templates/manager-selection.pt', layer=IAdminLayer) |
85 class PictogramManagerSelectionView(Viewlet): |
87 class PictogramManagerSelectionView(Viewlet): |
86 """Pictogram manager selection viewlet""" |
88 """Pictogram manager selection viewlet""" |
87 |
89 |
|
90 |
|
91 def __init__(self, *args, **kwargs): |
|
92 super().__init__(*args, **kwargs) |
|
93 self.table = query_utility(IPictogramTable) |
|
94 self.target = get_parent(self.context, IPictogramManagerTarget) |
|
95 if self.target is not None: |
|
96 self.picto_manager = IPictogramManager(self.target) |
|
97 |
|
98 def sort_pictogram(self, pictograms): |
|
99 return sorted(pictograms, |
|
100 key=lambda x: locale.strxfrm(II18n(x).query_attribute('title', |
|
101 request=self.request) or '').lower()) |
|
102 |
88 @property |
103 @property |
89 def available_pictograms(self): |
104 def available_pictograms(self): |
90 table = query_utility(IPictogramTable) |
105 if self.picto_manager: |
91 target = get_parent(self.context, IPictogramManagerTarget) |
106 for pictogram in self.sort_pictogram(self.table.values()): |
92 if target is not None: |
107 if pictogram.__name__ not in self.picto_manager.selected_pictograms: |
93 manager = IPictogramManager(target) |
|
94 for pictogram in table.values(): |
|
95 if (not manager.selected_pictograms) or (pictogram.__name__ not in manager.selected_pictograms): |
|
96 yield pictogram |
108 yield pictogram |
97 |
109 |
98 @property |
110 @property |
99 def selected_pictograms(self): |
111 def selected_pictograms(self): |
100 table = query_utility(IPictogramTable) |
112 if self.picto_manager.selected_pictograms: |
101 target = get_parent(self.context, IPictogramManagerTarget) |
113 for name in self.picto_manager.selected_pictograms: |
102 if target is not None: |
114 pictogram = self.table.get(name) |
103 manager = IPictogramManager(target) |
115 if pictogram is not None: |
104 if manager.selected_pictograms: |
116 yield pictogram |
105 for name in manager.selected_pictograms: |
|
106 pictogram = table.get(name) |
|
107 if pictogram is not None: |
|
108 yield pictogram |
|