%# Hoare's Law of Large Problems:
%#	Inside every large problem is a small problem struggling to get out.
<& /Edit/Elements/104Header,
    Buttons => [
	Add => "index.html?Queue=$Queue&Action-Add=1",
	Save => ($Scrip ? "javascript:document.getElementById('mainform').submit()" : ''),
	Delete => 1,
	Copy => '',
	Search => '',
    ],
    Method => 'POST',
&>
   
    <& /Edit/Elements/Tab, Text => 'Global' &> 
   
   
     
      
         
           
            
              
               
                
                  
                     
                       
                        
                           
			    <& /Edit/Elements/Tabs, Map => $ARGS{Map}, URL => '../Scrip/' &> 
                           
% }
                           
                             
                              
                                 
                                   
                                    
                                       
                                         
					  <& Top, Item => $Item, List => $List, Queue => $Queue &>
                                         
                                       
				      <& List, Delete => 1, List => $List, Begin => $Begin, Item => $Item, ARGS => \%ARGS &>
                                    
                                   
                                 
                              
                             
                           
                        
                       
                     
                  
                 
               
            
           
         
      
     
   
<%INIT>
my $List = [];
my $Item = $RT::Nothing;
my $Scrips = RT::Scrips->new($session{'CurrentUser'});
my $QueueObj = RT::Queue->new($session{'CurrentUser'});
my @actions;
if ($Queue)  {
        $QueueObj->Load($Queue);                        
}
if ($QueueObj->id) {
	$Scrips->LimitToQueue($Queue);
}                                            
else {                                       
        $Scrips->LimitToGlobal();
}                                           
if ($Scrip) {
    $Item = RT::Scrip->new($session{'CurrentUser'});
    $Item->Load( $Scrip );
}
if ($Action eq 'Save' and $Item) {
    $ARGS{ScripCondition} = $ARGS{UserScripCondition} if $ARGS{UserScripCondition};
    $ARGS{ScripAction} = $ARGS{UserScripAction} if $ARGS{UserScripAction};
    foreach my $key (qw(
	ScripAction ScripCondition Template Description
	CustomPrepareCode CustomCommitCode CustomIsApplicableCode
    )) {
	my $method = "Set$key";
	$Item->$method($ARGS{$key}) if exists $ARGS{$key};
    }
}
elsif ($Action eq 'Add') {
    $Item = RT::Scrip->new($session{'CurrentUser'});
    my ($val, $msg) = $Item->Create(
	Queue => $Queue,
	Description => loc('(new)'),
	ScripAction => 'Autoreply To Requestors',
	ScripCondition => 'On Create',
	Template => 'Blank',
	CustomPrepareCode => '',
	CustomCommitCode => '',
	CustomIsApplicableCode => '',
    );
    Abort($msg) unless ($val);
    $Scrip = $Item->id;
    $Begin = -1;
}
elsif ($Action eq 'Delete') {
    foreach my $Id (@ListDelete) {
	my $item = RT::Scrip->new($session{'CurrentUser'});
	$item->Load( $Id );
	$item->Delete;
    }
    $Scrips->RedoSearch;
    $Item = $Scrips->First || $RT::Nothing;
    $Begin = $Scrip = 0;
}
$List = $Scrips->ItemsArrayRef;
$Begin = int($#$List / 8) * 8 if $Begin == -1;
%INIT>
<%ARGS>
$Begin => 0
$Scrip => undef
$Queue => 0
$Action => ''
@ListDelete => ()
%ARGS>