@ -4,14 +4,14 @@ var socket,
API _URL = null ;
( function ( ) {
( function ( ) {
var showWelcomeMessage = false ;
function loadConfig ( ) {
$ . ajax ( {
url : RELATIVE _PATH + '/api/config' ,
success : function ( data ) {
success : function ( data ) {
API _URL = data . api _url ;
config = data ;
@ -20,19 +20,19 @@ var socket,
var reconnecting = false ;
var reconnectTries = 0 ;
socket . on ( 'event:connect' , function ( data ) {
socket . on ( 'event:connect' , function ( data ) {
console . log ( 'connected to nodebb socket: ' , data ) ;
app . username = data . username ;
app . showLoginMessage ( ) ;
} ) ;
socket . on ( 'event:alert' , function ( data ) {
socket . on ( 'event:alert' , function ( data ) {
app . alert ( data ) ;
} ) ;
socket . on ( 'connect' , function ( data ) {
socket . on ( 'connect' , function ( data ) {
if ( reconnecting ) {
setTimeout ( function ( ) {
setTimeout ( function ( ) {
app . alert ( {
alert _id : 'connection_alert' ,
title : 'Connected' ,
@ -49,14 +49,14 @@ var socket,
}
} ) ;
socket . on ( 'reconnecting' , function ( data ) {
socket . on ( 'reconnecting' , function ( data ) {
function showDisconnectModal ( ) {
$ ( '#disconnect-modal' ) . modal ( {
backdrop : 'static' ,
show : true
} ) ;
$ ( '#reload-button' ) . on ( 'click' , function ( ) {
$ ( '#reload-button' ) . on ( 'click' , function ( ) {
$ ( '#disconnect-modal' ) . modal ( 'hide' ) ;
window . location . reload ( ) ;
} ) ;
@ -79,8 +79,8 @@ var socket,
} ) ;
} ) ;
socket . on ( 'api:user.get_online_users' , function ( users ) {
jQuery ( 'a.username-field' ) . each ( function ( ) {
socket . on ( 'api:user.get_online_users' , function ( users ) {
jQuery ( 'a.username-field' ) . each ( function ( ) {
if ( this . processed === true )
return ;
@ -97,7 +97,7 @@ var socket,
el . processed = true ;
} ) ;
jQuery ( 'button .username-field' ) . each ( function ( ) {
jQuery ( 'button .username-field' ) . each ( function ( ) {
//DRY FAIL
if ( this . processed === true )
return ;
@ -124,17 +124,17 @@ var socket,
}
// takes a string like 1000 and returns 1,000
app . addCommas = function ( text ) {
app . addCommas = function ( text ) {
return text . replace ( /(\d)(?=(\d\d\d)+(?!\d))/g , "$1," ) ;
}
// Willingly stolen from: http://phpjs.org/functions/strip_tags/
app . strip _tags = function ( input , allowed ) {
app . strip _tags = function ( input , allowed ) {
allowed = ( ( ( allowed || "" ) + "" ) . toLowerCase ( ) . match ( /<[a-z][a-z0-9]*>/g ) || [ ] ) . join ( '' ) ; // making sure the allowed arg is a string containing only tags in lowercase (<a><b><c>)
var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>/gi ,
commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi ;
return input . replace ( commentsAndPhpTags , '' ) . replace ( tags , function ( $0 , $1 ) {
return input . replace ( commentsAndPhpTags , '' ) . replace ( tags , function ( $0 , $1 ) {
return allowed . indexOf ( '<' + $1 . toLowerCase ( ) + '>' ) > - 1 ? $0 : '' ;
} ) ;
}
@ -145,14 +145,14 @@ var socket,
// message = alert message content
// timeout default = permanent
// location : alert_window (default) or content
app . alert = function ( params ) {
app . alert = function ( params ) {
var alert _id = 'alert_button_' + ( ( params . alert _id ) ? params . alert _id : new Date ( ) . getTime ( ) ) ;
var alert = $ ( '#' + alert _id ) ;
function startTimeout ( div , timeout ) {
var timeoutId = setTimeout ( function ( ) {
$ ( div ) . fadeOut ( 1000 , function ( ) {
var timeoutId = setTimeout ( function ( ) {
$ ( div ) . fadeOut ( 1000 , function ( ) {
$ ( this ) . remove ( ) ;
} ) ;
} , timeout ) ;
@ -185,7 +185,7 @@ var socket,
button . className = 'close' ;
button . innerHTML = '×' ;
button . onclick = function ( ev ) {
button . onclick = function ( ev ) {
div . parentNode . removeChild ( div ) ;
}
@ -199,9 +199,9 @@ var socket,
}
if ( params . clickfn ) {
div . onclick = function ( ) {
div . onclick = function ( ) {
params . clickfn ( ) ;
jQuery ( div ) . fadeOut ( 500 , function ( ) {
jQuery ( div ) . fadeOut ( 500 , function ( ) {
this . remove ( ) ;
} ) ;
}
@ -209,7 +209,7 @@ var socket,
}
}
app . alertSuccess = function ( message , timeout ) {
app . alertSuccess = function ( message , timeout ) {
if ( ! timeout )
timeout = 2000 ;
@ -221,7 +221,7 @@ var socket,
} ) ;
}
app . alertError = function ( message , timeout ) {
app . alertError = function ( message , timeout ) {
if ( ! timeout )
timeout = 2000 ;
@ -234,7 +234,7 @@ var socket,
}
app . current _room = null ;
app . enter _room = function ( room ) {
app . enter _room = function ( room ) {
if ( socket ) {
if ( app . current _room === room )
return ;
@ -248,20 +248,20 @@ var socket,
}
} ;
app . populate _online _users = function ( ) {
app . populate _online _users = function ( ) {
var uids = [ ] ;
jQuery ( '.post-row' ) . each ( function ( ) {
jQuery ( '.post-row' ) . each ( function ( ) {
uids . push ( this . getAttribute ( 'data-uid' ) ) ;
} ) ;
socket . emit ( 'api:user.get_online_users' , uids ) ;
}
app . process _page = function ( ) {
app . process _page = function ( ) {
// here is where all modules' onNavigate should be called, I think.
require ( [ 'mobileMenu' ] , function ( mobileMenu ) {
require ( [ 'mobileMenu' ] , function ( mobileMenu ) {
mobileMenu . onNavigate ( ) ;
} ) ;
@ -273,9 +273,9 @@ var socket,
jQuery ( '#main-nav li' ) . removeClass ( 'active' ) ;
if ( active ) {
jQuery ( '#main-nav li a' ) . each ( function ( ) {
jQuery ( '#main-nav li a' ) . each ( function ( ) {
var href = this . getAttribute ( 'href' ) ;
if ( active == "sort-posts" || active == "sort-reputation" || active == "search" || active == "latest" )
if ( active == "sort-posts" || active == "sort-reputation" || active == "search" || active == "latest" )
active = 'users' ;
if ( href && href . match ( active ) ) {
jQuery ( this . parentNode ) . addClass ( 'active' ) ;
@ -286,12 +286,12 @@ var socket,
$ ( 'span.timeago' ) . timeago ( ) ;
setTimeout ( function ( ) {
setTimeout ( function ( ) {
window . scrollTo ( 0 , 1 ) ; // rehide address bar on mobile after page load completes.
} , 100 ) ;
}
app . showLoginMessage = function ( ) {
app . showLoginMessage = function ( ) {
function showAlert ( ) {
app . alert ( {
type : 'success' ,
@ -311,14 +311,14 @@ var socket,
}
}
app . addCommasToNumbers = function ( ) {
$ ( '.formatted-number' ) . each ( function ( index , element ) {
app . addCommasToNumbers = function ( ) {
$ ( '.formatted-number' ) . each ( function ( index , element ) {
$ ( element ) . html ( app . addCommas ( $ ( element ) . html ( ) ) ) ;
} ) ;
}
app . openChat = function ( username , touid ) {
require ( [ 'chat' ] , function ( chat ) {
app . openChat = function ( username , touid ) {
require ( [ 'chat' ] , function ( chat ) {
var chatModal ;
if ( ! chat . modalExists ( touid ) ) {
chatModal = chat . createModal ( username , touid ) ;
@ -329,7 +329,7 @@ var socket,
} ) ;
}
app . createNewPosts = function ( data ) {
app . createNewPosts = function ( data ) {
data . posts [ 0 ] . display _moderator _tools = 'none' ;
var html = templates . prepare ( templates [ 'topic' ] . blocks [ 'posts' ] ) . parse ( data ) ,
uniqueid = new Date ( ) . getTime ( ) ,
@ -353,7 +353,7 @@ var socket,
app . infiniteLoaderActive = false ;
app . loadMorePosts = function ( tid , callback ) {
app . loadMorePosts = function ( tid , callback ) {
if ( app . infiniteLoaderActive )
return ;
app . infiniteLoaderActive = true ;
@ -364,7 +364,7 @@ var socket,
socket . emit ( 'api:topic.loadMore' , {
tid : tid ,
after : document . querySelectorAll ( '#post-container li[data-pid]' ) . length
} , function ( data ) {
} , function ( data ) {
app . infiniteLoaderActive = false ;
if ( data . posts . length ) {
$ ( '#loading-indicator' ) . attr ( 'done' , '0' ) ;
@ -378,19 +378,19 @@ var socket,
} ) ;
}
app . scrollToTop = function ( ) {
app . scrollToTop = function ( ) {
$ ( 'body,html' ) . animate ( {
scrollTop : 0
} ) ;
} ;
app . scrollToBottom = function ( ) {
app . scrollToBottom = function ( ) {
$ ( 'body,html' ) . animate ( {
scrollTop : $ ( 'html' ) . height ( ) - 100
} ) ;
}
app . scrollToPost = function ( pid ) {
app . scrollToPost = function ( pid ) {
if ( ! pid )
return ;
@ -407,8 +407,8 @@ var socket,
if ( ! scrollTo . length && tid ) {
var intervalID = setInterval ( function ( ) {
app . loadMorePosts ( tid , function ( posts ) {
var intervalID = setInterval ( function ( ) {
app . loadMorePosts ( tid , function ( posts ) {
scrollTo = $ ( '#post_anchor_' + pid ) ;
if ( tid && scrollTo . length ) {
@ -426,8 +426,10 @@ var socket,
}
jQuery ( 'document' ) . ready ( function ( ) {
$ ( '#search-form' ) . on ( 'submit' , function ( ) {
jQuery ( 'document' ) . ready ( function ( ) {
translator . load ( 'global' ) ;
$ ( '#search-form' ) . on ( 'submit' , function ( ) {
var input = $ ( this ) . find ( 'input' ) ;
ajaxify . go ( "search/" + input . val ( ) , null , "search" ) ;
input . val ( '' ) ;