[Rt-commit] rt branch, 4.2-trunk, updated. rt-4.2.12-58-gdd1f1e4

? sunnavy sunnavy at bestpractical.com
Mon Oct 5 13:34:16 EDT 2015


The branch, 4.2-trunk has been updated
       via  dd1f1e4a6b0d26b7118a43b7729417dea84131bc (commit)
      from  3a23a996cefd131df5fbbf09024e5769aecdebb3 (commit)

Summary of changes:
 lib/RT/Transaction.pm               | 48 +++++++++++++++++++++++--------------
 share/html/Elements/BulkLinks       |  2 +-
 share/html/Elements/EditLinks       |  2 +-
 share/html/Elements/ShowLinksOfType |  2 +-
 share/html/Ticket/Create.html       |  2 +-
 share/html/m/ticket/create          |  2 +-
 share/html/m/ticket/show            |  2 +-
 7 files changed, 36 insertions(+), 24 deletions(-)

- Log -----------------------------------------------------------------
commit dd1f1e4a6b0d26b7118a43b7729417dea84131bc
Author: Christian Loos <cloos at netcologne.de>
Date:   Mon Jun 1 09:30:02 2015 +0200

    Avoid warnings if users don't have sufficient rights on reminders
    
    Users may not have the same rights on tickets and their reminders
    (e.g. if you use role based rights for ShowTicket and add a user to the
    ticket role but not to the reminder role).
    
    For Transaction->%_BriefDescriptions return a description without the
    subject if the user don't have sufficient rights. This fixes warnings
    like 'Use of uninitialized value in join or string at
    /opt/rt4/sbin/../lib/RT/Transaction.pm line 827'.
    
    For Links grab the Ticket->Type without ACL checks. We check here only
    if it's a reminder to avoid display them as links. This fixes warnings
    like 'Use of uninitialized value in string eq at
    /opt/rt4/share/html/Elements/ShowLinksOfType line 93'.

diff --git a/lib/RT/Transaction.pm b/lib/RT/Transaction.pm
index 8d864c7..91a1514 100644
--- a/lib/RT/Transaction.pm
+++ b/lib/RT/Transaction.pm
@@ -1271,34 +1271,46 @@ sub _FormatUser {
         my $self = shift;
         my $ticket = RT::Ticket->new($self->CurrentUser);
         $ticket->Load($self->NewValue);
-        my $subject = [
-            \'<a href="', RT->Config->Get('WebPath'),
-            "/Ticket/Reminders.html?id=", $self->ObjectId,
-            "#reminder-", $ticket->id, \'">', $ticket->Subject, \'</a>'
-        ];
-        return ("Reminder '[_1]' added", $subject); #loc()
+        if ( $ticket->CurrentUserHasRight('ShowTicket') ) {
+            my $subject = [
+                \'<a href="', RT->Config->Get('WebPath'),
+                "/Ticket/Reminders.html?id=", $self->ObjectId,
+                "#reminder-", $ticket->id, \'">', $ticket->Subject, \'</a>'
+            ];
+            return ("Reminder '[_1]' added", $subject); #loc()
+        } else {
+            return ("Reminder added"); #loc()
+        }
     },
     OpenReminder => sub {
         my $self = shift;
         my $ticket = RT::Ticket->new($self->CurrentUser);
         $ticket->Load($self->NewValue);
-        my $subject = [
-            \'<a href="', RT->Config->Get('WebPath'),
-            "/Ticket/Reminders.html?id=", $self->ObjectId,
-            "#reminder-", $ticket->id, \'">', $ticket->Subject, \'</a>'
-        ];
-        return ("Reminder '[_1]' reopened", $subject);  #loc()
+        if ( $ticket->CurrentUserHasRight('ShowTicket') ) {
+            my $subject = [
+                \'<a href="', RT->Config->Get('WebPath'),
+                "/Ticket/Reminders.html?id=", $self->ObjectId,
+                "#reminder-", $ticket->id, \'">', $ticket->Subject, \'</a>'
+            ];
+            return ("Reminder '[_1]' reopened", $subject);  #loc()
+        } else {
+            return ("Reminder reopened");  #loc()
+        }
     },
     ResolveReminder => sub {
         my $self = shift;
         my $ticket = RT::Ticket->new($self->CurrentUser);
         $ticket->Load($self->NewValue);
-        my $subject = [
-            \'<a href="', RT->Config->Get('WebPath'),
-            "/Ticket/Reminders.html?id=", $self->ObjectId,
-            "#reminder-", $ticket->id, \'">', $ticket->Subject, \'</a>'
-        ];
-        return ("Reminder '[_1]' completed", $subject); #loc()
+        if ( $ticket->CurrentUserHasRight('ShowTicket') ) {
+            my $subject = [
+                \'<a href="', RT->Config->Get('WebPath'),
+                "/Ticket/Reminders.html?id=", $self->ObjectId,
+                "#reminder-", $ticket->id, \'">', $ticket->Subject, \'</a>'
+            ];
+            return ("Reminder '[_1]' completed", $subject); #loc()
+        } else {
+            return ("Reminder completed"); #loc()
+        }
     }
 );
 
