Author: earle Date: 2005-07-21 15:58:27 +0100 (Thu, 21 Jul 2005) New Revision: 656
Modified: trunk/lib/OpenGuides.pm Log: fix redirect checking
Modified: trunk/lib/OpenGuides.pm =================================================================== --- trunk/lib/OpenGuides.pm 2005-06-15 13:55:29 UTC (rev 655) +++ trunk/lib/OpenGuides.pm 2005-07-21 14:58:27 UTC (rev 656) @@ -173,13 +173,17 @@
# Avoid loops by not generating redirects to the same node or the # previous node. - if ( $wiki->node_exists($redirect) && $redirect != $id && $redirect != $oldid ) { + if ( $wiki->node_exists($redirect) ) { + unless ($redirect eq $id) { + unless ($redirect eq $oldid) { my $output = $self->redirect_to_node($redirect, $id); return $output if $return_output; print $output; exit 0; + } + } + } } - } my $content = $wiki->format($raw); my $modified = $node_data{last_modified}; my %metadata = %{$node_data{metadata}}; @@ -855,7 +859,7 @@ }
sub redirect_to_node { - my ($self, $node, $redirect) = @_; + my ($self, $node, $redirected_from) = @_;
my $script_url = $self->config->script_url; my $script_name = $self->config->script_name; @@ -863,10 +867,10 @@
my $id = $formatter->node_name_to_node_param( $node ); my $oldid; - $oldid = $formatter->node_name_to_node_param( $redirect ) if $redirect; + $oldid = $formatter->node_name_to_node_param( $redirected_from ) if $redirected_from;
my $redir_param =''; - $redir_param = "&oldid=$oldid" if $oldid; + $redir_param = ";oldid=$oldid" if $oldid;
return CGI->redirect( "$script_url$script_name?id=$id$redir_param" ); }