src/pyams_content/features/menu/zmi/__init__.py
changeset 1076 93f78438ff8c
parent 1018 78d7174de3be
child 1117 60f1d91b671c
equal deleted inserted replaced
1075:1102a2738e47 1076:93f78438ff8c
    17 from pyramid.decorator import reify
    17 from pyramid.decorator import reify
    18 from pyramid.exceptions import NotFound
    18 from pyramid.exceptions import NotFound
    19 from pyramid.renderers import render
    19 from pyramid.renderers import render
    20 from pyramid.view import view_config
    20 from pyramid.view import view_config
    21 from z3c.form import field
    21 from z3c.form import field
       
    22 from z3c.table.column import GetAttrColumn
    22 from z3c.table.interfaces import IColumn, IValues
    23 from z3c.table.interfaces import IColumn, IValues
    23 from zope.interface import Interface, alsoProvides, implementer
    24 from zope.interface import Interface, alsoProvides, implementer
    24 
    25 
    25 from pyams_content.component.association.zmi import AssociationsTable, AssociationsTablePublicNameColumn
    26 from pyams_content.component.association.zmi import AssociationsTable, AssociationsTablePublicNameColumn
    26 from pyams_content.component.links.zmi import ExternalLinkAddForm, ExternalLinkAddMenu, ExternalLinkPropertiesEditForm, \
    27 from pyams_content.component.links.zmi import ExternalLinkAddForm, ExternalLinkAddMenu, ExternalLinkPropertiesEditForm, \
    30     IMenuLinksContainerTarget, IMenusContainerTarget
    31     IMenuLinksContainerTarget, IMenusContainerTarget
    31 from pyams_content.reference.pictograms.zmi.widget import PictogramSelectFieldWidget
    32 from pyams_content.reference.pictograms.zmi.widget import PictogramSelectFieldWidget
    32 from pyams_form.form import AJAXAddForm, AJAXEditForm, ajax_config
    33 from pyams_form.form import AJAXAddForm, AJAXEditForm, ajax_config
    33 from pyams_form.interfaces.form import IFormContextPermissionChecker
    34 from pyams_form.interfaces.form import IFormContextPermissionChecker
    34 from pyams_i18n.column import I18nAttrColumn
    35 from pyams_i18n.column import I18nAttrColumn
       
    36 from pyams_i18n.interfaces import II18n
    35 from pyams_pagelet.pagelet import pagelet_config
    37 from pyams_pagelet.pagelet import pagelet_config
    36 from pyams_portal.interfaces import MANAGE_TEMPLATE_PERMISSION
    38 from pyams_portal.interfaces import MANAGE_TEMPLATE_PERMISSION
       
    39 from pyams_sequence.interfaces import ISequentialIdInfo
    37 from pyams_skin.container import delete_container_element, switch_element_visibility
    40 from pyams_skin.container import delete_container_element, switch_element_visibility
    38 from pyams_skin.event import get_json_switched_table_refresh_event, get_json_table_row_refresh_event
    41 from pyams_skin.event import get_json_switched_table_refresh_event, get_json_table_row_refresh_event
    39 from pyams_skin.interfaces.viewlet import IToolbarAddingMenu, IWidgetTitleViewletManager
    42 from pyams_skin.interfaces.viewlet import IToolbarAddingMenu, IWidgetTitleViewletManager
    40 from pyams_skin.layer import IPyAMSLayer
    43 from pyams_skin.layer import IPyAMSLayer
    41 from pyams_skin.table import BaseTable, I18nColumn, SorterColumn, TrashColumn, VisibilitySwitcherColumn, get_table_id
    44 from pyams_skin.table import BaseTable, I18nColumn, SorterColumn, TrashColumn, VisibilitySwitcherColumn, get_table_id
   218 
   221 
   219     def renderCell(self, item):
   222     def renderCell(self, item):
   220         return render('templates/menu-name-cell.pt', {'context': item}, request=self.request)
   223         return render('templates/menu-name-cell.pt', {'context': item}, request=self.request)
   221 
   224 
   222 
   225 
       
   226 @adapter_config(name='reference', context=(IMenusContainerTarget, IPyAMSLayer, MenusTable), provides=IColumn)
       
   227 class MenusTableReferenceColumn(I18nColumn, GetAttrColumn):
       
   228     """Menus table reference column"""
       
   229 
       
   230     _header = _("Inner content")
       
   231     weight = 15
       
   232 
       
   233     def getValue(self, obj):
       
   234         target = obj.target
       
   235         if target is not None:
       
   236             sequence = ISequentialIdInfo(target)
       
   237             return '{0} ({1})'.format(II18n(target).query_attribute('title'),
       
   238                                       sequence.get_short_oid())
       
   239         else:
       
   240             return '--'
       
   241 
       
   242 
   223 @adapter_config(name='trash', context=(IMenusContainerTarget, IPyAMSLayer, MenusTable), provides=IColumn)
   243 @adapter_config(name='trash', context=(IMenusContainerTarget, IPyAMSLayer, MenusTable), provides=IColumn)
   224 class MenusTableTrashColumn(TrashColumn):
   244 class MenusTableTrashColumn(TrashColumn):
   225     """Menus table trash column"""
   245     """Menus table trash column"""
   226 
   246 
   227     permission = MANAGE_TEMPLATE_PERMISSION
   247     permission = MANAGE_TEMPLATE_PERMISSION