src/pyams_portal/zmi/page.py
changeset 289 fca4100c1733
parent 286 9677eb0fc872
child 290 3977d9c8618d
--- a/src/pyams_portal/zmi/page.py	Fri Mar 26 16:32:52 2021 +0100
+++ b/src/pyams_portal/zmi/page.py	Thu Aug 05 09:27:48 2021 +0200
@@ -95,6 +95,11 @@
     def getContent(self):
         return IPortalPage(self.context)
 
+    @property
+    def template_css_class(self):
+        template = IPortalPage(self.context).local_template
+        return template.css_class if template is not None else ''
+
     def updateWidgets(self, prefix=None):
         super().updateWidgets(prefix)
         shared_template = self.widgets.get('shared_template')
@@ -116,7 +121,12 @@
                 content.use_local_template = False
             elif template_mode == TEMPLATE_LOCAL_MODE:
                 content.use_local_template = True
-        return {IPortalPage: ('inherit_parent', 'use_local_template', 'shared_template')}
+                template = IPortalPage(self.context).local_template
+                if template is not None:
+                    template.css_class = self.request.params.get('template_css_class', '')
+        return {
+            IPortalPage: ('inherit_parent', 'use_local_template', 'shared_template')
+        }
 
     def get_ajax_output(self, changes):
         output = super(self.__class__, self).get_ajax_output(changes)
@@ -137,23 +147,27 @@
     form = event.form
     if not form.getContent().can_inherit:
         data = event.data
-        if (form.request.params.get('template_mode') == TEMPLATE_SHARED_MODE) and not data.get('shared_template'):
+        if (form.request.params.get('template_mode') == TEMPLATE_SHARED_MODE) and \
+                not data.get('shared_template'):
             form.widgets.errors += (Invalid(_("You must select which shared template to use!")),)
 
 
-@adapter_config(context=(Interface, IPyAMSLayer, PortalContextTemplatePropertiesEditForm), provides=IPageHeader)
+@adapter_config(context=(Interface, IPyAMSLayer, PortalContextTemplatePropertiesEditForm),
+                provides=IPageHeader)
 class PortalContextPropertiesEditFormHeaderAdapter(PropertiesEditFormHeaderAdapter):
     """Portal context template properties edit form header adapter"""
 
     icon_class = 'fa fa-fw fa-columns'
 
 
-@adapter_config(context=(IPortalContext, IAdminLayer, PortalContextTemplatePropertiesEditForm), provides=IFormHelp)
+@adapter_config(context=(IPortalContext, IAdminLayer, PortalContextTemplatePropertiesEditForm),
+                provides=IFormHelp)
 class PortalContextPropertiesEditFormHelpAdapter(FormHelp):
     """Portal context properties edit form help adapter"""
 
     message = _("If you choose a shared template, you can only adjust settings of "
-                "each portlet individually but can't change portlets list or page configuration.\n"
+                "each portlet individually but can't change portlets list or page "
+                "configuration.\n"
                 "If you use a local template, you can define a whole custom "
                 "configuration but the template definition can't be reused anywhere...""")
     message_format = 'text'
@@ -163,8 +177,10 @@
 # Portal context template configuration
 #
 
-@viewlet_config(name='template-config.menu', context=IPortalContext, layer=IAdminLayer,
-                manager=IPortalContextTemplatePropertiesMenu, permission=MANAGE_TEMPLATE_PERMISSION, weight=50)
+@viewlet_config(name='template-config.menu',
+                context=IPortalContext, layer=IAdminLayer,
+                manager=IPortalContextTemplatePropertiesMenu, weight=50,
+                permission=MANAGE_TEMPLATE_PERMISSION)
 class PortalContextTemplateConfigMenu(MenuItem):
     """Portal context template configuration menu"""
 
@@ -186,7 +202,8 @@
             return super(PortalContextTemplateConfigMenu, self).get_url()
 
 
-@pagelet_config(name='template-config.html', context=IPortalContext, layer=IPyAMSLayer,
+@pagelet_config(name='template-config.html',
+                context=IPortalContext, layer=IPyAMSLayer,
                 permission=MANAGE_TEMPLATE_PERMISSION)
 class PortalContextTemplateLayoutView(PortalTemplateLayoutView):
     """Portal context template configuration view"""
@@ -201,7 +218,8 @@
         return self.request.has_permission(MANAGE_TEMPLATE_PERMISSION)
 
 
-@adapter_config(context=(IPortalContext, IAdminLayer, PortalContextTemplateLayoutView), provides=IPageHeader)
+@adapter_config(context=(IPortalContext, IAdminLayer, PortalContextTemplateLayoutView),
+                provides=IPageHeader)
 class PortalContextTemplateLayoutHeaderAdapter(PortalTemplateHeaderAdapter):
     """Portal context template configuration header adapter"""
 
@@ -210,7 +228,8 @@
 # Template management views
 #
 
-@view_config(name='get-slots-width.json', context=IPortalContext, request_type=IPyAMSLayer,
+@view_config(name='get-slots-width.json',
+             context=IPortalContext, request_type=IPyAMSLayer,
              permission=VIEW_SYSTEM_PERMISSION, renderer='json', xhr=True)
 def get_template_slots_width(request):
     """Get template slots width"""
@@ -218,13 +237,15 @@
     return config.get_slots_width(request.params.get('device'))
 
 
-@view_config(name='portlet-properties.html', context=IPortalContext, request_type=IPyAMSLayer,
+@view_config(name='portlet-properties.html',
+             context=IPortalContext, request_type=IPyAMSLayer,
              permission=MANAGE_TEMPLATE_PERMISSION)
 class PortalContextTemplatePortletEditForm(PortalTemplatePortletEditForm):
     """Portal context template portlet edit form"""
 
 
-@view_config(name='portlet-properties.json', context=IPortalContext, request_type=IPyAMSLayer,
+@view_config(name='portlet-properties.json',
+             context=IPortalContext, request_type=IPyAMSLayer,
              permission=MANAGE_TEMPLATE_PERMISSION, renderer='json', xhr=True)
 class PortalContextTemplatePortletAJAXEditForm(PortalTemplatePortletAJAXEditForm):
     """Portal context template portlet edit form, JSON renderer"""