diff --git a/ghost/admin/mixins/editor-base-controller.js b/ghost/admin/mixins/editor-base-controller.js index f3b1b358c1..7619718512 100644 --- a/ghost/admin/mixins/editor-base-controller.js +++ b/ghost/admin/mixins/editor-base-controller.js @@ -182,8 +182,12 @@ EditorControllerMixin = Ember.Mixin.create(MarkerManager, { }, showSaveNotification: function (prevStatus, status, delay) { - var message = this.messageMap.success.post[prevStatus][status]; + var message = this.messageMap.success.post[prevStatus][status], + path = this.get('ghostPaths.url').join(this.get('config.blogUrl'), this.get('url')); + if (status === 'published') { + message += ' View Post'; + } this.notifications.showSuccess(message, {delayed: delay}); }, diff --git a/ghost/admin/models/post.js b/ghost/admin/models/post.js index d3edbf1c8e..e5c0bebea6 100644 --- a/ghost/admin/models/post.js +++ b/ghost/admin/models/post.js @@ -22,6 +22,7 @@ var Post = DS.Model.extend(NProgressSaveMixin, ValidationEngine, { published_at: DS.attr('moment-date'), published_by: DS.belongsTo('user', {async: true}), tags: DS.hasMany('tag', {embedded: 'always'}), + url: DS.attr('string'), // Computed post properties diff --git a/ghost/admin/utils/ghost-paths.js b/ghost/admin/utils/ghost-paths.js index b6f6107956..4dc741c26b 100644 --- a/ghost/admin/utils/ghost-paths.js +++ b/ghost/admin/utils/ghost-paths.js @@ -1,12 +1,18 @@ var makeRoute = function (root, args) { - var parts = Array.prototype.slice.call(args, 0).join('/'), - route = [root, parts].join('/'); + var slashAtStart, + slashAtEnd, + parts, + route; - if (route.slice(-1) !== '/') { - route += '/'; - } + slashAtStart = /^\//; + slashAtEnd = /\/$/; + route = root.replace(slashAtEnd, ''); + parts = Array.prototype.slice.call(args, 0); - return route; + parts.forEach(function (part) { + route = [route, part.replace(slashAtStart, '').replace(slashAtEnd, '')].join('/'); + }); + return route += '/'; }; function ghostPaths() { @@ -34,6 +40,16 @@ function ghostPaths() { return makeRoute(apiRoot, arguments); }, + join: function () { + if (arguments.length > 1) { + return makeRoute(arguments[0], Array.prototype.slice.call(arguments, 1)); + } else if (arguments.length === 1) { + var arg = arguments[0]; + return arg.slice(-1) === '/' ? arg : arg + '/'; + } + return '/'; + }, + asset: assetUrl } };