[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