Show
Ignore:
Timestamp:
06/17/07 00:57:32 (19 months 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:
1 modified

Legend:

Unmodified
Added
Removed
  • 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}