--- 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"""