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 |