29 from zope.intid.interfaces import IIntIds |
29 from zope.intid.interfaces import IIntIds |
30 |
30 |
31 # import packages |
31 # import packages |
32 from pyams_content.shared.common.zmi import SharedContentAddForm, SharedContentAJAXAddForm |
32 from pyams_content.shared.common.zmi import SharedContentAddForm, SharedContentAJAXAddForm |
33 from pyams_content.shared.site.zmi.widget import SiteManagerFoldersSelectorFieldWidget |
33 from pyams_content.shared.site.zmi.widget import SiteManagerFoldersSelectorFieldWidget |
|
34 from pyams_form.form import ajax_config |
34 from pyams_pagelet.pagelet import pagelet_config |
35 from pyams_pagelet.pagelet import pagelet_config |
35 from pyams_skin.viewlet.toolbar import ToolbarMenuItem |
36 from pyams_skin.viewlet.toolbar import ToolbarMenuItem |
36 from pyams_utils.adapter import adapter_config, ContextRequestAdapter |
37 from pyams_utils.adapter import adapter_config, ContextRequestAdapter |
37 from pyams_utils.registry import get_utility |
38 from pyams_utils.registry import get_utility |
38 from pyams_utils.traversing import get_parent |
39 from pyams_utils.traversing import get_parent |
39 from pyams_utils.url import absolute_url |
40 from pyams_utils.url import absolute_url |
40 from pyams_viewlet.viewlet import viewlet_config |
41 from pyams_viewlet.viewlet import viewlet_config |
41 from pyramid.decorator import reify |
42 from pyramid.decorator import reify |
42 from pyramid.path import DottedNameResolver |
43 from pyramid.path import DottedNameResolver |
43 from pyramid.view import view_config |
|
44 from z3c.form import field |
44 from z3c.form import field |
45 from zope.interface import Interface |
45 from zope.interface import Interface |
46 from zope.lifecycleevent import ObjectCreatedEvent |
46 from zope.lifecycleevent import ObjectCreatedEvent |
47 from zope.schema import Int |
47 from zope.schema import Int |
48 from pyams_content import _ |
48 from pyams_content import _ |
76 |
76 |
77 @pagelet_config(name='add-topic.html', context=ISiteContainer, layer=IPyAMSLayer, |
77 @pagelet_config(name='add-topic.html', context=ISiteContainer, layer=IPyAMSLayer, |
78 permission=CREATE_CONTENT_PERMISSION) |
78 permission=CREATE_CONTENT_PERMISSION) |
79 @pagelet_config(name='add-shared-content.html', context=ISiteContainer, layer=IPyAMSLayer, |
79 @pagelet_config(name='add-shared-content.html', context=ISiteContainer, layer=IPyAMSLayer, |
80 permission=CREATE_CONTENT_PERMISSION) |
80 permission=CREATE_CONTENT_PERMISSION) |
|
81 @ajax_config(name='add-topic.json', context=ISiteContainer, layer=IPyAMSLayer, |
|
82 base=SharedContentAJAXAddForm) |
81 class TopicAddForm(SharedContentAddForm): |
83 class TopicAddForm(SharedContentAddForm): |
82 """Topic add form""" |
84 """Topic add form""" |
83 |
85 |
84 legend = _("Add topic") |
86 legend = _("Add topic") |
85 |
87 |
86 fields = field.Fields(ITopicAddFormFields).select('title', 'parent', 'notepad') |
88 fields = field.Fields(ITopicAddFormFields).select('title', 'parent', 'notepad') |
87 fields['parent'].widgetFactory = SiteManagerFoldersSelectorFieldWidget |
89 fields['parent'].widgetFactory = SiteManagerFoldersSelectorFieldWidget |
88 |
90 |
89 ajax_handler = 'add-topic.json' |
|
90 edit_permission = CREATE_CONTENT_PERMISSION |
91 edit_permission = CREATE_CONTENT_PERMISSION |
91 |
92 |
92 __target = None |
93 __target = None |
93 |
94 |
94 def updateWidgets(self, prefix=None): |
95 def updateWidgets(self, prefix=None): |
136 def add(self, content): |
137 def add(self, content): |
137 pass |
138 pass |
138 |
139 |
139 def nextURL(self): |
140 def nextURL(self): |
140 return absolute_url(self.__target, self.request, 'admin') |
141 return absolute_url(self.__target, self.request, 'admin') |
141 |
|
142 |
|
143 @view_config(name='add-topic.json', context=ISiteContainer, request_type=IPyAMSLayer, |
|
144 permission=CREATE_CONTENT_PERMISSION, renderer='json', xhr=True) |
|
145 class TopicAJAXAddForm(SharedContentAJAXAddForm, TopicAddForm): |
|
146 """Topic add form, JSON renderer""" |
|