added action:page.load hook

This commit is contained in:
Julian Lam
2013-11-21 12:28:10 -05:00
parent 9fbb139e67
commit 2cf55dcf9f
2 changed files with 59 additions and 14 deletions

View File

@@ -1,5 +1,6 @@
var ajaxify = {};
"use strict";
var ajaxify = {};
(function ($) {
/*global app, templates, utils*/
@@ -23,8 +24,9 @@ var ajaxify = {};
window.onpopstate = function (event) {
// "quiet": If set to true, will not call pushState
if (event !== null && event.state && event.state.url !== undefined)
if (event !== null && event.state && event.state.url !== undefined) {
ajaxify.go(event.state.url, null, null, true);
}
};
var pagination;
@@ -35,7 +37,10 @@ var ajaxify = {};
app.enter_room('global');
pagination = pagination || document.getElementById('pagination');
if (pagination) pagination.parentNode.style.display = 'none';
if (pagination) {
pagination.parentNode.style.display = 'none';
}
window.onscroll = null;
// end
@@ -65,8 +70,20 @@ var ajaxify = {};
if (quiet !== true) {
if (window.history && window.history.pushState) {
window.history.pushState({
"url": url
}, url, RELATIVE_PATH + "/" + url);
url: url
}, url, RELATIVE_PATH + '/' + url);
$.ajax(RELATIVE_PATH + '/plugins/fireHook', {
type: 'PUT',
data: {
_csrf: $('#csrf_token').val(),
hook: 'page.load',
args: {
template: tpl_url,
url: '/' + url
}
}
});
}
}
@@ -78,7 +95,9 @@ var ajaxify = {};
templates.load_template(function () {
exec_body_scripts(content);
require(['forum/' + tpl_url], function(script) {
if (script && script.init) script.init();
if (script && script.init) {
script.init();
}
});
if (callback) {
@@ -88,10 +107,13 @@ var ajaxify = {};
app.process_page();
jQuery('#content, #footer').stop(true, true).fadeIn(200, function () {
if (window.location.hash)
if (window.location.hash) {
hash = window.location.hash;
if (hash)
}
if (hash) {
app.scrollToPost(hash.substr(1));
}
});
utils.refreshTitle(url);
@@ -105,23 +127,27 @@ var ajaxify = {};
};
$('document').ready(function () {
if (!window.history || !window.history.pushState) return; // no ajaxification for old browsers
if (!window.history || !window.history.pushState) {
return; // no ajaxification for old browsers
}
content = content || document.getElementById('content');
// Enhancing all anchors to ajaxify...
$(document.body).on('click', 'a', function (e) {
function hrefEmpty(href) {
return href == 'javascript:;' || href == window.location.href + "#" || href.slice(-1) === "#";
return href === 'javascript:;' || href === window.location.href + "#" || href.slice(-1) === "#";
}
if (hrefEmpty(this.href) || this.target !== '' || this.protocol === 'javascript:')
if (hrefEmpty(this.href) || this.target !== '' || this.protocol === 'javascript:') {
return;
}
if(!window.location.pathname.match(/\/(403|404)$/g))
if(!window.location.pathname.match(/\/(403|404)$/g)) {
app.previousUrl = window.location.href;
}
if (this.getAttribute('data-ajaxify') == 'false') {
if (this.getAttribute('data-ajaxify') === 'false') {
return;
}