[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