0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-02-24 23:48:13 -05:00

Add Author dropdown to PostSettingsMenu

Ref #3084
This PR does NOT hide the dropdown as required to close 3084.

- `EditorNewRoute` creates post with the author set to the current user
- added `authors` ArrayPromiseProxy (whoa, what?) to PSM
- added `changeAuthor` function that sets author and saves model when the user selects a new author
This commit is contained in:
Matt Enlow 2014-07-16 23:54:32 -06:00
parent 17b87d7402
commit 9ad9e6e645
3 changed files with 51 additions and 4 deletions

View file

@ -13,6 +13,33 @@ var PostSettingsMenuController = Ember.ObjectController.extend({
this.addObserver('titleScratch', this, 'titleObserver');
}
},
selectedAuthor: Ember.computed.oneWay('author'),
changeAuthor: function () {
var author = this.get('author'),
selectedAuthor = this.get('selectedAuthor'),
model = this.get('model'),
self = this;
//return if nothing changed
if (selectedAuthor.get('id') === author.get('id')) {
return;
}
model.set('author', selectedAuthor);
model.save(this.get('saveOptions')).catch(function (errors) {
self.showErrors(errors);
self.set('selectedAuthor', author);
model.rollback();
});
}.observes('selectedAuthor'),
authors: function () {
//Loaded asynchronously, so must use promise proxies.
var deferred = {};
deferred.promise = this.store.find('user').then(function (users) {
return users.rejectBy('id', 'me');
});
return Ember.ArrayProxy
.extend(Ember.PromiseProxyMixin)
.create(deferred);
}.property(),
//Changes in the PSM are too minor to warrant NProgress firing
saveOptions: {disableNProgress: true},
/**
@ -39,7 +66,7 @@ var PostSettingsMenuController = Ember.ObjectController.extend({
generateSlugPlaceholder: function () {
var self = this,
title = this.get('titleScratch');
this.get('slugGenerator').generateSlug(title).then(function (slug) {
self.set('slugPlaceholder', slug);
});
@ -97,7 +124,7 @@ var PostSettingsMenuController = Ember.ObjectController.extend({
updateSlug: function (newSlug) {
var slug = this.get('slug'),
self = this;
newSlug = newSlug || slug;
newSlug = newSlug.trim();
@ -210,4 +237,4 @@ var PostSettingsMenuController = Ember.ObjectController.extend({
}
});
export default PostSettingsMenuController;
export default PostSettingsMenuController;

View file

@ -4,7 +4,12 @@ var EditorNewRoute = Ember.Route.extend(Ember.SimpleAuth.AuthenticatedRouteMixin
classNames: ['editor'],
model: function () {
return this.store.createRecord('post');
var self = this;
return this.get('session.user').then(function (user) {
return self.store.createRecord('post', {
author: user
});
});
},
setupController: function (controller, model) {

View file

@ -19,6 +19,21 @@
</tr>
<tr class="post-setting">
<td class="post-setting-label">
<label for="post-setting-author">Author</label>
</td>
<td class="post-setting-field">
<span class="author-select-wrapper" {{bind-attr data-select-text=selectedAuthor.name}}>
{{view Ember.Select
name="post-setting-author"
content=authors
optionValuePath="content.id"
optionLabelPath="content.name"
selection=selectedAuthor}}
</span>
</td>
</tr>
<tr class="post-setting">
<td class="post-setting-label">
<label class="label" for="static-page">Static Page</label>
</td>
<td class="post-setting-item">