diff --git a/mayan/apps/documents/apps.py b/mayan/apps/documents/apps.py index 3e42965c4f..b936a441b5 100644 --- a/mayan/apps/documents/apps.py +++ b/mayan/apps/documents/apps.py @@ -518,6 +518,7 @@ class DocumentsApp(MayanAppConfig): ) # Document pages + menu_facet.add_unsorted_source(source=DocumentPage) menu_facet.bind_links( links=( link_document_page_rotate_left, diff --git a/mayan/apps/navigation/classes.py b/mayan/apps/navigation/classes.py index 51669d84d1..bf9fcef57f 100644 --- a/mayan/apps/navigation/classes.py +++ b/mayan/apps/navigation/classes.py @@ -77,7 +77,7 @@ class Menu(object): def remove(cls, name): del cls._registry[name] - def __init__(self, name, condition=None, icon=None, icon_class=None, label=None): + def __init__(self, name, condition=None, icon=None, icon_class=None, label=None, non_sorted_sources=None): if name in self.__class__._registry: raise Exception('A menu with this name already exists') @@ -90,6 +90,7 @@ class Menu(object): self.unbound_links = {} self.link_positions = {} self.__class__._registry[name] = self + self.non_sorted_sources = non_sorted_sources or [] def _map_links_to_source(self, links, source, map_variable='bound_links', position=None): source_links = getattr(self, map_variable).setdefault(source, []) @@ -98,6 +99,9 @@ class Menu(object): source_links.append(link) self.link_positions[link] = position + def add_unsorted_source(self, source): + self.non_sorted_sources.append(source) + def check_condition(self, context): """ Check to see if menu has a conditional display function and return @@ -250,7 +254,14 @@ class Menu(object): result.append(resolved_links) if result: - if sort_results: + unsorted_source = False + for resolved_navigation_object in resolved_navigation_object_list: + for source in self.non_sorted_sources: + if isinstance(resolved_navigation_object, source): + unsorted_source = True + break; + + if sort_results and not unsorted_source: result[0] = sorted( result[0], key=lambda item: ( item.link.text if isinstance(item, ResolvedLink) else item.label