diff --git a/lib/App/Netdisco/Web.pm b/lib/App/Netdisco/Web.pm index a8d0639e..8d47aab8 100644 --- a/lib/App/Netdisco/Web.pm +++ b/lib/App/Netdisco/Web.pm @@ -110,7 +110,8 @@ hook 'before' => sub { hook 'before_template' => sub { # search or report from navbar, or reset of sidebar, can ignore params - return if param('firstsearch'); + return if param('firstsearch') + or var('sidebar_key') !~ m/^\w+_\w+$/; # update defaults to contain the passed url params # (this follows initial copy from config.yml, then cookie restore) @@ -118,30 +119,9 @@ hook 'before_template' => sub { for keys %{ var('sidebar_defaults')->{var('sidebar_key')} || {} }; }; -# this hook should be loaded _after_ all plugins hook 'before_template' => sub { my $tokens = shift; - - # allow portable static content - $tokens->{uri_base} = request->base->path - if request->base->path ne '/'; - - # allow portable dynamic content - $tokens->{uri_for} = sub { uri_for(@_)->path_query }; - - # access to logged in user's roles - $tokens->{user_has_role} = sub { user_has_role(@_) }; - - # create date ranges from within templates - $tokens->{to_daterange} = sub { interval_to_daterange(@_) }; - - # data structure for DataTables records per page menu - $tokens->{table_showrecordsmenu} = - to_json( setting('table_showrecordsmenu') ); - - # defaults for the current sidebar form fields - $tokens->{sidebar_defaults} = - var('sidebar_defaults')->{var('sidebar_key')}; + return unless var('sidebar_key') =~ m/^\w+_\w+$/; # linked searches will use these default url path params foreach my $sidebar_key (keys %{ var('sidebar_defaults') }) { @@ -165,6 +145,28 @@ hook 'before_template' => sub { # helper from NetAddr::MAC for the MAC formatting $tokens->{mac_format_call} = 'as_'. lc(param('mac_format')) if param('mac_format'); +}; + +# this hook should be loaded _after_ all plugins +hook 'before_template' => sub { + my $tokens = shift; + + # allow portable static content + $tokens->{uri_base} = request->base->path + if request->base->path ne '/'; + + # allow portable dynamic content + $tokens->{uri_for} = sub { uri_for(@_)->path_query }; + + # access to logged in user's roles + $tokens->{user_has_role} = sub { user_has_role(@_) }; + + # create date ranges from within templates + $tokens->{to_daterange} = sub { interval_to_daterange(@_) }; + + # data structure for DataTables records per page menu + $tokens->{table_showrecordsmenu} = + to_json( setting('table_showrecordsmenu') ); # allow very long lists of ports $Template::Directive::WHILE_MAX = 10_000; diff --git a/lib/App/Netdisco/Web/Device.pm b/lib/App/Netdisco/Web/Device.pm index ee06e551..bf411c0b 100644 --- a/lib/App/Netdisco/Web/Device.pm +++ b/lib/App/Netdisco/Web/Device.pm @@ -16,6 +16,9 @@ set('connected_properties' => [ ]); hook 'before_template' => sub { + my $defaults = var('sidebar_defaults')->{'device_ports'} + or return; + # override ports form defaults with cookie settings # always do this so that embedded links to device ports page have user prefs if (param('reset')) { @@ -23,9 +26,8 @@ hook 'before_template' => sub { } elsif (my $cookie = cookie('nd_ports-form')) { my $cdata = url_params_mixed($cookie); - my $defaults = var('sidebar_defaults')->{'device_ports'}; - if ($cdata and (ref {} eq ref $cdata) and $defaults) { + if ($cdata and (ref {} eq ref $cdata)) { foreach my $key (keys %{ $defaults }) { $defaults->{$key} = $cdata->{$key}; } @@ -37,8 +39,8 @@ hook 'before_template' => sub { # update cookie from params we just recieved in form submit my $uri = URI->new(); - foreach my $key (keys %{ var('sidebar_defaults')->{'device_ports'} }) { - $uri->query_param($key => param($key)) if exists params->{$key}; + foreach my $key (keys %{ $defaults }) { + $uri->query_param($key => param($key)); } cookie('nd_ports-form' => $uri->query(), expires => '365 days'); }; diff --git a/share/views/sidebar/device/ports.tt b/share/views/sidebar/device/ports.tt index 9fe12a31..c47357ea 100644 --- a/share/views/sidebar/device/ports.tt +++ b/share/views/sidebar/device/ports.tt @@ -62,7 +62,7 @@
  • @@ -126,7 +126,7 @@ MAC address format:
    @@ -134,7 +134,7 @@
  • diff --git a/share/views/sidebar/report/moduleinventory.tt b/share/views/sidebar/report/moduleinventory.tt index 4dbd8efe..475ee388 100644 --- a/share/views/sidebar/report/moduleinventory.tt +++ b/share/views/sidebar/report/moduleinventory.tt @@ -58,7 +58,7 @@