%# 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 &> <& /Work/Tickets/Elements/ShowBasics, Ticket => $Ticket, SelectOwner => 1, DefaultOwner => $Owner &> % } % if ($NoUI) {
% my $CFs = $QueueObj->CustomFields; % $CFs->LimitAttribute( NAME => 'Pattern', OPERATOR => '!=', VALUE => '' ); % if ($CFs->Count) {
% my $img = "".loc("; <&|/l, $img &>* The [_1] symbol denotes a mandatory field.
% } <& /Work/Tickets/Elements/EditCustomFields, %ARGS, Entries => $Entries, Ticket => $Ticket, ReadOnly => 0, Check => 'OnCreate', NoCF => $NoCF, Loc => $Loc, &> % 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 &> % }

% return; % }

<& /Work/Elements/BackButton &>
<%DOC> % if (!$m->notes('ValidFields')) { % } <%INIT> my $QueueObj = new RT::Queue($session{'CurrentUser'}); $QueueObj->Load($Queue) || Abort(loc("Queue could not be loaded.")); my $CustomFields = $QueueObj->CustomFields; my $UserObj = $session{CurrentUser}->UserObj; my $Check = 'OnCreate'; my $ValidCFs = $m->comp( 'Elements/ValidateCustomFields', CustomFields => $CustomFields, ARGSRef => \%ARGS ); 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; } } # }}} if ((!exists $ARGS{'AddMoreAttach'}) && (!exists $ARGS{'AddMoreEntry'}) && ($ARGS{'id'} eq 'new') and $ValidCFs) { my $out = $m->scomp('Display.html', %ARGS, CreateOnly => 1); if (my $id = $m->notes('NewTicketId')) { $m->comp('/Edit/Elements/Redirect', URL => 'Display.html', Args => "?id=$id&Role=requestor&Queue=$Queue"); } else { $m->print($out); } $m->abort; } 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}; require Test::MockObject; my $Now = RT::Date->new($session{'CurrentUser'}); $Now->SetToNow; my $Ticket = Test::MockObject->new; $Ticket->set_always( Queue => $QueueObj->Id ) ->set_always( QueueObj => $QueueObj ) ->set_always( OwnerObj => $OwnerObj || $RT::Nothing ) ->set_always( CreatedObj => $Now ) ->set_always( Status => 'new' ) ->set_always( HasUnresolvedDependencies => 0 ) ->set_always( Id => undef ) ->set_always( FirstRequestor => $UserObj ) ->set_always( Subject => undef ); <%ARGS> $DependsOn => undef $DependedOnBy => undef $MemberOf => undef $QuoteTransaction => undef $Queue => undef $NoUI => undef $Loc => undef $NoCF => {} $descp=>''