상단 메뉴에 로그아웃 버튼 추가

커뮤니티 회원들이 공용 컴퓨터를 자주 사용하는 클라이언트가 있습니다. 테스트 결과, 많은 사용자가 햄버거 메뉴에서 로그아웃 링크를 찾는 데 어려움을 겪고 있다고 합니다. 안타깝게도 그들에게 ZZ 키를 모두 가르칠 좋은 방법이 있다고 생각하지 않습니다.

따라서: 상단 메뉴에 logout 버튼을 추가하려고 합니다.

(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

약 1시간 정도 찾아보았지만 정확히 어떻게 해야 하는지 알 수 없습니다.

당신이 만들어 내는 것을 기꺼이 사용하겠습니다.

홈 버튼 API 함수를 모방할 수 있을까요?

image

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

버튼은 해결했는데, 로그아웃 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 = 'Log Out', // 버튼 텍스트!
        logout_title = 'Log Out',
        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

커스텀 내비게이션을 만들기 위해 section common → header 부분에 HTML을 추가했습니다.

미리 감사드립니다.