diff --git a/share/html/Elements/BulkLinks b/share/html/Elements/BulkLinks
index 473e843..c7ac109 100644
--- a/share/html/Elements/BulkLinks
+++ b/share/html/Elements/BulkLinks
@@ -106,7 +106,7 @@
 % if ( $hash{ReferredToBy} ) {
 % for my $link ( values %{$hash{ReferredToBy}} ) {
 % # Skip reminders
-% next if (UNIVERSAL::isa($link->BaseObj, 'RT::Ticket')  && $link->BaseObj->Type eq 'reminder');
+% next if (UNIVERSAL::isa($link->BaseObj, 'RT::Ticket')  && $link->BaseObj->__Value('Type') eq 'reminder');
       <input type="checkbox" class="checkbox" id="DeleteLink-<%$link->Base%>-<%$link->Type%>-" name="DeleteLink-<%$link->Base%>-<%$link->Type%>-" value="1" />
       <label for="DeleteLink-<%$link->Base%>-<%$link->Type%>-"><& /Elements/ShowLink, URI => $link->BaseURI &></label><br />
 % } }
diff --git a/share/html/Elements/EditLinks b/share/html/Elements/EditLinks
index 39f8bfe..7931a06 100644
--- a/share/html/Elements/EditLinks
+++ b/share/html/Elements/EditLinks
@@ -101,7 +101,7 @@
     <td class="value">
 % while (my $link = $Object->ReferredToBy->Next) {
 % # Skip reminders
-% next if (UNIVERSAL::isa($link->BaseObj, 'RT::Ticket')  && $link->BaseObj->Type eq 'reminder');
+% next if (UNIVERSAL::isa($link->BaseObj, 'RT::Ticket')  && $link->BaseObj->__Value('Type') eq 'reminder');
       <input type="checkbox" class="checkbox" id="DeleteLink-<%$link->Base%>-<%$link->Type%>-" name="DeleteLink-<%$link->Base%>-<%$link->Type%>-" value="1" />
       <label for="DeleteLink-<%$link->Base%>-<%$link->Type%>-"><& ShowLink, URI => $link->BaseURI &></label><br />
 % }
diff --git a/share/html/Elements/ShowLinksOfType b/share/html/Elements/ShowLinksOfType
index 1bb485e..9543c9a 100644
--- a/share/html/Elements/ShowLinksOfType
+++ b/share/html/Elements/ShowLinksOfType
@@ -91,7 +91,7 @@ while (my $link = $links->Next) {
     my $ToObj = $link->$ModeObj;
     if ($ToObj and $ToObj->isa('RT::Ticket')) {
         next if $Type eq "ReferredToBy"
-            and $ToObj->Type eq 'reminder';
+            and $ToObj->__Value('Type') eq 'reminder';
 
         if ( $ToObj->QueueObj->IsInactiveStatus( $ToObj->Status ) ) {
             push @inactive, $link;
diff --git a/share/html/Ticket/Create.html b/share/html/Ticket/Create.html
index b0e88b0..ac63644 100644
--- a/share/html/Ticket/Create.html
+++ b/share/html/Ticket/Create.html
@@ -330,7 +330,7 @@ if ($CloneTicket) {
         return if $uri->IsLocal and
                 $uri->Object and
                 $uri->Object->isa('RT::Ticket') and
-                $uri->Object->Type eq 'reminder';
+                $uri->Object->__Value('Type') eq 'reminder';
 
         return $link->$local_method || $uri->URI;
     };
diff --git a/share/html/m/ticket/create b/share/html/m/ticket/create
index 957e829..36a96c6 100644
--- a/share/html/m/ticket/create
+++ b/share/html/m/ticket/create
@@ -98,7 +98,7 @@ if ($CloneTicket) {
         return if $uri->IsLocal and
                 $uri->Object and
                 $uri->Object->isa('RT::Ticket') and
-                $uri->Object->Type eq 'reminder';
+                $uri->Object->__Value('Type') eq 'reminder';
 
         return $link->$local_method || $uri->URI;
     };
diff --git a/share/html/m/ticket/show b/share/html/m/ticket/show
index ebf39ac..7daa26e 100644
--- a/share/html/m/ticket/show
+++ b/share/html/m/ticket/show
@@ -448,7 +448,7 @@ for my $link ( @{ $Ticket->DependsOn->ItemsArrayRef } ) {
     <div class="value">
     <ul>
 % while (my $Link = $Ticket->ReferredToBy->Next) {
-% next if (UNIVERSAL::isa($Link->BaseObj, 'RT::Ticket')  && $Link->BaseObj->Type eq 'reminder');
+% next if (UNIVERSAL::isa($Link->BaseObj, 'RT::Ticket')  && $Link->BaseObj->__Value('Type') eq 'reminder');
 <li><& /Elements/ShowLink, URI => $Link->BaseURI &></li>
 % }
 </ul>

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


More information about the rt-commit mailing list