トピックを投稿するための最小カテゴリ/サブカテゴリ部門レベル

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.

やあ、これどうやるか分かった?

API を使用して投稿作成コントローラーを修正し、エラーを追加しました。最新のコードは手元にありませんが、内容は以下のようでした:

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: 'You need to select a subcategory',
                  lastShownAt: lastValidatedAt
                });
          } else {
              return this._super(categoryId, lastValidatedAt);
          }
      }
  }
);

要約すると、これはカテゴリ入力内の要素数をチェックし、1 つまたは 0 つの場合にエラーを出力するものです。サブカテゴリは常に 2 つの要素(‘’)を持ちます。このスニペットのバージョンでは、jQuery を使用して実装していました。カテゴリの深さを取得するための別の API 呼び出しもあったと記憶しています。