|
// WebPAC AJAX API |
|
|
// |
|
|
// Documented in this code only, I'm afraid. Beware of dragons! |
|
|
// Dobrica Pavlinusic dpavlin(at)rot13(dot)org 2005-11-22 |
|
|
|
|
|
/* |
|
|
load another template |
|
|
*/ |
|
|
function load_template(template_name) { |
|
|
|
|
|
var old_template = $('template_name').value; |
|
|
|
|
|
Logger.info('load_template: '+template_name+' (old: '+old_template+')'); |
|
|
|
|
|
if (template_name == old_template) { |
|
|
Logger.error('why reload same template?'); |
|
|
return false; |
|
|
} |
|
|
|
|
|
$('template_name').value = template_name; |
|
|
submit_results_form(); |
|
|
return false; |
|
|
} |
|
|
|
|
1 |
/* |
/* |
2 |
pager |
WebPAC AJAX class |
3 |
*/ |
*/ |
|
function load_results_page(page_nr) { |
|
|
|
|
|
if (parseInt(page_nr) != page_nr) { |
|
|
Logger.error("load_results_page can't parseInt "+page_nr); |
|
|
return false; |
|
|
} |
|
|
|
|
|
var old_page = get_page_nr(); |
|
|
|
|
|
if (page_nr < 1) { |
|
|
Logger.error("load_results_page called with '"+page_nr+"' < 1"); |
|
|
return false; |
|
|
} |
|
|
|
|
|
Logger.info('load_results_page: '+page_nr+' (from page: '+old_page+')'); |
|
|
|
|
|
if (page_nr == old_page) { |
|
|
Logger.error('why reload same page?'); |
|
|
return false; |
|
|
} |
|
|
|
|
|
$('page_nr').value = page_nr; |
|
|
submit_results_form(); |
|
|
|
|
|
return false; |
|
|
} |
|
|
|
|
|
function get_page_nr() { |
|
|
var page_nr = parseInt( $('page_nr').value ) || 1; |
|
|
return page_nr; |
|
|
} |
|
|
|
|
|
function reset_page_nr( nr ) { |
|
|
if (! nr) nr = 1; |
|
|
Logger.info('reset_page_nr to '+nr); |
|
|
page_nr = nr; |
|
|
$('page_nr').value = page_nr; |
|
|
} |
|
|
|
|
|
/* syntaxtic sugar */ |
|
|
function set_page_nr(nr) { |
|
|
return load_results_page(nr); |
|
|
} |
|
|
|
|
|
function next_page() { |
|
|
load_results_page( get_page_nr() + 1 ); |
|
|
return false; |
|
|
} |
|
|
|
|
|
function prev_page() { |
|
|
load_results_page( get_page_nr() - 1 ); |
|
|
return false; |
|
|
} |
|
|
|
|
|
/* toggle visibility and replace text with something else */ |
|
|
function toggleLinkAndElement ( link, elementID, text ) { |
|
|
|
|
|
if ( link.innerHTML != text ) { |
|
|
// change link text |
|
|
link.oldInnerHTML = link.innerHTML; |
|
|
link.innerHTML = text; |
|
|
} else { |
|
|
// change it back |
|
|
link.innerHTML = link.oldInnerHTML; |
|
|
} |
|
|
|
|
|
Logger.debug('toggleLinkAndElement '+elementID+': '+Element.visible( elementID )+' text: '+text); |
|
|
|
|
|
Element.toggle( elementID ); |
|
|
|
|
|
// why is this needed, Firefox 1.5? |
|
|
if (Element.visible( elementID )) $( elementID ).style.display = 'block'; |
|
|
|
|
|
return false; |
|
|
} |
|
|
|
|
|
|
|
|
/* |
|
|
submit results form using AJAX |
|
|
*/ |
|
|
function submit_results_form() { |
|
|
var results_form = $('results_form'); |
|
|
|
|
|
if (results_form) { |
|
|
var form_params = Form.serialize( results_form ); |
|
|
|
|
|
Logger.debug('Ajax.Updater(results,/results/ajax) '+form_params); |
|
|
|
|
|
new Ajax.Updater( 'results', '/search/results/ajax', { |
|
|
parameters: form_params, |
|
|
asynchronous: 1, |
|
|
onLoading: function(request) { |
|
|
show_searching(); |
|
|
}, |
|
|
onLoaded: function(request) { |
|
|
hide_searching(); |
|
|
} |
|
|
} ) ; |
|
|
return false; |
|
|
} else { |
|
|
Logger.debug('no results_form element'); |
|
|
return undef; |
|
|
} |
|
|
return false; |
|
|
} |
|
|
|
|
|
/* |
|
|
helper functions for submit_results_form() |
|
|
*/ |
|
|
function show_searching() { |
|
|
Logger.debug('show_searching'); |
|
|
Element.show('searching'); |
|
|
// new Effect.Fade('results', { duration: 0.3 }); |
|
|
return false; |
|
|
} |
|
|
|
|
|
function hide_searching() { |
|
|
Logger.debug('hide_searching'); |
|
|
Element.hide('searching'); |
|
|
// new Effect.Highlight('results'); |
|
|
// new Effect.Appear('results', { duration: 0.3 }); |
|
|
return false; |
|
|
} |
|
|
|
|
|
/* |
|
|
load record nr in some template |
|
|
*/ |
|
|
|
|
|
function load_rec(record_uri, tmp_template_filename) { |
|
|
if (! tmp_template_filename) tmp_template_filename = template_filename; |
|
|
Logger.info('load_rec '+record_uri+' in '+tmp_template_filename); |
|
|
|
|
|
var results_form = $('results_form'); |
|
|
|
|
|
if (results_form) { |
|
|
var args = '?record_uri='+record_uri+'&template_filename='+tmp_template_filename; |
|
|
Logger.debug('Ajax.Updater(results,/search/record) '+args); |
|
|
|
|
|
new Ajax.Updater( 'results', '/search/record'+args, { |
|
|
asynchronous: 1, |
|
|
onLoading: function(request) { |
|
|
show_searching(); |
|
|
}, |
|
|
onLoaded: function(request) { |
|
|
hide_searching(); |
|
|
} |
|
|
} ) ; |
|
|
return false; |
|
|
} else { |
|
|
Logger.debug('no results_form element'); |
|
|
return undef; |
|
|
} |
|
|
return false; |
|
|
} |
|
4 |
|
|
5 |
var WebPAC = { }; |
var WebPAC = { }; |
6 |
|
|
45 |
}, |
}, |
46 |
|
|
47 |
getUpdatedChoices: function() { |
getUpdatedChoices: function() { |
48 |
entry = encodeURIComponent(this.options.paramName) + '=' + |
var entry = encodeURIComponent(this.options.paramName) + '=' + |
49 |
encodeURIComponent(this.getToken()); |
encodeURIComponent(this.getToken()); |
50 |
|
|
51 |
this.options.parameters = this.options.callback ? |
this.options.parameters = this.options.callback ? |
84 |
Object.extend(WebPAC.Updater.prototype, { |
Object.extend(WebPAC.Updater.prototype, { |
85 |
initialize: function(container, url, options) { |
initialize: function(container, url, options) { |
86 |
Logger.debug('WebPAC.Updater initialize '+container+','+url+','+options); |
Logger.debug('WebPAC.Updater initialize '+container+','+url+','+options); |
87 |
url += '/ajax'; |
if (url.indexOf('/ajax') == -1) { |
88 |
|
var pos = url.indexOf('?'); |
89 |
|
if (pos == -1) { |
90 |
|
url += '/ajax'; |
91 |
|
} else { |
92 |
|
url = url.substring(0,pos) + '/ajax' + url.substring(pos); |
93 |
|
} |
94 |
|
Logger.debug('added /ajax to '+url+' pos:'+pos); |
95 |
|
} |
96 |
|
Logger.info('using AJAX to update "'+container+'" from '+url); |
97 |
this.updater = new Ajax.Updater(container, url, options); |
this.updater = new Ajax.Updater(container, url, options); |
|
$('_ajax').value = 1; |
|
|
if ($('_ajax').value) Logger.info("using AJAX"); |
|
98 |
} |
} |
99 |
}); |
}); |
100 |
|
|