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 @@
+
+