[Rt-commit] rt branch, 3.8-rss-authstring, updated. rt-3.8.7-63-gca728bf

sunnavy at bestpractical.com sunnavy at bestpractical.com
Thu Feb 11 02:54:11 EST 2010


The branch, 3.8-rss-authstring has been updated
       via  ca728bf5799ed7b2a9e9b084e321a605238305aa (commit)
      from  2553cfaca9d46e8425ec8e8c905e42452d7cddba (commit)

Summary of changes:
 share/html/NoAuth/rdf/dhandler                     |   32 +-----------
 .../{Results.rdf => Elements/ResultsRSSView}       |   40 ++++++++++++++
 share/html/Search/Results.rdf                      |   57 +-------------------
 3 files changed, 42 insertions(+), 87 deletions(-)
 copy share/html/Search/{Results.rdf => Elements/ResultsRSSView} (77%)

- Log -----------------------------------------------------------------
commit ca728bf5799ed7b2a9e9b084e321a605238305aa
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Thu Feb 11 15:35:29 2010 +0800

    add element ResultsRSSView so we call from both dhandler and Results.rdf

diff --git a/share/html/NoAuth/rdf/dhandler b/share/html/NoAuth/rdf/dhandler
index 6b82f06..c402b6f 100644
--- a/share/html/NoAuth/rdf/dhandler
+++ b/share/html/NoAuth/rdf/dhandler
@@ -45,34 +45,4 @@
 %# those contributions and any derivatives thereof.
 %# 
 %# END BPS TAGGED BLOCK }}}
-<& /Search/Results.rdf, %ARGS &>
-<%init>
-use Encode ();
-
-my $path = $m->dhandler_arg;
-
-my $notfound = sub {
-    my $mesg = shift;
-    $r->headers_out->{'Status'} = '404 Not Found';
-    $RT::Logger->info("Error encountered in rss generation: $mesg");
-    $m->clear_and_abort;
-};
-
-$notfound->("Invalid path: $path") unless $path =~ m!^([^/]+)/([^/]+)/?!;
-
-my ($name, $auth) = ($1, $2);
-# Unescape parts
-$name =~ s/\%([0-9a-z]{2})/chr(hex($1))/gei;
-# convert to perl strings
-$name = Encode::decode_utf8( $name );
-
-my $user = RT::User->new( $RT::SystemUser );
-$user->Load( $name );
-$notfound->("Invalid user: $user") unless $user->id;
-
-$notfound->("Invalid authstring") unless $user->ValidateAuthString( $auth, $ARGS{Query}.$ARGS{Order}.$ARGS{OrderBy});
-
-my $cu = RT::CurrentUser->new;
-$cu->Load($user);
-$session{'CurrentUser'} = $cu;
-</%init>
+<& /Search/Elements/ResultsRSSView, %ARGS &>
diff --git a/share/html/Search/Results.rdf b/share/html/Search/Elements/ResultsRSSView
similarity index 77%
copy from share/html/Search/Results.rdf
copy to share/html/Search/Elements/ResultsRSSView
index 0a19430..6aaf41c 100644
--- a/share/html/Search/Results.rdf
+++ b/share/html/Search/Elements/ResultsRSSView
@@ -46,6 +46,43 @@
 %# 
 %# END BPS TAGGED BLOCK }}}
 <%INIT>
