Neues Thema-Schaltfläche in ein Untermenü konvertieren

Ich habe letzte Woche etwas Ähnliches gemacht…

In einem Theme können Sie dies zu javascripts/discourse/components/new-topic-dropdown.js hinzufügen

import { action } from "@ember/object";
import { getOwner } from "discourse-common/lib/get-owner";
import Composer from "discourse/models/composer";
import DropdownSelectBoxComponent from "select-kit/components/dropdown-select-box";
import { computed } from "@ember/object";

export default DropdownSelectBoxComponent.extend({
  classNames: ["new-topic-dropdown"],

  selectKitOptions: {
    icons: ["plus"],
    showFullTitle: true,
    autoFilterable: false,
    filterable: false,
    showCaret: true,
    none: "topic.create",
  },

  content: computed(function () {
    const items = [
      {
        id: "new_discussion",
        name: "Neues Thema",
        description: "Eine neue Diskussion starten",
        icon: "comment",
      },
    ];

    items.push({
      id: "new_ticket",
      name: "Support-Ticket",
      description: "Eine Support-Anfrage starten",
      icon: "tag",
    });

    return items;
  }),

  @action
  onChange(selectedAction) {
    const composerController = getOwner(this).lookup("controller:composer");

    let tags = null;
    let categoryId = this.category ? this.category.id : null;

    if (selectedAction === "new_ticket") {
      tags = "ticket";
    }

    composerController.open({
      action: Composer.CREATE_TOPIC,
      draftKey: Composer.DRAFT,
      categoryId: categoryId,
      tags: tags,
    });
  },
});

Dies fügt dem Dropdown-Button die Optionen „Neues Thema“ und „Support-Ticket“ hinzu. „Neues Thema“ öffnet den Composer wie gewohnt, und „Support-Ticket“ öffnet den Composer mit dem bereits hinzugefügten Tag „ticket“.

…und dann in javascripts/discourse/connectors/after-create-topic-button/new-topic-dropdown.hbs

{{#if currentUser}}
  {{new-topic-dropdown category=category}}
{{/if}}

…dann möchten Sie wahrscheinlich mit etwas CSS den Standard-Button ausblenden:

.navigation-controls {
  #create-topic {
    display: none;
  }
}
19 „Gefällt mir“