Changeset 1085

Show
Ignore:
Timestamp:
06/17/07 00:57:32 (1 year ago)
Author:
ilmari
Message:

Clean up fallout from prefs cleanup
- Make OpenGuides::Template->output pass the provided cookies to

OpenGuides::CGI->get_prefs_from_cookie, where this overrides any
browser-supplied cookie.

- Use the prefs hash explcitly where needed (fixes #216).

=== Targets to commit (you may delete items from it) ===
M /home/ilmari/src/openguides-trunk/lib/Changes.pm
M /home/ilmari/src/openguides-trunk/lib/OpenGuides/CGI.pm
M /home/ilmari/src/openguides-trunk/lib/OpenGuides/Template.pm
M /home/ilmari/src/openguides-trunk/preferences.cgi
M /home/ilmari/src/openguides-trunk/t/59_preferences.t
M /home/ilmari/src/openguides-trunk/templates/preferences.tt
M /home/ilmari/src/openguides-trunk/templates/navbar_tools.tt

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/Changes

    r1081 r1085  
    2121        Validate input geodata (#22) 
    2222        List all contributors in RDF version of nodes (#106). 
     23        The "Look for nearby geocaches" preference and link now actually work 
     24          (#216). 
    2325 
    24260.60    13 May 2007 
  • trunk/lib/OpenGuides/CGI.pm

    r1084 r1085  
    137137 
    138138  my %prefs = OpenGuides::CGI->get_prefs_from_cookie( 
    139       config => $config 
     139      config => $config, 
     140      cookies => \@cookies 
    140141  ); 
    141142 
    142143Croaks unless an L<OpenGuides::Config> object is supplied as C<config>. 
    143144Returns default values for any parameter not specified in cookie. 
     145 
     146If C<cookies> is provided, this overrides any cookies submitted by the 
     147browser. 
    144148 
    145149=cut 
     
    150154    croak "Config object not an OpenGuides::Config" 
    151155        unless UNIVERSAL::isa( $config, "OpenGuides::Config" ); 
    152     my %cookies = CGI::Cookie->fetch; 
    153156    my $cookie_name = $class->_get_cookie_name( config => $config ); 
     157    my %cookies; 
     158    if ( my $cookies = $args{cookies} ) { 
     159        if (ref $cookies ne 'ARRAY') { 
     160            $cookies = [ $cookies ]; 
     161        } 
     162        %cookies = map { $_->name => $_ } @{ $cookies }; 
     163    } 
     164    else { 
     165        %cookies = CGI::Cookie->fetch; 
     166    } 
    154167    my %data; 
    155168    if ( $cookies{$cookie_name} ) { 
     
    157170    } 
    158171 
    159     return $class->get_prefs_from_hash( %data ); 
     172    my %long_forms = ( 
     173                       user       => "username", 
     174                       gclink     => "include_geocache_link", 
     175                       prevab     => "preview_above_edit_box", 
     176                       lltrad     => "latlong_traditional", 
     177                       omithlplks => "omit_help_links", 
     178                       rcmined    => "show_minor_edits_in_rc", 
     179                       defedit    => "default_edit_type", 
     180                       exp        => "cookie_expires", 
     181                       trackrc    => "track_recent_changes_views", 
     182                       gmaps      => "display_google_maps", 
     183                     ); 
     184    my %long_data = map { $long_forms{$_} => $data{$_} } keys %long_forms; 
     185 
     186    return $class->get_prefs_from_hash( %long_data ); 
    160187} 
    161188 
     
    174201                     display_google_maps        => 1, 
    175202                   ); 
    176     my %long_forms = ( 
    177                        user       => "username", 
    178                        gclink     => "include_geocache_link", 
    179                        prevab     => "preview_above_edit_box", 
    180                        lltrad     => "latlong_traditional", 
    181                        omithlplks => "omit_help_links", 
    182                        rcmined    => "show_minor_edits_in_rc", 
    183                        defedit    => "default_edit_type", 
    184                        exp        => "cookie_expires", 
    185                        trackrc    => "track_recent_changes_views", 
    186                        gmaps      => "display_google_maps", 
    187                      ); 
    188203    my %return; 
    189     foreach my $key ( keys %long_forms ) { 
    190         my $long_key = $long_forms{$key}; 
    191         if ( defined $data{$key} ) { 
    192             $return{$long_key} = $data{$key}; 
    193         } else { 
    194             $return{$long_key} = $defaults{$long_key}; 
    195         } 
    196     } 
     204    foreach my $key ( keys %data ) { 
     205        $return{$key} = defined $data{$key} ? $data{$key} : $defaults{$key}; 
     206    } 
     207 
    197208    return %return; 
    198209} 
  • trunk/lib/OpenGuides/Template.pm

    r1082 r1085  
    132132    my $formatting_rules_node = $config->formatting_rules_node; 
    133133    $formatting_rules_link = $config->formatting_rules_link; 
    134     my %cookie_data = OpenGuides::CGI->get_prefs_from_cookie(config=>$config); 
     134    my %cookie_data = OpenGuides::CGI->get_prefs_from_cookie(config=>$config, 
     135                                                             cookies => $args{cookies}, 
     136                                                            ); 
    135137    if ( $cookie_data{omit_help_links} ) { 
    136138        $omit_help_links = 1; 
  • trunk/preferences.cgi

    r1084 r1085  
    3131    # If they've asked not to have their recent changes visits tracked, 
    3232    # clear any existing recentchanges cookie. 
    33     if ( ! $track_rc ) { 
     33    if ( ! $prefs{track_recent_changes_views} ) { 
    3434        my $rc_cookie = OpenGuides::CGI->make_recent_changes_cookie( 
    3535            config       => $config, 
     
    4343        template => "preferences.tt", 
    4444        cookies  => \@cookies, 
    45         vars     => { 
    46                       not_editable               => 1, 
    47                       %prefs, 
     45        vars     => { 
     46                      not_editable => 1, 
    4847                    } 
    4948    ); 
  • trunk/t/59_preferences.t

    r1050 r1085  
    6161        template     => "preferences.tt", 
    6262        content_type => '', 
    63         vars         => { OpenGuides::CGI->get_prefs_from_cookie( config => $config ), 
     63        vars         => { 
    6464                          not_editable => 1, 
    6565                          show_form    => 1 
  • trunk/templates/navbar_tools.tt

    r1051 r1085  
    66    <li><a href="[% full_cgi_url %]?action=random">Random Page</a></li> 
    77    <li><a href="[% full_cgi_url %]?action=show_wanted_pages">Wanted Pages</a></li> 
    8     [% IF geocache_link AND wgs84_lat AND wgs84_long %] 
    9       <li><a href="http://www.geocaching.com/seek/nearest_cache.asp?origin_lat=[% wgs84_lat %];origin_long=[% wgs84_long %]">Look for nearby geocaches</a></li> 
     8    [% IF prefs.include_geocache_link AND wgs84_lat AND wgs84_long %] 
     9      <li><a href="http://www.geocaching.com/seek/nearest_cache.asp?origin_lat=[% wgs84_lat %]&amp;origin_long=[% wgs84_long %]">Look for nearby geocaches</a></li> 
    1010    [% END %] 
    1111  </ul> 
  • trunk/templates/preferences.tt

    r1084 r1085  
    99    <h1>Username</h1> 
    1010    <p><label for="username">How you wish to be identified in Recent Changes:</label></p> 
    11     <input type="text" size="20" id="username" name="username" value="[% username %]" /> 
     11    <input type="text" size="20" id="username" name="username" value="[% prefs.username %]" /> 
    1212 
    1313    <h1>Preferences</h1> 
     
    118118  <h1>Username/preferences saved</h1> 
    119119 
    120   <p>Username set to &#8220;[% username %]&#8221;.</p> 
     120  <p>Username set to &#8220;[% prefs.username %]&#8221;.</p> 
    121121 
    122122  <p>Preview area shown 
     
    129129 
    130130  <p>&#8220;Look for nearby geocaches&#8221; link 
    131     [% UNLESS include_geocache_link %] not [% END %] 
     131    [% UNLESS prefs.include_geocache_link %] not [% END %] 
    132132  included in navbar.</p> 
    133133 
     
    150150 
    151151  <p>Your visits to Recent Changes will 
    152     [% UNLESS track_recent_changes_views %] not [% END %] 
     152    [% UNLESS prefs.track_recent_changes_views %] not [% END %] 
    153153  be tracked.</p> 
    154154