Changeset 700


Ignore:
Timestamp:
Oct 23, 2005, 8:00:10 PM (16 years ago)
Author:
Earle Martin
Message:

Change "action=rss" parameter to "action=rc;format=rss". Extract RecentChanges code in OpenGuides.pm to its own sub (display_recent_changes()). Fix references to old params in templates. Put redirect to URL with new parameters into wiki.cgi for old parameter.

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/OpenGuides.pm

    r699 r700  
    154154        $tt_vars{index_value} = $2;
    155155        $tt_vars{"rss_".lc($type)."_url"} =
    156                            $config->script_name . "?action=rss;"
     156                           $config->script_name . "?action=rc;format=rss;"
    157157                           . lc($type) . "=" . lc(CGI->escape($2));
    158158    }
     
    224224
    225225    if ($id eq "RecentChanges") {
    226         my $minor_edits = $self->get_cookie( "show_minor_edits_in_rc" );
    227         my %recent_changes;
    228         my $q = CGI->new;
    229         my $since = $q->param("since");
    230         if ( $since ) {
    231             $tt_vars{since} = $since;
    232             my $t = localtime($since); # overloaded by Time::Piece
    233             $tt_vars{since_string} = $t->strftime;
    234             my %criteria = ( since => $since );
    235             $criteria{metadata_was} = { edit_type => "Normal edit" }
    236               unless $minor_edits;
    237             my @rc = $self->{wiki}->list_recent_changes( %criteria );
    238 
    239             @rc = map {
    240                 {
    241                     name           => CGI->escapeHTML($_->{name}),
    242                     last_modified  => CGI->escapeHTML($_->{last_modified}),
    243                     version        => CGI->escapeHTML($_->{version}),
    244                     comment        => CGI->escapeHTML($_->{metadata}{comment}[0]),
    245                     username       => CGI->escapeHTML($_->{metadata}{username}[0]),
    246                     host           => CGI->escapeHTML($_->{metadata}{host}[0]),
    247                     username_param => CGI->escape($_->{metadata}{username}[0]),
    248                     edit_type      => CGI->escapeHTML($_->{metadata}{edit_type}[0]),
    249                     url            => $config->script_name . "?"
    250                                    . CGI->escape($wiki->formatter->node_name_to_node_param($_->{name})),
    251                 }
    252             } @rc;
    253             if ( scalar @rc ) {
    254                 $recent_changes{since} = \@rc;
    255             }
    256         } else {
    257             for my $days ( [0, 1], [1, 7], [7, 14], [14, 30] ) {
    258                 my %criteria = ( between_days => $days );
    259                 $criteria{metadata_was} = { edit_type => "Normal edit" }
    260                   unless $minor_edits;
    261                 my @rc = $self->{wiki}->list_recent_changes( %criteria );
    262 
    263                 @rc = map {
    264                     {
    265                         name           => CGI->escapeHTML($_->{name}),
    266                         last_modified  => CGI->escapeHTML($_->{last_modified}),
    267                         version        => CGI->escapeHTML($_->{version}),
    268                         comment        => CGI->escapeHTML($_->{metadata}{comment}[0]),
    269                         username       => CGI->escapeHTML($_->{metadata}{username}[0]),
    270                         host           => CGI->escapeHTML($_->{metadata}{host}[0]),
    271                         username_param => CGI->escape($_->{metadata}{username}[0]),
    272                         edit_type      => CGI->escapeHTML($_->{metadata}{edit_type}[0]),
    273                         url            => $config->script_name . "?"
    274                                           . CGI->escape($wiki->formatter->node_name_to_node_param($_->{name})),
    275                     }
    276                 } @rc;
    277                 if ( scalar @rc ) {
    278                     $recent_changes{$days->[1]} = \@rc;
    279                 }
    280             }
    281         }
    282         $tt_vars{recent_changes} = \%recent_changes;
    283         my %processing_args = (
    284                                   id            => $id,
    285                                   template      => "recent_changes.tt",
    286                                   tt_vars       => \%tt_vars,
    287                               );
    288         if ( !$since && $self->get_cookie("track_recent_changes_views") ) {
    289             my $cookie = OpenGuides::CGI->make_recent_changes_cookie(config => $config );
    290             $processing_args{cookies} = $cookie;
    291             $tt_vars{last_viewed} = OpenGuides::CGI->get_last_recent_changes_visit_from_cookie( config => $config );
    292         }
    293         return %tt_vars if $args{return_tt_vars};
    294         my $output = $self->process_template( %processing_args );
    295         return $output if $return_output;
    296         print $output;
     226        $self->display_recent_changes(%args);
    297227    } elsif ( $id eq $self->config->home_name ) {
    298228        my @recent = $wiki->list_recent_changes(
     
    332262}
    333263
     264=item B<display_recent_changes> 
     265
     266  $guide->display_recent_changes;
     267
     268As with other methods, the C<return_output> parameter can be used to
     269return the output instead of printing it to STDOUT.
     270
     271=cut
     272
     273sub display_recent_changes {
     274    my ($self, %args) = @_;
     275    my $config = $self->config;
     276    my $wiki = $self->wiki;
     277    my $minor_edits = $self->get_cookie( "show_minor_edits_in_rc" );
     278    my $id = $args{id} || $self->config->home_name;
     279    my $return_output = $args{return_output} || 0;
     280    my (%tt_vars, %recent_changes);
     281    my $q = CGI->new;
     282    my $since = $q->param("since");
     283    if ( $since ) {
     284        $tt_vars{since} = $since;
     285        my $t = localtime($since); # overloaded by Time::Piece
     286        $tt_vars{since_string} = $t->strftime;
     287        my %criteria = ( since => $since );   
     288        $criteria{metadata_was} = { edit_type => "Normal edit" }
     289          unless $minor_edits;
     290        my @rc = $self->{wiki}->list_recent_changes( %criteria );
     291 
     292        @rc = map {
     293            {
     294              name        => CGI->escapeHTML($_->{name}),
     295              last_modified => CGI->escapeHTML($_->{last_modified}),
     296              version     => CGI->escapeHTML($_->{version}),
     297              comment     => CGI->escapeHTML($_->{metadata}{comment}[0]),
     298              username    => CGI->escapeHTML($_->{metadata}{username}[0]),
     299              host        => CGI->escapeHTML($_->{metadata}{host}[0]),
     300              username_param => CGI->escape($_->{metadata}{username}[0]),
     301              edit_type   => CGI->escapeHTML($_->{metadata}{edit_type}[0]),
     302              url         => $config->script_name . "?"
     303      . CGI->escape($wiki->formatter->node_name_to_node_param($_->{name})),
     304        }
     305                   } @rc;
     306        if ( scalar @rc ) {
     307            $recent_changes{since} = \@rc;
     308        }
     309    } else {
     310        for my $days ( [0, 1], [1, 7], [7, 14], [14, 30] ) {
     311            my %criteria = ( between_days => $days );
     312            $criteria{metadata_was} = { edit_type => "Normal edit" }
     313              unless $minor_edits;
     314            my @rc = $self->{wiki}->list_recent_changes( %criteria );
     315
     316            @rc = map {
     317            {
     318              name        => CGI->escapeHTML($_->{name}),
     319              last_modified => CGI->escapeHTML($_->{last_modified}),
     320              version     => CGI->escapeHTML($_->{version}),
     321              comment     => CGI->escapeHTML($_->{metadata}{comment}[0]),
     322              username    => CGI->escapeHTML($_->{metadata}{username}[0]),
     323              host        => CGI->escapeHTML($_->{metadata}{host}[0]),
     324              username_param => CGI->escape($_->{metadata}{username}[0]),
     325              edit_type   => CGI->escapeHTML($_->{metadata}{edit_type}[0]),
     326              url         => $config->script_name . "?"
     327      . CGI->escape($wiki->formatter->node_name_to_node_param($_->{name})),
     328        }
     329                       } @rc;
     330            if ( scalar @rc ) {
     331                $recent_changes{$days->[1]} = \@rc;
     332        }
     333        }
     334    }
     335    $tt_vars{recent_changes} = \%recent_changes;
     336    my %processing_args = (
     337                            id            => $id,
     338                            template      => "recent_changes.tt",
     339                            tt_vars       => \%tt_vars,
     340                           );
     341    if ( !$since && $self->get_cookie("track_recent_changes_views") ) {
     342    my $cookie =
     343           OpenGuides::CGI->make_recent_changes_cookie(config => $config );
     344        $processing_args{cookies} = $cookie;
     345        $tt_vars{last_viewed} = OpenGuides::CGI->get_last_recent_changes_visit_from_cookie( config => $config );
     346    }
     347    return %tt_vars if $args{return_tt_vars};
     348    my $output = $self->process_template( %processing_args );
     349    return $output if $return_output;
     350    print $output;
     351}
     352
    334353=item B<display_diffs>
    335354
  • trunk/templates/header.tt

    r699 r700  
    2626  [% END %]
    2727  [% IF (node_name == 'RecentChanges') %]
    28     <link rel="alternate" type="application/rss+xml" title="RSS feed for this page" href="[% full_cgi_url %]?action=rss" />
    29   [% END %]
    30   [% IF rss_link %]
    31     <link rel="alternate" type="application/rss+xml" title="RSS feed for this page" href="[% rss_link %]" />
     28    <link rel="alternate" type="application/rss+xml" title="RSS feed for this page" href="[% full_cgi_url %]?action=rc;format=rss" />
    3229  [% END %]
    3330  [% IF deter_robots %]
  • trunk/templates/home_node.tt

    r699 r700  
    3131
    3232<h3>Ten most <a href="[% cgi_url %]?RecentChanges">recent changes</a>
    33     (<a href="[% full_cgi_url %]?action=rss">RSS</a>):</h3>
     33    (<a href="[% full_cgi_url %]?action=rc;format=rss">RSS</a>):</h3>
    3434
    3535<dl>
  • trunk/templates/userstats.tt

    r699 r700  
    3939  <h2>Personalised RSS feeds:</h2>
    4040  <ul>
    41     <li><a href="[% full_cgi_url %]?action=rss;username=[% CGI.escape(username) %];items=10">Last ten edits made by [% username %]</a></li>
    42     <li><a href="[% full_cgi_url %]?action=rss;username=[% CGI.escape(username) %];items=20">Last twenty edits made by [% username %]</a></li>
    43     <li><a href="[% full_cgi_url %]?action=rss;username=[% CGI.escape(username) %];items=10;ignore_minor_edits=1">Last ten edits made by [% username %], ignoring minor edits</a></li>
    44     <li><a href="[% full_cgi_url %]?action=rss;username=[% CGI.escape(username) %];items=20;ignore_minor_edits=1">Last twenty edits made by [% username %], ignoring minor edits</a></li>
     41    <li><a href="[% full_cgi_url %]?action=rc;format=rss;username=[% CGI.escape(username) %];items=10">Last ten edits made by [% username %]</a></li>
     42    <li><a href="[% full_cgi_url %]?action=rc;format=rss;username=[% CGI.escape(username) %];items=20">Last twenty edits made by [% username %]</a></li>
     43    <li><a href="[% full_cgi_url %]?action=rc;format=rss;username=[% CGI.escape(username) %];items=10;ignore_minor_edits=1">Last ten edits made by [% username %], ignoring minor edits</a></li>
     44    <li><a href="[% full_cgi_url %]?action=rc;format=rss;username=[% CGI.escape(username) %];items=20;ignore_minor_edits=1">Last twenty edits made by [% username %], ignoring minor edits</a></li>
    4545  </ul>
    4646[% END %]
  • trunk/wiki.cgi

    r699 r700  
    22
    33use strict;
     4use lib qw( /home/earle/openguides.org/testing/lib );
    45use warnings;
    56
    67use vars qw( $VERSION );
    7 $VERSION = '0.50';
     8$VERSION = '0.51';
    89
    910use CGI qw/:standard/;
     
    9899    } elsif ($action eq 'list_all_versions') {
    99100        $guide->list_all_versions( id => $node );
     101    } elsif ($action eq 'rc') {
     102        if ($format && $format eq 'rss') {
     103            my $feed = $q->param("feed");
     104            if ( !defined $feed or $feed eq "recent_changes" ) {
     105                my %args = map { $_ => ( $q->param($_) || "" ) }
     106                           qw( feed items days ignore_minor_edits username
     107                               category locale );
     108                $guide->display_rss( %args );
     109            } elsif ( $feed eq "chef_dan" ) {
     110                display_node_rdf( node => $node );
     111            } else {
     112                croak "Unknown RSS feed type '$feed'";
     113            }
     114        } else {
     115            $guide->display_node( id => 'RecentChanges' );
     116        }
    100117    } elsif ($action eq 'rss') {
    101         my $feed = $q->param("feed");
    102         if ( !defined $feed or $feed eq "recent_changes" ) {
    103             my %args = map { $_ => ( $q->param($_) || "" ) }
    104                        qw( feed items days ignore_minor_edits username
    105                            category locale );
    106             $guide->display_rss( %args );
    107         } elsif ( $feed eq "chef_dan" ) {
    108             display_node_rdf( node => $node );
    109         } else {
    110             croak "Unknown RSS feed type '$feed'";
    111         }
     118        print $q->redirect( $script_url . '?action=rc;format=rss' );
    112119    } else { # Default is to display a node.
    113120        if ( $format and $format eq "rdf" ) {
     
    120127        } else {
    121128            my $version = $q->param("version");
    122         my $other_ver = $q->param("diffversion");
     129            my $other_ver = $q->param("diffversion");
    123130            if ( $other_ver ) {
    124131                $guide->display_diffs(
Note: See TracChangeset for help on using the changeset viewer.