From 05559f583fcab1d9a7ab9c9697a0bf7a840aa72b Mon Sep 17 00:00:00 2001 From: Oliver Gorwits Date: Mon, 9 Jan 2012 09:14:22 +0000 Subject: [PATCH] implement query string for device search opts --- Netdisco/lib/Netdisco/Web.pm | 16 ++++++++++++---- Netdisco/views/ajax/device/details.tt | 14 ++++++++++---- Netdisco/views/inc/search/device.tt | 6 +++--- 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/Netdisco/lib/Netdisco/Web.pm b/Netdisco/lib/Netdisco/Web.pm index 11ce7908..f65a45d0 100644 --- a/Netdisco/lib/Netdisco/Web.pm +++ b/Netdisco/lib/Netdisco/Web.pm @@ -18,19 +18,27 @@ hook 'before' => sub { #request->path_info('/'); } + # make hash lookups of query lists + foreach my $opt (qw/model vendor os_ver/) { + my $p = (ref '' eq ref param($opt) ? [param($opt)] : param($opt)); + var("${opt}_lkp" => { map { $_ => 1 } @$p }); + } + # set up default search options for each type if (not param('tab') or param('tab') ne 'node') { params->{'stamps'} = 'checked'; } if (not param('tab') or param('tab') ne 'device') { - params->{'matchall'} = 'matchall'; + params->{'matchall'} = 'checked'; } - # set up query string defaults, - # only for templates which link to themselves (node) - var('query_defaults' => { map { ($_ => "tab=$_") } qw/node/ }); + # set up query string defaults for hyperlinks to templates with forms + var('query_defaults' => { map { ($_ => "tab=$_") } qw/node device/ }); + var('query_defaults')->{node} .= "\&$_=". (param($_) || '') for qw/stamps vendor archived partial/; + var('query_defaults')->{device} .= "\&$_=". (param($_) || '') + for qw/matchall/; }; ajax '/ajax/content/device/:thing' => sub { diff --git a/Netdisco/views/ajax/device/details.tt b/Netdisco/views/ajax/device/details.tt index eaf0bf19..417664d3 100644 --- a/Netdisco/views/ajax/device/details.tt +++ b/Netdisco/views/ajax/device/details.tt @@ -8,23 +8,29 @@ Location [% d.location %] + href="/search?[% vars.query_defaults.device %]&q=[% d.dns | uri %]&location=[% d.location | uri %]">[% d.location %] + Contact [% d.contact %] - Model + Vendor / Model [% d.model %] + href="/search?[% vars.query_defaults.device %]&q=[% d.dns | uri %]&vendor=[% d.vendor | uri %]">[% d.vendor %] + / + [% d.model %] + OS / Version [% d.os %] / [% d.os_ver %] + title="Find Similar Devices" + href="/search?[% vars.query_defaults.device %]&q=[% d.dns | uri %]&os_ver=[% d.os_ver | uri %]">[% d.os_ver %] diff --git a/Netdisco/views/inc/search/device.tt b/Netdisco/views/inc/search/device.tt index b4adc672..e8bab501 100644 --- a/Netdisco/views/inc/search/device.tt +++ b/Netdisco/views/inc/search/device.tt @@ -30,7 +30,7 @@ multiple="on" id="model" name="model" rel="twipsy" data-placement="right" data-offset="5" title="Model"/> [% FOREACH opt IN vars.model_list %] - + [% opt %] [% END %] @@ -39,7 +39,7 @@ multiple="on" id="os_ver" name="os_ver" rel="twipsy" data-placement="right" data-offset="5" title="OS Release"/> [% FOREACH opt IN vars.os_ver_list %] - + [% opt %] [% END %] @@ -48,7 +48,7 @@ multiple="on" id="vendor" name="vendor" rel="twipsy" data-placement="right" data-offset="5" title="Vendor"/> [% FOREACH opt IN vars.vendor_list %] - + [% opt %] [% END %]