|
20 | 20 |
|
21 | 21 | from Acquisition import aq_base |
22 | 22 | from bika.lims import api |
23 | | -from plone import api as ploneapi |
24 | | -from plone.app.dexterity.behaviors.exclfromnav import IExcludeFromNavigation |
| 23 | +from plone.registry.interfaces import IRegistry |
25 | 24 | from Products.CMFCore.permissions import ModifyPortalContent |
26 | 25 | from Products.DCWorkflow.Guard import Guard |
27 | 26 | from senaite.core import permissions |
|
35 | 34 | from senaite.storage.catalog import StorageCatalog |
36 | 35 | from senaite.storage.config import PRODUCT_NAME |
37 | 36 | from senaite.storage.config import PROFILE_ID |
38 | | - |
| 37 | +from zope.component import getUtility |
39 | 38 |
|
40 | 39 | SITE_STRUCTURE = [ |
41 | 40 | # Tuples of (portal_type, obj_id, obj_title, parent_path, display_type) |
@@ -429,20 +428,35 @@ def resolve_parent(parent_path): |
429 | 428 |
|
430 | 429 |
|
431 | 430 | def display_in_nav(obj): |
432 | | - """Makes an object to be displayed in the navigation bar |
| 431 | + """Makes an object and/or objects from the given portal type to be |
| 432 | + displayed in the navigation bar |
433 | 433 | """ |
434 | | - # Display in navigation |
435 | | - registry_id = "plone.displayed_types" |
436 | 434 | portal_type = api.get_portal_type(obj) |
437 | | - to_display = ploneapi.portal.get_registry_record(registry_id, default=()) |
438 | | - if portal_type not in to_display: |
439 | | - to_display = to_display + (portal_type, ) |
440 | | - ploneapi.portal.set_registry_record(registry_id, to_display) |
441 | | - |
442 | | - nav_exclude = IExcludeFromNavigation(obj, None) |
443 | | - if nav_exclude: |
444 | | - nav_exclude.exclude_from_nav = False |
445 | | - obj.reindexObject(idxs=["exclude_from_nav"]) |
| 435 | + |
| 436 | + # add to the plone's registry displayed_types |
| 437 | + registry = getUtility(IRegistry) |
| 438 | + key = "plone.displayed_types" |
| 439 | + displayed = registry.get(key, ()) |
| 440 | + if portal_type not in displayed: |
| 441 | + displayed += (portal_type,) |
| 442 | + registry[key] = displayed |
| 443 | + |
| 444 | + # add to senaite setup's sidebar_displayed_types |
| 445 | + setup = api.get_senaite_setup() |
| 446 | + displayed = setup.getSidebarDisplayedTypes() |
| 447 | + if displayed and portal_type not in displayed: |
| 448 | + displayed += (portal_type,) |
| 449 | + setup.setSidebarDisplayedTypes(displayed) |
| 450 | + |
| 451 | + # if a root folder, add to senaite setup's sidebar_folders |
| 452 | + setup = api.get_senaite_setup() |
| 453 | + portal = api.get_portal() |
| 454 | + if api.get_parent(obj) == portal: |
| 455 | + obj_id = api.get_id(obj) |
| 456 | + folders = setup.getSidebarFolders() |
| 457 | + if obj_id not in folders: |
| 458 | + folders += (obj_id, ) |
| 459 | + setup.setSidebarFolders(folders) |
446 | 460 |
|
447 | 461 |
|
448 | 462 | def reindex_storage_structure(portal): |
|
0 commit comments