%# What does it mean if there is no fortune for you? % unless ($NoUI) { <& /Work/Elements/104Header, Title => 'New Request', Method => 'POST', Enctype => 'multipart/form-data' &> % } % if ($RT::OIN104 or $ARGS{Subject}) { % } % if ($NoUI) { % } else { <& /Work/Tickets/Elements/ShowQueue, QueueObj => $QueueObj &> %# Basic Info {{{
<&|/l&>Queue Name <% $QueueObj->Name %> <&|/l&>Activated Date % my $Now = RT::Date->new($session{'CurrentUser'}); $Now->SetToNow; <% $Now->AsDate %> <&|/l&>Queue Owner <& /Work/Elements/SelectOwner, Name => "Owner", QueueObj => $QueueObj, Default => $Owner &>
<&|/l&>Ticket Type <% $QueueObj->Description %> <&|/l&>Current Status <&|/l&>New <&|/l&>Owner's Phone <% $OwnerObj ? $OwnerObj->WorkPhone : '' %>
%# }}} % } %# Custom Fields {{{ % my @entry_fields; % my $UserObj = $session{CurrentUser}->UserObj; % while( my $cf = $CFs->Next() ) { % next if ($NoCF->{$cf->Name}); % if ($cf->IsEntry) { % push @entry_fields, $cf; % next; % } % elsif (@entry_fields) { % @entry_fields = (); % } % my $attr = $cf->Attribute('OnCreate'); % if ($cf->Type =~ /^Label(.+)$/ and $1 ne 'URL') { % $m->comp("/Work/Tickets/Elements/Add$1", CustomField => $cf, Description => $cf->Description, %ARGS) unless $NoCF->{$1}++ or $attr eq 'hidden'; % next; % } % next if $attr eq 'hidden'; % } %# }}} % if (@entry_fields) { % @entry_fields = (); % } % unless ($RT::SystemQueues{$QueueObj->Id} or $NoCF->{Attachments}) { <& /Work/Tickets/Elements/AddAttachments, %ARGS &> % } % unless ($RT::OIN104 or length($ARGS{Subject}) or $NoCF->{Subject}) { <& /Work/Tickets/Elements/AddSubject, %ARGS &> % } % unless ($NoCF->{Notes} or $NoCF->{Content}) { <& /Work/Tickets/Elements/AddContent, %ARGS &> % }

<&|/l&>Details

<& /Work/Tickets/Elements/EditCustomFieldEntries, Prefix => 'AddEntry-', CustomFields => \@entry_fields, TempValues => $Entries, Loc => $Loc &>

% if ($cf->Type eq 'FreeformExternal') { % my $descr = $UserObj->describe($cf->Description); <% $descr || $cf->Name %> % } elsif ($cf->Type eq 'SelectExternal') { % my $descr = $UserObj->field_cname($cf->Description); <% $descr || $cf->Name %> % } elsif ($cf->Type eq 'LabelURL') { % my $url = $cf->Name; % $url =~ s/\$(\w+)/$UserObj->val($1)/eg; % # XXX - see if IE likes interpolated javascript in urls

 Id, CustomField => $cf, NamePrefix => "CustomField-", Value => (exists($ARGS{$cf_key}) ? $ARGS{$cf_key} : $cf->Attribute('Default')), Queue => $QueueObj->Id, Loc => $Loc, ReadOnly => ($cf->Attribute('OnCreate') eq 'readonly') &>

<&|/l&>Details

<& /Work/Tickets/Elements/EditCustomFieldEntries, Prefix => 'AddEntry-', CustomFields => \@entry_fields, TempValues => $Entries, Loc => $Loc &>
% if ($NoUI) {
% return; % }

<& /Work/Elements/BackButton &>
<%INIT> my $QueueObj = new RT::Queue($session{'CurrentUser'}); $QueueObj->Load($Queue) || Abort(loc("Queue could not be loaded.")); my $CFs = $QueueObj->CustomFields(); if ($QueueObj->DefaultDueIn) { my $default_due = RT::Date->new($session{'CurrentUser'}); $default_due->SetToNow(); $default_due->AddDays($QueueObj->DefaultDueIn); $ARGS{'Due'} = $default_due->ISO(); } # {{{ deal with deleting uploaded attachments foreach my $key (keys %ARGS) { if ($key =~ m/^DeleteAttach-(.+)$/) { delete $session{'Attachments'}{$1}; } $session{'Attachments'} = { %{$session{'Attachments'} || {}} }; } # {{{ store the uploaded attachment in session if ($ARGS{'Attach'}) { # attachment? $session{'Attachments'} = {} unless defined $session{'Attachments'}; my $subject = "$ARGS{'Attach'}"; # strip leading directories $subject =~ s#^.*[\\/]##; my $attachment = MakeMIMEEntity( Subject => $subject, Body => "", AttachmentFieldName => 'Attach' ); $session{'Attachments'} = { %{$session{'Attachments'} || {}}, $ARGS{'Attach'} => $attachment }; } # }}} foreach my $key (keys %ARGS) { $key =~ /^AddMoreEntry-(.*)$/ or next; $ARGS{'AddMoreEntry'} = [ split(/-/, $1) ]; } $session{'Entries'} = {} unless $ARGS{'AddMoreEntry'} or $ARGS{'id'}; my $Entries = $session{'Entries'} || {}; $m->comp('Elements/ProcessEntryUpdates', Entries => $Entries, %ARGS); # delete temporary storage entry to make WebUI clean unless (keys %{$session{'Attachments'}} and $ARGS{'id'} eq 'new') { delete $session{'Attachments'}; } if (keys %{$Entries} and $ARGS{'id'} eq 'new') { $ARGS{"CustomField-$_"} = $Entries->{$_} foreach keys %{$Entries}; $session{'Entries'} = { %{$Entries} }; } else { delete $session{'Entries'}; } # }}} # {{{ deal with multi-select CC & AdminCC foreach my $key (keys %ARGS) { if ($key =~ m/^AddAdminCc/) { my @AdminCCs = ref($ARGS{$key}) eq 'ARRAY' ? @{$ARGS{$key}} : ($ARGS{$key}); $ARGS{AdminCc} = join ",", $ARGS{AdminCc}, grep { $_ ne "-" } @AdminCCs; } elsif ($key =~ m/^AddCc/) { my @CCs = ref($ARGS{$key}) eq 'ARRAY' ? @{$ARGS{$key}} : ($ARGS{$key}); $ARGS{Cc} = join ",", $ARGS{Cc}, grep { $_ ne "-" } @CCs; } } # }}} my $valid_cfs = $m->comp('Elements/ValidateCustomFields', CustomFields => $CFs, ARGSRef => \%ARGS); if ((!exists $ARGS{'AddMoreAttach'}) && (!exists $ARGS{'AddMoreEntry'}) && ($ARGS{'id'} eq 'new') and $valid_cfs) { $m->comp('Display.html', %ARGS); return; } my $users = new RT::Users($session{'CurrentUser'}); $users->LimitToPrivileged(); my @PrivUsers; while (my $user = $users->Next) { push @PrivUsers, $user->Name; } my $Owner = $ARGS{Owner}; my $OwnerObj; if (!$Owner and $OwnerObj = $QueueObj->AdminCc->UserMembersObj->First) { $Owner ||= $OwnerObj->Id; }; $ARGS{Subject} = '' unless exists $ARGS{Subject}; <%ARGS> $DependsOn => undef $DependedOnBy => undef $MemberOf => undef $QuoteTransaction => undef $Queue => undef $NoUI => undef $Loc => undef $NoCF => {}