Changeset 678


Ignore:
Timestamp:
Oct 5, 2005, 5:05:16 AM (16 years ago)
Author:
Earle Martin
Message:

Change the behaviour of the "redirected" message to link to a rendered version of the old page, not the editing view.

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Changes

    r677 r678  
    110.51
    22        Replace underscores in node names in redirection message with spaces.
    3        
     3        Redirection message now links to a rendered version of the old page
     4         rather than the editing view.
     5         
    460.50    2 October 2005
    57        Remove rogue ampersand that had crept into the RSS feed.
  • trunk/lib/OpenGuides.pm

    r677 r678  
    144144    my $config = $self->config;
    145145    my $oldid = $args{oldid} || '';
     146    my $do_redirect = $args{redirect} || 1;
    146147
    147148    my %tt_vars;
     
    161162    undef $version if ($version && $version == $current_version);
    162163    my %criteria = ( name => $id );
    163     $criteria{version} = $version if $version;#retrieve_node default is current
     164    $criteria{version} = $version if $version; # retrieve_node default is current
    164165
    165166    my %node_data = $wiki->retrieve_node( %criteria );
    166     my $raw = $node_data{content};
     167
     168    my $raw        = $node_data{content};
     169    my $content    = $wiki->format($raw);
     170    my $modified   = $node_data{last_modified};
     171    my %metadata   = %{$node_data{metadata}};
     172
     173    my %metadata_vars = OpenGuides::Template->extract_metadata_vars(
     174                            wiki     => $wiki,
     175                            config   => $config,
     176                            metadata => $node_data{metadata} );
     177
     178    %tt_vars = (
     179                 %tt_vars,
     180                 %metadata_vars,
     181                 content       => $content,
     182                 last_modified => $modified,
     183                 version       => $node_data{version},
     184                 node          => $id,
     185                 language      => $config->default_language,
     186                 oldid         => $oldid,
     187               );
     188
    167189    if ( $raw =~ /^#REDIRECT\s+(.+?)\s*$/ ) {
    168190        my $redirect = $1;
     
    170192        $redirect =~ s/^\[\[//;
    171193        $redirect =~ s/\]\]\s*$//;
    172         # See if this is a valid node, if not then just show the page as-is.
    173 
    174         # Avoid loops by not generating redirects to the same node or the
    175         # previous node.
    176         if ( $wiki->node_exists($redirect) && $redirect ne $id && $redirect ne $oldid ) {
     194
     195        # Don't redirect if the parameter "redirect" is given as 0.
     196        if ($do_redirect == 0) {
     197            return %tt_vars if $args{return_tt_vars};
     198            $tt_vars{current} = 1;
     199            my $output = $self->process_template(
     200                                                  id            => $id,
     201                                                  template      => "node.tt",
     202                                                  tt_vars       => \%tt_vars,
     203                                                );
     204            return $output if $return_output;
     205            print $output;
     206        } elsif ( $wiki->node_exists($redirect) && $redirect ne $id && $redirect ne $oldid ) {
     207            # Avoid loops by not generating redirects to the same node or the previous node.
    177208            my $output = $self->redirect_to_node($redirect, $id);
    178209            return $output if $return_output;
     
    181212        }
    182213    }
    183     my $content    = $wiki->format($raw);
    184     my $modified   = $node_data{last_modified};
    185     my %metadata   = %{$node_data{metadata}};
    186 
    187     my %metadata_vars = OpenGuides::Template->extract_metadata_vars(
    188                             wiki     => $wiki,
    189                 config   => $config,
    190                             metadata => $node_data{metadata} );
    191 
    192     %tt_vars = (
    193                  %tt_vars,
    194          %metadata_vars,
    195          content       => $content,
    196          last_modified => $modified,
    197          version       => $node_data{version},
    198                  node          => $id,
    199                  language      => $config->default_language,
    200                  oldid         => $oldid,
    201                );
    202214
    203215    # We've undef'ed $version above if this is the current version.
     
    839851sub process_template {
    840852    my ($self, %args) = @_;
    841     my %output_conf = ( wiki     => $self->wiki,
     853    my %output_conf = (
     854            wiki     => $self->wiki,
    842855            config   => $self->config,
    843856            node     => $args{id},
    844857            template => $args{template},
    845858            vars     => $args{tt_vars},
    846                         cookies  => $args{cookies},
     859            cookies  => $args{cookies},
    847860    );
    848861    if ( $args{content_type} ) {
     
    870883    $redir_param .= $id;
    871884    $redir_param .= ";oldid=$oldid" if $oldid;
    872    
     885
    873886    return CGI->redirect( $redir_param );
    874887}
  • trunk/templates/node.tt

    r677 r678  
    66<div id="maincontent">
    77[% IF oldid %]
    8 <div id="redirect_message">(redirected from <a href="[% full_cgi_url %]?action=edit&id=[% oldid %]">[% oldid.replace('_', ' ') %]</a></div>
     8<div id="redirect_message">(redirected from <a href="[% full_cgi_url %]?id=[% oldid %];redirect=0">[% oldid.replace('_', ' ') %]</a></div>
    99[% END %]
    1010
  • trunk/wiki.cgi

    r677 r678  
    125125                my $redirect;
    126126               
    127                 if ($q->param("redirect") && ($q->param("redirect") == 0)) {
     127                if ((defined $q->param("redirect")) && ($q->param("redirect") == 0)) {
    128128                  $redirect = 0;
    129129                } else {
     
    135135                                      version  => $version,
    136136                                      oldid    => $oldid,
    137                                       redirect => $redirect;
    138                 );
    139                
    140         }
     137                                      redirect => $redirect,
     138                                    );
     139            }
    141140        }
    142141    }
Note: See TracChangeset for help on using the changeset viewer.