Files
edx-platform/cms/static/js/models/chapter.js
2016-01-07 18:08:15 +05: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;
});