Добавить кнопку выхода в верхнее меню

У меня есть клиент с сообществом, члены которого часто используют компьютеры общего доступа; в ходе тестирования они обнаружили, что многим пользователям сложно найти ссылку «Выйти» в выпадающем меню (гамбургер-меню). К сожалению, я не думаю, что существует хороший способ научить их всех нажимать ZZ.

Поэтому я пытаюсь добавить кнопку Выйти в верхнее меню.

Кажется, я мог бы использовать (Superseded) Add a "+ New Topic" button on every page, чтобы вместо создания новой темы выполнять выход из системы, и что будет «легко» изменить этот createTopic на logout, после чего задача будет решена.

https://github.com/discourse/discourse-new-topic-button-theme-component/blob/master/common/header.html#L39

Я потратил около часа на изучение вопроса, но так и не смог до конца разобраться, как это сделать.

Я с удовольствием воспользуюсь тем, что вы предложите.

Можете ли вы воспроизвести функцию API кнопки «Домой»?

image

<script type="text/discourse-plugin" version="0.4">
  api.changeWidgetSetting('home-logo', 'href', 'xxx')
</script>

Кнопку «OK» я нашёл, а вот API для выхода найти не могу.

Извините, мне нравится этот план, и я надеялся, что смогу помочь. Что означает $0 и является ли он частью document.querySelector? Это может помочь?

Я понял! Я не обещаю, что это сработает у вас, но это может помочь.

Это common/header.html

<script type="text/discourse-plugin" version="0.8">    
    const { iconNode } = require("discourse-common/lib/icon-library");
    const { logout } = require("discourse/lib/logout");

    api.decorateWidget("header-buttons:before", helper => {
        if (!Discourse.User.current()) return;
        currentUser = Discourse.User.current();


        let container = api.container,
        logout_text = 'Выйти', // текст кнопки!
        logout_title = 'Выйти',
        logout_icon = 'sign-out-alt',
        logout_button_class = "btn btn-default btn btn-icon-text",
        logout_button_helper = "button#logout",
        logout_label_helper = "span.d-button-label",
        composerModal = require("discourse/models/composer").default,
        composerController = container.lookup("controller:composer");

        const myLogout = function () {
            if (currentUser) {
                currentUser.destroySession();
            }
        };
 

        let currentUser = Discourse.User.current();
        let currentUsername = Discourse.User.current().username;
        return helper.h("span.header-links", [

        helper.h(
            logout_button_helper,
            {
              className: logout_button_class,
              title: logout_title,
              onclick: myLogout
            },
            [iconNode(logout_icon), helper.h(logout_label_helper, logout_text)]
          )        
      ])
    });
    </script>

Чёрт возьми, Джей,

я вставил этот скрипт и получил

Сводка

работающую кнопку!
image

Мне нужно немного подправить внешний вид, но она работает, отличная работа!

Спасибо, что поделился :sunglasses:

Привет, Джей,
твой код работает как по маслу!
У меня есть пользовательское меню под стандартной шапкой. Как я могу переместить эту кнопку туда? Screenshot by Lightshot
Чтобы создать свою навигацию, я добавил HTML в раздел common → header

заранее спасибо