implement query string for device search opts

This commit is contained in:
Oliver Gorwits
2012-01-09 09:14:22 +00:00
parent a33c25b67b
commit 05559f583f
3 changed files with 25 additions and 11 deletions

View File

@@ -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 {

View File

@@ -8,23 +8,29 @@
<td>Location</td>
<td>
<a rel="twipsy" data-placement="above" data-offset="5" title="Find Similar Devices"
href="/search?tab=device&q=[% d.dns | uri %]&location=[% d.location | uri %]">[% d.location %]</a></td>
href="/search?[% vars.query_defaults.device %]&q=[% d.dns | uri %]&location=[% d.location | uri %]">[% d.location %]</a>
</td>
</tr>
<tr>
<td>Contact</td>
<td>[% d.contact %]</td>
</tr>
<tr>
<td>Model</td>
<td>Vendor / Model</td>
<td>
<a rel="twipsy" data-placement="above" data-offset="5" title="Find Similar Devices"
href="/search?tab=device&q=[% d.dns | uri %]&model=[% d.model | uri %]">[% d.model %]</a></td>
href="/search?[% vars.query_defaults.device %]&q=[% d.dns | uri %]&vendor=[% d.vendor | uri %]">[% d.vendor %]</a>
/
<a rel="twipsy" data-placement="above" data-offset="5" title="Find Similar Devices"
href="/search?[% vars.query_defaults.device %]&q=[% d.dns | uri %]&model=[% d.model | uri %]">[% d.model %]</a>
</td>
</tr>
<tr>
<td>OS / Version</td>
<td>[% d.os %] /
<a rel="twipsy" data-placement="above" data-offset="5"
title="Find Similar Devices" href="/search?tab=device&q=[% d.dns | uri %]&os_ver=[% d.os_ver | uri %]">[% d.os_ver %]</a>
title="Find Similar Devices"
href="/search?[% vars.query_defaults.device %]&q=[% d.dns | uri %]&os_ver=[% d.os_ver | uri %]">[% d.os_ver %]</a>
</td>
</tr>
<tr>

View File

@@ -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 %]
<option>[% opt %]</option>
<option[% ' selected="selected"' IF vars.model_lkp.exists(opt) %]>[% opt %]</option>
[% END %]
</select>
</div>
@@ -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 %]
<option>[% opt %]</option>
<option[% ' selected="selected"' IF vars.os_ver_lkp.exists(opt) %]>[% opt %]</option>
[% END %]
</select>
</div>
@@ -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 %]
<option>[% opt %]</option>
<option[% ' selected="selected"' IF vars.vendor_lkp.exists(opt) %]>[% opt %]</option>
[% END %]
</select>
</div>