[Rt-commit] rt branch, 4.4/hide-unset-fields-in-display, created. rt-4.2.0-31-ged6ae31

? sunnavy sunnavy at bestpractical.com
Thu Dec 5 08:57:25 EST 2013


The branch, 4.4/hide-unset-fields-in-display has been created
        at  ed6ae311a3f1730b722209ca060290edc29f5f60 (commit)

- Log -----------------------------------------------------------------
commit 7f8f47c39d2f1a560cbc752a82f660e3a2073613
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Thu Dec 5 20:28:37 2013 +0800

    hide possible empty fields for people|dates|links

diff --git a/share/html/Elements/ShowLinks b/share/html/Elements/ShowLinks
index 77403c9..4134f48 100644
--- a/share/html/Elements/ShowLinks
+++ b/share/html/Elements/ShowLinks
@@ -47,6 +47,7 @@
 %# END BPS TAGGED BLOCK }}}
 <table>
 % for my $type (@display) {
+% if ( $clone{$type} || $Object->$type->Count ) {
   <tr>
     <td class="labeltop">
       <& ShowRelationLabel, Object => $Object, Label => $labels{$type}.':', Relation => $type &>
@@ -58,7 +59,7 @@
       <& 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 &>
diff --git a/share/html/Ticket/Elements/ShowDates b/share/html/Ticket/Elements/ShowDates
index ddb45f5..3e66d3e 100644
--- a/share/html/Ticket/Elements/ShowDates
+++ b/share/html/Ticket/Elements/ShowDates
@@ -50,18 +50,33 @@
     <td class="label"><&|/l&>Created</&>:</td>\
     <td class="value"><% $Ticket->CreatedObj->AsString %></td>
   </tr>
+% if ( $Ticket->StartsObj->Unix ) {
   <tr class="date starts">
     <td class="label"><&|/l&>Starts</&>:</td>\
     <td class="value"><% $Ticket->StartsObj->AsString %></td>
   </tr>
+% }
+% if ( $Ticket->StartedObj->Unix ) {
   <tr class="date started">
     <td class="label"><&|/l&>Started</&>:</td>\
     <td class="value"><% $Ticket->StartedObj->AsString %></td>
   </tr>
+% }
+
+
+% if ( $Ticket->ToldObj->Unix || $Ticket->CurrentUserHasRight('ModifyTicket') ) {
   <tr class="date told">
-    <td class="label"><a href="<% RT->Config->Get('WebPath') %>/Ticket/Display.html?id=<% $Ticket->id %>&Action=SetTold"><&|/l&>Last Contact</&></a>:</td>\
-    <td class="value"><% $Ticket->ToldObj->AsString %></td>
+    <td class="label">
+% if ( $Ticket->CurrentUserHasRight('ModifyTicket' ) ) {
+<a href="<% RT->Config->Get('WebPath') %>/Ticket/Display.html?id=<% $Ticket->id %>&Action=SetTold"><&|/l&>Last Contact</&></a>:
+% } else {
+<&|/l&>Last Contact</&>:
+% }
+</td><td class="value"><% $Ticket->ToldObj->AsString %></td>
   </tr>
+% }
+
+% if ( $Ticket->DueObj->Unix ) {
   <tr class="date due">
     <td class="label"><&|/l&>Due</&>:</td>\
 % my $due = $Ticket->DueObj;
@@ -71,10 +86,15 @@
     <td class="value"><% $due->AsString  %></td>
 % }
   </tr>
+% }
+
+% if ( $Ticket->ResolvedObj->Unix ) {
   <tr class="date resolved">
     <td class="label"><&|/l&>Closed</&>:</td>\
     <td class="value"><% $Ticket->ResolvedObj->AsString  %></td>
   </tr>
+% }
+
   <tr class="date updated">
     <td class="label"><&|/l&>Updated</&>:</td>\
 % my $UpdatedString = $Ticket->LastUpdated ? loc("[_1] by [_2]", $Ticket->LastUpdatedAsString, $m->scomp('/Elements/ShowUser', User => $Ticket->LastUpdatedByObj)) : loc("Never");
diff --git a/share/html/Ticket/Elements/ShowPeople b/share/html/Ticket/Elements/ShowPeople
index a69273f..f666bda 100644
--- a/share/html/Ticket/Elements/ShowPeople
+++ b/share/html/Ticket/Elements/ShowPeople
@@ -58,14 +58,18 @@
     <td class="labeltop"><&|/l&>Requestors</&>:</td>
     <td class="value"><& ShowGroupMembers, Group => $Ticket->Requestors, Ticket => $Ticket &></td>
   </tr>
+% if ( $Ticket->Cc->MembersObj->Count ) {
   <tr>
     <td class="labeltop"><&|/l&>Cc</&>:</td>
     <td class="value"><& ShowGroupMembers, Group => $Ticket->Cc, Ticket => $Ticket &></td>
   </tr>
+% }
+% if ( $Ticket->AdminCc->MembersObj->Count ) {
   <tr>
     <td class="labeltop"><&|/l&>AdminCc</&>:</td>
     <td class="value"><& ShowGroupMembers, Group => $Ticket->AdminCc, Ticket => $Ticket &></td>
   </tr>
+% }
   <& /Ticket/Elements/ShowCustomFields, Ticket => $Ticket, Grouping => 'People', Table => 0 &>
 </table>
 <%INIT>

commit ed6ae311a3f1730b722209ca060290edc29f5f60
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Fri Jul 8 13:36:51 2011 +0800

    tests of hiding unset fields

diff --git a/t/web/ticket_display_unset_fields.t b/t/web/ticket_display_unset_fields.t
new file mode 100644
index 0000000..655c9d5
--- /dev/null
+++ b/t/web/ticket_display_unset_fields.t
@@ -0,0 +1,79 @@
+use strict;
+use warnings;
+
+use RT::Test tests => undef;
+
+my @link_labels = (
+    'Depends on',
+    'Depended on by',
+    'Parents',
+    'Children',
+    'Refers to',
+    'Referred to by',
+);
+
+my $foo = RT::Test->create_ticket(
+    Queue   => 'General',
+    Subject => 'test display page',
+);
+my $dep = RT::Test->create_ticket(
+    Queue   => 'General',
+    Subject => 'dep ticket',
+);
+my $bar = RT::Test->create_ticket(
+    Queue     => 'General',
+    Subject   => 'depend ticket',
+    Starts    => '2011-07-08 00:00:00',
+    Started   => '2011-07-09 00:00:00',
+    Resolved  => '2011-07-11 00:00:00',
+    Due       => '2011-07-12 00:00:00',
+    Cc        => 'foo at example.com',
+    AdminCc   => 'admin at example.com',
+    DependsOn => [ $dep->id ],
+);
+$bar->SetTold;
+
+my ( $baseurl, $m ) = RT::Test->started_ok;
+
+diag "test with root";
+{
+    $m->login;
+    $m->goto_ticket( $foo->id );
+
+    for my $label (qw/Starts Started Closed Cc AdminCc/) {
+        $m->content_lacks( "$label:", "lacks $label as value is unset" );
+    }
+
+    # there is one Due: in reminder
+    $m->content_unlike( qr/Due:.*Due:/s, "lacks Due as value is unset" );
+
+    $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->goto_ticket( $bar->id );
+    for my $label (qw/Starts Started Closed Cc AdminCc/) {
+        $m->content_contains( "$label:", "has $label as value is set" );
+    }
+    $m->content_like( qr/Due:.*Due:/s, "has Due as value is set" );
+}
+
+diag "test without ModifyTicket right";
+{
+    my $user =
+      RT::Test->load_or_create_user( Name => 'foo', Password => 'password' );
+    RT::Test->set_rights( Principal => $user, Right => ['ShowTicket'] );
+    $m->login( 'foo', 'password', logout => 1 );
+    $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->goto_ticket( $bar->id );
+    $m->content_contains( "Depends on", "has Depends on as it is set" );
+}
+
+undef $m;
+done_testing;

-----------------------------------------------------------------------


More information about the rt-commit mailing list