إضافة زر تسجيل الخروج إلى القائمة العلوية

لدي عميل يمتلك مجتمعًا يستخدم أعضاؤه غالبًا أجهزة كمبيوتر ذات وصول عام؛ وفي اختباراتاتهم، وجدوا أن العديد من المستخدمين يجدون صعوبة في العثور على رابط تسجيل الخروج في قائمة الهامبرغر. للأسف، لا أعتقد أن هناك طريقة جيدة لتعليمهم جميعًا استخدام \u003ckbd\u003eZZ\u003c/kbd\u003e.

لذلك: أحاول إضافة زر \u003ckbd\u003elogout\u003c/kbd\u003e إلى القائمة العلوية.

يبدو أنه يجب أن أتمكن من استخدام (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

لقد بحثت لمدة ساعة تقريبًا ولا أستطيع تحديد ذلك تمامًا.

سأستخدم بكل سرور ما ستقدمه،

هل يمكنك محاكاة وظيفة واجهة برمجة التطبيقات لزر الصفحة الرئيسية؟

image

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

لقد حصلت على زر

عذرًا، أنا أحب الخطة وآمل أن أستطيع المساعدة. ما الذي يشير إليه الرمز $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 إلى القسم العام → الرأس

شكرًا مقدّمًا