webmaster@1: // $Id: batch.js,v 1.4 2007/10/21 18:59:01 goba Exp $ webmaster@1: webmaster@1: /** webmaster@1: * Attaches the batch behavior to progress bars. webmaster@1: */ webmaster@1: Drupal.behaviors.batch = function (context) { webmaster@1: // This behavior attaches by ID, so is only valid once on a page. webmaster@1: if ($('#progress.batch-processed').size()) { webmaster@1: return; webmaster@1: } webmaster@1: $('#progress', context).addClass('batch-processed').each(function () { webmaster@1: var holder = this; webmaster@1: var uri = Drupal.settings.batch.uri; webmaster@1: var initMessage = Drupal.settings.batch.initMessage; webmaster@1: var errorMessage = Drupal.settings.batch.errorMessage; webmaster@1: webmaster@1: // Success: redirect to the summary. webmaster@1: var updateCallback = function (progress, status, pb) { webmaster@1: if (progress == 100) { webmaster@1: pb.stopMonitoring(); webmaster@1: window.location = uri+'&op=finished'; webmaster@1: } webmaster@1: }; webmaster@1: webmaster@1: var errorCallback = function (pb) { webmaster@1: var div = document.createElement('p'); webmaster@1: div.className = 'error'; webmaster@1: $(div).html(errorMessage); webmaster@1: $(holder).prepend(div); webmaster@1: $('#wait').hide(); webmaster@1: }; webmaster@1: webmaster@1: var progress = new Drupal.progressBar('updateprogress', updateCallback, "POST", errorCallback); webmaster@1: progress.setProgress(-1, initMessage); webmaster@1: $(holder).append(progress.element); webmaster@1: progress.startMonitoring(uri+'&op=do', 10); webmaster@1: }); webmaster@1: };