The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
%# A banker is a fellow who lends you his umbrella when the sun is shining
%# and wants it back the minute it begins to rain.
%# 		-- Mark Twain

<& /Edit/Elements/104Header,
    Buttons => [
	Add => "index.html?Action-Add=1",
	Save => ($Queue ? "javascript:document.getElementById('mainform').submit()" : ''),
	Delete => '',
	Copy => '',
	Search => '',
    ],
    Method => 'POST',
&>

<input type="hidden" name="Queue" value="<% $Queue %>">

<table width="97%" border="0" cellspacing="0" cellpadding="0" align="center">
  <tr> 
    <td><& /Edit/Elements/Tab, Text => 'Queues' &></td>
  </tr>
  <tr> 
    <td valign="top"> 
      <table border="0" cellspacing="0" cellpadding="4" class="poptable" width="100%">
        <tr> 
          <td valign="top"> 
            <table width="100%" border="0" cellspacing="0" cellpadding="0">
              <tr> 
		<td><& /Edit/Elements/Tabs, Map => $ARGS{Map}, URL => '/Edit/Queues/Basic/' &></td>
              </tr>
              <tr> 
                <td class="tableEmboss">
                  <table width="100%" border="0" cellspacing="0" cellpadding="4" class="fixed"><COL width="100%">
                    <tr> 
                      <td bgcolor="#82D1EC" class="poptable" valign="bottom" > 
                          <nobr><&|/l&>Queue Name</&>: <% $QueueObj->Name %></nobr></td>
                    </tr>
                    <tr> 
                      <td bgcolor="#A3DEF1"> 
                        <table border="0" cellspacing="0" cellpadding="0" align="center" width="100%">
			  <tr> 
			    <td><& /Edit/Elements/Tabs, Name => 'Map2', Map => $ARGS{Map2}, URL => '../Basic/' &></td>
			  </tr>
			  <tr> 
			    <td class="poptable" bgcolor="#C4E1F0"><& Top, Item => $QueueObj, List => $List, Categories => \%Categories, Users => $Users, Owner => $Owner &></td>
			  </tr>
			</table>
                      </td>
                    </tr>
                  </table>
                </td>
              </tr>
            </table>
          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<%INIT>
my %Categories;
my $Queues = RT::Queues->new($session{'CurrentUser'});
$Queues->UnLimit;

$Categories{$_}++ for @{ $Queues->Categories };

while (my $queue = $Queues->Next) {
    my $descr = $queue->Description;
    $Categories{$descr}++ if length $descr;
}

my $List = [ sort keys %Categories ];
$Queues->SetCategories( $List );

if ($Action eq 'Add') {
    # create a new Queue!
    $QueueObj = RT::Queue->new($session{'CurrentUser'});
    $QueueObj->Load('(new)');
    if (!$QueueObj->Id) {
	$QueueObj->Create(
	    Name        => '(new)',
	    Description => $List->[0],
	    Disabled    => 0,
	);
    }
    $Queue = $QueueObj->Id;
    $QueueObj->UpdateCompany;
}
elsif ($Action eq 'Delete' and $QueueObj->Id) {
    $QueueObj->SetDisabled(1);
    return $m->comp('/Edit/Queues/index.html');
}
elsif ($Action eq 'Save' and $QueueObj->Id) {
    # update the current queue
    foreach my $method (grep /^Set/, keys %ARGS) {
	my $key = substr($method, 3);
	$QueueObj->$method($ARGS{$method}) unless $QueueObj->$key eq $ARGS{$method};
    }
    foreach my $method (grep /^Attr/, keys %ARGS) {
	my $key = substr($method, 4);
	$QueueObj->SetAttribute($key => $ARGS{$method});
    }
}

my $Owner = $RT::Nothing;
my $Users = [];
my $AdminCc;

if ($QueueObj != $RT::Nothing) {
    $AdminCc = $QueueObj->AdminCc;
    $Owner = $AdminCc->UserMembersObj->First || $RT::Nothing;
}

</%INIT>
<%ARGS>
$Action => "Save"
$Queue => undef
$QueueObj => undef
</%ARGS>