Ghost/core/client/models/post.js

51 lines
1.5 KiB
JavaScript
Raw Normal View History

var Post = DS.Model.extend({
uuid: DS.attr('string'),
title: DS.attr('string'),
slug: DS.attr('string'),
markdown: DS.attr('string', {defaultValue: ''}),
html: DS.attr('string'),
image: DS.attr('string'),
featured: DS.attr('boolean', {defaultValue: false}),
page: DS.attr('boolean', {defaultValue: false}),
status: DS.attr('string', {defaultValue: 'draft'}),
language: DS.attr('string', {defaultValue: 'en_US'}),
meta_title: DS.attr('string'),
meta_description: DS.attr('string'),
author: DS.belongsTo('user', { async: true }),
created_at: DS.attr('date'),
created_by: DS.belongsTo('user', { async: true }),
updated_at: DS.attr('date'),
updated_by: DS.belongsTo('user', { async: true }),
published_at: DS.attr('date'),
published_by: DS.belongsTo('user', { async: true }),
tags: DS.hasMany('tag', { async: true }),
generateSlug: function () {
var title = this.get('title'),
url;
if (!title) {
return;
}
url = this.get('ghostPaths').apiUrl('slugs', 'post', encodeURIComponent(title));
return ic.ajax.request(url, {
type: 'GET'
});
},
validate: function () {
var validationErrors = [];
if (!this.get('title.length')) {
validationErrors.push({
message: 'You must specify a title for the post.'
});
}
return validationErrors;
}.property('title')
});
export default Post;