|  | @@ -111,53 +111,7 @@ RelatedPopups.prototype = {
 | 
	
		
			
				|  |  |              var $popup = $popups.last();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              if (response != undefined) {
 | 
	
		
			
				|  |  | -                var $input = $popup.data('input');
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                switch (response.action) {
 | 
	
		
			
				|  |  | -                    case 'change':
 | 
	
		
			
				|  |  | -                        $input.find('option').each(function() {
 | 
	
		
			
				|  |  | -                            var $option = $(this);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                            if ($option.val() == response.value) {
 | 
	
		
			
				|  |  | -                                $option.html(response.obj).val(response.new_value);
 | 
	
		
			
				|  |  | -                            }
 | 
	
		
			
				|  |  | -                        });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                        $input.trigger('change').trigger('select:init');
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                        break;
 | 
	
		
			
				|  |  | -                    case 'delete':
 | 
	
		
			
				|  |  | -                        $input.find('option').each(function() {
 | 
	
		
			
				|  |  | -                            var $option = $(this);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                            if ($option.val() == response.value) {
 | 
	
		
			
				|  |  | -                                $option.remove();
 | 
	
		
			
				|  |  | -                            }
 | 
	
		
			
				|  |  | -                        });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                        $input.trigger('change').trigger('select:init');
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                        break;
 | 
	
		
			
				|  |  | -                    default:
 | 
	
		
			
				|  |  | -                        if ($input.is('select')) {
 | 
	
		
			
				|  |  | -                            var $option = $('<option>')
 | 
	
		
			
				|  |  | -                                .val(response.value)
 | 
	
		
			
				|  |  | -                                .html(response.obj);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                            $input.append($option);
 | 
	
		
			
				|  |  | -                            $option.attr('selected', true);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                            $input
 | 
	
		
			
				|  |  | -                                .trigger('change')
 | 
	
		
			
				|  |  | -                                .trigger('select:init');
 | 
	
		
			
				|  |  | -                        } else if ($input.is('input.vManyToManyRawIdAdminField') && $input.val()) {
 | 
	
		
			
				|  |  | -                            $input.val($input.val() + ',' + response.value);
 | 
	
		
			
				|  |  | -                        } else if ($input.is('input')) {
 | 
	
		
			
				|  |  | -                            $input.val(response.value);
 | 
	
		
			
				|  |  | -                        }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                        break;
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | +                obj.processPopupResponse($popup, response);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              obj.windowStorage.pop();
 | 
	
	
		
			
				|  | @@ -173,7 +127,7 @@ RelatedPopups.prototype = {
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          })(previousWindow ? previousWindow.jet.jQuery : $);
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | -    processPopupResponse: function() {
 | 
	
		
			
				|  |  | +    findPopupResponse: function() {
 | 
	
		
			
				|  |  |          var obj = this;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          $('#django-admin-popup-response-constants').each(function() {
 | 
	
	
		
			
				|  | @@ -183,6 +137,55 @@ RelatedPopups.prototype = {
 | 
	
		
			
				|  |  |              obj.closePopup(response);
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | +    processPopupResponse: function($popup, response) {
 | 
	
		
			
				|  |  | +        var $input = $popup.data('input');
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        switch (response.action) {
 | 
	
		
			
				|  |  | +            case 'change':
 | 
	
		
			
				|  |  | +                $input.find('option').each(function() {
 | 
	
		
			
				|  |  | +                    var $option = $(this);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    if ($option.val() == response.value) {
 | 
	
		
			
				|  |  | +                        $option.html(response.obj).val(response.new_value);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                $input.trigger('change').trigger('select:init');
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                break;
 | 
	
		
			
				|  |  | +            case 'delete':
 | 
	
		
			
				|  |  | +                $input.find('option').each(function() {
 | 
	
		
			
				|  |  | +                    var $option = $(this);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    if ($option.val() == response.value) {
 | 
	
		
			
				|  |  | +                        $option.remove();
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                $input.trigger('change').trigger('select:init');
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                break;
 | 
	
		
			
				|  |  | +            default:
 | 
	
		
			
				|  |  | +                if ($input.is('select')) {
 | 
	
		
			
				|  |  | +                    var $option = $('<option>')
 | 
	
		
			
				|  |  | +                        .val(response.value)
 | 
	
		
			
				|  |  | +                        .html(response.obj);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    $input.append($option);
 | 
	
		
			
				|  |  | +                    $option.attr('selected', true);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    $input
 | 
	
		
			
				|  |  | +                        .trigger('change')
 | 
	
		
			
				|  |  | +                        .trigger('select:init');
 | 
	
		
			
				|  |  | +                } else if ($input.is('input.vManyToManyRawIdAdminField') && $input.val()) {
 | 
	
		
			
				|  |  | +                    $input.val($input.val() + ',' + response.value);
 | 
	
		
			
				|  |  | +                } else if ($input.is('input')) {
 | 
	
		
			
				|  |  | +                    $input.val(response.value);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                break;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  |      overrideRelatedGlobals: function() {
 | 
	
		
			
				|  |  |          var obj = this;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -213,7 +216,7 @@ RelatedPopups.prototype = {
 | 
	
		
			
				|  |  |          try {
 | 
	
		
			
				|  |  |              this.initLinks();
 | 
	
		
			
				|  |  |              this.initPopupBackButton();
 | 
	
		
			
				|  |  | -            this.processPopupResponse();
 | 
	
		
			
				|  |  | +            this.findPopupResponse();
 | 
	
		
			
				|  |  |              this.overrideRelatedGlobals();
 | 
	
		
			
				|  |  |              this.initDeleteRelatedCancellation();
 | 
	
		
			
				|  |  |              this.overrideRelatedGlobals();
 |