Files
edx-platform/cms/static/js/models/chapter.js
2016-08-08 15:04:06 -04:00

53 lines
1.9 KiB
JavaScript

define(['backbone', 'gettext', 'backbone.associations'], function(Backbone, gettext) {
var Chapter = Backbone.AssociatedModel.extend({
defaults: function() {
return {
name: '',
asset_path: '',
order: this.collection ? this.collection.nextOrder() : 1
};
},
isEmpty: function() {
return !this.get('name') && !this.get('asset_path');
},
parse: function(response) {
if ('title' in response && !('name' in response)) {
response.name = response.title;
delete response.title;
}
if ('url' in response && !('asset_path' in response)) {
response.asset_path = response.url;
delete response.url;
}
return response;
},
toJSON: function() {
return {
title: this.get('name'),
url: this.get('asset_path')
};
},
// NOTE: validation functions should return non-internationalized error
// messages. The messages will be passed through gettext in the template.
validate: function(attrs, options) {
if (!attrs.name && !attrs.asset_path) {
return {
message: gettext('Chapter name and asset_path are both required'),
attributes: {name: true, asset_path: true}
};
} else if (!attrs.name) {
return {
message: gettext('Chapter name is required'),
attributes: {name: true}
};
} else if (!attrs.asset_path) {
return {
message: gettext('asset_path is required'),
attributes: {asset_path: true}
};
}
}
});
return Chapter;
});