--- a/src/pyams_content/shared/site/zmi/manager.py Sun Nov 26 09:57:42 2017 +0100
+++ b/src/pyams_content/shared/site/zmi/manager.py Sun Nov 26 09:58:07 2017 +0100
@@ -19,20 +19,20 @@
from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION
from pyams_content.root.interfaces import ISiteRoot
from pyams_content.shared.site.interfaces import ISiteManager
-from pyams_content.zmi.interfaces import IUserAddingsMenuLabel
+from pyams_content.zmi.interfaces import IUserAddingsMenuLabel, ISiteTreeTable
from pyams_i18n.interfaces import II18n, INegotiator
from pyams_skin.interfaces.container import ITableElementEditor
-from pyams_skin.interfaces.viewlet import IToolbarAddingMenu
+from pyams_skin.interfaces.viewlet import IToolbarAddingMenu, IBreadcrumbItem
from pyams_skin.layer import IPyAMSLayer
from pyams_zmi.layer import IAdminLayer
from z3c.form.interfaces import IDataExtractedEvent
# import packages
-from pyams_content.shared.site.manager import SiteManager
-from pyams_content.shared.zmi.sites import SiteTreeTable
+from pyams_content.shared.site import WfTopic
from pyams_form.form import AJAXAddForm
from pyams_pagelet.pagelet import pagelet_config
from pyams_skin.table import DefaultElementEditorAdapter
+from pyams_skin.viewlet.breadcrumb import BreadcrumbItem
from pyams_skin.viewlet.toolbar import ToolbarMenuItem
from pyams_utils.adapter import adapter_config, ContextRequestAdapter
from pyams_utils.registry import query_utility
@@ -41,6 +41,7 @@
from pyams_viewlet.viewlet import viewlet_config
from pyams_zmi.form import AdminDialogAddForm
from pyramid.events import subscriber
+from pyramid.path import DottedNameResolver
from pyramid.view import view_config
from z3c.form import field
from zope.interface import Invalid
@@ -48,19 +49,30 @@
from pyams_content import _
+@adapter_config(context=(ISiteManager, IPyAMSLayer), provides=IBreadcrumbItem)
+class SiteManagerBreadcrumbAdapter(BreadcrumbItem):
+ """Site manager breadcrumb adapter"""
+
+ @property
+ def label(self):
+ return II18n(self.context).query_attribute('short_name', request=self.request)
+
+ css_class = 'strong'
+
+
@adapter_config(context=(ISiteManager, IAdminLayer), provides=IUserAddingsMenuLabel)
-class SiteManageruserAddingsMenuLabelAdapter(ContextRequestAdapter):
+class SiteManagerUserAddingsMenuLabelAdapter(ContextRequestAdapter):
"""Site manager user addings menu label adapter"""
@property
def label(self):
return '{content} ({blog})'.format(
- content=self.request.localizer.translate(self.context.shared_content_factory.content_class.content_name),
+ content=self.request.localizer.translate(WfTopic.content_name),
blog=II18n(self.context).query_attribute('title', request=self.request))
@viewlet_config(name='add-site-manager.menu', context=ISiteRoot, layer=IAdminLayer,
- view=SiteTreeTable, manager=IToolbarAddingMenu, permission=MANAGE_SITE_ROOT_PERMISSION)
+ view=ISiteTreeTable, manager=IToolbarAddingMenu, permission=MANAGE_SITE_ROOT_PERMISSION)
class SiteManagerAddMenu(ToolbarMenuItem):
"""Site manager add menu"""
@@ -84,7 +96,11 @@
edit_permission = None
def create(self, data):
- return SiteManager()
+ factory = self.request.registry.settings.get('pyams_content.config.site_factory')
+ if factory is None:
+ factory = 'pyams_content.shared.site.manager.SiteManager'
+ factory = DottedNameResolver().resolve(factory)
+ return factory()
def add(self, object):
short_name = II18n(object).query_attribute('short_name', request=self.request)
@@ -100,7 +116,7 @@
"""Handle new site manager data extraction"""
container = event.form.context
negotiator = query_utility(INegotiator)
- short_name = event.data['short_name'].get(negotiator.server_language)
+ short_name = event.data.get('short_name', {}).get(negotiator.server_language)
if not short_name:
event.form.widgets.errors += (Invalid(_("You must provide a short name for default server language!")),)
return
@@ -119,9 +135,9 @@
"""Site manager add form, JSOn renderer"""
-@adapter_config(context=(ISiteManager, IAdminLayer, SiteTreeTable), provides=ITableElementEditor)
+@adapter_config(context=(ISiteManager, IAdminLayer, ISiteTreeTable), provides=ITableElementEditor)
class SiteManagerTableElementEditor(DefaultElementEditorAdapter):
"""Site tree table element editor"""
- view_name = 'admin'
+ view_name = 'admin#site-tree.html'
modal_target = False