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

85 lines
3.5 KiB
JavaScript

/* global course */
define(['underscore', 'jquery', 'gettext', 'edx-ui-toolkit/js/utils/html-utils',
'js/views/baseview', 'js/models/uploads', 'js/views/uploads', 'text!templates/edit-chapter.underscore'],
function(_, $, gettext, HtmlUtils, BaseView, FileUploadModel, UploadDialogView, editChapterTemplate) {
'use strict';
var EditChapter = BaseView.extend({
initialize: function() {
this.template = HtmlUtils.template(editChapterTemplate);
this.listenTo(this.model, 'change', this.render);
},
tagName: 'li',
className: function() {
return 'field-group chapter chapter' + this.model.get('order');
},
render: function() {
HtmlUtils.setHtml(
this.$el,
this.template({
name: this.model.get('name'),
asset_path: this.model.get('asset_path'),
order: this.model.get('order'),
error: this.model.validationError
})
);
return this;
},
events: {
'change .chapter-name': 'changeName',
'change .chapter-asset-path': 'changeAssetPath',
'click .action-close': 'removeChapter',
'click .action-upload': 'openUploadDialog',
'submit': 'uploadAsset'
},
changeName: function(e) {
if (e && e.preventDefault) { e.preventDefault(); }
this.model.set({
name: this.$('.chapter-name').val()
}, {silent: true});
return this;
},
changeAssetPath: function(e) {
if (e && e.preventDefault) { e.preventDefault(); }
this.model.set({
asset_path: this.$('.chapter-asset-path').val()
}, {silent: true});
return this;
},
removeChapter: function(e) {
if (e && e.preventDefault) { e.preventDefault(); }
this.model.collection.remove(this.model);
return this.remove();
},
openUploadDialog: function(e) {
if (e && e.preventDefault) { e.preventDefault(); }
this.model.set({
name: this.$('input.chapter-name').val(),
asset_path: this.$('input.chapter-asset-path').val()
});
var msg = new FileUploadModel({
title: _.template(gettext('Upload a new PDF to “<%= name %>”'))(
{name: course.escape('name')}),
message: gettext('Please select a PDF file to upload.'),
mimeTypes: ['application/pdf']
});
var that = this;
var view = new UploadDialogView({
model: msg,
onSuccess: function(response) {
var options = {};
if (!that.model.get('name')) {
options.name = response.asset.displayname;
}
options.asset_path = response.asset.portable_url;
that.model.set(options);
}
});
view.show();
}
});
return EditChapter;
});