2013-06-06 07:13:31 +02:00
|
|
|
"use strict";
|
2013-06-21 03:43:58 +02:00
|
|
|
define(function () {
|
2013-06-06 07:13:31 +02:00
|
|
|
//This module will automatically route all links through backbone router rather than
|
|
|
|
//causing links to reload pages.
|
|
|
|
|
|
|
|
var routeBinder = {
|
|
|
|
|
2013-06-21 03:43:58 +02:00
|
|
|
bind: function (router) {
|
2013-06-21 07:19:41 +02:00
|
|
|
var self = this;
|
|
|
|
$(document).on('click', 'a[href]', function (event) {
|
|
|
|
self._handleClick(event, router);
|
|
|
|
});
|
2013-06-07 02:17:57 +02:00
|
|
|
},
|
|
|
|
|
2013-06-21 07:19:41 +02:00
|
|
|
_handleClick: function (event, router) {
|
2013-06-06 07:13:31 +02:00
|
|
|
var $target = $(event.target);
|
|
|
|
|
2013-06-07 02:17:57 +02:00
|
|
|
//check if tab nav
|
|
|
|
if ($target.parents('.nav-tabs').length) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2013-06-06 07:13:31 +02:00
|
|
|
if ($target.hasClass('no-router')) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
console.log('click');
|
|
|
|
event.preventDefault();
|
|
|
|
|
|
|
|
var href = event.target.getAttribute('href');
|
|
|
|
|
|
|
|
if (!href && $target.parent('a') && $target.parent('a')[0]) {
|
|
|
|
|
|
|
|
var linkElement = $target.parent('a')[0];
|
|
|
|
|
|
|
|
href = linkElement.getAttribute('href');
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!href) {
|
|
|
|
throw 'couldnt find route target';
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (!href.startsWith('http')) {
|
2013-06-21 07:19:41 +02:00
|
|
|
router.navigate(href, { trigger: true });
|
2013-06-06 07:13:31 +02:00
|
|
|
}
|
2013-06-07 17:42:49 +02:00
|
|
|
|
|
|
|
else {
|
|
|
|
//Open in new tab
|
|
|
|
window.open(href, '_blank');
|
|
|
|
}
|
2013-06-06 07:13:31 +02:00
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
return routeBinder;
|
|
|
|
});
|