diff -r 390514bce78a -r fca4100c1733 src/pyams_portal/zmi/template.py --- a/src/pyams_portal/zmi/template.py Fri Mar 26 16:32:52 2021 +0100 +++ b/src/pyams_portal/zmi/template.py Thu Aug 05 09:27:48 2021 +0200 @@ -33,6 +33,7 @@ from pyams_skin.page import DefaultPageHeaderAdapter from pyams_skin.table import DefaultElementEditorAdapter from pyams_skin.viewlet.breadcrumb import BreadcrumbAdminLayerItem +from pyams_skin.viewlet.menu import MenuItem from pyams_skin.viewlet.toolbar import ToolbarAction, ToolbarMenuDivider, ToolbarMenuItem from pyams_utils.adapter import ContextRequestAdapter, adapter_config from pyams_utils.registry import get_utility, query_utility @@ -41,6 +42,7 @@ from pyams_utils.url import absolute_url from pyams_viewlet.viewlet import viewlet_config from pyams_zmi.form import AdminDialogAddForm, AdminDialogEditForm +from pyams_zmi.interfaces.menu import IPropertiesMenu from pyams_zmi.layer import IAdminLayer @@ -82,9 +84,11 @@ return self.context.name context = get_parent(self.context, IPortalContext) if context is not None: - adapter = self.request.registry.queryMultiAdapter((context, self.request), ITableElementName) + adapter = self.request.registry.queryMultiAdapter((context, self.request), + ITableElementName) if adapter is not None: - return self.request.localizer.translate(_("{0} (local template)")).format(adapter.name) + return self.request.localizer.translate(_("{0} (local template)")).format( + adapter.name) return '--' @@ -112,7 +116,8 @@ # check for portal context context = get_parent(self.context, IPortalContext) if context is not None: - adapter = self.request.registry.queryMultiAdapter((context, self.request, self.view), IContentTitle) + adapter = self.request.registry.queryMultiAdapter((context, self.request, self.view), + IContentTitle) if adapter is None: adapter = IContentTitle(context, None) if adapter is not None: @@ -120,7 +125,7 @@ # -# Template views +# Template add views # @viewlet_config(name='add-portal-template.action', context=ISite, layer=IAdminLayer, @@ -144,7 +149,7 @@ legend = _("Add shared template") icon_css_class = 'fa fa-fw fa-columns' - fields = field.Fields(IPortalTemplate) + fields = field.Fields(IPortalTemplate).select('name') edit_permission = MANAGE_TEMPLATE_PERMISSION def create(self, data): @@ -168,58 +173,47 @@ # -# Template renaming form +# Template properties form # -@viewlet_config(name='rename.menu', context=IPortalTemplate, layer=IPyAMSLayer, - view=PortalTemplateLayoutView, manager=IContextActions, - permission=MANAGE_TEMPLATE_PERMISSION, weight=100) -class PortalTemplateRenameMenu(ToolbarMenuItem): - """Portal template rename menu item""" +@viewlet_config(name='properties.menu', + context=IPortalTemplate, layer=IAdminLayer, + manager=IPropertiesMenu, weight=10, + permission=MANAGE_TEMPLATE_PERMISSION) +class PortalTemplatePropertiesMenu(MenuItem): + """Portal template properties menu item""" def __new__(cls, context, request, view, manager): container = get_parent(context, IPortalTemplateContainer) if container is None: return None - return ToolbarMenuDivider.__new__(cls) + return MenuItem.__new__(cls) - label = _("Rename template...") + label = _("Template properties...") label_css_class = 'fa fa-fw fa-edit' - url = 'rename.html' + url = 'properties.html' modal_target = True -class IPortalTemplateRenameButtons(Interface): - """Portal template rename form buttons""" - - close = CloseButton(name='close', title=_("Cancel")) - rename = button.Button(name='rename', title=_("Rename template")) - +@pagelet_config(name='properties.html', + context=IPortalTemplate, layer=IPyAMSLayer, + permission=MANAGE_TEMPLATE_PERMISSION) +@ajax_config(name='properties.json', context=IPortalTemplate, layer=IPyAMSLayer) +class PortalTemplatePropertiesEditForm(AdminDialogEditForm): + """Portal template properties edit form""" -@pagelet_config(name='rename.html', context=IPortalTemplate, layer=IPyAMSLayer, - permission=MANAGE_TEMPLATE_PERMISSION) -@ajax_config(name='rename.json', context=IPortalTemplate, layer=IPyAMSLayer) -class PortalTemplateRenameForm(AdminDialogEditForm): - """Portal template rename form""" - - legend = _("Rename template") + legend = _("Template properties") icon_css_class = 'fa fa-fw fa-edit' - fields = field.Fields(IPortalTemplate).select('name') - buttons = button.Buttons(IPortalTemplateRenameButtons) + fields = field.Fields(IPortalTemplate).select('name', 'css_class') edit_permission = MANAGE_TEMPLATE_PERMISSION _renamed = False - def updateActions(self): - super(PortalTemplateRenameForm, self).updateActions() - if 'rename' in self.actions: - self.actions['rename'].addClass('btn-primary') - def update_content(self, content, data): - changes = super(PortalTemplateRenameForm, self).update_content(content, data) + changes = super().update_content(content, data) if changes: data = data.get(self, data) old_name = content.__name__ @@ -237,8 +231,7 @@ 'status': 'redirect', 'location': absolute_url(self.getContent(), self.request, 'admin#properties.html') } - else: - return super(PortalTemplateRenameForm, self).get_ajax_output(changes) + return super().get_ajax_output(changes) #