226 lines
6.1 KiB
JavaScript
226 lines
6.1 KiB
JavaScript
/************************************************/
|
|
/* IPB3 Javascript */
|
|
/* -------------------------------------------- */
|
|
/* ips.board.js - Board index code */
|
|
/* (c) IPS, Inc 2008 */
|
|
/* -------------------------------------------- */
|
|
/* Author: Rikki Tissier */
|
|
/************************************************/
|
|
|
|
var _search = window.IPBoard;
|
|
|
|
_search.prototype.search = {
|
|
checks: [],
|
|
curApp: null,
|
|
updateFilters: false,
|
|
vncPopup: null,
|
|
|
|
/*------------------------------*/
|
|
/* Constructor */
|
|
init: function()
|
|
{
|
|
Debug.write("Initializing ips.search.js");
|
|
|
|
document.observe("dom:loaded", function(){
|
|
|
|
if( $('query') ){ $('query').focus(); }
|
|
|
|
// set up calendars
|
|
if( $('date_start') && $('date_start_icon') )
|
|
{
|
|
$('date_start_icon').observe('click', function(e){
|
|
ipb.search.calendar_start = new CalendarDateSelect( $('date_start'), { year_range: 6, time: true, close_on_click: true } );
|
|
});
|
|
}
|
|
|
|
if( $('date_end') && $('date_end_icon') )
|
|
{
|
|
$('date_end_icon').observe('click', function(e){
|
|
ipb.search.calendar_start = new CalendarDateSelect( $('date_end'), { year_range: 6, time: true, close_on_click: true } );
|
|
});
|
|
}
|
|
|
|
// Set up app selector
|
|
if( $('sapps') ){
|
|
$('sapps').select('input').each( function(elem){
|
|
var id = $(elem).id.replace('radio_', '');
|
|
var _d = false;
|
|
|
|
if( $(elem).checked ){
|
|
$(elem).up().addClassName('active');
|
|
ipb.search.curApp = id;
|
|
}
|
|
|
|
if( $('app_filter_' + id) ){
|
|
$('app_filter_' + id ).wrap('div', { id: 'app_filter_' + id + '_wrap' } ).addClassName('extra_filter').hide();
|
|
$('app_filter_' + id ).show();
|
|
if( id == ipb.search.curApp ){
|
|
$('app_filter_' + id + '_wrap').show();
|
|
}
|
|
}
|
|
|
|
$(elem).observe('click', ipb.search.selectApp);
|
|
});
|
|
}
|
|
|
|
if( $('author') )
|
|
{
|
|
// Autocomplete stuff
|
|
document.observe("dom:loaded", function(){
|
|
var url = ipb.vars['base_url'] + 'secure_key=' + ipb.vars['secure_hash'] + '&app=core&module=ajax§ion=findnames&do=get-member-names&name=';
|
|
var ac = new ipb.Autocomplete( $('author'), { multibox: false, url: url, templates: { wrap: ipb.templates['autocomplete_wrap'], item: ipb.templates['autocomplete_item'] } } );
|
|
});
|
|
}
|
|
|
|
if( $('vncForumFilter') )
|
|
{
|
|
$('vncForumFilter').observe('click', ipb.search.openVncForumFilter );
|
|
}
|
|
});
|
|
},
|
|
|
|
openVncForumFilter: function( e )
|
|
{
|
|
Event.stop(e);
|
|
|
|
var url = ipb.vars['base_url'] + "app=core&module=ajax§ion=search&do=showForumsVncFilter&secure_key=" + ipb.vars['secure_hash'];
|
|
|
|
ipb.search.vncPopup = new ipb.Popup( 'vnc_filter_popup', { type: 'modal',
|
|
ajaxURL: url,
|
|
hideAtStart: false,
|
|
hideClose: true,
|
|
w: '600px',
|
|
h: 450 }, { 'afterInit': function() {
|
|
$("save_vnc_filters").observe( 'click', ipb.search.saveVncFilters );
|
|
$("cancel_vnc_filters").observe( 'click', ipb.search.cancelVncFilters );
|
|
} } );
|
|
|
|
/* delegate */
|
|
ipb.delegate.register('li[class~="clickable"]', ipb.search.clickVncFilters);
|
|
|
|
return false;
|
|
},
|
|
|
|
cancelVncFilters: function( e )
|
|
{
|
|
Event.stop(e);
|
|
ipb.search.vncPopup.kill();
|
|
return false;
|
|
},
|
|
|
|
saveVncFilters: function( e )
|
|
{
|
|
ipb.search.setVncFilters(e);
|
|
|
|
/* Only reset filters if we changed something */
|
|
if( ipb.search.updateFilters == false )
|
|
{
|
|
ipb.search.vncPopup.kill();
|
|
return false;
|
|
}
|
|
|
|
var toSave = '';
|
|
|
|
$$('.search_filter_container ul li input').each( function( _elem ){
|
|
if( $(_elem).value == 1 )
|
|
{
|
|
toSave += $(_elem).id.replace( /^hf_/, '' ) + ',';
|
|
}
|
|
});
|
|
|
|
if( toSave == '' )
|
|
{
|
|
toSave = 'all';
|
|
}
|
|
|
|
var request = new Ajax.Request( ipb.vars['base_url'] + 'app=core&module=ajax§ion=search&do=saveForumsVncFilter',
|
|
{
|
|
method: 'post',
|
|
parameters: {
|
|
secure_key: ipb.vars['secure_hash'],
|
|
saveVncFilters: toSave
|
|
},
|
|
onSuccess: function(t)
|
|
{
|
|
window.location.reload( true );
|
|
}.bind( this )
|
|
}
|
|
);
|
|
},
|
|
|
|
clickVncFilters: function(event, elem)
|
|
{
|
|
var id = $(elem).id;
|
|
if( !id ){ return false; }
|
|
id = id.replace( /^forum_/, '' );
|
|
|
|
if( id == 'all' ){
|
|
$$('.search_filter_container ul li.active').invoke('removeClassName', 'active');
|
|
$('forum_all').addClassName('active');
|
|
} else {
|
|
if( $('forum_all').hasClassName('active') ){
|
|
$('forum_all').removeClassName('active');
|
|
}
|
|
$(elem).toggleClassName('active');
|
|
}
|
|
|
|
ipb.search.updateFilters = true;
|
|
},
|
|
|
|
setVncFilters: function( event, elem )
|
|
{
|
|
Event.stop(event);
|
|
|
|
$$('.search_filter_container ul li input').invoke('setValue', 0);
|
|
|
|
if( $('forum_all').hasClassName('active') ){
|
|
$('hf_all').value = 1;
|
|
} else {
|
|
$('hf_all').value = 0;
|
|
|
|
$$('.search_filter_container ul li.active').each( function( _elem ){
|
|
$(_elem).down('input').value = 1;
|
|
});
|
|
}
|
|
|
|
return true;
|
|
},
|
|
|
|
selectApp: function(e)
|
|
{
|
|
var elem = Event.element(e);
|
|
var id = $(elem).id.replace('radio_', '');
|
|
if( !id || id == ipb.search.curApp ){ return; }
|
|
|
|
if( ipb.search.curApp ){
|
|
$('sapp_' + ipb.search.curApp).removeClassName('active');
|
|
}
|
|
$('sapp_' + id).addClassName('active');
|
|
|
|
if( $('app_filter_' + ipb.search.curApp) && ( $('app_filter_' + id) ) ){
|
|
new Effect.BlindUp( $('app_filter_' + ipb.search.curApp + '_wrap'), { duration: 0.3, afterFinish: function(){
|
|
new Effect.BlindDown( $('app_filter_' + id + '_wrap'), { duration: 0.3 } );
|
|
}});
|
|
} else if( $('app_filter_' + ipb.search.curApp) ){
|
|
new Effect.BlindUp( $('app_filter_' + ipb.search.curApp + '_wrap'), { duration: 0.3 } );
|
|
} else if( $('app_filter_' + id) ){
|
|
new Effect.BlindDown( $('app_filter_' + id + '_wrap'), { duration: 0.3 } );
|
|
}
|
|
|
|
if ( $('tag_row') )
|
|
{
|
|
if( $(elem).readAttribute('data-allowtags') === '1' ){
|
|
if( !$('tag_row').visible() ){
|
|
new Effect.BlindDown( $('tag_row'), { duration: 0.4 } );
|
|
}
|
|
} else {
|
|
if( $('tag_row').visible() ){
|
|
new Effect.BlindUp( $('tag_row'), { duration: 0.4 } );
|
|
}
|
|
}
|
|
}
|
|
|
|
ipb.search.curApp = id;
|
|
}
|
|
};
|
|
ipb.search.init(); |