%# $Header: /raid/cvsroot/rt/webrt/Ticket/Display.html,v 1.3 2002/07/10 18:15:18 jesse Exp $ %# Copyright 1996-2000 Jesse Vincent <& /Elements/Header, Title => "Ticket #".$Ticket->Id ." ".$Ticket->Subject &> <& /Ticket/Elements/Tabs, Ticket => $Ticket, current_tab => 'Ticket/Display.html?id='.$Ticket->id &> <& /Elements/ListActions, actions => \@Actions &> <& /Ticket/Elements/ShowSummary, Ticket => $Ticket &>
<& /Ticket/Elements/ShowHistory , Ticket => $Ticket, Collapsed => $ARGS{'Collapsed'}, ShowHeaders => $ARGS{'ShowHeaders'} &> <%ARGS> $id => undef $Create => undef $ShowHeaders => undef $Collapsed => undef <%INIT> my ($linkid, $message, $tid, $Ticket, @Actions); $Ticket = new RT::Ticket($session{'CurrentUser'}); unless ($id) { Abort('No ticket specified'); } if ($ARGS{'id'} eq 'new') { # {{{ Create a new ticket my $Queue = new RT::Queue($session{'CurrentUser'}); unless ($Queue->Load($ARGS{'Queue'})) { Abort('Queue not found'); } unless ($Queue->CurrentUserHasRight('CreateTicket')) { Abort('You have no permission to create tickets in that queue.'); } my $due = new RT::Date($session{'CurrentUser'}); $due->Set(Format => 'unknown', Value => $ARGS{'Due'}); my $starts = new RT::Date($session{'CurrentUser'}); $starts->Set(Format => 'unknown', Value => $ARGS{'Starts'}); my @Requestors = split(/,/,$ARGS{'Requestors'}); my @Cc = split(/,/,$ARGS{'Cc'}); my @AdminCc = split(/,/,$ARGS{'AdminCc'}); my $MIMEObj = MakeMIMEEntity( Subject => $ARGS{'Subject'}, From => $ARGS{'From'}, Cc => $ARGS{'Cc'}, Body => $ARGS{'Content'}, AttachmentFieldName => 'Attach'); my %create_args = ( Queue=>$ARGS{Queue}, Owner=>$ARGS{ValueOfOwner}, InitialPriority=> $ARGS{InitialPriority}, FinalPriority=> $ARGS{FinalPriority}, TimeLeft => $ARGS{TimeLeft}, TimeWorked => $ARGS{TimeWorked}, Requestor=> \@Requestors, Cc => \@Cc, AdminCc => \@AdminCc, Subject=>$ARGS{Subject}, Status=>$ARGS{Status}, Due => $due->ISO, Starts => $starts->ISO, MIMEObj => $MIMEObj ); # we need to get any KeywordSelect- fields into %create_args.. grep { $_ =~ /^KeywordSelect-/ && {$create_args{$_} = $ARGS{$_}}} %ARGS; my ($id, $Trans, $ErrMsg)= $Ticket->Create(%create_args); unless ($id && $Trans) { Abort($ErrMsg); } my @linktypes = qw( DependsOn MemberOf RefersTo ); foreach my $linktype (@linktypes) { foreach my $luri (split (/ /,$ARGS{"new-$linktype"})) { $luri =~ s/\s*$//; # Strip trailing whitespace my ($val, $msg) = $Ticket->AddLink( Target => $luri, Type => $linktype); push @Actions, $msg; } foreach my $luri (split (/ /,$ARGS{"$linktype-new"})) { my ($val, $msg) = $Ticket->AddLink( Base => $luri, Type => $linktype); push @Actions, $msg; } } # don't try to change queue to the current queue delete $ARGS{'Queue'}; push(@Actions, $ErrMsg); unless ($Ticket->CurrentUserHasRight('ShowTicket')) { Abort("No permission to view newly created ticket #".$Ticket->id."."); } # }}} } else { $Ticket = LoadTicket($ARGS{'id'}); unless ($Ticket->CurrentUserHasRight('ShowTicket')) { Abort("No permission to view ticket"); } if (defined $ARGS{'Action'}) { if ($ARGS{'Action'} =~ /^(Steal|Kill|Take|SetTold)$/) { my $action = $1; my ($res, $msg)=$Ticket->$action(); push(@Actions, $msg); } } $ARGS{'UpdateContent'} =~ s/\r\n/\n/g; if ($ARGS{'UpdateContent'} && $ARGS{'UpdateContent'} ne '' && $ARGS{'UpdateContent'} ne "-- \n" . $session{'CurrentUser'}->UserObj->Signature ) { ProcessUpdateMessage(ARGSRef=>\%ARGS, Actions=>\@Actions, TicketObj=>$Ticket); } #Process status updates my @BasicActions = ProcessTicketBasics(ARGSRef => \%ARGS, TicketObj=>$Ticket); push (@Actions, @BasicActions); }