src/pyams_content/shared/site/zmi/__init__.py
changeset 591 b694d5667d17
parent 579 5e4875a9f692
child 871 d7ad1624cc4f
equal deleted inserted replaced
590:4fafaf94701d 591:b694d5667d17
    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"""