10 # FOR A PARTICULAR PURPOSE. |
10 # FOR A PARTICULAR PURPOSE. |
11 # |
11 # |
12 |
12 |
13 __docformat__ = 'restructuredtext' |
13 __docformat__ = 'restructuredtext' |
14 |
14 |
15 from pyramid.view import view_config |
|
16 from z3c.form import field |
15 from z3c.form import field |
17 from z3c.form.browser.checkbox import SingleCheckBoxFieldWidget |
16 from z3c.form.browser.checkbox import SingleCheckBoxFieldWidget |
18 |
17 |
19 from pyams_form.form import AJAXEditForm |
18 from pyams_form.form import ajax_config |
20 from pyams_form.group import NamedWidgetsGroup |
19 from pyams_form.group import NamedWidgetsGroup |
21 from pyams_pagelet.pagelet import pagelet_config |
20 from pyams_pagelet.pagelet import pagelet_config |
22 from pyams_skin.interfaces import IUserSkinnable |
21 from pyams_skin.interfaces import IUserSkinnable |
23 from pyams_skin.layer import IPyAMSLayer |
22 from pyams_skin.layer import IPyAMSLayer |
24 from pyams_skin.viewlet.menu import MenuItem, MenuDivider |
23 from pyams_skin.viewlet.menu import MenuDivider, MenuItem |
25 from pyams_utils.interfaces import MANAGE_SKIN_PERMISSION |
24 from pyams_utils.interfaces import MANAGE_SKIN_PERMISSION |
26 from pyams_viewlet.viewlet import viewlet_config |
25 from pyams_viewlet.viewlet import viewlet_config |
27 from pyams_zmi.form import AdminDialogEditForm |
26 from pyams_zmi.form import AdminDialogEditForm |
28 from pyams_zmi.interfaces.menu import IPropertiesMenu |
27 from pyams_zmi.interfaces.menu import IPropertiesMenu |
29 from pyams_zmi.layer import IAdminLayer |
28 from pyams_zmi.layer import IAdminLayer |
52 modal_target = True |
51 modal_target = True |
53 |
52 |
54 |
53 |
55 @pagelet_config(name='user-skin-properties.html', context=IUserSkinnable, layer=IPyAMSLayer, |
54 @pagelet_config(name='user-skin-properties.html', context=IUserSkinnable, layer=IPyAMSLayer, |
56 permission=MANAGE_SKIN_PERMISSION) |
55 permission=MANAGE_SKIN_PERMISSION) |
|
56 @ajax_config(name='user-skin-properties.json', context=IUserSkinnable, layer=IPyAMSLayer) |
57 class UserSkinnablePropertiesEditForm(AdminDialogEditForm): |
57 class UserSkinnablePropertiesEditForm(AdminDialogEditForm): |
58 """User skin properties edit form""" |
58 """User skin properties edit form""" |
59 |
59 |
60 prefix = 'skin_properties.' |
60 prefix = 'skin_properties.' |
61 |
61 |
63 label_css_class = 'control-label col-md-4' |
63 label_css_class = 'control-label col-md-4' |
64 input_css_class = 'col-md-8' |
64 input_css_class = 'col-md-8' |
65 |
65 |
66 @property |
66 @property |
67 def fields(self): |
67 def fields(self): |
|
68 fields = field.Fields(IUserSkinnable).select('no_inherit_skin', 'skin', 'custom_stylesheet', |
|
69 'editor_stylesheet', 'custom_script') |
68 if self.context.can_inherit_skin: |
70 if self.context.can_inherit_skin: |
69 fields = field.Fields(IUserSkinnable).select('no_inherit_skin', 'skin', |
|
70 'custom_stylesheet', 'editor_stylesheet') |
|
71 fields['no_inherit_skin'].widgetFactory = SingleCheckBoxFieldWidget |
71 fields['no_inherit_skin'].widgetFactory = SingleCheckBoxFieldWidget |
72 else: |
72 else: |
73 fields = field.Fields(IUserSkinnable).select('skin', 'custom_stylesheet', 'editor_stylesheet', |
73 fields = fields.omit('no_inherit_skin') |
74 'custom_script') |
|
75 return fields |
74 return fields |
76 |
75 |
77 ajax_handler = 'user-skin-properties.json' |
76 ajax_handler = 'user-skin-properties.json' |
78 edit_permission = MANAGE_SKIN_PERMISSION |
77 edit_permission = MANAGE_SKIN_PERMISSION |
79 |
78 |
87 switch=True, |
86 switch=True, |
88 checkbox_switch=True, |
87 checkbox_switch=True, |
89 checkbox_mode='disable', |
88 checkbox_mode='disable', |
90 checkbox_field=IUserSkinnable['no_inherit_skin'])) |
89 checkbox_field=IUserSkinnable['no_inherit_skin'])) |
91 super(UserSkinnablePropertiesEditForm, self).updateGroups() |
90 super(UserSkinnablePropertiesEditForm, self).updateGroups() |
92 |
|
93 |
|
94 @view_config(name='user-skin-properties.json', context=IUserSkinnable, request_type=IPyAMSLayer, |
|
95 permission=MANAGE_SKIN_PERMISSION, renderer='json', xhr=True) |
|
96 class UserSkinnablePropertiesAJAXEditForm(AJAXEditForm, UserSkinnablePropertiesEditForm): |
|
97 """User skin properties edit form, JSON renderer""" |
|