complete defaults into templates, attempt to set cookie in handler

This commit is contained in:
Oliver Gorwits
2017-12-10 18:09:10 +00:00
parent 88cb2b0b06
commit 53358c5311
10 changed files with 38 additions and 39 deletions

View File

@@ -81,11 +81,14 @@ hook 'before' => sub {
$key =~ s|.*/(\w+)/(\w+)$|${1}_${2}|;
vars->{'sidebar_key'} = $key;
# search or report from navbar can ignore params
return if param('firstsearch');
my $defaults = dclone (setting('sidebar_defaults')->{$key} or return);
push @{ vars->{'guards'} },
guard { setting('sidebar_defaults')->{$key} = $defaults };
# new searches will use these defaults in their sidebars
# otherwise update defaults to contain the passed url params
setting('sidebar_defaults')->{$key}->{$_}->{'default'} = params->{$_}
for keys %{ $defaults };
};
@@ -126,6 +129,7 @@ hook 'before_template' => sub {
$tokens->{$sidebar_key}->query_param($col,
setting('sidebar_defaults')->{$sidebar_key}->{$col}->{'default'});
# used by the sidebar templates when first rendering
$tokens->{"${sidebar_key}_defaults"}->{$col}
= setting('sidebar_defaults')->{$sidebar_key}->{$col}->{'default'};
}

View File

@@ -5,6 +5,7 @@ use Dancer::Plugin::Ajax;
use Dancer::Plugin::DBIC;
use Dancer::Plugin::Auth::Extensible;
use URI ();
use Storable 'dclone';
use Scope::Guard 'guard';
use URL::Encode 'url_params_mixed';
@@ -50,20 +51,22 @@ hook 'before' => sub {
push @{ vars->{'guards'} },
guard { setting('sidebar_defaults')->{'device_ports'} = $defaults };
foreach my $key (keys %{ setting('sidebar_defaults')->{'device_ports'} }) {
next unless defined $cdata->{$key}
and $cdata->{$key} =~ m/^[[:alnum:]_]+$/;
foreach my $key (keys %{ $defaults }) {
setting('sidebar_defaults')->{'device_ports'}->{$key}->{'default'}
= $cdata->{$key};
}
}
}
};
return unless (request->path eq uri_for('/device')->path
or index(request->path, uri_for('/ajax/content/device')->path) == 0);
hook 'before_template' => sub {
return unless var('sidebar_key') and (var('sidebar_key') eq 'device_ports');
# TODO set cookie
# if (param('reset') or not param('tab') or param('tab') ne 'ports') {
my $uri = URI->new();
foreach my $key (keys %{ setting('sidebar_defaults')->{'device_ports'} }) {
$uri->query_param($key => params->{$key}) if params->{$key};
}
cookie('nd_ports-form' => $uri->query(), expires => '365 days');
};
get '/device' => require_login sub {