Ist es möglich, Parameter an die API zu übergeben, die Community-Links erstellt?

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:

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;
}
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“

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