[Rt-commit] r18370 - rt/3.8/trunk/lib/RT

ruz at bestpractical.com ruz at bestpractical.com
Fri Feb 13 12:32:14 EST 2009


Author: ruz
Date: Fri Feb 13 12:32:14 2009
New Revision: 18370

Modified:
   rt/3.8/trunk/lib/RT/ACE_Overlay.pm
   rt/3.8/trunk/lib/RT/User_Overlay.pm

Log:
* everything is ready turn on canonicalization that can
  change right names
* now, single form is stored in DB and is equal to plural,
  for example SeeCustomField and SeeCustomFields behave
  in the same way

Modified: rt/3.8/trunk/lib/RT/ACE_Overlay.pm
==============================================================================
--- rt/3.8/trunk/lib/RT/ACE_Overlay.pm	(original)
+++ rt/3.8/trunk/lib/RT/ACE_Overlay.pm	Fri Feb 13 12:32:14 2009
@@ -540,6 +540,20 @@
 
 # {{{ sub CanonicalizeRightName
 
+sub RightName {
+    my $self = shift;
+    my $val = $self->_Value('RightName');
+    return $val unless $val;
+
+    my $available = $self->Object->AvailableRights;
+    foreach my $right ( keys %$available ) {
+        return $right if $val eq $self->CanonicalizeRightName($right);
+    }
+
+    $RT::Logger->crit("Invalid right. Couldn't canonicalize right '$val'");
+    return $val;
+}
+
 =head2 CanonicalizeRightName <RIGHT>
 
 Takes a queue or system right name in any case and returns it in
@@ -547,10 +561,19 @@
 
 =cut
 
+our %CANONICRIGHTNAMES = ();
+{ my $keys_cached = 0;
 sub CanonicalizeRightName {
     my $self  = shift;
-    return $LOWERCASERIGHTNAMES{ lc shift };
-}
+    unless ( $keys_cached == keys %LOWERCASERIGHTNAMES ) {
+        foreach my $right ( values %LOWERCASERIGHTNAMES ) {
+            $right =~ s/s$//i;
+            $CANONICRIGHTNAMES{ lc $right } = $right;
+            $CANONICRIGHTNAMES{ lc $right .'s' } = $right;
+        }
+    }
+    return $CANONICRIGHTNAMES{ lc shift };
+} }
 
 # }}}
 

Modified: rt/3.8/trunk/lib/RT/User_Overlay.pm
==============================================================================
--- rt/3.8/trunk/lib/RT/User_Overlay.pm	(original)
+++ rt/3.8/trunk/lib/RT/User_Overlay.pm	Fri Feb 13 12:32:14 2009
@@ -1494,7 +1494,7 @@
                  IncludeGroupMembership => 1);
     $deleg_acl->Limit( FIELD => 'RightName',
                OPERATOR => '=',
-               VALUE => 'DelegateRights' );
+               VALUE => 'DelegateRight' );
     my @allowed_deleg_objects = map {$_->Object()}
     @{$deleg_acl->ItemsArrayRef()};
 


More information about the Rt-commit mailing list