src/pyams_zmi/zmi/skin.py
changeset 103 fb8dcfb17ced
parent 102 a6f0e6089417
child 119 f5657a8745df
equal deleted inserted replaced
102:a6f0e6089417 103:fb8dcfb17ced
    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"""