Hilfe für die Header-widget-override Komponente

Hallo Leute

Ich habe mir die Zeit genommen, Ihre Komponente zu aktualisieren.

[Admin-Hinweis] Eines Ihrer Themes oder Plugins muss für die Kompatibilität mit bevorstehenden Änderungen im Discourse-Kern aktualisiert werden. (ID: discourse.header-widget-overrides) Identifiziertes Theme: ‘Header Icons’.

Als Neuling, der die ursprüngliche Komponente anhand der Hilfedokumente, Beispiele und durch Ausprobieren geschrieben hat, bin ich etwas verloren.

Der Beitrag über die Änderungen, Upcoming Header Changes - Preparing Themes and Plugins, setzt Wissen und Kontext voraus, die mir fehlen. Und die Hilfedokumente Developing Discourse Themes & Theme Components beziehen sich nicht auf die neuen APIs (und scheinen inzwischen etwas veraltet zu sein :frowning: )

Meine Komponente fügt zwei Icons zum Header hinzu – eines ist ein Link zur Seite des Documents-Plugins und das andere ist ein Icon, das sich basierend auf einem Wert in einem benutzerdefinierten Feld in den Einstellungen ändert.

Derzeit wird dies über das Folgende in head_tag.html realisiert.

Jede Anleitung wäre willkommen, da ich völlig verloren bin, wohin ich gehen soll.

Danke

<script type="text/discourse-plugin" version="0.8">
    const { iconNode } = require("discourse-common/lib/icon-library");
    api.decorateWidget('header-icons:before', helper => {
        return helper.h('div.d-header-icons.doc-header-set', [
            helper.h('a.icon.btn-flat.doc', {
                href:'/docs',
                title: 'Documents'
            }, [iconNode("book"), "Documents"]),
        ]);
    });


        api.decorateWidget('header-icons:before', (helper) => {
            //https://fontawesome.com/v5.15/icons?d=gallery&p=2&q=times&s=regular,solid&m=free
            let icon = 'calendar';
            let title = 'Open status: unknown';
            try {
                const cache = JSON.parse(settings.tool_status);
                const shutter = cache.tools[4];
                if (shutter.status)
                {
                    icon = 'calendar-check';
                    title = 'Open since '+shutter.date;
                }
                else
                {
                    icon = 'calendar-alt';
                    title = 'Closed since '+shutter.date;
                }
            } catch (e) {}
            return helper.h('div.d-header-icons.shutter-status', [
                helper.h('a.icon', {
                    href:'/calendar',
                    title: title
                }, iconNode(icon)),
            ]);
        });
    </script>

Sie können den gesamten GitHub-Code meiner Komponente hier sehen: GitHub - bluefroguk1/DiscourseHeaderIcons: This theme component places the Calendar icon + shutter status tick in our Discourse instance, bestaunen Sie meinen schrecklichen Programmierversuch lol

Hallo Martin,

Ich habe einen PR erstellt, der dir basierend auf dem Code hier helfen soll. Es ist vielleicht nicht genau das, was du willst. Es wird dir helfen zu verstehen, wie du die neue API verwendest. :+1:

https://github.com/bluefroguk1/DiscourseHeaderIcons/pull/1

Lass mich wissen, wenn du Fragen hast.

1 „Gefällt mir“