Livello minimo dipartimentale di categoria/sottocategoria per pubblicare un argomento

Hi,

  • We have a category called “Help & Support”.

  • This category has a bunch of subcategories. “Robotics”, “Programming”, etc.

  • So far users can post in “Help & Support”.

  • Our issue is that nobody is choosing a subcategory.

We would like to limit posting to only those subcategories.

One solution would be to lock the “Help & Support” category. However, we tested this options and since this disable the “New topic” button, people stopped posting there altogether.

Is there a way to keep a category open but configure the minimum depth level of subcategories selected?

Ideally, the current category (“Help & Support”) would be preselected and people would only need to click and select the subcategory.

Does anyone have an idea on how we could achieve this or similar behavior?

Thanks,
R.

Ehi, hai capito come fare?

Abbiamo utilizzato l’API per modificare il controller del compositore dei post e aggiungere un errore. Non ho l’ultima versione del codice a portata di mano, ma era più o meno così:

var computed = require("ember-addons/ember-computed-decorators").default;
api.modifyClass('controller:composer',
    {
      save(opts) {
        var categoryNb = $('.category-input .category-chooser .selected-name > span').length;
        if((categoryNb !== 0 && categoryNb < 2)  ) {
            this.set("lastValidatedAt", Date.now());
            return false;
        }
        return this._super(opts);
      },
      @computed("model.categoryId", "lastValidatedAt")
      categoryValidation(categoryId, lastValidatedAt) {
          var InputValidation = require("discourse/models/input-validation").default;
          var categoryNb = $('.category-input .category-chooser .selected-name > span').length;
          if( (categoryNb !== 0 && categoryNb < 2)  ) {
              return InputValidation.create({
                  failed: true,
                  reason: 'Devi selezionare una sottocategoria',
                  lastShownAt: lastValidatedAt
                });
          } else {
              return this._super(categoryId, lastValidatedAt);
          }
      }
  }
);

In sintesi, questo codice controlla semplicemente il numero di elementi nell’input della categoria e restituisce un errore se ce n’è solo uno o nessuno. Una sottocategoria avrà sempre due elementi ‘’. In questa versione del frammento che mi è rimasta, ciò veniva fatto tramite jQuery. Credo che ci fosse anche un’altra chiamata API per ottenere la profondità di una categoria.