diff --git a/assets/javascripts/discourse/connectors/category-custom-settings/custom-wizard-category-settings.hbs b/assets/javascripts/discourse/connectors/category-custom-settings/custom-wizard-category-settings.hbs
new file mode 100644
index 00000000..4b5d673d
--- /dev/null
+++ b/assets/javascripts/discourse/connectors/category-custom-settings/custom-wizard-category-settings.hbs
@@ -0,0 +1,16 @@
+
{{i18n "admin.wizard.category_settings.custom_wizard.title"}}
+
+
+
+
+ {{combo-box
+ value=wizardListVal
+ content=wizardList
+ onChange=(action "changeWizard")
+ options=(hash
+ none="admin.wizard.select"
+ )}}
+
+
diff --git a/assets/javascripts/discourse/connectors/category-custom-settings/custom-wizard-category-settings.js.es6 b/assets/javascripts/discourse/connectors/category-custom-settings/custom-wizard-category-settings.js.es6
new file mode 100644
index 00000000..16352f95
--- /dev/null
+++ b/assets/javascripts/discourse/connectors/category-custom-settings/custom-wizard-category-settings.js.es6
@@ -0,0 +1,24 @@
+import CustomWizard from "../../models/custom-wizard";
+import { popupAjaxError } from "discourse/lib/ajax-error";
+
+export default {
+ setupComponent(attrs, component) {
+ CustomWizard.all()
+ .then((result) => {
+ component.set("wizardList", result);
+ })
+ .catch(popupAjaxError);
+
+ component.set(
+ "wizardListVal",
+ attrs?.category?.custom_fields?.create_topic_wizard
+ );
+ },
+
+ actions: {
+ changeWizard(wizard) {
+ this.set("wizardListVal", wizard);
+ this.set("category.custom_fields.create_topic_wizard", wizard);
+ },
+ },
+};
diff --git a/assets/javascripts/discourse/initializers/custom-wizard-edits.js.es6 b/assets/javascripts/discourse/initializers/custom-wizard-edits.js.es6
index 63ddd5e8..20787b4e 100644
--- a/assets/javascripts/discourse/initializers/custom-wizard-edits.js.es6
+++ b/assets/javascripts/discourse/initializers/custom-wizard-edits.js.es6
@@ -1,4 +1,6 @@
import DiscourseURL from "discourse/lib/url";
+import { withPluginApi } from "discourse/lib/plugin-api";
+import getUrl from "discourse-common/lib/get-url";
export default {
name: "custom-wizard-edits",
@@ -16,5 +18,23 @@ export default {
}
return existing.apply(this, [path, opts]);
};
+
+ withPluginApi("0.8.7", (api) => {
+ api.modifyClass("component:d-navigation", {
+ pluginId: "custom-wizard",
+ actions: {
+ clickCreateTopicButton() {
+ let createTopicWizard = this.get(
+ "category.custom_fields.create_topic_wizard"
+ );
+ if (createTopicWizard) {
+ window.location.href = getUrl(`/w/${createTopicWizard}`);
+ } else {
+ this._super();
+ }
+ },
+ },
+ });
+ });
},
};
diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml
index b07fd84a..40e103c8 100644
--- a/config/locales/client.en.yml
+++ b/config/locales/client.en.yml
@@ -60,7 +60,11 @@ en:
select_type: "Select a type"
condition: "Condition"
index: "Index"
-
+ category_settings:
+ custom_wizard:
+ title: "Custom Wizard"
+ create_topic_wizard: "Select a wizard to replace the new topic composer in this category."
+
message:
wizard:
select: "Select a wizard, or create a new one"
diff --git a/plugin.rb b/plugin.rb
index 9768412c..bf43de25 100644
--- a/plugin.rb
+++ b/plugin.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
# name: discourse-custom-wizard
# about: Create custom wizards
-# version: 1.15.6
+# version: 1.16.0
# authors: Angus McLeod
# url: https://github.com/paviliondev/discourse-custom-wizard
# contact emails: angus@thepavilion.io
@@ -116,6 +116,13 @@ after_initialize do
load File.expand_path(path, __FILE__)
end
+ # preloaded category custom fields
+ %w[
+ create_topic_wizard
+ ].each do |custom_field|
+ Site.preloaded_category_custom_fields << custom_field
+ end
+
Liquid::Template.register_filter(::CustomWizard::LiquidFilter::FirstNonEmpty)
add_class_method(:wizard, :user_requires_completion?) do |user|