--- Webpacus/root/js/webpac.js 2005/12/17 03:20:19 275 +++ Webpacus/root/js/webpac.js 2005/12/25 23:32:01 323 @@ -1,184 +1,6 @@ -// 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; -} - /* - pager + WebPAC AJAX class */ -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; -} var WebPAC = { }; @@ -223,7 +45,7 @@ }, getUpdatedChoices: function() { - entry = encodeURIComponent(this.options.paramName) + '=' + + var entry = encodeURIComponent(this.options.paramName) + '=' + encodeURIComponent(this.getToken()); this.options.parameters = this.options.callback ? @@ -262,10 +84,17 @@ Object.extend(WebPAC.Updater.prototype, { initialize: function(container, url, options) { Logger.debug('WebPAC.Updater initialize '+container+','+url+','+options); - url += '/ajax'; + if (url.indexOf('/ajax') == -1) { + var pos = url.indexOf('?'); + if (pos == -1) { + url += '/ajax'; + } else { + url = url.substring(0,pos) + '/ajax' + url.substring(pos); + } + Logger.debug('added /ajax to '+url+' pos:'+pos); + } + Logger.info('using AJAX to update "'+container+'" from '+url); this.updater = new Ajax.Updater(container, url, options); - $('_ajax').value = 1; - if ($('_ajax').value) Logger.info("using AJAX"); } });