mirror of
https://github.com/discourse/discourse.git
synced 2024-11-29 04:33:52 +08:00
5a99243629
Previously, we had a `showFooter` boolean on the application controller which would be set true/false in various routes by different routes/controllers. A global `routeWillChange` hook would set it `false` before every route transition, and the destination route/controller would have to set it `true` for the footer to show correctly. This commit replaces that with a new 'declarative' system. Instead of having to set the value true/false manually, UIs which need the footer to be hidden can simply include the `{{hide-application-footer}}` helper in their template when needed. The helper/service will automatically keep track of all the current invocations of that helper, and only show the footer when there are 0 invocations. This significantly simplifies things, and removes the need for many observers and controller injections, both of which are considered 'code smells' in modern Ember applications.
32 lines
672 B
JavaScript
32 lines
672 B
JavaScript
import Route from "@ember/routing/route";
|
|
import { findWizard } from "wizard/models/wizard";
|
|
import DisableSidebar from "discourse/mixins/disable-sidebar";
|
|
|
|
export default Route.extend(DisableSidebar, {
|
|
model() {
|
|
return findWizard();
|
|
},
|
|
|
|
activate() {
|
|
this._super(...arguments);
|
|
|
|
document.body.classList.add("wizard");
|
|
|
|
this.controllerFor("application").setProperties({
|
|
showTop: false,
|
|
showSiteHeader: false,
|
|
});
|
|
},
|
|
|
|
deactivate() {
|
|
this._super(...arguments);
|
|
|
|
document.body.classList.remove("wizard");
|
|
|
|
this.controllerFor("application").setProperties({
|
|
showTop: true,
|
|
showSiteHeader: true,
|
|
});
|
|
},
|
|
});
|