def _help_menu_topics() -> List[TopicMenuTopic]: return [ TopicMenuTopic( name="local_help", title=_("Internal links"), icon=None, items=[ TopicMenuItem( name="rest_api_redoc", title=_("REST API documentation"), url="openapi/", target="_blank", sort_index=30, icon=None, # TODO(CMK-5773): add an icon ), TopicMenuItem( name="rest_api_swagger_ui", title=_("REST API interactive GUI"), url="api/v0/ui/", target="_blank", sort_index=30, icon=None, # TODO(CMK-5773): add an icon ), TopicMenuItem( name="plugin_api", title=_("Plugin API documentation"), url="plugin-api/", target="_blank", sort_index=40, icon=None, # TODO(CMK-5773): add an icon ), ]), TopicMenuTopic( name="external_help", title=_("External links"), icon=None, # TODO(CMK-5773): add an icon items=[ TopicMenuItem( name="manual", title=_("Manual"), url="https://checkmk.com/cms.html", target="_blank", sort_index=30, icon=None, # TODO(CMK-5773): add an icon ), TopicMenuItem( name="youtube_channel", title=_("YouTube"), url="https://www.youtube.com/checkmk-channel", target="_blank", sort_index=30, icon=None, # TODO(CMK-5773): add an icon ), ], ), ]
def get_wato_menu_items() -> List[TopicMenuTopic]: by_topic: Dict[MainModuleTopic, TopicMenuTopic] = {} for module_class in main_module_registry.values(): module = module_class() if not module.may_see(): continue topic = by_topic.setdefault( module.topic, TopicMenuTopic( name=module.topic.name, title=module.topic.title, icon_name=module.topic.icon_name, items=[], )) topic.items.append( TopicMenuItem( name=module.mode_or_url, title=module.title, icon_name=module.icon, url=module.get_url(), sort_index=module.sort_index, is_advanced=module.is_advanced, )) # Sort the items of all topics for topic in by_topic.values(): topic.items.sort(key=lambda i: (i.sort_index, i.title)) # Return the sorted topics return [ v for k, v in sorted(by_topic.items(), key=lambda e: (e[0].sort_index, e[0].title)) ]
def test_match_item_generator_setup_menu(): assert list( MatchItemGeneratorSetupMenu( "setup", lambda: [ TopicMenuTopic( name="topic", title="Topic", items=[ TopicMenuItem(name="item 1", title="Item 1", sort_index=0, url="url 1"), TopicMenuItem(name="item 2", title="Item 2", sort_index=1, url="url 2"), ], ) ], ).generate_match_items()) == [ MatchItem(title="Item 1", topic="Setup", url="url 1", match_texts=["item 1"]), MatchItem(title="Item 2", topic="Setup", url="url 2", match_texts=["item 2"]), ]
def _help_menu_topics() -> List[TopicMenuTopic]: return [ TopicMenuTopic( name="help", title=_("Help"), icon=None, # TODO(CMK-5773): add an icon items=[ TopicMenuItem( name="manual", title=_("Manual"), url="https://checkmk.com/cms.html", target="_blank", sort_index=30, icon=None, # TODO(CMK-5773): add an icon ), TopicMenuItem( name="youtube_channel", title=_("Youtube"), url="https://www.youtube.com/checkmk-channel", target="_blank", sort_index=30, icon=None, # TODO(CMK-5773): add an icon ), ], ), ]
def make_topic_menu( visuals: List[Tuple[str, Tuple[str, Visual]]]) -> List[TopicMenuTopic]: pagetypes.PagetypeTopics.load() topics = pagetypes.PagetypeTopics.get_permitted_instances() by_topic: Dict[pagetypes.PagetypeTopics, TopicMenuTopic] = {} for visual_type_name, (name, visual) in visuals: if visual["hidden"] or visual.get("mobile"): continue # Skip views not inteded to be shown in the menus topic_id = visual["topic"] try: topic = topics[topic_id] except KeyError: topic = topics["other"] url = _visual_url(visual_type_name, name) topic = by_topic.setdefault( topic, TopicMenuTopic( name=topic.name(), title=topic.title(), max_entries=topic.max_entries(), items=[], icon=topic.icon_name(), hide=topic.hide(), ), ) topic.items.append( TopicMenuItem( name=name, title=visual_title(visual_type_name, visual, visual["context"], skip_title_context=True), url=url, sort_index=visual["sort_index"], is_show_more=visual["is_show_more"], icon=visual["icon"], )) # Sort the items of all topics for topic in by_topic.values(): topic.items.sort(key=lambda i: (i.sort_index, i.title)) # Return the sorted topics return [ v for k, v in sorted(by_topic.items(), key=lambda e: (e[0].sort_index(), e[0].title())) if not v.hide ]
def _user_menu_topics() -> List[TopicMenuTopic]: items = [ TopicMenuItem( name="change_password", title=_("Change password"), url="user_change_pw.py", sort_index=10, is_advanced=False, icon_name="topic_change_password", emblem=None, ), TopicMenuItem( name="user_profile", title=_("Edit profile"), url="user_profile.py", sort_index=20, is_advanced=False, icon_name="topic_profile", emblem=None, ), TopicMenuItem( name="logout", title=_("Logout"), url="logout.py", sort_index=30, is_advanced=False, icon_name="sidebar_logout", emblem=None, ), ] if rulebased_notifications_enabled() and config.user.may('general.edit_notifications'): items.insert( 1, TopicMenuItem( name="notification_rules", title=_("Notification rules"), url="wato.py?mode=user_notifications_p", sort_index=30, is_advanced=False, icon_name="topic_events", emblem=None, )) return [TopicMenuTopic( name="user", title=_("User"), icon_name="topic_profile", items=items, )]
def _user_menu_topics() -> List[TopicMenuTopic]: quick_items = [ TopicMenuItem( name="ui_theme", title=_("Color theme"), url= 'javascript:cmk.sidebar.toggle_user_attribute("ajax_ui_theme.py")', target="", sort_index=10, icon="color_mode", button_title=_get_current_theme_titel(), ), TopicMenuItem( name="sidebar_position", title=_("Sidebar position"), url= 'javascript:cmk.sidebar.toggle_user_attribute("ajax_sidebar_position.py")', target="", sort_index=20, icon="sidebar_position", button_title=_sidebar_position_title(_get_sidebar_position()), ), ] items = [ TopicMenuItem( name="user_profile", title=_("Edit profile"), url="user_profile.py", sort_index=10, icon="topic_profile", ), TopicMenuItem( name="change_password", title=_("Change password"), url="user_change_pw.py", sort_index=30, icon="topic_change_password", ), TopicMenuItem( name="two_factor", title=_("Two-factor authentication"), url="user_two_factor_overview.py", sort_index=30, icon="topic_two_factor", ), TopicMenuItem( name="logout", title=_("Logout"), url="logout.py", sort_index=40, icon="sidebar_logout", ), ] if rulebased_notifications_enabled() and user.may( "general.edit_notifications"): items.insert( 1, TopicMenuItem( name="notification_rules", title=_("Notification rules"), url="wato.py?mode=user_notifications_p", sort_index=20, icon="topic_events", ), ) return [ TopicMenuTopic( name="user", title=_("User interface"), icon="topic_user_interface", items=quick_items, ), TopicMenuTopic( name="user", title=_("User profile"), icon="topic_profile", items=items, ), ]
def _help_menu_topics() -> List[TopicMenuTopic]: return [ TopicMenuTopic( name="learning_checkmk", title=_("Learning Checkmk"), icon="learning_checkmk", items=[ TopicMenuItem( name="beginners_guide", title=_("Beginner's guide"), url=doc_reference_url(DocReference.INTRO_WELCOME), target="_blank", sort_index=10, icon="learning_beginner", ), TopicMenuItem( name="user_manual", title=_("User manual"), url=doc_reference_url(), target="_blank", sort_index=20, icon="learning_guide", ), TopicMenuItem( name="video_tutorials", title=_("Video tutorials"), url= "https://www.youtube.com/playlist?list=PL8DfRO2DvOK1slgjfTu0hMOnepf1F7ssh", target="_blank", sort_index=30, icon="learning_video_tutorials", ), TopicMenuItem( name="community_forum", title=_("Community forum"), url="https://forum.checkmk.com/", target="_blank", sort_index=40, icon="learning_forum", ), ], ), TopicMenuTopic( name="developer_resources", title=_("Developer resources"), icon="developer_resources", items=[ TopicMenuItem( name="plugin_api_introduction", title=_("Check plugin API introduction"), url=doc_reference_url(DocReference.DEVEL_CHECK_PLUGINS), target="_blank", sort_index=10, icon={ "icon": "services_green", "emblem": "api", }, ), TopicMenuItem( name="plugin_api_reference", title=_("Check plugin API reference"), url="plugin-api/", target="_blank", sort_index=20, icon={ "icon": "services_green", "emblem": "api", }, ), TopicMenuItem( name="rest_api_introduction", title=_("REST API introduction"), url=doc_reference_url(DocReference.REST_API), target="_blank", sort_index=30, icon={ "icon": "global_settings", "emblem": "api", }, ), TopicMenuItem( name="rest_api_documentation", title=_("REST API documentation"), url="openapi/", target="_blank", sort_index=40, icon={ "icon": "global_settings", "emblem": "api", }, ), TopicMenuItem( name="rest_api_interactive_gui", title=_("REST API interactive GUI"), url="api/1.0/ui/", target="_blank", sort_index=50, icon={ "icon": "global_settings", "emblem": "api", }, ), ], ), TopicMenuTopic( name="about_checkmk", title=_("About Checkmk"), icon="about_checkmk", items=[ TopicMenuItem( name="info", title=_("Info"), url="info.py", sort_index=10, icon="tribe29", ), TopicMenuItem( name="change_log", title=_("Change log (Werks)"), url="change_log.py", sort_index=20, icon="tribe29", ), ], ), ]
def _user_menu_topics() -> List[TopicMenuTopic]: quick_items = [ TopicMenuItem( name="ui_theme", title=_("Interface theme"), url= "javascript:cmk.sidebar.toggle_user_attribute(\"ajax_ui_theme.py\")", target="", sort_index=10, icon="color_mode", button_title=_get_current_theme_titel(), ), TopicMenuItem( name="sidebar_position", title=_("Sidebar position"), url= "javascript:cmk.sidebar.toggle_user_attribute(\"ajax_sidebar_position.py\")", target="", sort_index=20, icon="sidebar_position", button_title=_sidebar_position_title(_get_sidebar_position()), ), ] items = [ TopicMenuItem( name="change_password", title=_("Change password"), url="user_change_pw.py", sort_index=10, icon="topic_change_password", ), TopicMenuItem( name="user_profile", title=_("Edit profile"), url="user_profile.py", sort_index=20, icon="topic_profile", ), TopicMenuItem( name="logout", title=_("Logout"), url="logout.py", sort_index=30, icon="sidebar_logout", ), ] if rulebased_notifications_enabled() and config.user.may( 'general.edit_notifications'): items.insert( 1, TopicMenuItem( name="notification_rules", title=_("Notification rules"), url="wato.py?mode=user_notifications_p", sort_index=30, icon="topic_events", )) return [ TopicMenuTopic( name="user", title=_("Quick toggle"), # TODO(rb): set correct icon icon="topic_profile", items=quick_items, ), TopicMenuTopic( name="user", title=_("Profile"), icon="topic_profile", items=items, ) ]
def _help_menu_topics() -> List[TopicMenuTopic]: return [ TopicMenuTopic( name="version", title=_("Version"), icon=None, items=[ TopicMenuItem( name="release_notes", title=_("Release notes"), url="version.py?major=1", sort_index=10, icon="tribe29", ), TopicMenuItem( name="release_notes", title=_("Change log"), url="version.py", sort_index=20, icon="tribe29", ), ], ), TopicMenuTopic( name="apis", title=_("APIs"), icon=None, items=[ TopicMenuItem( name="rest_api_redoc", title=_("REST API documentation"), url="openapi/", target="_blank", sort_index=30, icon=None, # TODO(CMK-5773): add an icon ), TopicMenuItem( name="rest_api_swagger_ui", title=_("REST API interactive GUI"), url="api/1.0/ui/", target="_blank", sort_index=30, icon=None, # TODO(CMK-5773): add an icon ), TopicMenuItem( name="plugin_api", title=_("Plugin API reference"), url="plugin-api/", target="_blank", sort_index=40, icon=None, # TODO(CMK-5773): add an icon ), ], ), TopicMenuTopic( name="external_help", title=_("External"), icon=None, # TODO(CMK-5773): add an icon items=[ TopicMenuItem( name="manual", title=_("User guide"), url=user.get_docs_base_url(), target="_blank", sort_index=30, icon=None, # TODO(CMK-5773): add an icon ), TopicMenuItem( name="forum", title=_("Forum"), url="https://forum.checkmk.com/", target="_blank", sort_index=40, icon=None, # TODO(CMK-5773): add an icon ), TopicMenuItem( name="youtube_channel", title=_("YouTube"), url="https://www.youtube.com/checkmk-channel", target="_blank", sort_index=50, icon=None, # TODO(CMK-5773): add an icon ), ], ), ]