src/pyams_content/shared/site/zmi/container.py
changeset 1429 9b93fdd5ba30
parent 1393 9479901b53a5
child 1433 23b4d281e849
equal deleted inserted replaced
1428:48c1ee485dc0 1429:9b93fdd5ba30
    70 from pyams_zmi.view import AdminView
    70 from pyams_zmi.view import AdminView
    71 
    71 
    72 from pyams_content import _
    72 from pyams_content import _
    73 
    73 
    74 
    74 
    75 @contentprovider_config(name='content_header', context=ISharedSite, view=Interface, layer=IPyAMSLayer)
    75 @contentprovider_config(name='content_header', context=ISharedSite,
    76 @contentprovider_config(name='content_header', context=ISiteContainer, view=Interface, layer=IPyAMSLayer)
    76                         view=Interface, layer=IPyAMSLayer)
       
    77 @contentprovider_config(name='content_header', context=ISiteContainer,
       
    78                         view=Interface, layer=IPyAMSLayer)
    77 @template_config(template='templates/container-header.pt', layer=IPyAMSLayer)
    79 @template_config(template='templates/container-header.pt', layer=IPyAMSLayer)
    78 class SiteContainerHeaderContentProvider(object):
    80 class SiteContainerHeaderContentProvider(object):
    79     """Site container header content provider"""
    81     """Site container header content provider"""
    80 
    82 
    81     back_url = '#site-tree.html'
    83     back_url = '#site-tree.html'
   143 
   145 
   144 #
   146 #
   145 # Site container publication views
   147 # Site container publication views
   146 #
   148 #
   147 
   149 
   148 @viewlet_config(name='workflow-publication.menu', context=IBaseSiteItem, layer=IPyAMSLayer, view=ISiteTreeTable,
   150 @viewlet_config(name='workflow-publication.menu', context=IBaseSiteItem, layer=IPyAMSLayer,
   149                 manager=ITableItemColumnActionsMenu, permission=MANAGE_SITE_PERMISSION, weight=210)
   151                 view=ISiteTreeTable, manager=ITableItemColumnActionsMenu,
       
   152                 permission=MANAGE_SITE_PERMISSION, weight=810)
   150 class SiteContainerTableItemWorkflowPublicationMenu(ToolbarMenuItem):
   153 class SiteContainerTableItemWorkflowPublicationMenu(ToolbarMenuItem):
   151     """Site container tree item workflow publication menu"""
   154     """Site container tree item workflow publication menu"""
   152 
   155 
   153     label = _("Publication dates...")
   156     label = _("Publication dates...")
   154     label_css_class = 'fa fa-fw fa-eye'
   157     label_css_class = 'fa fa-fw fa-eye'
   155     url = 'workflow-publication.html'
   158     url = 'workflow-publication.html'
   156     modal_target = True
   159     modal_target = True
   157     stop_propagation = True
   160     stop_propagation = True
   158 
   161 
   159 
   162 
   160 @viewlet_config(name='workflow-publication.menu', context=IBaseSiteItem, layer=IAdminLayer, manager=IPropertiesMenu,
   163 @viewlet_config(name='workflow-publication.menu', context=IBaseSiteItem, layer=IAdminLayer,
   161                 permission=MANAGE_SITE_PERMISSION, weight=210)
   164                 manager=IPropertiesMenu, permission=MANAGE_SITE_PERMISSION, weight=510)
   162 class SiteContainerWorkflowPublicationMenu(MenuItem):
   165 class SiteContainerWorkflowPublicationMenu(MenuItem):
   163     """Site container workflow publication menu"""
   166     """Site container workflow publication menu"""
   164 
   167 
   165     label = _("Publication dates...")
   168     label = _("Publication dates...")
   166     icon_class = 'fa-eye'
   169     icon_class = 'fa-eye'
   176 
   179 
   177     prefix = 'site_publication.'
   180     prefix = 'site_publication.'
   178 
   181 
   179     legend = _("Update publication dates")
   182     legend = _("Update publication dates")
   180 
   183 
   181     fields = field.Fields(IWorkflowPublicationInfo).select('publication_effective_date', 'publication_expiration_date')
   184     fields = field.Fields(IWorkflowPublicationInfo).select('publication_effective_date',
       
   185                                                            'publication_expiration_date')
   182     edit_permission = MANAGE_SITE_PERMISSION
   186     edit_permission = MANAGE_SITE_PERMISSION
   183 
   187 
   184     def updateWidgets(self, prefix=None):
   188     def updateWidgets(self, prefix=None):
   185         super(SiteContainerWorkflowPublicationEditForm, self).updateWidgets(prefix)
   189         super(SiteContainerWorkflowPublicationEditForm, self).updateWidgets(prefix)
   186         if 'publication_effective_date' in self.widgets:
   190         if 'publication_effective_date' in self.widgets:
   213 
   217 
   214 #
   218 #
   215 # Site container tree view
   219 # Site container tree view
   216 #
   220 #
   217 
   221 
   218 @viewlet_config(name='site-tree.menu', layer=IAdminLayer, context=IBaseSiteItem, manager=ISiteManagementMenu,
   222 @viewlet_config(name='site-tree.menu', layer=IAdminLayer, context=IBaseSiteItem,
   219                 permission=VIEW_SYSTEM_PERMISSION, weight=10)
   223                 manager=ISiteManagementMenu, permission=VIEW_SYSTEM_PERMISSION, weight=10)
   220 @viewletmanager_config(name='site-tree.menu', layer=IAdminLayer, context=IBaseSiteItem, provides=ISiteTreeMenu)
   224 @viewletmanager_config(name='site-tree.menu', layer=IAdminLayer, context=IBaseSiteItem,
       
   225                        provides=ISiteTreeMenu)
   221 @implementer(ISiteTreeMenu)
   226 @implementer(ISiteTreeMenu)
   222 class SiteContainerTreeMenu(MenuItem):
   227 class SiteContainerTreeMenu(MenuItem):
   223     """Site container tree menu"""
   228     """Site container tree menu"""
   224 
   229 
   225     label = _("Site tree")
   230     label = _("Site tree")
   246 
   251 
   247     @property
   252     @property
   248     def cssClasses(self):
   253     def cssClasses(self):
   249         classes = ['table', 'table-bordered', 'table-striped', 'table-hover', 'table-tight']
   254         classes = ['table', 'table-bordered', 'table-striped', 'table-hover', 'table-tight']
   250         permission = self.permission
   255         permission = self.permission
   251         if self.can_sort and ((not permission) or self.request.has_permission(permission, self.context)):
   256         if self.can_sort and ((not permission) or self.request.has_permission(permission,
       
   257                                                                               self.context)):
   252             classes.append('table-dnd')
   258             classes.append('table-dnd')
   253         return {
   259         return {
   254             'table': ' '.join(classes),
   260             'table': ' '.join(classes),
   255             'tr.selected': lambda item, col, row: 'current' if item is self.context else ''
   261             'tr.selected': lambda item, col, row: 'current' if item is self.context else ''
   256         }
   262         }
   278             'data-ams-tree-node-parent-id': lambda x, col: intids.queryId(x.__parent__)
   284             'data-ams-tree-node-parent-id': lambda x, col: intids.queryId(x.__parent__)
   279         })
   285         })
   280         return attributes
   286         return attributes
   281 
   287 
   282 
   288 
   283 @adapter_config(name='sorter', context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable), provides=IColumn)
   289 @adapter_config(name='sorter',
       
   290                 context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable),
       
   291                 provides=IColumn)
   284 class SiteContainerTreeSorterColumn(SorterColumn):
   292 class SiteContainerTreeSorterColumn(SorterColumn):
   285     """Site container tree sorter column"""
   293     """Site container tree sorter column"""
   286 
   294 
   287     permission = MANAGE_SITE_PERMISSION
   295     permission = MANAGE_SITE_PERMISSION
   288 
   296 
   344         row = table.setUpRow(item)
   352         row = table.setUpRow(item)
   345         result.append(table.renderRow(row).strip())
   353         result.append(table.renderRow(row).strip())
   346     return result
   354     return result
   347 
   355 
   348 
   356 
   349 @adapter_config(name='visible', context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable), provides=IColumn)
   357 @adapter_config(name='visible',
       
   358                 context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable),
       
   359                 provides=IColumn)
   350 class SiteContainerTreeVisibleColumn(JsActionColumn):
   360 class SiteContainerTreeVisibleColumn(JsActionColumn):
   351     """Site container tree visible column"""
   361     """Site container tree visible column"""
   352 
   362 
   353     cssClasses = {'th': 'action',
   363     cssClasses = {'th': 'action',
   354                   'td': 'action'}
   364                   'td': 'action'}
   384                 icon_class=icon_class,
   394                 icon_class=icon_class,
   385                 title=self.request.localizer.translate(self.get_icon_hint(item)))
   395                 title=self.request.localizer.translate(self.get_icon_hint(item)))
   386 
   396 
   387     def get_icon_hint(self, item):
   397     def get_icon_hint(self, item):
   388         translate = self.request.localizer.translate
   398         translate = self.request.localizer.translate
   389         if ISiteLink.providedBy(item) and self.request.has_permission(self.permission, context=item):
   399         if ISiteLink.providedBy(item) and self.request.has_permission(self.permission,
       
   400                                                                       context=item):
   390             return translate(self.active_icon_hint)
   401             return translate(self.active_icon_hint)
   391         else:
   402         else:
   392             return translate(self.inactive_icon_hint)
   403             return translate(self.inactive_icon_hint)
   393 
   404 
   394     def renderCell(self, item):
   405     def renderCell(self, item):
   395         if ISiteLink.providedBy(item) and self.request.has_permission(self.permission, context=item):
   406         if ISiteLink.providedBy(item) and self.request.has_permission(self.permission,
       
   407                                                                       context=item):
   396             return super(SiteContainerTreeVisibleColumn, self).renderCell(item)
   408             return super(SiteContainerTreeVisibleColumn, self).renderCell(item)
   397         else:
   409         else:
   398             return self.get_icon(item)
   410             return self.get_icon(item)
   399 
   411 
   400 
   412 
   401 @view_config(name='switch-content-visibility.json', context=IBaseSiteItem, request_type=IPyAMSLayer,
   413 @view_config(name='switch-content-visibility.json', context=IBaseSiteItem,
   402              permission=MANAGE_CONTENT_PERMISSION, renderer='json', xhr=True)
   414              request_type=IPyAMSLayer, permission=MANAGE_CONTENT_PERMISSION,
       
   415              renderer='json', xhr=True)
   403 def switch_content_visibility(request):
   416 def switch_content_visibility(request):
   404     """Switch content link visibility"""
   417     """Switch content link visibility"""
   405     container = ISiteContainer(request.context)
   418     container = ISiteContainer(request.context)
   406     content = container.get(str(request.params.get('object_name')))
   419     content = container.get(str(request.params.get('object_name')))
   407     if not ISiteLink.providedBy(content):
   420     if not ISiteLink.providedBy(content):
   411         'visible': content.visible,
   424         'visible': content.visible,
   412         'published': IWorkflowPublicationInfo(content.__parent__).is_published()
   425         'published': IWorkflowPublicationInfo(content.__parent__).is_published()
   413     }
   426     }
   414 
   427 
   415 
   428 
   416 @adapter_config(name='type', context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable), provides=IColumn)
   429 @adapter_config(name='type',
       
   430                 context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable),
       
   431                 provides=IColumn)
   417 class SiteContainerTreeTypeColumn(NullAdapter):
   432 class SiteContainerTreeTypeColumn(NullAdapter):
   418     """Site container tree type column -- disabled in site tree view!"""
   433     """Site container tree type column -- disabled in site tree view!"""
   419 
   434 
   420 
   435 
   421 @adapter_config(name='name', context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable), provides=IColumn)
   436 @adapter_config(name='name',
       
   437                 context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable),
       
   438                 provides=IColumn)
   422 class SiteContainerTreeNameColumn(NameColumn):
   439 class SiteContainerTreeNameColumn(NameColumn):
   423     """Site container tree name column"""
   440     """Site container tree name column"""
   424 
   441 
   425     _header = _("Folders and topics")
   442     _header = _("Folders and topics")
   426 
   443 
   452                     state=self.table.rows_state or ('minus' if item in lineage(self.context) else 'plus'))
   469                     state=self.table.rows_state or ('minus' if item in lineage(self.context) else 'plus'))
   453                         if ISiteContainer.providedBy(item) else '',
   470                         if ISiteContainer.providedBy(item) else '',
   454                 title=name or super(SiteContainerTreeNameColumn, self).renderCell(item))
   471                 title=name or super(SiteContainerTreeNameColumn, self).renderCell(item))
   455 
   472 
   456 
   473 
   457 @adapter_config(name='content-type', context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable),
   474 @adapter_config(name='content-type',
       
   475                 context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable),
   458                 provides=IColumn)
   476                 provides=IColumn)
   459 class SiteContainerContentTypeColumn(I18nColumn, GetAttrColumn):
   477 class SiteContainerContentTypeColumn(I18nColumn, GetAttrColumn):
   460     """Site container content type column"""
   478     """Site container content type column"""
   461 
   479 
   462     _header = _("Content")
   480     _header = _("Content")
   465 
   483 
   466     def getValue(self, obj):
   484     def getValue(self, obj):
   467         return self.request.localizer.translate(obj.content_name)
   485         return self.request.localizer.translate(obj.content_name)
   468 
   486 
   469 
   487 
   470 @adapter_config(name='sequence', context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable),
   488 @adapter_config(name='sequence',
       
   489                 context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable),
   471                 provides=IColumn)
   490                 provides=IColumn)
   472 class SiteContainerTreeSequenceColumn(SharedToolDashboardSequenceColumn):
   491 class SiteContainerTreeSequenceColumn(SharedToolDashboardSequenceColumn):
   473     """Site container tree OID column"""
   492     """Site container tree OID column"""
   474 
   493 
   475     def getValue(self, obj):
   494     def getValue(self, obj):
   480         if IContentLink.providedBy(obj):
   499         if IContentLink.providedBy(obj):
   481             result = '» {0}'.format(result)
   500             result = '» {0}'.format(result)
   482         return result
   501         return result
   483 
   502 
   484 
   503 
   485 @adapter_config(name='status', context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable), provides=IColumn)
   504 @adapter_config(name='status',
       
   505                 context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable),
       
   506                 provides=IColumn)
   486 class SiteContainerTreeStatusColumn(SharedToolDashboardStatusColumn):
   507 class SiteContainerTreeStatusColumn(SharedToolDashboardStatusColumn):
   487     """Site container tree status column"""
   508     """Site container tree status column"""
   488 
   509 
   489     def getValue(self, obj):
   510     def getValue(self, obj):
   490         target = obj.get_target() if IContentLink.providedBy(obj) else obj
   511         target = obj.get_target() if IContentLink.providedBy(obj) else obj
   494         if IContentLink.providedBy(obj):
   515         if IContentLink.providedBy(obj):
   495             result = '({0})'.format(result)
   516             result = '({0})'.format(result)
   496         return result
   517         return result
   497 
   518 
   498 
   519 
   499 @adapter_config(name='status_date', context=(IBaseSiteItem, IPyAMSLayer, IDashboardTable), provides=IColumn)
   520 @adapter_config(name='status_date',
       
   521                 context=(IBaseSiteItem, IPyAMSLayer, IDashboardTable),
       
   522                 provides=IColumn)
   500 class SiteContainerTreeStatusDateColumn(SharedToolDashboardStatusDateColumn):
   523 class SiteContainerTreeStatusDateColumn(SharedToolDashboardStatusDateColumn):
   501     """Site container tree status date column"""
   524     """Site container tree status date column"""
   502 
   525 
   503     def getValue(self, obj):
   526     def getValue(self, obj):
   504         target = obj.get_target() if IContentLink.providedBy(obj) else obj
   527         target = obj.get_target() if IContentLink.providedBy(obj) else obj
   508         if IContentLink.providedBy(obj):
   531         if IContentLink.providedBy(obj):
   509             result = '({0})'.format(result)
   532             result = '({0})'.format(result)
   510         return result
   533         return result
   511 
   534 
   512 
   535 
   513 @adapter_config(name='version', context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable), provides=IColumn)
   536 @adapter_config(name='version',
       
   537                 context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable),
       
   538                 provides=IColumn)
   514 class SiteContainerTreeVersionColumn(SharedToolDashboardVersionColumn):
   539 class SiteContainerTreeVersionColumn(SharedToolDashboardVersionColumn):
   515     """Site container tree version column"""
   540     """Site container tree version column"""
   516 
   541 
   517     def getValue(self, obj):
   542     def getValue(self, obj):
   518         target = obj.get_target() if IContentLink.providedBy(obj) else obj
   543         target = obj.get_target() if IContentLink.providedBy(obj) else obj
   522         if IContentLink.providedBy(obj):
   547         if IContentLink.providedBy(obj):
   523             result = '({0})'.format(result)
   548             result = '({0})'.format(result)
   524         return result
   549         return result
   525 
   550 
   526 
   551 
   527 @adapter_config(name='status_principal', context=(IBaseSiteItem, IPyAMSLayer, IDashboardTable), provides=IColumn)
   552 @adapter_config(name='status_principal',
       
   553                 context=(IBaseSiteItem, IPyAMSLayer, IDashboardTable),
       
   554                 provides=IColumn)
   528 class SiteContainerTreeStatusPrincipalColumn(SharedToolDashboardStatusPrincipalColumn):
   555 class SiteContainerTreeStatusPrincipalColumn(SharedToolDashboardStatusPrincipalColumn):
   529     """Site container tree status principal column"""
   556     """Site container tree status principal column"""
   530 
   557 
   531     def getValue(self, obj):
   558     def getValue(self, obj):
   532         target = obj.get_target() if IContentLink.providedBy(obj) else obj
   559         target = obj.get_target() if IContentLink.providedBy(obj) else obj
   536         if IContentLink.providedBy(obj):
   563         if IContentLink.providedBy(obj):
   537             result = '({0})'.format(result)
   564             result = '({0})'.format(result)
   538         return result
   565         return result
   539 
   566 
   540 
   567 
   541 @adapter_config(name='owner', context=(IBaseSiteItem, IPyAMSLayer, IDashboardTable), provides=IColumn)
   568 @adapter_config(name='owner',
       
   569                 context=(IBaseSiteItem, IPyAMSLayer, IDashboardTable),
       
   570                 provides=IColumn)
   542 class SiteContainerTreeOwnerColumn(SharedToolDashboardOwnerColumn):
   571 class SiteContainerTreeOwnerColumn(SharedToolDashboardOwnerColumn):
   543     """Site container tree owner column"""
   572     """Site container tree owner column"""
   544 
   573 
   545     def getValue(self, obj):
   574     def getValue(self, obj):
   546         target = obj.get_target() if IContentLink.providedBy(obj) else obj
   575         target = obj.get_target() if IContentLink.providedBy(obj) else obj
   550         if IContentLink.providedBy(obj):
   579         if IContentLink.providedBy(obj):
   551             result = '({0})'.format(result)
   580             result = '({0})'.format(result)
   552         return result
   581         return result
   553 
   582 
   554 
   583 
   555 @adapter_config(name='trash', context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable), provides=IColumn)
   584 @adapter_config(name='trash',
       
   585                 context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable),
       
   586                 provides=IColumn)
   556 class SiteContainerTreeTrashColumn(TrashColumn):
   587 class SiteContainerTreeTrashColumn(TrashColumn):
   557     """Site container tree trash column"""
   588     """Site container tree trash column"""
   558 
   589 
   559     icon_hint = _("Delete site item")
   590     icon_hint = _("Delete site item")
   560     permission = MANAGE_SITE_PERMISSION
   591     permission = MANAGE_SITE_PERMISSION
   570 def delete_site_item(request):
   601 def delete_site_item(request):
   571     """Delete item from site container"""
   602     """Delete item from site container"""
   572     return delete_container_element(request, ignore_permission=True)
   603     return delete_container_element(request, ignore_permission=True)
   573 
   604 
   574 
   605 
   575 @adapter_config(context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable), provides=IValues)
   606 @adapter_config(context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable),
       
   607                 provides=IValues)
   576 class SiteContainerTreeValuesAdapter(ContextRequestViewAdapter):
   608 class SiteContainerTreeValuesAdapter(ContextRequestViewAdapter):
   577     """Site container tree values adapter"""
   609     """Site container tree values adapter"""
   578 
   610 
   579     @property
   611     @property
   580     def values(self):
   612     def values(self):
   594             if ISiteContainer.providedBy(container):
   626             if ISiteContainer.providedBy(container):
   595                 get_values(container, values)
   627                 get_values(container, values)
   596         return values
   628         return values
   597 
   629 
   598 
   630 
   599 @pagelet_config(name='site-tree.html', context=IBaseSiteItem, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION)
   631 @pagelet_config(name='site-tree.html', context=IBaseSiteItem, layer=IPyAMSLayer,
       
   632                 permission=VIEW_SYSTEM_PERMISSION)
   600 @implementer(IInnerPage)
   633 @implementer(IInnerPage)
   601 class SiteContainerTreeView(AdminView, ContainerView):
   634 class SiteContainerTreeView(AdminView, ContainerView):
   602     """Site Container tree view"""
   635     """Site Container tree view"""
   603 
   636 
   604     table_class = SiteContainerTreeTable
   637     table_class = SiteContainerTreeTable
   605 
   638 
   606     def __init__(self, context, request):
   639     def __init__(self, context, request):
   607         super(ContainerView, self).__init__(context, request)
   640         super(ContainerView, self).__init__(context, request)
   608         self.table = SiteContainerTreeTable(context, request, can_sort=ISiteManager.providedBy(context))
   641         self.table = SiteContainerTreeTable(context, request,
   609 
   642                                             can_sort=ISiteManager.providedBy(context))
   610 
   643 
   611 @adapter_config(context=(IBaseSiteItem, IAdminLayer, ISiteTreeTable), provides=IPageHeader)
   644 
       
   645 @adapter_config(context=(IBaseSiteItem, IAdminLayer, ISiteTreeTable),
       
   646                 provides=IPageHeader)
   612 class SiteContainerViewHeaderAdapter(DefaultPageHeaderAdapter):
   647 class SiteContainerViewHeaderAdapter(DefaultPageHeaderAdapter):
   613     """Site container tree view header adapter"""
   648     """Site container tree view header adapter"""
   614 
   649 
   615     icon_class = 'fa fa-fw fa-sitemap'
   650     icon_class = 'fa fa-fw fa-sitemap'
   616 
   651 
   650         row = table.setUpRow(item)
   685         row = table.setUpRow(item)
   651         result.append(table.renderRow(row).strip())
   686         result.append(table.renderRow(row).strip())
   652     return result
   687     return result
   653 
   688 
   654 
   689 
   655 @adapter_config(context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable), provides=ITableElementName)
   690 @adapter_config(context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable),
       
   691                 provides=ITableElementName)
   656 class SiteContainerTableElementName(ContextRequestViewAdapter):
   692 class SiteContainerTableElementName(ContextRequestViewAdapter):
   657     """Site container tree table element name"""
   693     """Site container tree table element name"""
   658 
   694 
   659     @property
   695     @property
   660     def name(self):
   696     def name(self):
   661         return II18n(self.context).query_attribute('title', request=self.request)
   697         return II18n(self.context).query_attribute('title', request=self.request)
   662 
   698 
   663 
   699 
   664 @adapter_config(context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable), provides=ITableElementEditor)
   700 @adapter_config(context=(IBaseSiteItem, IPyAMSLayer, ISiteTreeTable),
       
   701                 provides=ITableElementEditor)
   665 class SiteContainerTableElementEditor(DefaultElementEditorAdapter):
   702 class SiteContainerTableElementEditor(DefaultElementEditorAdapter):
   666     """Site container tree table element editor"""
   703     """Site container tree table element editor"""
   667 
   704 
   668     view_name = 'admin#site-tree.html'
   705     view_name = 'admin#site-tree.html'
   669     modal_target = False
   706     modal_target = False
   670 
   707 
   671 
   708 
   672 @adapter_config(context=(ISharedContent, IPyAMSLayer, ISiteTreeTable), provides=ITableElementName)
   709 @adapter_config(context=(ISharedContent, IPyAMSLayer, ISiteTreeTable),
       
   710                 provides=ITableElementName)
   673 class SharedContentTableElementName(ContextRequestViewAdapter):
   711 class SharedContentTableElementName(ContextRequestViewAdapter):
   674     """Shared content tree table element name"""
   712     """Shared content tree table element name"""
   675 
   713 
   676     @property
   714     @property
   677     def name(self):
   715     def name(self):
   678         version = IWorkflowVersions(self.context).get_last_versions(count=1)[0]
   716         version = IWorkflowVersions(self.context).get_last_versions(count=1)[0]
   679         return II18n(version).query_attribute('title', request=self.request)
   717         return II18n(version).query_attribute('title', request=self.request)
   680 
   718 
   681 
   719 
   682 @adapter_config(context=(ISharedContent, IPyAMSLayer, ISiteTreeTable), provides=ITableElementEditor)
   720 @adapter_config(context=(ISharedContent, IPyAMSLayer, ISiteTreeTable),
       
   721                 provides=ITableElementEditor)
   683 class SharedContentTableElementEditor(DefaultElementEditorAdapter):
   722 class SharedContentTableElementEditor(DefaultElementEditorAdapter):
   684     """Shared content tree table element editor"""
   723     """Shared content tree table element editor"""
   685 
   724 
   686     view_name = 'admin'
   725     view_name = 'admin'
   687     modal_target = False
   726     modal_target = False