src/pyams_content/features/menu/zmi/__init__.py
changeset 687 2a176cd699ac
parent 673 e609ce907277
child 810 7b5d910b2205
equal deleted inserted replaced
686:43ebbd99dd62 687:2a176cd699ac
    26 from pyams_portal.interfaces import MANAGE_TEMPLATE_PERMISSION
    26 from pyams_portal.interfaces import MANAGE_TEMPLATE_PERMISSION
    27 from pyams_skin.interfaces.viewlet import IWidgetTitleViewletManager, IToolbarAddingMenu
    27 from pyams_skin.interfaces.viewlet import IWidgetTitleViewletManager, IToolbarAddingMenu
    28 from pyams_skin.layer import IPyAMSLayer
    28 from pyams_skin.layer import IPyAMSLayer
    29 from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
    29 from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
    30 from pyams_viewlet.interfaces import IViewletManager
    30 from pyams_viewlet.interfaces import IViewletManager
       
    31 from pyams_zmi.interfaces import IPropertiesEditForm
    31 from z3c.table.interfaces import IValues, IColumn
    32 from z3c.table.interfaces import IValues, IColumn
    32 
    33 
    33 # import packages
    34 # import packages
    34 from pyams_content.component.association.zmi import AssociationsTable, AssociationsTablePublicNameColumn
    35 from pyams_content.component.association.zmi import AssociationsTable, AssociationsTablePublicNameColumn
    35 from pyams_form.form import ajax_config, AJAXAddForm, AJAXEditForm
    36 from pyams_form.form import ajax_config, AJAXAddForm, AJAXEditForm
    46 from pyams_viewlet.viewlet import viewlet_config
    47 from pyams_viewlet.viewlet import viewlet_config
    47 from pyams_zmi.form import AdminDialogAddForm, AdminDialogEditForm
    48 from pyams_zmi.form import AdminDialogAddForm, AdminDialogEditForm
    48 from pyams_zmi.zmi.table import InnerTableView
    49 from pyams_zmi.zmi.table import InnerTableView
    49 from pyramid.decorator import reify
    50 from pyramid.decorator import reify
    50 from pyramid.exceptions import NotFound
    51 from pyramid.exceptions import NotFound
       
    52 from pyramid.renderers import render
    51 from pyramid.view import view_config
    53 from pyramid.view import view_config
    52 from z3c.form import field
    54 from z3c.form import field
    53 from zope.interface import implementer, alsoProvides, Interface
    55 from zope.interface import implementer, alsoProvides, Interface
    54 
    56 
    55 from pyams_content import _
    57 from pyams_content import _
   112         }
   114         }
   113 
   115 
   114 
   116 
   115 @pagelet_config(name='properties.html', context=IMenu, layer=IPyAMSLayer, permission=MANAGE_TEMPLATE_PERMISSION)
   117 @pagelet_config(name='properties.html', context=IMenu, layer=IPyAMSLayer, permission=MANAGE_TEMPLATE_PERMISSION)
   116 @ajax_config(name='properties.json', context=IMenu, layer=IPyAMSLayer)
   118 @ajax_config(name='properties.json', context=IMenu, layer=IPyAMSLayer)
       
   119 @implementer(IPropertiesEditForm)
   117 class MenuPropertiesEditForm(AdminDialogEditForm):
   120 class MenuPropertiesEditForm(AdminDialogEditForm):
   118     """Menu properties edit form"""
   121     """Menu properties edit form"""
   119 
   122 
   120     legend = _("Edit menu properties")
   123     legend = _("Edit menu properties")
   121     icon_css_class = 'fa fa-fw fa-bars'
   124     icon_css_class = 'fa fa-fw fa-bars'
       
   125 
       
   126     dialog_class = 'modal-large'
   122 
   127 
   123     fields = field.Fields(IMenu).select('title')
   128     fields = field.Fields(IMenu).select('title')
   124     edit_permission = MANAGE_TEMPLATE_PERMISSION
   129     edit_permission = MANAGE_TEMPLATE_PERMISSION
   125 
   130 
   126     def get_ajax_output(self, changes):
   131     def get_ajax_output(self, changes):
   203     _header = _("Label")
   208     _header = _("Label")
   204     attrName = 'title'
   209     attrName = 'title'
   205     weight = 10
   210     weight = 10
   206 
   211 
   207     def renderCell(self, item):
   212     def renderCell(self, item):
   208         return '<span data-ams-stop-propagation="true" ' \
   213         return render('templates/menu-name-cell.pt', {'context': item}, request=self.request)
   209                '      data-ams-click-handler="MyAMS.skin.switchCellContent" ' \
       
   210                '      data-ams-switch-handler="get-menu-items.json" ' \
       
   211                '      data-ams-switch-target=".menus">' \
       
   212                '    <span class="small hint" title="{hint}" data-ams-hint-gravity="e">' \
       
   213                '        <i class="fa fa-plus-square-o switch"></i>' \
       
   214                '    </span>' \
       
   215                '</span>&nbsp;&nbsp;&nbsp;<span class="title">{title}</span>' \
       
   216                '<div class="inner-table-form menus margin-x-10 margin-bottom-0 padding-left-5"></div>'.format(
       
   217             hint=self.request.localizer.translate(_("Click to see menu items")),
       
   218             title=super(MenusTableNameColumn, self).renderCell(item))
       
   219 
   214 
   220 
   215 
   221 @adapter_config(name='trash', context=(IMenusContainerTarget, IPyAMSLayer, MenusTable), provides=IColumn)
   216 @adapter_config(name='trash', context=(IMenusContainerTarget, IPyAMSLayer, MenusTable), provides=IColumn)
   222 class MenusTableTrashColumn(TrashColumn):
   217 class MenusTableTrashColumn(TrashColumn):
   223     """Menus table trash column"""
   218     """Menus table trash column"""