Skip to content
This repository has been archived by the owner on Nov 28, 2022. It is now read-only.

Commit

Permalink
Refactored document-title handler
Browse files Browse the repository at this point in the history
no issue
- moved `document-title` Route extension's functionality into the `ui` service
  - updates the title each time the router service emits a route changed event
  - `ui.updateDocumentTitle()` can now be called directly from components rather than the confusing `this.send('updateDocumentTitle')` bubbling behaviour
- refactored the `titleToken` implementation to use the now-formalised `RouteInfo`'s `metadata` field (https://github.com/emberjs/rfcs/blob/master/text/0398-RouteInfo-Metadata.md#appendix-a)
  • Loading branch information
kevinansfield committed May 20, 2019
1 parent 3855e1a commit 06d50b0
Show file tree
Hide file tree
Showing 31 changed files with 175 additions and 115 deletions.
2 changes: 1 addition & 1 deletion app/controllers/editor.js
Original file line number Diff line number Diff line change
Expand Up @@ -472,7 +472,7 @@ export default Controller.extend({
yield this.autosave.perform();
}

this.send('updateDocumentTitle');
this.ui.updateDocumentTitle();
}),

generateSlug: task(function* () {
Expand Down
6 changes: 3 additions & 3 deletions app/controllers/settings/general.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ export default Controller.extend({
notifications: service(),
session: service(),
settings: service(),
ui: service(),

availableTimezones: null,
iconExtensions: null,
Expand Down Expand Up @@ -272,9 +273,8 @@ export default Controller.extend({
let settings = yield this.settings.save();
config.set('blogTitle', settings.get('title'));

// this forces the document title to recompute after
// a blog title change
this.send('updateDocumentTitle');
// this forces the document title to recompute after a blog title change
this.ui.updateDocumentTitle();

return settings;
} catch (error) {
Expand Down
3 changes: 0 additions & 3 deletions app/router.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
import EmberRouter from '@ember/routing/router';
import config from './config/environment';
import documentTitle from 'ghost-admin/utils/document-title';
import ghostPaths from 'ghost-admin/utils/ghost-paths';

const Router = EmberRouter.extend({
location: config.locationType, // use HTML5 History API instead of hash-tag based URLs
rootURL: ghostPaths().adminRoot // admin interface lives under sub-directory /ghost
});

documentTitle();

Router.map(function () {
this.route('home', {path: '/'});

Expand Down
6 changes: 5 additions & 1 deletion app/routes/about.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
import AuthenticatedRoute from 'ghost-admin/routes/authenticated';

export default AuthenticatedRoute.extend({
titleToken: 'About'
buildRouteInfoMetadata() {
return {
titleToken: 'About'
};
}
});
4 changes: 0 additions & 4 deletions app/routes/application.js
Original file line number Diff line number Diff line change
Expand Up @@ -185,10 +185,6 @@ export default Route.extend(ApplicationRouteMixin, ShortcutsRoute, {
}
},

title(tokens) {
return `${tokens.join(' - ')} - ${this.get('config.blogTitle')}`;
},

sessionAuthenticated() {
if (this.get('session.skipAuthSuccessHandler')) {
return;
Expand Down
8 changes: 6 additions & 2 deletions app/routes/editor.js
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,12 @@ export default AuthenticatedRoute.extend(ShortcutsRoute, {
}
},

titleToken() {
return this.get('controller.post.title') || 'Editor';
buildRouteInfoMetadata() {
return {
titleToken: () => {
return this.get('controller.post.title') || 'Editor';
}
};
},

_blurAndScheduleAction(func) {
Expand Down
6 changes: 6 additions & 0 deletions app/routes/editor/new.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,11 @@ export default AuthenticatedRoute.extend({
setupController(controller, newPost) {
let editor = this.controllerFor('editor');
editor.setPost(newPost);
},

buildRouteInfoMetadata() {
return {
mainClasses: ['editor-new']
};
}
});
7 changes: 6 additions & 1 deletion app/routes/error404.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,16 @@ import Route from '@ember/routing/route';
export default Route.extend({
controllerName: 'error',
templateName: 'error',
titleToken: 'Error',

model() {
return {
status: 404
};
},

buildRouteInfoMetadata() {
return {
titleToken: 'Error'
};
}
});
8 changes: 6 additions & 2 deletions app/routes/members.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ import {inject as service} from '@ember/service';
export default AuthenticatedRoute.extend({
config: service(),

titleToken: 'Members',

// redirect to posts screen if:
// - developer experiments aren't enabled
// - TODO: members is disabled?
Expand All @@ -27,5 +25,11 @@ export default AuthenticatedRoute.extend({
setupController(controller) {
this._super(...arguments);
controller.fetchMembers.perform();
},

buildRouteInfoMetadata() {
return {
titleToken: 'Members'
};
}
});
9 changes: 7 additions & 2 deletions app/routes/pages.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
import PostsRoute from './posts';

export default PostsRoute.extend({
titleToken: 'Pages',
modelName: 'page'
modelName: 'page',

buildRouteInfoMetadata() {
return {
titleToken: 'Pages'
};
}
});
7 changes: 6 additions & 1 deletion app/routes/posts.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ export default AuthenticatedRoute.extend({
}
},

titleToken: 'Posts',
modelName: 'post',

perPage: 30,
Expand Down Expand Up @@ -103,6 +102,12 @@ export default AuthenticatedRoute.extend({
}
},

buildRouteInfoMetadata() {
return {
titleToken: 'Posts'
};
},

_getTypeFilters(type) {
let status = '[draft,scheduled,published]';

Expand Down
8 changes: 6 additions & 2 deletions app/routes/settings/code-injection.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@ import {inject as service} from '@ember/service';
export default AuthenticatedRoute.extend(CurrentUserSettings, {
settings: service(),

titleToken: 'Settings - Code injection',

beforeModel() {
this._super(...arguments);
return this.get('session.user')
Expand Down Expand Up @@ -34,5 +32,11 @@ export default AuthenticatedRoute.extend(CurrentUserSettings, {
return;
}
}
},

buildRouteInfoMetadata() {
return {
titleToken: 'Settings - Code injection'
};
}
});
8 changes: 6 additions & 2 deletions app/routes/settings/design.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ import {inject as service} from '@ember/service';
export default AuthenticatedRoute.extend(CurrentUserSettings, {
settings: service(),

titleToken: 'Settings - Design',

beforeModel() {
this._super(...arguments);
return this.get('session.user')
Expand Down Expand Up @@ -52,5 +50,11 @@ export default AuthenticatedRoute.extend(CurrentUserSettings, {
activateTheme(theme) {
return this.controller.send('activateTheme', theme);
}
},

buildRouteInfoMetadata() {
return {
titleToken: 'Settings - Design'
};
}
});
8 changes: 6 additions & 2 deletions app/routes/settings/general.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ export default AuthenticatedRoute.extend(CurrentUserSettings, {
config: service(),
settings: service(),

titleToken: 'Settings - General',

beforeModel() {
this._super(...arguments);
return this.get('session.user')
Expand Down Expand Up @@ -50,5 +48,11 @@ export default AuthenticatedRoute.extend(CurrentUserSettings, {
}
}

},

buildRouteInfoMetadata() {
return {
titleToken: 'Settings - General'
};
}
});
8 changes: 6 additions & 2 deletions app/routes/settings/integration.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@ import {inject as service} from '@ember/service';
export default AuthenticatedRoute.extend(CurrentUserSettings, {
router: service(),

titleToken: 'Settings - Integrations',

init() {
this._super(...arguments);
this.router.on('routeWillChange', (transition) => {
Expand Down Expand Up @@ -56,5 +54,11 @@ export default AuthenticatedRoute.extend(CurrentUserSettings, {
return;
}
}
},

buildRouteInfoMetadata() {
return {
titleToken: 'Settings - Integrations'
};
}
});
8 changes: 6 additions & 2 deletions app/routes/settings/integrations.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@ import {inject as service} from '@ember/service';
export default AuthenticatedRoute.extend(CurrentUserSettings, {
settings: service(),

titleToken: 'Settings - Integrations',

beforeModel() {
this._super(...arguments);
return this.get('session.user')
Expand All @@ -18,5 +16,11 @@ export default AuthenticatedRoute.extend(CurrentUserSettings, {
// kick off the background fetch of integrations so that we can
// show the screen immediately
controller.fetchIntegrations.perform();
},

buildRouteInfoMetadata() {
return {
titleToken: 'Settings - Integrations'
};
}
});
8 changes: 6 additions & 2 deletions app/routes/settings/integrations/amp.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@ import {inject as service} from '@ember/service';
export default AuthenticatedRoute.extend(CurrentUserSettings, {
settings: service(),

titleToken: 'AMP',

beforeModel() {
this._super(...arguments);
return this.get('session.user')
Expand All @@ -30,6 +28,12 @@ export default AuthenticatedRoute.extend(CurrentUserSettings, {
return;
}
}
},

buildRouteInfoMetadata() {
return {
titleToken: 'AMP'
};
}

});
8 changes: 6 additions & 2 deletions app/routes/settings/integrations/slack.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@ import {inject as service} from '@ember/service';
export default AuthenticatedRoute.extend(CurrentUserSettings, {
settings: service(),

titleToken: 'Slack',

beforeModel() {
this._super(...arguments);
return this.get('session.user')
Expand All @@ -31,5 +29,11 @@ export default AuthenticatedRoute.extend(CurrentUserSettings, {
return;
}
}
},

buildRouteInfoMetadata() {
return {
titleToken: 'Slack'
};
}
});
8 changes: 6 additions & 2 deletions app/routes/settings/integrations/unsplash.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ export default AuthenticatedRoute.extend(CurrentUserSettings, {
config: service(),
settings: service(),

titleToken: 'Unsplash',

// reload settings to ensure we have latest values and pre-configure
// Unsplash to be active if the server doesn't have any unsplash setting
beforeModel() {
Expand Down Expand Up @@ -51,5 +49,11 @@ export default AuthenticatedRoute.extend(CurrentUserSettings, {
return;
}
}
},

buildRouteInfoMetadata() {
return {
titleToken: 'Unsplash'
};
}
});
8 changes: 6 additions & 2 deletions app/routes/settings/integrations/zapier.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ import AuthenticatedRoute from 'ghost-admin/routes/authenticated';
import CurrentUserSettings from '../../../mixins/current-user-settings';

export default AuthenticatedRoute.extend(CurrentUserSettings, {
titleToken: 'Zapier',

beforeModel() {
this._super(...arguments);
return this.get('session.user')
Expand All @@ -18,5 +16,11 @@ export default AuthenticatedRoute.extend(CurrentUserSettings, {
return this
.controllerFor('settings.integrations')
.integrationModelHook('slug', 'zapier', this, transition);
},

buildRouteInfoMetadata() {
return {
titleToken: 'Zapier'
};
}
});
8 changes: 6 additions & 2 deletions app/routes/settings/labs.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@ import {inject as service} from '@ember/service';
export default AuthenticatedRoute.extend(CurrentUserSettings, {
settings: service(),

titleToken: 'Settings - Labs',

beforeModel() {
this._super(...arguments);
return this.get('session.user')
Expand All @@ -22,5 +20,11 @@ export default AuthenticatedRoute.extend(CurrentUserSettings, {
if (isExiting) {
controller.reset();
}
},

buildRouteInfoMetadata() {
return {
titleToken: 'Settings - Labs'
};
}
});
Loading

0 comments on commit 06d50b0

Please sign in to comment.