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 +++++++++++++++++++ templates/layouts/default.html.ep | 8 ++++++++ 2 files changed, 27 insertions(+) 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; diff --git a/templates/layouts/default.html.ep b/templates/layouts/default.html.ep index 54bda52..4a0e616 100644 --- a/templates/layouts/default.html.ep +++ b/templates/layouts/default.html.ep @@ -146,6 +146,14 @@ Bitte eine Station aus der Liste auswählen +
+
+ %= check_box 'save_defaults' => 1, id => 'id_save_defaults' + +
+
%= submit_button 'Anzeigen'
-- cgit v1.2.3