modified ajaxify slightly to make transitions between pages a bit more fluid (although first load doesn't look that awesome); fixed up rooms - resolved DRY failure and properly leave rooms

v1.18.x
psychobunny 12 years ago
parent 8133ac53de
commit 3947b6b6fd

@ -26,20 +26,16 @@ var ajaxify = {};
ajaxify.go = function(url, callback) { ajaxify.go = function(url, callback) {
// leave room and join global // leave room and join global
if (current_room != 'global') { app.enter_room('global');
socket.emit('event:enter_room', 'global');
current_room = 'global';
}
var url = url.replace(/\/$/, ""); var url = url.replace(/\/$/, "");
var tpl_url = (url === '' || url === '/') ? 'home' : url.split('/')[0]; var tpl_url = (url === '' || url === '/') ? 'home' : url.split('/')[0];
if (templates[tpl_url]) { if (templates[tpl_url]) {
window.history.pushState({}, url, "/" + url); window.history.pushState({}, url, "/" + url);
jQuery('#content, #footer').fadeOut(100, function() {
jQuery('#content, #footer').fadeOut(100);
load_template(function() { load_template(function() {
exec_body_scripts(content); exec_body_scripts(content);
ajaxify.enable(); ajaxify.enable();
@ -47,9 +43,11 @@ var ajaxify = {};
callback(); callback();
} }
jQuery('#content, #footer').fadeIn(200); jQuery('#content, #footer').fadeIn(250);
});
}); });
return true; return true;
} }
@ -62,7 +60,6 @@ var ajaxify = {};
ajaxify.onclick = function(ev) { ajaxify.onclick = function(ev) {
if (this.href == window.location.href + "#") return; if (this.href == window.location.href + "#") return;
console.log(this.href);
var url = this.href.replace(rootUrl +'/', ''); var url = this.href.replace(rootUrl +'/', '');
if (ajaxify.go(url)) { if (ajaxify.go(url)) {

@ -1,7 +1,6 @@
var socket, var socket,
config, config,
app = {}, app = {},
current_room,
API_URL = null; API_URL = null;
// todo: cleanup,etc // todo: cleanup,etc
@ -172,11 +171,21 @@ var socket,
jQuery(post_window).slideToggle(250); jQuery(post_window).slideToggle(250);
}; };
app.current_room = null;
app.enter_room = function(room) {
if (app.current_room === room) return;
socket.emit('event:enter_room', {
'enter': room,
'leave': app.current_room
});
app.current_room = room;
};
jQuery('document').ready(function() { jQuery('document').ready(function() {
if (current_room != 'global') { app.enter_room('global');
socket.emit('event:enter_room', 'global');
current_room = 'global';
}
// On menu click, change "active" state // On menu click, change "active" state

@ -39,9 +39,7 @@
<script type="text/javascript"> <script type="text/javascript">
jQuery('document').ready(function() { jQuery('document').ready(function() {
// join room for this thread - DRY failure, see ajaxify and app.js app.enter_room('global', 'topic_' + '{topic_id}');
socket.emit('event:enter_room', 'topic_' + '{topic_id}');
current_room = 'topic_' + '{topic_id}';
set_up_posts(); set_up_posts();
}); });

@ -69,8 +69,9 @@ var SocketIO = require('socket.io').listen(global.server,{log:false}),
// BEGIN: API calls (todo: organize) // BEGIN: API calls (todo: organize)
// julian: :^) // julian: :^)
socket.on('event:enter_room', function(room) { socket.on('event:enter_room', function(data) {
socket.join(room); if (data.leave !== null) socket.leave (data.leave);
socket.join(data.enter);
}); });
socket.on('api:user.get', function(data) { socket.on('api:user.get', function(data) {

Loading…
Cancel
Save