summaryrefslogtreecommitdiff
path: root/rt/share/html/m/ticket
diff options
context:
space:
mode:
Diffstat (limited to 'rt/share/html/m/ticket')
-rw-r--r--rt/share/html/m/ticket/create82
-rw-r--r--rt/share/html/m/ticket/history2
-rw-r--r--rt/share/html/m/ticket/reply19
-rw-r--r--rt/share/html/m/ticket/show57
4 files changed, 66 insertions, 94 deletions
diff --git a/rt/share/html/m/ticket/create b/rt/share/html/m/ticket/create
index 5d72d1b76..957e829f2 100644
--- a/rt/share/html/m/ticket/create
+++ b/rt/share/html/m/ticket/create
@@ -87,12 +87,9 @@ if ($CloneTicket) {
Status TimeLeft/;
$clone->{$_} = $CloneTicketObj->$_->AsString
- for grep { $CloneTicketObj->$_->Unix }
+ for grep { $CloneTicketObj->$_->IsSet }
map { $_ . "Obj" } qw/Starts Started Due Resolved/;
- my $members = $CloneTicketObj->Members;
- my ( @members, @members_of, @refers, @refers_by, @depends, @depends_by );
- my $refers = $CloneTicketObj->RefersTo;
my $get_link_value = sub {
my ($link, $type) = @_;
my $uri_method = $type . 'URI';
@@ -105,6 +102,8 @@ if ($CloneTicket) {
return $link->$local_method || $uri->URI;
};
+ my (@refers, @refers_by);
+ my $refers = $CloneTicketObj->RefersTo;
while ( my $refer = $refers->Next ) {
my $refer_value = $get_link_value->($refer, 'Target');
push @refers, $refer_value if defined $refer_value;
@@ -126,7 +125,7 @@ if ($CloneTicket) {
while ( my $cf_value = $cf_values->Next ) {
push @cf_values, $cf_value->Content;
}
- $clone->{"Object-RT::Ticket--CustomField-$cf_id-Value"} = join "\n",
+ $clone->{GetCustomFieldInputName( CustomField => $cf )} = join "\n",
@cf_values;
}
@@ -147,27 +146,31 @@ $m->callback( QueueObj => $QueueObj, title => \$title, results => \@results, ARG
$QueueObj->Disabled && Abort(loc("Cannot create tickets in a disabled queue."));
-my $CFs = $QueueObj->TicketCustomFields();
-
-my $ValidCFs = $m->comp(
- '/Elements/ValidateCustomFields',
- CustomFields => $CFs,
- ARGSRef => \%ARGS
-);
-
ProcessAttachments(ARGSRef => \%ARGS);
my $checks_failure = 0;
-my $gnupg_widget = $m->comp('/Elements/GnuPG/SignEncryptWidget:new', Arguments => \%ARGS );
-$m->comp( '/Elements/GnuPG/SignEncryptWidget:Process',
+{
+ my ($status, @msg) = $m->comp(
+ '/Elements/ValidateCustomFields',
+ CustomFields => $QueueObj->TicketCustomFields,
+ ARGSRef => \%ARGS
+ );
+ unless ( $status ) {
+ $checks_failure = 1;
+ push @results, @msg;
+ }
+}
+
+my $gnupg_widget = $m->comp('/Elements/Crypt/SignEncryptWidget:new', Arguments => \%ARGS );
+$m->comp( '/Elements/Crypt/SignEncryptWidget:Process',
self => $gnupg_widget,
QueueObj => $QueueObj,
);
if ( !exists $ARGS{'AddMoreAttach'} && ($ARGS{'id'}||'') eq 'new' ) {
- my $status = $m->comp('/Elements/GnuPG/SignEncryptWidget:Check',
+ my $status = $m->comp('/Elements/Crypt/SignEncryptWidget:Check',
self => $gnupg_widget,
Operation => 'Create',
QueueObj => $QueueObj,
@@ -196,18 +199,11 @@ $m->callback( CallbackName => 'BeforeCreate', ARGSRef => \%ARGS, skip_create =>
checks_failure => $checks_failure, results => \@results );
if ((!exists $ARGS{'AddMoreAttach'}) and (defined($ARGS{'id'}) and $ARGS{'id'} eq 'new')) { # new ticket?
- if ( $ValidCFs && !$checks_failure && !$skip_create ) {
+ if ( !$checks_failure && !$skip_create ) {
$m->comp('show', %ARGS);
$RT::Logger->crit("After display call; error is $@");
$m->abort();
}
- elsif ( !$ValidCFs ) {
- # Invalid CFs
- while (my $CF = $CFs->Next) {
- my $msg = $m->notes('InvalidField-' . $CF->Id) or next;
- push @results, $CF->Name . ': ' . $msg;
- }
- }
}
@@ -218,9 +214,10 @@ if ((!exists $ARGS{'AddMoreAttach'}) and (defined($ARGS{'id'}) and $ARGS{'id'} e
<& /Elements/ListActions, actions => \@results &>
<form action="<% RT->Config->Get('WebPath') %>/m/ticket/create" method="post" enctype="multipart/form-data" name="TicketCreate" id="ticket-create">
<input type="hidden" class="hidden" name="id" value="new" />
+<input type="hidden" class="hidden" name="Token" value="<% $ARGS{'Token'} %>" />
% $m->callback( CallbackName => 'FormStart', QueueObj => $QueueObj, ARGSRef => \%ARGS );
% if ($gnupg_widget) {
-<& /Elements/GnuPG/SignEncryptWidget:ShowIssues, self => $gnupg_widget &>
+<& /Elements/Crypt/SignEncryptWidget:ShowIssues, self => $gnupg_widget &>
% }
@@ -253,11 +250,9 @@ $showrows->(
loc('Status') =>
$m->scomp(
- "/Elements/SelectStatus",
+ "/Ticket/Elements/SelectStatus",
Name => "Status",
QueueObj => $QueueObj,
- Default => $ARGS{Status} || $QueueObj->Lifecycle->DefaultOnCreate,
- DefaultValue => 0,
),
loc("Owner") =>
@@ -274,7 +269,7 @@ $showrows->(
"/Elements/EmailInput",
Name => 'Requestors',
Size => '40',
- Default => $ARGS{Requestors} || $session{CurrentUser}->EmailAddress
+ Default => $ARGS{Requestors} // $session{CurrentUser}->EmailAddress
),
loc("Cc") =>
@@ -300,16 +295,22 @@ $showrows->(
</%perl>
-<& /Ticket/Elements/EditCustomFields, %ARGS, QueueObj => $QueueObj &>
+<& /Elements/EditCustomFields,
+ %ARGS,
+ Object => RT::Ticket->new($session{CurrentUser}),
+ CustomFields => $QueueObj->TicketCustomFields,
+ AsTable => 0,
+ &>
<& /Ticket/Elements/EditTransactionCustomFields, %ARGS, QueueObj => $QueueObj &>
-% if (exists $session{'Attachments'}) {
+% if ( my $attachments = $session{'Attachments'}{ $ARGS{'Token'} }) {
<%loc("Attached file") %>
<%loc("Check box to delete")%><br />
-% foreach my $attach_name (keys %{$session{'Attachments'}}) {
-<input type="checkbox" class="checkbox" name="DeleteAttach-<%$attach_name%>" value="1" /><%$attach_name%><br />
+% foreach my $attach_name ( keys %$attachments ) {
+<input type="checkbox" class="checkbox" name="DeleteAttach" value="<% $attach_name %>" id="DeleteAttach-<% $attach_name %>" />
+<label for="DeleteAttach-<% $attach_name %>"><% $attach_name %></label><br />
% } # end of foreach
@@ -328,14 +329,14 @@ $showrows->(
% if ( $gnupg_widget ) {
-<& /Elements/GnuPG/SignEncryptWidget, self => $gnupg_widget, QueueObj => $QueueObj &>
+<& /Elements/Crypt/SignEncryptWidget, self => $gnupg_widget, QueueObj => $QueueObj &>
% }
<div class="ticket-info-basics">
- <&| /Widgets/TitleBox, title => loc('The Basics'),
- title_class=> 'inverse',
- color => "#993333" &>
+ <&| /Widgets/TitleBox, title => loc('The Basics'),
+ title_class=> 'inverse',
+ color => "#993333" &>
<%perl>
$showrows->(
loc("Priority") => $m->scomp(
@@ -353,29 +354,26 @@ $showrows->(
"/Elements/EditTimeValue",
Name => 'TimeEstimated',
Default => $ARGS{TimeEstimated} || '',
- InUnits => $ARGS{'TimeEstimated-TimeUnits'}
).'</span>',
loc("Time Worked") => '<span class="timefield">'.$m->scomp(
"/Elements/EditTimeValue",
Name => 'TimeWorked',
Default => $ARGS{TimeWorked} || '',
- InUnits => $ARGS{'TimeWorked-TimeUnits'}
). '</span>',
loc("Time Left") => '<span class="timefield">'.$m->scomp(
"/Elements/EditTimeValue",
Name => 'TimeLeft',
Default => $ARGS{TimeLeft} || '',
- InUnits => $ARGS{'TimeLeft-TimeUnits'}
).'</span>',
);
</%perl>
</&>
<&|/Widgets/TitleBox, title => loc("Dates"),
- title_class=> 'inverse',
- color => "#663366" &>
+ title_class=> 'inverse',
+ color => "#663366" &>
<%perl>
$showrows->(
diff --git a/rt/share/html/m/ticket/history b/rt/share/html/m/ticket/history
index 418bace17..ac548af26 100644
--- a/rt/share/html/m/ticket/history
+++ b/rt/share/html/m/ticket/history
@@ -61,7 +61,7 @@ my $history = $t->Transactions()->ItemsArrayRef;
% for my $entry (reverse @$history) {
<li>
<span class="age"><% $entry->CreatedObj->AgeAsString() %></span> -
-<& /Elements/ShowUser, User => $entry->CreatorObj &> -
+<& /Elements/ShowUser, User => $entry->CreatorObj, Link => 0 &> -
<%$entry->BriefDescription%>
% if ($entry->Type !~ /EmailRecord/) {
% if ($entry->ContentObj) {
diff --git a/rt/share/html/m/ticket/reply b/rt/share/html/m/ticket/reply
index bc7f0d6d3..9a9215015 100644
--- a/rt/share/html/m/ticket/reply
+++ b/rt/share/html/m/ticket/reply
@@ -54,14 +54,18 @@
method="post" enctype="multipart/form-data">
<input type="hidden" class="hidden" name="DefaultStatus" value="<% $DefaultStatus ||''%>" />
<input type="hidden" class="hidden" name="Action" value="<% $ARGS{Action}||'' %>" />
+<input type="hidden" class="hidden" name="Token" value="<% $ARGS{'Token'} %>" />
% if ($gnupg_widget) {
-<& /Elements/GnuPG/SignEncryptWidget:ShowIssues, self => $gnupg_widget &>
+<& /Elements/Crypt/SignEncryptWidget:ShowIssues, self => $gnupg_widget &>
% }
<div class="entry"><span class="label"><&|/l&>Status</&>:</span>
<div class="value">
-<& /Elements/SelectStatus, Name=>"Status", TicketObj => $t, DefaultLabel => loc("[_1] (Unchanged)", loc($t->Status)), Default => $ARGS{'Status'} || ($t->Status eq $DefaultStatus ? undef : $DefaultStatus)&>
+<& /Ticket/Elements/SelectStatus,
+ Name=>"Status",
+ TicketObj => $t,
+ Default => $DefaultStatus &>
</div></div>
<div class="entry"><span class="label"><&|/l&>Owner</&>:</span>
@@ -70,7 +74,7 @@
Name => "Owner",
TicketObj => $t,
QueueObj => $t->QueueObj,
- DefaultLabel => loc("[_1] (Unchanged)", $m->scomp('/Elements/ShowUser', User => $t->OwnerObj)),
+ DefaultLabel => loc("[_1] (Unchanged)", $t->OwnerObj->Format),
Default => $ARGS{'Owner'}
&>
</div></div>
@@ -78,7 +82,6 @@
<& /Elements/EditTimeValue,
Name => 'UpdateTimeWorked',
Default => $ARGS{UpdateTimeWorked}||'',
- InUnits => $ARGS{'UpdateTimeWorked-TimeUnits'}||'minutes',
&>
</span></div>
% $m->callback( %ARGS, CallbackName => 'AfterWorked', Ticket => $t );
@@ -137,7 +140,7 @@
</div>
% if ( $gnupg_widget ) {
-<& /Elements/GnuPG/SignEncryptWidget, self => $gnupg_widget, QueueObj => $t->QueueObj &>
+<& /Elements/Crypt/SignEncryptWidget, self => $gnupg_widget, QueueObj => $t->QueueObj &>
% }
<& /Elements/Submit, Label => loc('Update Ticket'), Name => 'SubmitTicket' &>
@@ -209,8 +212,8 @@ ProcessAttachments(ARGSRef => \%ARGS);
}
}
-my $gnupg_widget = $m->comp('/Elements/GnuPG/SignEncryptWidget:new', Arguments => \%ARGS );
-$m->comp( '/Elements/GnuPG/SignEncryptWidget:Process',
+my $gnupg_widget = $m->comp('/Elements/Crypt/SignEncryptWidget:new', Arguments => \%ARGS );
+$m->comp( '/Elements/Crypt/SignEncryptWidget:Process',
self => $gnupg_widget,
TicketObj => $t,
);
@@ -220,7 +223,7 @@ $m->callback( CallbackName => 'BeforeUpdate', ARGSRef => \%ARGS, skip_update =>
checks_failure => $checks_failure, results => \@results, TicketObj => $t );
if ( !$checks_failure && !$skip_update && exists $ARGS{SubmitTicket} ) {
- my $status = $m->comp('/Elements/GnuPG/SignEncryptWidget:Check',
+ my $status = $m->comp('/Elements/Crypt/SignEncryptWidget:Check',
self => $gnupg_widget,
TicketObj => $t,
);
diff --git a/rt/share/html/m/ticket/show b/rt/share/html/m/ticket/show
index 4516f9f03..ebf39ac62 100644
--- a/rt/share/html/m/ticket/show
+++ b/rt/share/html/m/ticket/show
@@ -69,10 +69,7 @@ if ($ARGS{'id'} eq 'new') {
Abort('You have no permission to create tickets in that queue.');
}
- ($Ticket, @Actions) = CreateTicket(
- Attachments => delete $session{'Attachments'},
- %ARGS,
- );
+ ($Ticket, @Actions) = CreateTicket( %ARGS );
unless ( $Ticket->CurrentUserHasRight('ShowTicket') ) {
Abort("No permission to view newly created ticket #".$Ticket->id.".");
}
@@ -95,14 +92,12 @@ if ($ARGS{'id'} eq 'new') {
ARGSRef => \%ARGS,
Actions => \@Actions);
- $ARGS{UpdateAttachments} = $session{'Attachments'};
push @Actions,
ProcessUpdateMessage(
ARGSRef => \%ARGS,
Actions => \@Actions,
TicketObj => $Ticket,
);
- delete $session{'Attachments'};
#Process status updates
push @Actions, ProcessTicketWatchers(ARGSRef => \%ARGS, TicketObj => $Ticket );
@@ -152,7 +147,7 @@ if (@Actions) {
# If we haven't been passed in an Attachments object (through the precaching mechanism)
# then we need to find one
-my $Attachments = $m->comp('/Ticket/Elements/FindAttachments', Ticket => $Ticket);
+my $Attachments = $Ticket->Attachments;
my %documents;
while ( my $attach = $Attachments->Next() ) {
@@ -172,7 +167,7 @@ my $print_value = sub {
my $linked = $value->LinkValueTo;
if ( defined $linked && length $linked ) {
my $linked = $m->interp->apply_escapes( $linked, 'h' );
- $m->out('<a href="'. $linked .'" target="_new">');
+ $m->out('<a href="'. $linked .'" target="_blank">');
}
my $comp = "ShowCustomField". $cf->Type;
$m->callback(
@@ -253,7 +248,7 @@ my $print_value = sub {
</div>
</&>
-% if ($Ticket->CustomFields->First) {
+% if ($CustomFields->Count) {
<&| /Widgets/TitleBox, title => loc('Custom Fields'),
class => 'ticket-info-cfs',
&>
@@ -289,20 +284,20 @@ my $print_value = sub {
<div class="entry">
<div class="label"><&|/l&>Owner</&>:</div>
- <div class="value"><& /Elements/ShowUser, User => $Ticket->OwnerObj, Ticket => $Ticket &>
+ <div class="value"><& /Elements/ShowUser, User => $Ticket->OwnerObj, Ticket => $Ticket, Link => 0 &>
</div>
</div>
<div class="entry">
<div class="label"><&|/l&>Requestors</&>:</div>
- <div class="value"><& /Ticket/Elements/ShowGroupMembers, Group => $Ticket->Requestors, Ticket => $Ticket &></div>
+ <div class="value"><& /Ticket/Elements/ShowGroupMembers, Group => $Ticket->Requestors, Ticket => $Ticket, Link => 0 &></div>
</div>
<div class="entry">
<div class="label"><&|/l&>Cc</&>:</div>
- <div class="value"><& /Ticket/Elements/ShowGroupMembers, Group => $Ticket->Cc, Ticket => $Ticket &></div>
+ <div class="value"><& /Ticket/Elements/ShowGroupMembers, Group => $Ticket->Cc, Ticket => $Ticket, Link => 0 &></div>
</div>
<div class="entry">
<div class="label"><&|/l&>AdminCc</&>:</div>
- <div class="value"><& /Ticket/Elements/ShowGroupMembers, Group => $Ticket->AdminCc, Ticket => $Ticket &></div>
+ <div class="value"><& /Ticket/Elements/ShowGroupMembers, Group => $Ticket->AdminCc, Ticket => $Ticket, Link => 0 &></div>
</div>
</&>
@@ -318,34 +313,10 @@ my $print_value = sub {
<%$key%><br />
<ul>
% foreach my $rev (@{$documents{$key}}) {
-
-<%PERL>
-my $size = $rev->ContentLength;
-
-if ($size) {
- my $kb = int($size/102.4) / 10;
- my $units = RT->Config->Get('AttachmentUnits');
-
- if (!defined($units)) {
- if ($size > 1024) {
- $size = $kb . "k";
- }
- else {
- $size = $size . "b";
- }
- }
- elsif ($units eq 'k') {
- $size = $kb . "k";
- }
- else {
- $size = $size . "b";
- }
-
-</%PERL>
-
+% if ($rev->ContentLength) {
<li><font size="-2">
-<a href="<%RT->Config->Get('WebPath')%>/Ticket/Attachment/<%$rev->TransactionId%>/<%$rev->Id%>/<%$rev->Filename | un%>">
-<&|/l, $rev->CreatedAsString, $size, $rev->CreatorObj->Name &>[_1] ([_2]) by [_3]</&>
+<a href="<%RT->Config->Get('WebPath')%>/Ticket/Attachment/<%$rev->TransactionId%>/<%$rev->Id%>/<%$rev->Filename | un %>">
+<&|/l, $rev->CreatedAsString, $rev->FriendlyContentLength, $rev->CreatorObj->Name &>[_1] ([_2]) by [_3]</&>
</a>
</font></li>
% }
@@ -394,7 +365,7 @@ if ($size) {
<div class="entry">
<div class="label date due"><&|/l&>Due</&>:</div>
% my $due = $Ticket->DueObj;
-% if ( $due && $due->Unix > 0 && $due->Diff < 0 ) {
+% if ( $due && $due->IsSet && $due->Diff < 0 && $Ticket->QueueObj->IsActiveStatus($Ticket->Status) ) {
<div class="value date due"><span class="overdue"><% $due->AsString %></span></div>
% } else {
<div class="value date due"><% $due->AsString %></div>
@@ -456,11 +427,11 @@ for my $link ( @{ $Ticket->DependsOn->ItemsArrayRef } ) {
</div>
<div class="entry">
<div class="label"><% loc('Parents') %>:</div>
- <div class="value"><& /Ticket/Elements/ShowParents, Ticket => $Ticket &></div>
+ <div class="value"><& /Elements/ShowLinksOfType, Object => $Ticket, Type => 'MemberOf' &></div>
</div>
<div class="entry">
<div class="label"><% loc('Children')%>:</div>
- <div class="value"><& /Ticket/Elements/ShowMembers, Ticket => $Ticket &></div>
+ <div class="value"><& /Elements/ShowLinksOfType, Object => $Ticket, Type => 'Members' &></div>
</div>
<div class="entry">
<div class="label"><% loc('Refers to')%>:</div>