[Rt-commit] r6591 - in rt/branches/3.6-RELEASE: .

jesse at bestpractical.com jesse at bestpractical.com
Wed Dec 6 14:18:49 EST 2006


Author: jesse
Date: Wed Dec  6 14:18:48 2006
New Revision: 6591

Modified:
   rt/branches/3.6-RELEASE/   (props changed)
   rt/branches/3.6-RELEASE/html/Elements/ShowSearch

Log:
 r45870 at 114:  jesse | 2006-12-06 14:17:20 -0500
 * Let users add non-predefined searches saved by the superuser to RT::System's saved searches to their homepages


Modified: rt/branches/3.6-RELEASE/html/Elements/ShowSearch
==============================================================================
--- rt/branches/3.6-RELEASE/html/Elements/ShowSearch	(original)
+++ rt/branches/3.6-RELEASE/html/Elements/ShowSearch	Wed Dec  6 14:18:48 2006
@@ -61,35 +61,45 @@
 my $query_link_url = 'Search/Results.html';
 
 if ($SavedSearch) {
-    my ($container_object, $search_id ) = _parse_saved_search ($SavedSearch);
+    my ( $container_object, $search_id ) = _parse_saved_search($SavedSearch);
     $search = $container_object->Attributes->WithId($search_id);
-    unless ($search->Id && ref ($SearchArg = $search->Content) eq 'HASH') {
-	$m->out ("Saved Search $SavedSearch not found");
-	return;
+    unless ( $search->Id && ref( $SearchArg = $search->Content ) eq 'HASH' ) {
+        $m->out("Saved Search $SavedSearch not found");
+        return;
     }
     if ( $SearchArg->{SearchType} ne 'Ticket' ) {
+
         # XXX: dispatch to different handler here
-        $query_display_component = '/Search/Elements/'.$SearchArg->{SearchType};
+        $query_display_component
+            = '/Search/Elements/' . $SearchArg->{SearchType};
         $query_link_url = "Search/$SearchArg->{SearchType}.html";
+    } else {
+        $customize = $RT::WebPath . '/Search/Build.html?'
+            . $m->comp( '/Elements/QueryString',
+            LoadSavedSearch => $SavedSearch );
     }
-    else {
-	$customize = $RT::WebPath.'/Search/Build.html?'.
-	    $m->comp('/Elements/QueryString',
-		     LoadSavedSearch => $SavedSearch);
-    }
-}
-else {
-    ($search) = RT::System->new($session{'CurrentUser'})->Attributes->Named('Search - '.$Name);
-    unless ($search && $search->Id) {
-	$m->out ("Predefined search $Name not found");
-	return;
+} else {
+    ($search) = RT::System->new( $session{'CurrentUser'} ) ->Attributes->Named( 'Search - ' . $Name );
+    unless ( $search && $search->Id ) {
+        my (@custom_searches) = RT::System->new( $session{'CurrentUser'} )->Attributes->Named('SavedSearch');
+        foreach my $custom (@custom_searches) {
+            if ($custom->Description eq $Name) { $search = $custom; last }
+        }
+        unless ($search && $search->id) {
+            $m->out("Predefined search $Name not found");
+            return;
+        }
     }
-    $SearchArg = $user->Preferences($search, $search->Content);
-    $SearchArg->{'Rows'} = $user->Preferences('SummaryRows', $RT::DefaultSummaryRows);
-    $customize = $RT::WebPath.'/Prefs/Search.html?'.$m->comp('/Elements/QueryString', name => ref($search).'-'.$search->Id)
+
+    $SearchArg = $user->Preferences( $search, $search->Content );
+    $SearchArg->{'Rows'}
+        = $user->Preferences( 'SummaryRows', $RT::DefaultSummaryRows );
+    $customize = $RT::WebPath . '/Prefs/Search.html?'
+        . $m->comp( '/Elements/QueryString',
+        name => ref($search) . '-' . $search->Id );
 }
 
-$SearchArg->{'Query'} =~ s/__CurrentUser__/$session{'CurrentUser'}->Id/ge;
+$SearchArg->{'Query'}  =~ s/__CurrentUser__/$session{'CurrentUser'}->Id/ge;
 $SearchArg->{'Format'} =~ s/__WebPath__/$RT::WebPath/g;
 $SearchArg->{'Format'} =~ s/__loc\(["']?(\w+)["']?\)__/loc("$1")/ge;
 
@@ -100,11 +110,9 @@
     %ARGS
 );
 
+my $QueryString = '?' . $m->comp( '/Elements/QueryString', %$SearchArg );
 
-
-my $QueryString = '?' . $m->comp('/Elements/QueryString',
-                                  %$SearchArg);
-	    #map { $_ => $SearchArg->{$_} } qw(Query Order OrderBy));
+#map { $_ => $SearchArg->{$_} } qw(Query Order OrderBy));
 
 </%init>
 <%ARGS>


More information about the Rt-commit mailing list