Changeset 1085


Ignore:
Timestamp:
Jun 17, 2007, 12:57:32 AM (14 years ago)
Author:
Dagfinn Ilmari Mannsåker
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

Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • 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
Note: See TracChangeset for help on using the changeset viewer.