diff --git a/app/assets/javascripts/wizard/addon/components/discourse-logo.gjs b/app/assets/javascripts/wizard/addon/components/discourse-logo.gjs new file mode 100644 index 00000000000..1e61913b70d --- /dev/null +++ b/app/assets/javascripts/wizard/addon/components/discourse-logo.gjs @@ -0,0 +1,27 @@ + diff --git a/app/assets/javascripts/wizard/addon/components/discourse-logo.hbs b/app/assets/javascripts/wizard/addon/components/discourse-logo.hbs deleted file mode 100644 index e1218bbdee3..00000000000 --- a/app/assets/javascripts/wizard/addon/components/discourse-logo.hbs +++ /dev/null @@ -1,23 +0,0 @@ -{{! prettier-ignore }} - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/assets/javascripts/wizard/addon/controllers/wizard-step.js b/app/assets/javascripts/wizard/addon/controllers/wizard-step.js deleted file mode 100644 index 6ccd04fed59..00000000000 --- a/app/assets/javascripts/wizard/addon/controllers/wizard-step.js +++ /dev/null @@ -1,29 +0,0 @@ -import Controller from "@ember/controller"; -import { action } from "@ember/object"; -import { inject as service } from "@ember/service"; -import getUrl from "discourse-common/lib/get-url"; - -export default Controller.extend({ - router: service(), - - wizard: null, - step: null, - - @action - goNext(response) { - const next = this.step.next; - - if (response?.refresh_required) { - document.location = getUrl(`/wizard/steps/${next}`); - } else if (response?.success && next) { - this.router.transitionTo("wizard.step", next); - } else if (response?.success) { - this.router.transitionTo("discovery.latest"); - } - }, - - @action - goBack() { - this.router.transitionTo("wizard.step", this.step.previous); - }, -}); diff --git a/app/assets/javascripts/wizard/addon/controllers/wizard.js b/app/assets/javascripts/wizard/addon/controllers/wizard.js deleted file mode 100644 index e7ec5bf4789..00000000000 --- a/app/assets/javascripts/wizard/addon/controllers/wizard.js +++ /dev/null @@ -1,8 +0,0 @@ -import Controller, { inject as controller } from "@ember/controller"; - -export default class extends Controller { - @controller wizardStep; - get showCanvas() { - return this.wizardStep.get("step.id") === "ready"; - } -} diff --git a/app/assets/javascripts/wizard/addon/routes/wizard-index.js b/app/assets/javascripts/wizard/addon/routes/wizard-index.js index dfb521b7551..13263b139b9 100644 --- a/app/assets/javascripts/wizard/addon/routes/wizard-index.js +++ b/app/assets/javascripts/wizard/addon/routes/wizard-index.js @@ -1,10 +1,11 @@ import { inject as service } from "@ember/service"; import DiscourseRoute from "discourse/routes/discourse"; -export default DiscourseRoute.extend({ - router: service(), +export default class WizardIndexRoute extends DiscourseRoute { + @service router; + beforeModel() { - const appModel = this.modelFor("wizard"); - this.router.replaceWith("wizard.step", appModel.start); - }, -}); + const wizard = this.modelFor("wizard"); + this.router.replaceWith("wizard.step", wizard.start); + } +} diff --git a/app/assets/javascripts/wizard/addon/routes/wizard-step.js b/app/assets/javascripts/wizard/addon/routes/wizard-step.js index 76d78bc44d9..ae0a67e051d 100644 --- a/app/assets/javascripts/wizard/addon/routes/wizard-step.js +++ b/app/assets/javascripts/wizard/addon/routes/wizard-step.js @@ -1,17 +1,17 @@ +import { inject as service } from "@ember/service"; import DiscourseRoute from "discourse/routes/discourse"; -export default DiscourseRoute.extend({ +export default class WizardStepRoute extends DiscourseRoute { + @service router; + model(params) { - const allSteps = this.modelFor("wizard").steps; - const step = allSteps.findBy("id", params.step_id); - - return step || allSteps[0]; - }, - - setupController(controller, step) { const wizard = this.modelFor("wizard"); - this.controllerFor("wizard").set("currentStepId", step.id); + const step = wizard.findStep(params.step_id); - controller.setProperties({ step, wizard }); - }, -}); + if (!step) { + this.router.transitionTo("wizard.step", wizard.start); + } + + return { wizard, step }; + } +} diff --git a/app/assets/javascripts/wizard/addon/routes/wizard.js b/app/assets/javascripts/wizard/addon/routes/wizard.js index 49c92605d20..c78c766adb5 100644 --- a/app/assets/javascripts/wizard/addon/routes/wizard.js +++ b/app/assets/javascripts/wizard/addon/routes/wizard.js @@ -2,13 +2,13 @@ import Route from "@ember/routing/route"; import DisableSidebar from "discourse/mixins/disable-sidebar"; import Wizard from "wizard/models/wizard"; -export default Route.extend(DisableSidebar, { +export default class WizardRoute extends Route.extend(DisableSidebar) { model() { return Wizard.load(); - }, + } activate() { - this._super(...arguments); + super.activate(...arguments); document.body.classList.add("wizard"); @@ -16,10 +16,10 @@ export default Route.extend(DisableSidebar, { showTop: false, showSiteHeader: false, }); - }, + } deactivate() { - this._super(...arguments); + super.deactivate(...arguments); document.body.classList.remove("wizard"); @@ -27,5 +27,5 @@ export default Route.extend(DisableSidebar, { showTop: true, showSiteHeader: true, }); - }, -}); + } +} diff --git a/app/assets/javascripts/wizard/addon/templates/step.gjs b/app/assets/javascripts/wizard/addon/templates/step.gjs new file mode 100644 index 00000000000..2b9d28b5137 --- /dev/null +++ b/app/assets/javascripts/wizard/addon/templates/step.gjs @@ -0,0 +1,52 @@ +import Component from "@glimmer/component"; +import { action } from "@ember/object"; +import { inject as service } from "@ember/service"; +import RouteTemplate from "ember-route-template"; +import getUrl from "discourse-common/lib/get-url"; +import WizardCanvas from "../components/wizard-canvas"; +import WizardStep from "../components/wizard-step"; + +export default RouteTemplate( + class extends Component { + @service router; + + + + get step() { + return this.args.model.step; + } + + get showCanvas() { + return this.step.id === "ready"; + } + + @action + goNext(response) { + const next = this.step.next; + + if (response?.refresh_required) { + document.location = getUrl(`/wizard/steps/${next}`); + } else if (response?.success && next) { + this.router.transitionTo("wizard.step", next); + } else if (response?.success) { + this.router.transitionTo("discovery.latest"); + } + } + + @action + goBack() { + this.router.transitionTo("wizard.step", this.step.previous); + } + } +); diff --git a/app/assets/javascripts/wizard/addon/templates/step.hbs b/app/assets/javascripts/wizard/addon/templates/step.hbs deleted file mode 100644 index 4fad85a8287..00000000000 --- a/app/assets/javascripts/wizard/addon/templates/step.hbs +++ /dev/null @@ -1,6 +0,0 @@ - \ No newline at end of file diff --git a/app/assets/javascripts/wizard/addon/templates/wizard.gjs b/app/assets/javascripts/wizard/addon/templates/wizard.gjs new file mode 100644 index 00000000000..1b35aa10bc2 --- /dev/null +++ b/app/assets/javascripts/wizard/addon/templates/wizard.gjs @@ -0,0 +1,12 @@ +import RouteTemplate from "ember-route-template"; +import hideApplicationFooter from "discourse/helpers/hide-application-footer"; +import DiscourseLogo from "../components/discourse-logo"; + +export default RouteTemplate(); diff --git a/app/assets/javascripts/wizard/addon/templates/wizard.hbs b/app/assets/javascripts/wizard/addon/templates/wizard.hbs deleted file mode 100644 index 2374d33e10d..00000000000 --- a/app/assets/javascripts/wizard/addon/templates/wizard.hbs +++ /dev/null @@ -1,12 +0,0 @@ -{{hide-application-footer}} -
- {{#if this.showCanvas}} - - {{/if}} - - - - {{outlet}} -
\ No newline at end of file diff --git a/app/assets/javascripts/wizard/package.json b/app/assets/javascripts/wizard/package.json index 252feb74ce3..200ba7f774e 100644 --- a/app/assets/javascripts/wizard/package.json +++ b/app/assets/javascripts/wizard/package.json @@ -15,7 +15,8 @@ }, "dependencies": { "ember-cli-babel": "^8.2.0", - "ember-cli-htmlbars": "^6.3.0" + "ember-cli-htmlbars": "^6.3.0", + "ember-template-imports": "^4.0.0" }, "devDependencies": { "@babel/core": "^7.23.5",