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