diff --git a/app.js b/app.js index e2f300e3ce..4785119cc2 100644 --- a/app.js +++ b/app.js @@ -152,10 +152,14 @@ fs.readFile(path.join(__dirname, 'config.json'), function(err, data) { if (!secret) secret = utils.generateUUID(); if (!bcrypt_rounds) bcrypt_rounds = 10; - var urlObject = url.parse(base_url); - var relative_path = urlObject.pathname; - var host = urlObject.host; - var protocol = urlObject.protocol; + var urlObject = url.parse(base_url), + relative_path = urlObject.pathname, + host = urlObject.host, + protocol = urlObject.protocol; + + if(relative_path.length === 1) { + relative_path = ''; + } var fs = require('fs'), path = require('path'), diff --git a/public/src/app.js b/public/src/app.js index f6b6b59d0a..fdef8aa924 100644 --- a/public/src/app.js +++ b/public/src/app.js @@ -6,83 +6,105 @@ var socket, // todo: cleanup,etc (function() { - - $.ajax({ - url: '/forum/config.json?v=' + new Date().getTime(), - success: function(data) { - API_URL = data.api_url; - RELATIVE_PATH = data.relative_path; - - config = data; - socket = io.connect(config.socket.address + (config.socket.port ? ':' + config.socket.port : '')); - - var reconnecting = false; - var reconnectTries = 0; - - - socket.on('event:connect', function(data) { - console.log('connected to nodebb socket: ', data); - }); - - socket.on('event:alert', function(data) { - app.alert(data); - }); - - socket.on('event:consolelog', function(data) { - console.log(data); - }); - - socket.on('connect', function(data){ - if(reconnecting) { - setTimeout(function(){ - app.alert({ - alert_id: 'connection_alert', - title: 'Connected', - message: 'Connection successful.', - type: 'success', - timeout: 5000 - }); - }, 1000); - reconnecting = false; - socket.emit('api:updateHeader', { fields: ['username', 'picture', 'userslug'] }); - } - }); - - socket.on('disconnect', function(data){ + RELATIVE_PATH = $('#relative_path').val(); + + function loadConfig(callback) { + + $.ajax({ + url: RELATIVE_PATH + '/config.json?v=' + new Date().getTime(), + success: function(data) { + API_URL = data.api_url; + + config = data; + socket = io.connect(config.socket.address + (config.socket.port ? ':' + config.socket.port : '')); + + var reconnecting = false; + var reconnectTries = 0; + + + socket.on('event:connect', function(data) { + console.log('connected to nodebb socket: ', data); + }); + + socket.on('event:alert', function(data) { + app.alert(data); + }); - }); - - socket.on('reconnecting', function(data) { - reconnecting = true; - reconnectTries++; - if(reconnectTries > 4) { - showDisconnectModal(); - return; - } - app.alert({ - alert_id: 'connection_alert', - title: 'Reconnecting', - message: 'You have disconnected from NodeBB, we will try to reconnect you.
', - type: 'notify', - timeout: 5000 + socket.on('event:consolelog', function(data) { + console.log(data); }); - }); - - function showDisconnectModal() { - $('#disconnect-modal').modal({ - backdrop:'static', - show:true + + socket.on('connect', function(data){ + if(reconnecting) { + setTimeout(function(){ + app.alert({ + alert_id: 'connection_alert', + title: 'Connected', + message: 'Connection successful.', + type: 'success', + timeout: 5000 + }); + }, 1000); + reconnecting = false; + socket.emit('api:updateHeader', { fields: ['username', 'picture', 'userslug'] }); + } }); - - $('#reload-button').on('click',function(){ - $('#disconnect-modal').modal('hide'); - window.location.reload(); + + socket.on('disconnect', function(data){ + }); - } - }, - async: false - }); - + + socket.on('reconnecting', function(data) { + reconnecting = true; + reconnectTries++; + if(reconnectTries > 4) { + showDisconnectModal(); + return; + } + app.alert({ + alert_id: 'connection_alert', + title: 'Reconnecting', + message: 'You have disconnected from NodeBB, we will try to reconnect you.
', + type: 'notify', + timeout: 5000 + }); + }); + + socket.on('api:user.get_online_users', function(users) { + jQuery('.username-field').each(function() { + if (this.processed === true) return; + + var el = jQuery(this), + uid = el.parents('li').attr('data-uid'); + + if (uid && jQuery.inArray(uid, users) !== -1) { + el.prepend(' '); + } else { + el.prepend(' '); + } + + el.processed = true; + }); + }); + + function showDisconnectModal() { + $('#disconnect-modal').modal({ + backdrop:'static', + show:true + }); + + $('#reload-button').on('click',function(){ + $('#disconnect-modal').modal('hide'); + window.location.reload(); + }); + } + + callback(); + }, + async: false + }); + } + // takes a string like 1000 and returns 1,000 app.addCommas = function(text) { return text.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"); @@ -209,24 +231,16 @@ var socket, }, 100); } - socket.on('api:user.get_online_users', function(users) { - jQuery('.username-field').each(function() { - if (this.processed === true) return; + + + - var el = jQuery(this), - uid = el.parents('li').attr('data-uid'); - - if (uid && jQuery.inArray(uid, users) !== -1) { - el.prepend(' '); - } else { - el.prepend(' '); - } - el.processed = true; - }); - }); jQuery('document').ready(function() { + + loadConfig(function () {}); + app.enter_room('global'); diff --git a/public/src/templates.js b/public/src/templates.js index 1c1218bbcf..5dba3ebd17 100644 --- a/public/src/templates.js +++ b/public/src/templates.js @@ -179,8 +179,12 @@ function parse_template() { if (!templates[tpl_url] || !template_data) return; - template_data['relative_path'] = RELATIVE_PATH || global.config.relative_path; - + + if(typeof global !== "undefined") + template_data['relative_path'] = global.config.relative_path; + else + template_data['relative_path'] = RELATIVE_PATH; + document.getElementById('content').innerHTML = templates[tpl_url].parse(template_data); jQuery('#content [template-variable]').each(function(index, element) { diff --git a/public/templates/header.tpl b/public/templates/header.tpl index 6cc5d0a350..1c13b2f0f2 100644 --- a/public/templates/header.tpl +++ b/public/templates/header.tpl @@ -8,6 +8,9 @@ + + + @@ -30,6 +33,8 @@ + + @@ -74,5 +79,6 @@ +