85 lines
3.5 KiB
JavaScript
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.get('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;
|
|
});
|