0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-01-13 22:41:32 -05:00
ghost/core/client/models/post.js
Matt Enlow ff5af6c29b Create Post Settings Menu and its functionality on the Post controller.
closes #2419
- Added blur-text-field component, which fires actions on focusOut
- Added utils/date-formatting for moment & date functionality  consolidation
- Added functionality to PostsPostController
- Added fixtures: posts/3 & posts/4, posts/slug/test%20title/
- Added Post model saving
- Set posts.post as controller for EditorRoute
- Added PostSettingsMenuView and template
- Added "showErrors" convenience method to notifications
2014-04-20 13:28:43 -06:00

56 lines
1.6 KiB
JavaScript

import BaseModel from 'ghost/models/base';
var PostModel = BaseModel.extend({
url: BaseModel.apiRoot + '/posts/',
generateSlug: function () {
// @TODO Make this request use this.get('title') once we're an actual user
var url = this.get('url') + 'slug/' + encodeURIComponent('test title') + '/';
return ic.ajax.request(url, {
type: 'GET'
});
},
save: function (properties) {
var url = this.url,
self = this,
type,
validationErrors = this.validate();
if (validationErrors.length) {
return Ember.RSVP.Promise(function (resolve, reject) {
return reject(validationErrors);
});
}
//If specific properties are being saved,
//this is an edit. Otherwise, it's an add.
if (properties && properties.length > 0) {
type = 'PUT';
url += this.get('id');
} else {
type = 'POST';
properties = Ember.keys(this);
}
return ic.ajax.request(url, {
type: type,
data: this.getProperties(properties)
}).then(function (model) {
return self.setProperties(model);
});
},
validate: function () {
var validationErrors = [];
if (!(this.get('title') && this.get('title').length)) {
validationErrors.push({
message: "You must specify a title for the post."
});
}
return validationErrors;
}
});
export default PostModel;