src/pyams_content/shared/imagemap/zmi/container.py
changeset 139 99a481dc4c89
parent 70 ba26f4023bc2
child 374 4d7a326b3434
equal deleted inserted replaced
138:1643b6a9a02a 139:99a481dc4c89
    12 
    12 
    13 __docformat__ = 'restructuredtext'
    13 __docformat__ = 'restructuredtext'
    14 
    14 
    15 
    15 
    16 # import standard library
    16 # import standard library
    17 import html
       
    18 
    17 
    19 # import interfaces
    18 # import interfaces
    20 from pyams_content.component.links.interfaces import ILinkContainer, IInternalLink
    19 from pyams_content.component.association.interfaces import IAssociationContainer, IAssociationInfo
    21 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
    20 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
    22 from pyams_content.shared.imagemap.interfaces import IWfImageMap
    21 from pyams_content.shared.imagemap.interfaces import IWfImageMap
    23 from pyams_i18n.interfaces import II18n
    22 from pyams_i18n.interfaces import II18n
    24 from pyams_skin.interfaces import IInnerPage
    23 from pyams_skin.interfaces import IInnerPage
    25 from pyams_skin.layer import IPyAMSLayer
    24 from pyams_skin.layer import IPyAMSLayer
    31 
    30 
    32 # import packages
    31 # import packages
    33 from pyams_content.shared.common.zmi import WfModifiedContentColumnMixin
    32 from pyams_content.shared.common.zmi import WfModifiedContentColumnMixin
    34 from pyams_form.security import ProtectedFormObjectMixin
    33 from pyams_form.security import ProtectedFormObjectMixin
    35 from pyams_pagelet.pagelet import pagelet_config
    34 from pyams_pagelet.pagelet import pagelet_config
    36 from pyams_sequence.utility import get_sequence_dict
       
    37 from pyams_skin.table import BaseTable, I18nColumn, TrashColumn
    35 from pyams_skin.table import BaseTable, I18nColumn, TrashColumn
    38 from pyams_skin.viewlet.menu import MenuItem
    36 from pyams_skin.viewlet.menu import MenuItem
    39 from pyams_template.template import template_config
    37 from pyams_template.template import template_config
    40 from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter
    38 from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter
    41 from pyams_utils.url import absolute_url
    39 from pyams_utils.url import absolute_url
    47 
    45 
    48 from pyams_content import _
    46 from pyams_content import _
    49 
    47 
    50 
    48 
    51 @viewlet_config(name='areas.submenu', context=IWfImageMap, layer=IAdminLayer,
    49 @viewlet_config(name='areas.submenu', context=IWfImageMap, layer=IAdminLayer,
    52                 manager=IPropertiesMenu, permission=MANAGE_CONTENT_PERMISSION, weight=20)
    50                 manager=IPropertiesMenu, permission=MANAGE_CONTENT_PERMISSION, weight=30)
    53 class ImagemapAreasMenu(MenuItem):
    51 class ImagemapAreasMenu(MenuItem):
    54     """Image map areas menu"""
    52     """Image map areas menu"""
    55 
    53 
    56     label = _("Image areas")
    54     label = _("Image areas")
    57     icon_class = 'fa-location-arrow'
    55     icon_class = 'fa-location-arrow'
   121     _header = _("Title")
   119     _header = _("Title")
   122 
   120 
   123     weight = 10
   121     weight = 10
   124 
   122 
   125     def getValue(self, obj):
   123     def getValue(self, obj):
   126         return II18n(obj).query_attribute('title', request=self.request)
   124         title = II18n(obj).query_attribute('title', request=self.request)
       
   125         if not title:
       
   126             item = IAssociationContainer(self.context).get(obj.link)
       
   127             if item is not None:
       
   128                 title = IAssociationInfo(item).user_title
       
   129         return title
   127 
   130 
   128 
   131 
   129 @adapter_config(name='target', context=(IWfImageMap, IPyAMSLayer, ImagemapAreasTable), provides=IColumn)
   132 @adapter_config(name='target', context=(IWfImageMap, IPyAMSLayer, ImagemapAreasTable), provides=IColumn)
   130 class ImagemapAreasContainerTargetColumn(I18nColumn, GetAttrColumn):
   133 class ImagemapAreasContainerTargetColumn(I18nColumn, GetAttrColumn):
   131     """Image map areas container target URL column"""
   134     """Image map areas container target URL column"""
   133     _header = _("Link target")
   136     _header = _("Link target")
   134 
   137 
   135     weight = 20
   138     weight = 20
   136 
   139 
   137     def getValue(self, obj):
   140     def getValue(self, obj):
   138         link = ILinkContainer(self.context).get(obj.link)
   141         item = IAssociationContainer(self.context).get(obj.link)
   139         if link is None:
   142         if item is not None:
   140             return '--'
   143             return IAssociationInfo(item).inner_title
   141         if IInternalLink.providedBy(link):
       
   142             mapping = get_sequence_dict(link.get_target())
       
   143             return mapping['text']
       
   144         else:
       
   145             return html.escape(link.get_url(self.request))
       
   146 
   144 
   147 
   145 
   148 @adapter_config(name='trash', context=(IWfImageMap, IPyAMSLayer, ImagemapAreasTable), provides=IColumn)
   146 @adapter_config(name='trash', context=(IWfImageMap, IPyAMSLayer, ImagemapAreasTable), provides=IColumn)
   149 class ImagemapAreasContainerTrashColumn(ProtectedFormObjectMixin, TrashColumn):
   147 class ImagemapAreasContainerTrashColumn(ProtectedFormObjectMixin, TrashColumn):
   150     """Image map areas container trash column"""
   148     """Image map areas container trash column"""