--- 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)
#