z.B.
api.addCommunitySectionLink({
name: "intersection-navigator",
route:"tags.intersection",
title: I18n.t("tag_intersection_navigator.link.title"),
text: I18n.t("tag_intersection_navigator.link.text")
})
… wird fehlschlagen, weil diese Route eine Tag-ID benötigt.
Ich habe Folgendes versucht hinzuzufügen:
params: { tag_id: siteSettings.discourse_tag_intersection_navigator_all_word },
model: { tag_id: siteSettings.discourse_tag_intersection_navigator_all_word },
… aber ich vermute stark, dass dies nicht wie nötig von der API verarbeitet wird …
4 „Gefällt mir“
Ah, ich habe Fortschritte gemacht!
Es betrifft dies:
await click(".sidebar-section-link[data-link-name='unread']");
assert.strictEqual(currentURL(), "/unread", "links to the right URL");
});
test("adding section link via plugin API with callback function", async function (assert) {
let teardownCalled = false;
withPluginApi("1.2.0", (api) => {
api.addCommunitySectionLink((baseSectionLink) => {
return class CustomSectionLink extends baseSectionLink {
get name() {
return "user-summary";
}
get route() {
return "user.summary";
}
get model() {
3 „Gefällt mir“
Genauer gesagt, ich glaube, es ist hier: discourse/app/assets/javascripts/discourse/app/lib/sidebar/custom-community-section-links.js at d0c3f3b8fe6905e7e33ae4944cdf44c11ccc0df6 · discourse/discourse · GitHub
Wenn wir das hinzufügen, sollte es funktionieren:
get models() {
return args.models;
}
main ← dev-community-sidebar-models
opened 03:15PM - 04 Jun 25 UTC
Without this, you can't add a custom link like this...
```js
api.addCommunit… ySectionLink({
name: "tag-link",
route: "tag.show",
title: "foo",
text: "bar",
models: ["baz"]
})
```
...because the route needs a model
3 „Gefällt mir“
Oh, danke f
r die Er
ffnung!
1 „Gefällt mir“
Ach, und da es eine Bedingung typeof args === "function" gibt, könnten Sie sofort so etwas machen:
api.addCommunitySectionLink((Base) =
class CustomLink extends Base {
get name() {
return "intersection-navigator";
}
get route() {
return "tag.show";
}
get models() {
return ["tagid"];
}
get title() {
return I18n.t("tag_intersection_navigator.link.title");
}
get text() {
return I18n.t("tag_intersection_navigator.link.text");
}
}
);
1 „Gefällt mir“
Ja, das mache ich bereits … aber später im Prozess gibt es etwas Seltsames.
1 „Gefällt mir“
Aus irgendeinem Grund ist das nicht ganz richtig und ich bekomme eine Beschwerde über das Fehlen von postStream beim Klicken:
api.addCommunitySectionLink((baseSectionLink) =
return class CustomSectionLink extends baseSectionLink {
get name() {
return "intersection-navigator";
}
get route() {
return "tags.intersection";
}
get models() {
return [{tag_id: siteSettings.discourse_tag_intersection_navigator_all_word}];
}
get title() {
return I18n.t("tag_intersection_navigator.link.title")
}
get text() {
return I18n.t("tag_intersection_navigator.link.text");
}
};
});
Es ist fast so, als ob man das Modell für die aktuelle Route einbeziehen müsste, was seltsam ist!
1 „Gefällt mir“
was ist die Ausgabe dieser Einstellung? Es scheint in Ordnung zu funktionieren, wenn ich es manuell mache:
get models() {
return ["featured", "tv"];
}
2 „Gefällt mir“
Ja, das funktioniert, das ist wirklich hilfreich, danke!
Die Einstellung ist nur ein String. Ich habe es mir wohl zu kompliziert vorgestellt.
Der Name “models” für die Query-Parameter ist aber nicht zu 100 % intuitiv, oder?
Dein PR wird das viel übersichtlicher machen, danke!
2 „Gefällt mir“
Ja, es war mir auch nicht sofort klar, aber das liegt daran, dass es letztendlich die LinkTo-Komponente von Ember verwendet, die ein Modellargument erwartet…
1 „Gefällt mir“
system
(system)
Geschlossen,
4. Juli 2025 um 15:48
11
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.