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('/'); #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 # set up default search options for each type
if (not param('tab') or param('tab') ne 'node') { if (not param('tab') or param('tab') ne 'node') {
params->{'stamps'} = 'checked'; params->{'stamps'} = 'checked';
} }
if (not param('tab') or param('tab') ne 'device') { if (not param('tab') or param('tab') ne 'device') {
params->{'matchall'} = 'matchall'; params->{'matchall'} = 'checked';
} }
# set up query string defaults, # set up query string defaults for hyperlinks to templates with forms
# only for templates which link to themselves (node) var('query_defaults' => { map { ($_ => "tab=$_") } qw/node device/ });
var('query_defaults' => { map { ($_ => "tab=$_") } qw/node/ });
var('query_defaults')->{node} .= "\&$_=". (param($_) || '') var('query_defaults')->{node} .= "\&$_=". (param($_) || '')
for qw/stamps vendor archived partial/; for qw/stamps vendor archived partial/;
var('query_defaults')->{device} .= "\&$_=". (param($_) || '')
for qw/matchall/;
}; };
ajax '/ajax/content/device/:thing' => sub { ajax '/ajax/content/device/:thing' => sub {

View File

@@ -8,23 +8,29 @@
<td>Location</td> <td>Location</td>
<td> <td>
<a rel="twipsy" data-placement="above" data-offset="5" title="Find Similar Devices" <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>
<tr> <tr>
<td>Contact</td> <td>Contact</td>
<td>[% d.contact %]</td> <td>[% d.contact %]</td>
</tr> </tr>
<tr> <tr>
<td>Model</td> <td>Vendor / Model</td>
<td> <td>
<a rel="twipsy" data-placement="above" data-offset="5" title="Find Similar Devices" <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>
<tr> <tr>
<td>OS / Version</td> <td>OS / Version</td>
<td>[% d.os %] / <td>[% d.os %] /
<a rel="twipsy" data-placement="above" data-offset="5" <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> </td>
</tr> </tr>
<tr> <tr>

View File

@@ -30,7 +30,7 @@
multiple="on" id="model" name="model" multiple="on" id="model" name="model"
rel="twipsy" data-placement="right" data-offset="5" title="Model"/> rel="twipsy" data-placement="right" data-offset="5" title="Model"/>
[% FOREACH opt IN vars.model_list %] [% FOREACH opt IN vars.model_list %]
<option>[% opt %]</option> <option[% ' selected="selected"' IF vars.model_lkp.exists(opt) %]>[% opt %]</option>
[% END %] [% END %]
</select> </select>
</div> </div>
@@ -39,7 +39,7 @@
multiple="on" id="os_ver" name="os_ver" multiple="on" id="os_ver" name="os_ver"
rel="twipsy" data-placement="right" data-offset="5" title="OS Release"/> rel="twipsy" data-placement="right" data-offset="5" title="OS Release"/>
[% FOREACH opt IN vars.os_ver_list %] [% FOREACH opt IN vars.os_ver_list %]
<option>[% opt %]</option> <option[% ' selected="selected"' IF vars.os_ver_lkp.exists(opt) %]>[% opt %]</option>
[% END %] [% END %]
</select> </select>
</div> </div>
@@ -48,7 +48,7 @@
multiple="on" id="vendor" name="vendor" multiple="on" id="vendor" name="vendor"
rel="twipsy" data-placement="right" data-offset="5" title="Vendor"/> rel="twipsy" data-placement="right" data-offset="5" title="Vendor"/>
[% FOREACH opt IN vars.vendor_list %] [% FOREACH opt IN vars.vendor_list %]
<option>[% opt %]</option> <option[% ' selected="selected"' IF vars.vendor_lkp.exists(opt) %]>[% opt %]</option>
[% END %] [% END %]
</select> </select>
</div> </div>