From 197cb64451b64397d5853f3dbe2b2f49b10daed5 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Sun, 17 Dec 2017 17:13:30 +0100 Subject: Allow saving default options in client-side cookie --- index.pl | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'index.pl') diff --git a/index.pl b/index.pl index 3ec36cb..f2dca8c 100644 --- a/index.pl +++ b/index.pl @@ -321,6 +321,7 @@ sub handle_request { my $apiver = $self->param('version') // 0; my $callback = $self->param('callback'); my $with_related = !$self->param('no_related'); + my $save_defaults = $self->param('save_defaults') // 0; my @train_types = split( /,/, $self->param('train_types') // q{} ); my %opt; @@ -329,6 +330,16 @@ sub handle_request { ? $Travel::Status::DE::IRIS::VERSION : $Travel::Status::DE::HAFAS::VERSION; + if ($save_defaults) { + $self->session( has_data => 1 ); + $self->session( mode => $template ); + $self->session( hidelowdelay => $hide_low_delay ); + $self->session( hide_opts => $hide_opts ); + $self->session( show_realtime => $show_realtime ); + $self->session( admode => $admode ); + $self->session( no_related => !$with_related ); + } + $self->stash( departures => [] ); $self->stash( title => 'db-infoscreen' ); $self->stash( version => $VERSION ); @@ -344,6 +355,13 @@ sub handle_request { } if ( not $station ) { + if ( $self->session('has_data') ) { + for my $param ( + qw(mode hidelowdelay hide_opts show_realtime admode no_related)) + { + $self->param( $param => $self->session($param) ); + } + } $self->render( 'landingpage', hide_opts => 0, @@ -963,6 +981,7 @@ post '/_geolocation' => sub { }; app->defaults( layout => 'default' ); +app->sessions->default_expiration( 3600 * 24 * 28 ); get '/' => \&handle_request; get '/multi/*station' => \&handle_request; -- cgit v1.2.3