[Rt-commit] rt branch, 4.4/core-spawnlinkedticketinqueue, created. rt-4.2.12-436-g0414a79
Todd Wade
todd at bestpractical.com
Fri Oct 30 23:50:42 EDT 2015
The branch, 4.4/core-spawnlinkedticketinqueue has been created
at 0414a79460412a84df1a22c8bae0b1883cd143d6 (commit)
- Log -----------------------------------------------------------------
commit 0414a79460412a84df1a22c8bae0b1883cd143d6
Author: Todd Wade <todd at bestpractical.com>
Date: Fri Oct 30 23:43:15 2015 -0400
core RT-Extension-SpawnLinkedTicketInQueue
Add controls to create linked tickets in the Links block on the ticket
display page.
t/web/helpers-http-cache-headers.t
- provide a way to exclude header checking for a given helper
- SpawnLinkedTicket can exclude cache headers because it is a redirect
t/web/ticket_display_unset_fields.t
- new code adds content that should not be there according to tests
+ update tests to check for link labels (add the : in the check)
diff --git a/share/html/Elements/ShowLinks b/share/html/Elements/ShowLinks
index 8f881b0..75dc170 100644
--- a/share/html/Elements/ShowLinks
+++ b/share/html/Elements/ShowLinks
@@ -60,6 +60,26 @@
</td>
</tr>
% } }
+</table>
+<table>
+ <tr>
+ <td>
+ <form action="<% RT->Config->Get('WebPath') ."/Helpers/SpawnLinkedTicket" %>" name="SpawnLinkedTicket">
+ <input type="hidden" name="CloneTicket" value="<% $Object->id %>">
+ <input type="submit" value="<&|/l&>Create</&>" name="SpawnLinkedTicket">
+ <select name="LinkType">
+ <option value="DependsOn-new"><% loc('Depends on') %></option>
+ <option value="new-DependsOn"><% loc('Depended on by') %></option>
+ <option value="MemberOf-new"><% loc('Parents') %></option>
+ <option value="new-MemberOf"><% loc('Children') %></option>
+ <option value="RefersTo-new"><% loc('Refers to') %></option>
+ <option value="new-RefersTo"><% loc('Referred to by') %></option>
+ </select>
+ <&|/l&>Ticket in</&>
+ <& /Elements/SelectQueue, ShowNullOption => 0, Name => 'CloneQueue' &>
+ </form>
+ </td>
+ </tr>
% # Allow people to add more rows to the table
% $m->callback( %ARGS );
<& /Elements/ShowCustomFields, Object => $Object, Grouping => 'Links', Table => 0 &>
diff --git a/share/html/Elements/ShowLinks b/share/html/Helpers/SpawnLinkedTicket
similarity index 50%
copy from share/html/Elements/ShowLinks
copy to share/html/Helpers/SpawnLinkedTicket
index 8f881b0..f51e217 100644
--- a/share/html/Elements/ShowLinks
+++ b/share/html/Helpers/SpawnLinkedTicket
@@ -45,65 +45,16 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<table>
-% for my $type (@display) {
-% if ( !RT->Config->Get('HideUnsetFieldsOnDisplay', $session{CurrentUser}) || $clone{$type} || $Object->$type->Count ) {
- <tr>
- <td class="labeltop">
- <& ShowRelationLabel, Object => $Object, Label => $labels{$type}.':', Relation => $type &>
-% if ($clone{$type}) {
- <span class="create">(<a href="<% $clone{$type} %>"><% loc('Create') %></a>)</span>
-% }
- </td>
- <td class="value">
- <& ShowLinksOfType, Object => $Object, Type => $type, Recurse => ($type eq 'Members') &>
- </td>
- </tr>
-% } }
-% # Allow people to add more rows to the table
-% $m->callback( %ARGS );
- <& /Elements/ShowCustomFields, Object => $Object, Grouping => 'Links', Table => 0 &>
-</table>
<%INIT>
-my @display = qw(DependsOn DependedOnBy MemberOf Members RefersTo ReferredToBy);
-$m->callback( %ARGS, CallbackName => 'ChangeDisplay', display => \@display );
-my %labels = (
- DependsOn => loc('Depends on'),
- DependedOnBy => loc('Depended on by'),
- MemberOf => loc('Parents'),
- Members => loc('Children'),
- RefersTo => loc('Refers to'),
- ReferredToBy => loc('Referred to by'),
+my $query_string = $m->comp('/Elements/QueryString',
+ CloneTicket => $CloneTicket,
+ Queue => $CloneQueue,
+ $LinkType => $CloneTicket,
);
-my %clone;
-
-if ( $Object->isa("RT::Ticket")
- and $Object->QueueObj->CurrentUserHasRight('CreateTicket'))
-{
- my $id = $Object->id;
- my $path
- = RT->Config->Get('WebPath')
- . '/Ticket/Create.html?Queue='
- . $Object->Queue
- . '&CloneTicket='
- . $id;
-
- for my $relation (@display) {
- my $mode = $RT::Link::TYPEMAP{$relation}->{Mode};
- my $type = $RT::Link::TYPEMAP{$relation}->{Type};
- my $field = $mode eq 'Base' ? 'new-' . $type : $type . '-new';
- my @copy = ($id);
-
- # Canonicalized type captures both directions
- if ($type eq "RefersTo") {
- my $other = "Local" . $mode;
- push @copy, map { $_->$other() } @{ $Object->$relation->ItemsArrayRef };
- }
-
- $clone{$relation} = "$path&$field=" . join('%20', grep { $_ } @copy);
- }
-}
+RT::Interface::Web::Redirect( RT->Config->Get('WebURL') ."Ticket/Create.html?$query_string" );
</%INIT>
<%ARGS>
-$Object
+$CloneTicket => undef
+$CloneQueue => undef
+$LinkType => undef
</%ARGS>
diff --git a/t/web/helpers-http-cache-headers.t b/t/web/helpers-http-cache-headers.t
index 39ef0eb..926ec95 100644
--- a/t/web/helpers-http-cache-headers.t
+++ b/t/web/helpers-http-cache-headers.t
@@ -22,6 +22,11 @@ ok $m->login, 'logged in';
my $docroot = join '/', qw(share html);
+# files to exclude from testing headers
+my @exclude = (
+ 'SpawnLinkedTicket', # results in redirect, expires header not expected
+);
+
# find endpoints to loop over
my @endpoints = (
"/NoAuth/css/aileron/squished-".("0"x32).".css",
@@ -32,6 +37,7 @@ find({
if ( -f $_ && $_ !~ m|autohandler$| ) {
return if m{/\.[^/]+\.sw[op]$}; # vim swap files
( my $endpoint = $_ ) =~ s|^$docroot||;
+ return if grep $endpoint =~ m{/$_$}, @exclude;
push @endpoints, $endpoint;
}
},
diff --git a/t/web/ticket_display_unset_fields.t b/t/web/ticket_display_unset_fields.t
index 448056e..8556c26 100644
--- a/t/web/ticket_display_unset_fields.t
+++ b/t/web/ticket_display_unset_fields.t
@@ -49,7 +49,7 @@ diag "test with root";
$m->content_contains( "Last Contact", "has Told as root can set it" );
for my $label (@link_labels) {
- $m->content_contains( "$label", "has $label as root can create" );
+ $m->content_contains( "$label:", "has $label as root can create" );
}
$m->goto_ticket( $bar->id );
@@ -68,11 +68,11 @@ diag "test without ModifyTicket right";
$m->goto_ticket( $foo->id );
$m->content_lacks( "Last Contact", "lacks Told as it is unset" );
for my $label ( @link_labels ) {
- $m->content_lacks( $label, "lacks $label as it is unset" );
+ $m->content_lacks( "$label:", "lacks $label as it is unset" );
}
$m->goto_ticket( $bar->id );
- $m->content_contains( "Depends on", "has Depends on as it is set" );
+ $m->content_contains( "Depends on:", "has Depends on as it is set" );
}
undef $m;
-----------------------------------------------------------------------
More information about the rt-commit
mailing list