Version 3.0.5
This commit is contained in:
1 parent
19b38c7c74
commit
1d4720f3e2
3755 files changed
+508378
-664541
No files matched your search
@@ -0,0 +1,200 @@
|
||||
/************************************************/
|
||||
/* IPB3 Javascript */
|
||||
/* -------------------------------------------- */
|
||||
/* ips.global.js - Global functionality */
|
||||
/* (c) IPS, Inc 2008 */
|
||||
/* -------------------------------------------- */
|
||||
/* Author: Rikki Tissier */
|
||||
/************************************************/
|
||||
|
||||
ACPLiveSearch = {
|
||||
searchTimer: [],
|
||||
searchLastQuery: '',
|
||||
hasCleared: false,
|
||||
ohJustFreakingStop: false,
|
||||
|
||||
/*------------------------------*/
|
||||
/* Constructor */
|
||||
init: function()
|
||||
{
|
||||
Debug.write("Initializing acp.livesearch.js");
|
||||
|
||||
document.observe("dom:loaded", function(){
|
||||
ACPLiveSearch.initEvents();
|
||||
});
|
||||
},
|
||||
initEvents: function()
|
||||
{
|
||||
if( !$('acpSearchKeyword') )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/*$$('.__user').each( function(elem){
|
||||
ipb.namePops[ elem.identify() ] = [];
|
||||
|
||||
elem.observe("mouseover", ACPLiveSearch.timer_showUserPopup);
|
||||
elem.observe("mouseout", ACPLiveSearch.timer_hideUserPopup);
|
||||
});*/
|
||||
|
||||
$('acpSearchKeyword').observe("focus", ACPLiveSearch.timer_liveSearch );
|
||||
$('acpSearchKeyword').observe("blur", ACPLiveSearch.timer_hideLiveSearch );
|
||||
$('acpSearchKeyword').writeAttribute({autocomplete: "off"}); /* Turn off autocomplete */
|
||||
},
|
||||
|
||||
/* ------------------------------ */
|
||||
/**
|
||||
* Timer for live searching
|
||||
*
|
||||
* @param {event} e The event
|
||||
*/
|
||||
timer_liveSearch: function(e)
|
||||
{
|
||||
if( !ACPLiveSearch.hasCleared )
|
||||
{
|
||||
$('acpSearchKeyword').value = '';
|
||||
ACPLiveSearch.hasCleared = true;
|
||||
}
|
||||
|
||||
ACPLiveSearch.searchTimer['show'] = setTimeout( ACPLiveSearch.liveSearch, 400 );
|
||||
},
|
||||
|
||||
/* ------------------------------ */
|
||||
/**
|
||||
* TImer for hiding live search
|
||||
*
|
||||
* @param {event} e The event
|
||||
*/
|
||||
timer_hideLiveSearch: function(e)
|
||||
{
|
||||
ACPLiveSearch.searchTimer['hide'] = setTimeout( ACPLiveSearch.hideLiveSearch, 800 );
|
||||
},
|
||||
|
||||
/* ------------------------------ */
|
||||
/**
|
||||
* Actually hides live search
|
||||
*
|
||||
* @param {event} e The event
|
||||
*/
|
||||
hideLiveSearch: function(e)
|
||||
{
|
||||
new Effect.Fade( $('live_search_popup'), { duration: 0.4, afterFinish: function(){
|
||||
$('ajax_result').update('');
|
||||
} } );
|
||||
|
||||
ACPLiveSearch.searchLastQuery = '';
|
||||
clearTimeout( ACPLiveSearch.searchTimer['show'] );
|
||||
clearTimeout( ACPLiveSearch.searchTimer['hide'] );
|
||||
},
|
||||
|
||||
/* ------------------------------ */
|
||||
/**
|
||||
* Live search routine
|
||||
*
|
||||
* @param {event} e The event
|
||||
*/
|
||||
liveSearch: function(e)
|
||||
{
|
||||
// Keep loopy going
|
||||
ACPLiveSearch.timer_liveSearch();
|
||||
|
||||
var val = $F('acpSearchKeyword').strip();
|
||||
|
||||
// If too few chars, dont do anything
|
||||
if( val.length < 3 || ACPLiveSearch.ohJustFreakingStop === true ){ return; }
|
||||
|
||||
// Is the popup available?
|
||||
if( !$('live_search_popup') )
|
||||
{
|
||||
Debug.write("Creating popup");
|
||||
ACPLiveSearch.buildSearchPopup();
|
||||
}
|
||||
else if( !$('live_search_popup').visible() )
|
||||
{
|
||||
new Effect.Appear( $('live_search_popup'), {duration: 0.4} );
|
||||
}
|
||||
|
||||
// Is the text the same as last time?
|
||||
if( $F('acpSearchKeyword') == ACPLiveSearch.searchLastQuery ){ return; } /* continue looping */
|
||||
|
||||
//Get hits
|
||||
new Ajax.Request(
|
||||
ipb.vars['base_url'].replace( /&/g, '&' ) + "app=core&module=ajax§ion=livesearch&do=search&secure_key=" + ipb.vars['md5_hash'] + "&search_term=" + val ,
|
||||
{
|
||||
method: 'get',
|
||||
onSuccess: function(t){
|
||||
|
||||
/* Logged out? */
|
||||
if ( t.responseText.match( "__session__expired__log__out__" ) )
|
||||
{
|
||||
clearTimeout( ACPLiveSearch.searchTimer['show'] );
|
||||
clearTimeout( ACPLiveSearch.searchTimer['hide'] );
|
||||
|
||||
$('acpSearchKeyword').stopObserving("focus");
|
||||
$('acpSearchKeyword').stopObserving("blur");
|
||||
|
||||
$('live_search_popup').hide();
|
||||
|
||||
/* Argh!!! */
|
||||
ACPLiveSearch.ohJustFreakingStop = true;
|
||||
|
||||
alert( "Your Admin CP session has expired, please refresh the page and log back in" );
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( ! t.responseText )
|
||||
{
|
||||
ACPLiveSearch.searchLastQuery = val;
|
||||
ACPLiveSearch.hideLiveSearch();
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
$('ajax_result').update( t.responseText );
|
||||
}
|
||||
},
|
||||
//onException: function( f,e ){ alert( "Exception: " + e ) },
|
||||
onFailure: function( t ){ alert( "Failure: " + t.responseText ) }
|
||||
}
|
||||
);
|
||||
|
||||
/* Make sure we set this value so we don't run unnecessary ajax requests */
|
||||
ACPLiveSearch.searchLastQuery = $F('acpSearchKeyword');
|
||||
},
|
||||
|
||||
/* ------------------------------ */
|
||||
/**
|
||||
* Builds the popup for live search
|
||||
*
|
||||
* @param {event} e The event
|
||||
*/
|
||||
buildSearchPopup: function(e)
|
||||
{
|
||||
pos = $('acpSearchKeyword').cumulativeOffset();
|
||||
finalPos = {
|
||||
top: pos.top + $('acpSearchKeyword').getHeight(),
|
||||
left: ( pos.left + 45 )
|
||||
};
|
||||
|
||||
popup = new Element('div', { id: 'live_search_popup' } ).hide().setStyle('top: ' + finalPos.top + 'px; left: ' + finalPos.left + 'px');
|
||||
$('ipboard_body').insert({ bottom: popup });
|
||||
|
||||
|
||||
//Get form
|
||||
new Ajax.Request( ipb.vars['base_url'].replace( /&/g, '&' ) + "app=core&module=ajax§ion=livesearch&do=template&secure_key=" + ipb.vars['md5_hash'],
|
||||
{
|
||||
method: 'get',
|
||||
onSuccess: function(t){
|
||||
if ( ! t.responseText.match( "__session__expired__log__out__" ) )
|
||||
{
|
||||
popup.update( t.responseText );
|
||||
}
|
||||
//ACPLiveSearch.liveSearch();
|
||||
}
|
||||
});
|
||||
|
||||
new Effect.Appear( $('live_search_popup'), {duration: 0.3} );
|
||||
}
|
||||
}
|
||||
ACPLiveSearch.init();
|
||||
Reference in new issue
Block a user