Make base.html Mako template safe by default by: 1. Add page-level default of html escaping 2. Fix escaping of all variables in base.html 3. Fix escaping of all dependent underscore templates Also includes additional best practices for certificates and textbooks JavaScript/Underscore in order to complete that work. TNL-3425
72 lines
2.9 KiB
JavaScript
72 lines
2.9 KiB
JavaScript
define(["js/views/baseview", "underscore", "gettext", "common/js/components/views/feedback_notification",
|
|
"common/js/components/views/feedback_prompt"],
|
|
function(BaseView, _, gettext, NotificationView, PromptView) {
|
|
var ShowTextbook = BaseView.extend({
|
|
initialize: function() {
|
|
this.template = _.template($("#show-textbook-tpl").text());
|
|
this.listenTo(this.model, "change", this.render);
|
|
},
|
|
tagName: "section",
|
|
className: "textbook",
|
|
events: {
|
|
"click .edit": "editTextbook",
|
|
"click .delete": "confirmDelete",
|
|
"click .show-chapters": "showChapters",
|
|
"click .hide-chapters": "hideChapters"
|
|
},
|
|
render: function() {
|
|
var attrs = $.extend({}, this.model.attributes);
|
|
attrs.bookindex = this.model.collection.indexOf(this.model);
|
|
attrs.course = window.course.attributes;
|
|
this.$el.html(this.template(attrs));
|
|
return this;
|
|
},
|
|
editTextbook: function(e) {
|
|
if(e && e.preventDefault) { e.preventDefault(); }
|
|
this.model.set("editing", true);
|
|
},
|
|
confirmDelete: function(e) {
|
|
if(e && e.preventDefault) { e.preventDefault(); }
|
|
var textbook = this.model, collection = this.model.collection;
|
|
var msg = new PromptView.Warning({
|
|
title: _.template(
|
|
gettext("Delete “<%= name %>”?"),
|
|
{name: textbook.get('name')}
|
|
),
|
|
message: gettext("Deleting a textbook cannot be undone and once deleted any reference to it in your courseware's navigation will also be removed."),
|
|
actions: {
|
|
primary: {
|
|
text: gettext("Delete"),
|
|
click: function(view) {
|
|
view.hide();
|
|
var delmsg = new NotificationView.Mini({
|
|
title: gettext("Deleting")
|
|
}).show();
|
|
textbook.destroy({
|
|
complete: function() {
|
|
delmsg.hide();
|
|
}
|
|
});
|
|
}
|
|
},
|
|
secondary: {
|
|
text: gettext("Cancel"),
|
|
click: function(view) {
|
|
view.hide();
|
|
}
|
|
}
|
|
}
|
|
}).show();
|
|
},
|
|
showChapters: function(e) {
|
|
if(e && e.preventDefault) { e.preventDefault(); }
|
|
this.model.set('showChapters', true);
|
|
},
|
|
hideChapters: function(e) {
|
|
if(e && e.preventDefault) { e.preventDefault(); }
|
|
this.model.set('showChapters', false);
|
|
}
|
|
});
|
|
return ShowTextbook;
|
|
});
|