Skip to content
67 changes: 64 additions & 3 deletions sidebar.inc.php
Original file line number Diff line number Diff line change
Expand Up @@ -64,12 +64,29 @@ function addlookup(inputobj,lookuptype){
}).next().after(arrow);
arrow.css({'top': inputpos.top+'px', 'left': inputpos.left+inputobj.width()-(arrow.width()/2)});
}
// Toggle Advanced Search form (slide open/close)
$('#advsrch, #searchadv ~ .ui-icon.ui-icon-close').click(function(){
var here=$(this).position();
$('#searchadv, #searchname').val('');
$('#searchadv').parents('form').height(here.top).toggle('slide',200).removeClass('hide');
if($('#searchadv').hasClass('ui-autocomplete-input')){$('#searchadv').autocomplete('destroy');}
if($(this).text()=='<?php echo __("Advanced");?>'){$(this).text('<?php echo __("Basic");?>');$('#searchadv ~ select[name="key"]').trigger('change');}else{$(this).text('<?php echo __("Advanced");?>');}
if($(this).text()=='<?php echo __("Advanced");?>'){$(this).text('<?php echo __("Basic");?>');}else{$(this).text('<?php echo __("Advanced");?>');}

// Persist the Advanced Search panel visibility using sessionStorage
// English-only comments; UI strings are gettext-ready elsewhere
try{
var isOpen = $('#searchadv').parents('form').is(':visible');
sessionStorage.setItem('adv.active', isOpen ? '1' : '0');
if(isOpen){
// When opening, restore saved key if present then trigger change to bind autocomplete
var savedKey=sessionStorage.getItem('adv.key')||'';
if(savedKey){ $('form.advsearch select[name="key"]').val(savedKey); }
$('form.advsearch select[name="key"]').trigger('change');
// Also persist current key
var k=$('form.advsearch select[name="key"]').val();
sessionStorage.setItem('adv.key', k||'');
}
}catch(e){}
});
$('#customsrch').click(function(){
window.location="custom_search.php";
Expand Down Expand Up @@ -147,10 +164,54 @@ function buildmenu($menu){

$('#searchname').width($('#sidebar').innerWidth() - $('#searchname ~ button').outerWidth());
addlookup($('#searchname'),'name');
$('#searchadv ~ select[name="key"]').change(function(){
addlookup($('#searchadv'),$(this).val())
$('form.advsearch select[name="key"]').change(function(){
addlookup($('#searchadv'),$(this).val());
// Persist selected filter key so it is restored after reload
try{ sessionStorage.setItem('adv.key', $(this).val()||''); }catch(e){}
}).outerHeight($('#searchadv').outerHeight()).outerWidth(157);

// Advanced Search persistence (sessionStorage)
// Keys used:
// - adv.active: '1' when Advanced Search is open, '0' otherwise
// - adv.key: the selected filter key (dropdown)
// - adv.value: the typed search value in #searchadv
// On Advanced form submit, save state so that the sidebar restores after page reload.
$('form.advsearch').on('submit', function(){
try{
sessionStorage.setItem('adv.active','1');
sessionStorage.setItem('adv.key',$('form.advsearch select[name="key"]').val()||'');
// Do not persist the typed value by request
}catch(e){}
});

// On Basic form submit, mark Advanced as closed so it won't reopen on next load.
$('#searchname').closest('form').on('submit', function(){
try{ sessionStorage.setItem('adv.active','0'); }catch(e){}
});

// On page load, preselect saved key, and if Advanced was active, reopen it and restore the selected filter (only on search.php).
$(function(){
try{
var currentScript = '<?php echo basename($_SERVER['SCRIPT_NAME']);?>';
// Preselect saved key so UI reflects it even before opening
var preKey=sessionStorage.getItem('adv.key')||'';
if(preKey){ $('form.advsearch select[name="key"]').val(preKey); }
if(currentScript==='search.php' && sessionStorage.getItem('adv.active')==='1'){
if($('#searchadv').parents('form').hasClass('hide') || !$('#searchadv').parents('form').is(':visible')){
// Trigger the same toggle used by the UI to ensure consistent behavior
$('#advsrch').trigger('click');
}
var savedKey=sessionStorage.getItem('adv.key')||'';
if(savedKey){
$('form.advsearch select[name="key"]').val(savedKey).trigger('change');
}
} else if (currentScript!=='search.php') {
// Do not auto-open Advanced on non-search pages
sessionStorage.setItem('adv.active','0');
}
}catch(e){}
});

// Really long cabinet / zone / dc combinations are making the screen jump around.
// If they make this thing so big it's unusable, fuck em.
$('#sidebar > hr ~ div').css({'width':$('#sidebar > hr ~ ul').width()+'px','overflow':'hidden'});
Expand Down