7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED |
7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED |
8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS |
9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS |
10 # FOR A PARTICULAR PURPOSE. |
10 # FOR A PARTICULAR PURPOSE. |
11 # |
11 # |
|
12 from pyramid.view import view_config |
|
13 |
|
14 from pyams_form.form import AJAXEditForm |
12 |
15 |
13 __docformat__ = 'restructuredtext' |
16 __docformat__ = 'restructuredtext' |
14 |
17 |
15 |
18 |
16 # import standard library |
19 # import standard library |
17 |
20 |
18 # import interfaces |
21 # import interfaces |
19 from pyams_skin.interfaces import ISkin |
22 from pyams_skin.interfaces import ISkin, IUserSkinnable |
|
23 from pyams_skin.layer import IPyAMSLayer |
|
24 from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION, MANAGE_SYSTEM_PERMISSION |
|
25 from pyams_zmi.interfaces.menu import IPropertiesMenu |
20 from pyams_zmi.layer import IAdminLayer |
26 from pyams_zmi.layer import IAdminLayer |
21 |
27 |
22 # import packages |
28 # import packages |
|
29 from pyams_pagelet.pagelet import pagelet_config |
|
30 from pyams_skin.viewlet.menu import MenuItem, MenuDivider |
23 from pyams_utils.registry import utility_config |
31 from pyams_utils.registry import utility_config |
|
32 from pyams_viewlet.viewlet import viewlet_config |
|
33 from pyams_zmi.form import AdminDialogEditForm |
|
34 from z3c.form import field |
24 |
35 |
25 from pyams_skin import _ |
36 from pyams_zmi import _ |
26 |
37 |
27 |
38 |
28 @utility_config(name='PyAMS admin skin', provides=ISkin) |
39 @utility_config(name='PyAMS admin skin', provides=ISkin) |
29 class AdminSkin(object): |
40 class AdminSkin(object): |
30 """PyAMS administration skin""" |
41 """PyAMS administration skin""" |
31 |
42 |
32 label = _("PyAMS management skin") |
43 label = _("PyAMS management skin") |
33 layer = IAdminLayer |
44 layer = IAdminLayer |
|
45 |
|
46 |
|
47 # |
|
48 # User skinnable properties configuration |
|
49 # |
|
50 |
|
51 @viewlet_config(name='user-skin-properties.menu', context=IUserSkinnable, layer=IAdminLayer, manager=IPropertiesMenu, |
|
52 permission=VIEW_SYSTEM_PERMISSION, weight=5) |
|
53 class UserSkinnablePropertiesMenuItem(MenuItem): |
|
54 """User skin properties menu""" |
|
55 |
|
56 label = _("Graphic theme...") |
|
57 icon_class = 'fa-paint-brush' |
|
58 url = 'user-skin-properties.html' |
|
59 modal_target = True |
|
60 |
|
61 |
|
62 @viewlet_config(name='user-skin-properties.divider', context=IUserSkinnable, layer=IAdminLayer, manager=IPropertiesMenu, |
|
63 permission=VIEW_SYSTEM_PERMISSION, weight=6) |
|
64 class UserSkinnablePropertiesMenuDivider(MenuDivider): |
|
65 """User skin properties menu divider""" |
|
66 |
|
67 |
|
68 @pagelet_config(name='user-skin-properties.html', context=IUserSkinnable, layer=IPyAMSLayer, |
|
69 permission=VIEW_SYSTEM_PERMISSION) |
|
70 class UserSkinnablePropertiesEditForm(AdminDialogEditForm): |
|
71 """User skin properties edit form""" |
|
72 |
|
73 legend = _("Graphic theme elements") |
|
74 label_css_class = 'control-label col-md-4' |
|
75 input_css_class = 'col-md-8' |
|
76 |
|
77 @property |
|
78 def fields(self): |
|
79 fields = field.Fields(IUserSkinnable) |
|
80 if not self.context.can_inherit_skin: |
|
81 fields = fields.omit('inherit_skin') |
|
82 return fields |
|
83 |
|
84 ajax_handler = 'user-skin-properties.json' |
|
85 edit_permission = MANAGE_SYSTEM_PERMISSION |
|
86 |
|
87 |
|
88 @view_config(name='user-skin-properties.json', context=IUserSkinnable, request_type=IPyAMSLayer, |
|
89 permission=MANAGE_SYSTEM_PERMISSION, renderer='json', xhr=True) |
|
90 class UserSkinnablePropertiesAJAXEditForm(AJAXEditForm, UserSkinnablePropertiesEditForm): |
|
91 """User skin properties edit form, JSON renderer""" |