2016-09-10 15:32:11 +02:00

65 lines
2.2 KiB
JavaScript

//LessonContentView
define(['jquery',
'underscore',
'backbone',
'libs/jquery.form'],
function(
$,
_,
Backbone,
JQueryForm) {
return Backbone.View.extend({
el:'#lesson-content-wrapper', //TODO << get this fixed up in DOM
initialize: function(options) {
options = options || {};
},
render: function() {
this.$el.html(this.model.get('content'));
this.makeFormsAjax();
this.ajaxifyAttackHref();
$(window).scrollTop(0); //work-around til we get the scroll down sorted out
},
//TODO: reimplement this in custom fashion maybe?
makeFormsAjax: function () {
var options = {
success:this.reLoadView.bind(this),
url: this.model.urlRoot,
type:'POST'
// $.ajax options can be used here too, for example:
//timeout: 3000
};
//hook forms //TODO: clarify form selectors later
$("form").ajaxForm(options);
},
ajaxifyAttackHref: function() { // rewrite any links with hrefs point to relative attack URLs
var self = this;
// The current LessonAdapter#getLink() generates a hash-mark link. It will not match the mask below.
// Besides, the new MVC code registers an event handler that will reload the lesson according to the route.
$.each($('a[href^="attack?"]'),function(i,el) {
var url = $(el).attr('href');
$(el).unbind('click').attr('href','#').attr('link',url);
//TODO pull currentMenuId
$(el).click(function(event) {
event.preventDefault();
var _url = $(el).attr('link');
console.log("About to POST " + _url);
$.post(_url)
.done(self.reLoadView.bind(self))
.fail(function() { alert("failed to POST " + _url); });
});
});
},
reLoadView: function(content) {
this.model.setContent(content);
this.render();
}
});
});