src/pyams_zmi/skin.py
changeset 21 4d8d6d0caecb
parent 0 9131229e2982
child 28 4d6f12fa60e5
equal deleted inserted replaced
20:e9fa6f0422d8 21:4d8d6d0caecb
     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"""