+use Encode ();
+
+my $old_current_user;
+
+if ( $m->request_comp->path =~ RT->Config->Get('WebNoAuthRegex') ) {
+    my $path = $m->dhandler_arg;
+
+    my $notfound = sub {
+        my $mesg = shift;
+        $r->headers_out->{'Status'} = '404 Not Found';
+        $RT::Logger->info("Error encountered in rss generation: $mesg");
+        $m->clear_and_abort;
+    };
+
+    $notfound->("Invalid path: $path") unless $path =~ m!^([^/]+)/([^/]+)/?!;
+
+    my ( $name, $auth ) = ( $1, $2 );
+
+    # Unescape parts
+    $name =~ s/\%([0-9a-z]{2})/chr(hex($1))/gei;
+
+    # convert to perl strings
+    $name = Encode::decode_utf8($name);
+
+    my $user = RT::User->new($RT::SystemUser);
+    $user->Load($name);
+    $notfound->("Invalid user: $user") unless $user->id;
+
+    $notfound->("Invalid authstring")
+      unless $user->ValidateAuthString( $auth,
+              $ARGS{Query} . $ARGS{Order} . $ARGS{OrderBy} );
+
+    $old_current_user = $session{'CurrentUser'};
+    my $cu               = RT::CurrentUser->new;
+    $cu->Load($user);
+    $session{'CurrentUser'} = $cu;
+}
 
 my $Tickets = RT::Tickets->new($session{'CurrentUser'});
 $Tickets->FromSQL($ARGS{'Query'});
@@ -94,10 +131,13 @@ $r->content_type('application/rss+xml');
           guid        => $Ticket->Queue . '_' . $Ticket->id,
         );
     }
+
 $m->out($rss->as_string);
+$session{'CurrentUser'} = $old_current_user if $old_current_user;
 $m->abort();
 </%INIT>
 <%ARGS>
 $OrderBy => 'Created'
 $Order => 'ASC'
 </%ARGS>
+
diff --git a/share/html/Search/Results.rdf b/share/html/Search/Results.rdf
index 0a19430..c402b6f 100644
--- a/share/html/Search/Results.rdf
+++ b/share/html/Search/Results.rdf
@@ -45,59 +45,4 @@
 %# those contributions and any derivatives thereof.
 %# 
 %# END BPS TAGGED BLOCK }}}
-<%INIT>
-
-my $Tickets = RT::Tickets->new($session{'CurrentUser'});
-$Tickets->FromSQL($ARGS{'Query'});
-if ($OrderBy =~ /\|/) {
-    # Multiple Sorts
-    my @OrderBy = split /\|/,$OrderBy;
-    my @Order = split /\|/,$Order;
-    $Tickets->OrderByCols(
-        map { { FIELD => $OrderBy[$_], ORDER => $Order[$_] } } ( 0
-        .. $#OrderBy ) );;
-} else {
-    $Tickets->OrderBy(FIELD => $OrderBy, ORDER => $Order);
-}
-$r->content_type('application/rss+xml');
-
-
-
-        # create an RSS 1.0 file (http://purl.org/rss/1.0/)
-        use XML::RSS;
-        my $rss = new XML::RSS (version => '1.0');
-        $rss->channel(
-          title        => RT->Config->Get('rtname').": Search" . $ARGS{'Query'},
-          link         => RT->Config->Get('WebURL'),
-          description  => "",
-          dc => {
-          },
-          generator    => "RT v" . $RT::VERSION,
-          syn => {
-            updatePeriod     => "hourly",
-            updateFrequency  => "1",
-            updateBase       => "1901-01-01T00:00+00:00",
-          },
-        );
-
-
-    while ( my $Ticket = $Tickets->Next()) {
-        my $creator_str = $m->scomp('/Elements/ShowUser', User => $Ticket->CreatorObj);
-        $creator_str =~ s/[\r\n]//g;
-        $rss->add_item(
-          title       =>  $Ticket->Subject || loc('No Subject'),
-          link        => RT->Config->Get('WebURL')."Ticket/Display.html?id=".$Ticket->id,
-          description => $Ticket->Transactions->First->Content,
-          dc          => { creator => $creator_str,
-                           date => $Ticket->CreatedObj->RFC2822,
-                         },
-          guid        => $Ticket->Queue . '_' . $Ticket->id,
-        );
-    }
-$m->out($rss->as_string);
-$m->abort();
-</%INIT>
-<%ARGS>
-$OrderBy => 'Created'
-$Order => 'ASC'
-</%ARGS>
+<& /Search/Elements/ResultsRSSView, %ARGS &>

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


More information about the Rt-commit mailing list