Beispiel #1
0
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
                ),
            ],
        ),
    ]
Beispiel #2
0
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))
    ]
Beispiel #3
0
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"]),
        ]
Beispiel #4
0
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
                ),
            ],
        ),
    ]
Beispiel #5
0
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
    ]
Beispiel #6
0
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,
    )]
Beispiel #7
0
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,
        ),
    ]
Beispiel #8
0
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",
                ),
            ],
        ),
    ]
Beispiel #9
0
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,
        )
    ]
Beispiel #10
0
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
                ),
            ],
        ),
    ]