Converti il pulsante Nuovo argomento per avere un sottomenu

Ehi ragazzi,

Qualcuno sa come posso fare in modo che il pulsante “Nuovo argomento” abbia un sottomenu per determinate categorie?

Attualmente ho questo

Ma speravo di ottenere qualcosa di simile quando si fa clic sul pulsante “Nuovo argomento”

Mi vengono in mente alcuni modi per farlo, ma non sono sicuro di star pensando troppo, nascondere il pulsante predefinito e aggiungere un pulsante completamente nuovo con il menu a discesa era una delle idee che avevo.

Questo è il codice attuale che ho, prima di farlo nel modo in cui ho detto, c’è un modo per aggiungere facilmente una voce di menu?

<script type="text/x-handlebars" data-template-name="/connectors/before-create-topic-button/syncbutton">
  <button onclick="window.location.href='/w/issue-with-sync3'" class="btn-default btn btn-icon-text ember-view customnewtopicbtn" title="Crea un nuovo argomento utilizzando il modello Issue SYNC 3">
    <svg class="fa d-icon d-icon-plus svg-icon svg-string" xmlns="http://www.w3.org/2000/svg">
      <use xlink:href="#plus"></use>
    </svg>
    <span class="d-button-label">Nuovo problema di sincronizzazione</span>
  </button>
</script>

Inoltre, se nascondo il pulsante “Crea argomento”, c’è qualche variabile o funzione che posso usare per recuperare il link del pulsante “Nuovo argomento”?

EDIT: o meglio, come viene aperta la sezione Nuovo argomento, pensavo che sarebbe stato facendo clic sul pulsante corrispondente a un ID o una classe, ma sembra che non sia così?

Grazie

2 Mi Piace

Puoi dare un’occhiata a questo componente del tema:

Aggiunge un pulsante a discesa all’intestazione e potrei ancora apportare alcune modifiche. Ma dovrebbe dare un’idea di come sostituire il pulsante predefinito e di come funziona l’apertura e il pre-riempimento del compositore.

3 Mi Piace

Grazie, questo potrebbe funzionare, ci darò un’occhiata.

Il mio problema ora è come inserire questo nei pulsanti dell’elenco degli argomenti, dato che sembra che non si possa usare DecorateWidget con i plugin outlet.

1 Mi Piace

Ah sì, ora ricordo perché non l’ho pubblicato.. Volevo ancora renderlo più flessibile e offrire di inserire il pulsante in vari punti. Ma non avevo capito come aggiungere il widget quando c’è solo una presa per plugin. Forse qualcuno conosce un buon approccio a questo?

1 Mi Piace

Hehe :slight_smile: l’ho trovato, ma le mie competenze non sono proprio in javascript :laughing: quindi non sono sicuro che sia utile

Comunque bel lavoro finora :slight_smile:

1 Mi Piace

Ho appena fatto qualcosa di simile la settimana scorsa…

In un tema puoi aggiungere questo a javascripts/discourse/components/new-topic-dropdown.js

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: "New Topic",
        description: "Start a new discussion",
        icon: "comment",
      },
    ];

    items.push({
      id: "new_ticket",
      name: "Support ticket",
      description: "Start a support request",
      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,
    });
  },
});

Questo aggiunge le opzioni “new topic” e “support ticket” a un pulsante a discesa… “new topic” apre il composer come al solito, e “support ticket” apre il composer con il tag “ticket” già aggiunto.

…e poi in javascripts/discourse/connectors/after-create-topic-button/new-topic-dropdown.hbs

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

…quindi con un po’ di CSS probabilmente vorrai nascondere il pulsante predefinito:

.navigation-controls {
  #create-topic {
    display: none;
  }
}
19 Mi Piace

Leggenda assoluta :slight_smile: Grazie

3 Mi Piace

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