在顶部菜单添加注销按钮

我有一位客户,其社区成员经常使用公共访问计算机;在测试中,他们发现许多用户很难在汉堡菜单中找到注销链接。遗憾的是,我认为没有好的方法可以教会所有人使用 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

我已经摸索了一个小时左右,但始终无法完全弄清楚如何实现。

4 个赞

我很乐意使用你提出的方案,

你能模仿主页按钮的 API 函数吗?

image

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

按钮OK我找到了,但找不到登出API。

3 个赞

抱歉,我很喜欢这个方案,也希望能帮上忙。请问 $0 指的是什么?它是否属于 document.querySelector 的一部分?这或许能提供一些帮助。

1 个赞

我明白了!我不能保证这对您有效,但这或许能帮到您。

这是 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>
14 个赞

Jay,搞什么鬼,

我运行了那个脚本,结果得到了一个

摘要

可以正常工作的按钮!
image

我需要稍微调整一下外观,但它确实能工作,干得漂亮!

感谢分享 :sunglasses:

4 个赞

你好,Jay,
你的代码运行得非常完美!
我在标准标题下方有一个自定义菜单。如何将该按钮移动到这里?Screenshot by Lightshot
为了创建我的自定义导航,我在“公共”部分 → 标题中添加了 HTML。

提前感谢。

1 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.