Spiegel von
https://github.com/paviliondev/discourse-custom-wizard.git
synchronisiert 2024-11-09 20:02:54 +01:00
IMPROVE: Move pending wizard check to page change event
Dieser Commit ist enthalten in:
Ursprung
eadd64bbbc
Commit
10df3208df
2 geänderte Dateien mit 54 neuen und 80 gelöschten Zeilen
|
@ -21,6 +21,24 @@ export default {
|
||||||
};
|
};
|
||||||
|
|
||||||
withPluginApi("0.8.36", (api) => {
|
withPluginApi("0.8.36", (api) => {
|
||||||
|
api.onAppEvent('page:changed', (data) => {
|
||||||
|
const currentUser = container.lookup("service:current-user");
|
||||||
|
const settings = container.lookup("service:site-settings");
|
||||||
|
const redirectToWizard = currentUser.redirect_to_wizard;
|
||||||
|
const excludedPaths = settings.wizard_redirect_exclude_paths
|
||||||
|
.split("|")
|
||||||
|
.concat(["loading"]);
|
||||||
|
if (
|
||||||
|
redirectToWizard &&
|
||||||
|
(data.currentRouteName !== "customWizardStep") &&
|
||||||
|
!(excludedPaths.find((p) => {
|
||||||
|
return data.currentRouteName.indexOf(p) > -1;
|
||||||
|
}))
|
||||||
|
) {
|
||||||
|
window.location = "/w/" + redirectToWizard.dasherize();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
api.modifyClass("component:d-navigation", {
|
api.modifyClass("component:d-navigation", {
|
||||||
pluginId: "custom-wizard",
|
pluginId: "custom-wizard",
|
||||||
actions: {
|
actions: {
|
||||||
|
@ -42,47 +60,47 @@ export default {
|
||||||
// Needed to ensure appEvents get registered when navigating between steps
|
// Needed to ensure appEvents get registered when navigating between steps
|
||||||
@observes("id")
|
@observes("id")
|
||||||
initOnStepChange() {
|
initOnStepChange() {
|
||||||
if (/wizard-field|wizard-step/.test(this.id)) {
|
if(/ wizard - field | wizard - step /.test(this.id)) {
|
||||||
this._initialize();
|
this._initialize();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
api.modifyClass("component:d-editor", {
|
api.modifyClass("component:d-editor", {
|
||||||
pluginId: "custom-wizard",
|
pluginId: "custom-wizard",
|
||||||
|
|
||||||
didInsertElement() {
|
didInsertElement() {
|
||||||
this._super(...arguments);
|
this._super(...arguments);
|
||||||
|
|
||||||
if (this.wizardComposer) {
|
if (this.wizardComposer) {
|
||||||
this.appEvents.on(
|
this.appEvents.on(
|
||||||
`wizard-editor:insert-text`,
|
`wizard-editor:insert-text`,
|
||||||
this,
|
this,
|
||||||
"_wizardInsertText"
|
"_wizardInsertText"
|
||||||
);
|
);
|
||||||
this.appEvents.on(
|
this.appEvents.on(
|
||||||
"wizard-editor:replace-text",
|
"wizard-editor:replace-text",
|
||||||
this,
|
this,
|
||||||
"_wizardReplaceText"
|
"_wizardReplaceText"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_wizardInsertText(text, options) {
|
_wizardInsertText(text, options) {
|
||||||
if (
|
if (
|
||||||
this.session.wizardEventFieldId === this.fieldId &&
|
this.session.wizardEventFieldId === this.fieldId &&
|
||||||
this.element
|
this.element
|
||||||
) {
|
) {
|
||||||
this.insertText(text, options);
|
this.insertText(text, options);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_wizardReplaceText(oldVal, newVal, opts = {}) {
|
_wizardReplaceText(oldVal, newVal, opts = {}) {
|
||||||
if (this.session.wizardEventFieldId === this.fieldId) {
|
if (this.session.wizardEventFieldId === this.fieldId) {
|
||||||
this.replaceText(oldVal, newVal, opts);
|
this.replaceText(oldVal, newVal, opts);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,44 +0,0 @@
|
||||||
export default {
|
|
||||||
name: "custom-wizard-redirect",
|
|
||||||
after: "message-bus",
|
|
||||||
|
|
||||||
initialize: function (container) {
|
|
||||||
const messageBus = container.lookup("service:message-bus");
|
|
||||||
const siteSettings = container.lookup("service:site-settings");
|
|
||||||
|
|
||||||
if (!siteSettings.custom_wizard_enabled || !messageBus) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
messageBus.subscribe("/redirect_to_wizard", function (wizardId) {
|
|
||||||
const wizardUrl = window.location.origin + "/w/" + wizardId;
|
|
||||||
window.location.href = wizardUrl;
|
|
||||||
});
|
|
||||||
|
|
||||||
const ApplicationRoute = requirejs("discourse/routes/application").default;
|
|
||||||
|
|
||||||
ApplicationRoute.reopen({
|
|
||||||
actions: {
|
|
||||||
willTransition(transition) {
|
|
||||||
const redirectToWizard = this.get("currentUser.redirect_to_wizard");
|
|
||||||
const excludedPaths = this.siteSettings.wizard_redirect_exclude_paths
|
|
||||||
.split("|")
|
|
||||||
.concat(["loading"]);
|
|
||||||
|
|
||||||
if (
|
|
||||||
redirectToWizard &&
|
|
||||||
(!transition.intent.name ||
|
|
||||||
!excludedPaths.find((p) => {
|
|
||||||
return transition.intent.name.indexOf(p) > -1;
|
|
||||||
}))
|
|
||||||
) {
|
|
||||||
transition.abort();
|
|
||||||
window.location = "/w/" + redirectToWizard.dasherize();
|
|
||||||
}
|
|
||||||
|
|
||||||
return this._super(transition);
|
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
|
||||||
},
|
|
||||||
};
|
|
Laden …
In neuem Issue referenzieren