mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-27 12:53:13 +03:00
5d59670ac3
no issue - Opted in to use explicit `hisotry.replaceState` and setting iframe's `src` using assignment instead of tracking it through computed property. This allows for tighter control over when iframe's history is updated which was causing problems when `src` was bound to computed property - Added billing page metadata. This way browser history records appear with nicer signature - Removed "update button" iframe and rewrote "global iframe" to not use modals. This allows to have single iframe on a page, which simplifies `postMessage` communication and preserve history inside iframe to be able to navigate it after closure - Added route change handler responding to BMA app route changes. Allows to sync browser URL visible to the user with active route in BMA iframe. The sync is based on `hisory.replaceState` method that makes sure singular history records are kept in the browser history - Added nested wildcard billing route. This is meant to catch all the nested routes inside of BMA iframe
80 lines
2.8 KiB
JavaScript
80 lines
2.8 KiB
JavaScript
import EmberRouter from '@ember/routing/router';
|
|
import config from './config/environment';
|
|
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
|
|
});
|
|
|
|
Router.map(function () {
|
|
this.route('home', {path: '/'});
|
|
|
|
this.route('setup', function () {
|
|
this.route('one');
|
|
this.route('two');
|
|
this.route('three');
|
|
});
|
|
|
|
this.route('signin');
|
|
this.route('signout');
|
|
this.route('signup', {path: '/signup/:token'});
|
|
this.route('reset', {path: '/reset/:token'});
|
|
this.route('about');
|
|
this.route('site');
|
|
|
|
this.route('billing', function () {
|
|
this.route('billing-sub', {path: '/*sub'});
|
|
});
|
|
|
|
this.route('posts');
|
|
this.route('pages');
|
|
|
|
this.route('editor', function () {
|
|
this.route('new', {path: ':type'});
|
|
this.route('edit', {path: ':type/:post_id'});
|
|
});
|
|
|
|
this.route('staff', function () {
|
|
this.route('user', {path: ':user_slug'});
|
|
});
|
|
|
|
this.route('tags');
|
|
this.route('tag.new', {path: '/tags/new'});
|
|
this.route('tag', {path: '/tags/:tag_slug'});
|
|
|
|
this.route('settings.general', {path: '/settings/general'});
|
|
this.route('settings.labs', {path: '/settings/labs'});
|
|
this.route('settings.code-injection', {path: '/settings/code-injection'});
|
|
this.route('settings.design', {path: '/settings/design'}, function () {
|
|
this.route('uploadtheme');
|
|
});
|
|
this.route('settings.integrations', {path: '/settings/integrations'}, function () {
|
|
this.route('new');
|
|
});
|
|
this.route('settings.integration', {path: '/settings/integrations/:integration_id'}, function () {
|
|
this.route('webhooks.new', {path: 'webhooks/new'});
|
|
this.route('webhooks.edit', {path: 'webhooks/:webhook_id'});
|
|
});
|
|
this.route('settings.integrations.slack', {path: '/settings/integrations/slack'});
|
|
this.route('settings.integrations.amp', {path: '/settings/integrations/amp'});
|
|
this.route('settings.integrations.unsplash', {path: '/settings/integrations/unsplash'});
|
|
this.route('settings.integrations.zapier', {path: '/settings/integrations/zapier'});
|
|
|
|
this.route('members', {path: '/members-dev'}, function () {
|
|
this.route('import');
|
|
});
|
|
this.route('member.new', {path: '/members-dev/new'});
|
|
this.route('member', {path: '/members-dev/:member_id'});
|
|
|
|
this.route('members-old', {path: '/members'}, function () {
|
|
this.route('import');
|
|
});
|
|
this.route('member-old.new', {path: '/members/new'});
|
|
this.route('member-old', {path: '/members/:member_id'});
|
|
|
|
this.route('error404', {path: '/*path'});
|
|
});
|
|
|
|
export default Router;
|