diff --git a/Changes b/Changes index 9be70f4e..6470c774 100644 --- a/Changes +++ b/Changes @@ -2,7 +2,9 @@ [ENHANCEMENTS] - * Move DBIC virtual tables into Virtual:: namespace. + * Move DBIC virtual tables into Virtual:: namespace (closes #19) + * Maintain node search options when changing navbar query (closes #27) + * Navbar query for device with single hit redirects to Device details page 0.6 2012-08-28 diff --git a/Netdisco/lib/Netdisco/Web/Search.pm b/Netdisco/lib/Netdisco/Web/Search.pm index e073b11a..e5f134b0 100644 --- a/Netdisco/lib/Netdisco/Web/Search.pm +++ b/Netdisco/lib/Netdisco/Web/Search.pm @@ -210,7 +210,13 @@ get '/search' => sub { my $s = schema('netdisco'); if ($q =~ m{^[a-f0-9.:/]+$}i) { my $ip = NetAddr::IP::Lite->new($q); - if ($ip and $s->resultset('Device')->search_by_field({ip => $q})->count) { + my $nd = $s->resultset('Device')->search_by_field({ip => $q}); + if ($ip and $nd->count) { + if ($nd->count == 1) { + # redirect to device details for the one device + redirect uri_for('/device', + {tab => 'details', q => $q, f => ''}); + } params->{'tab'} = 'device'; } else { @@ -220,8 +226,13 @@ get '/search' => sub { } } else { - if ($s->resultset('Device') - ->search({dns => { '-ilike' => "\%$q\%" }})->count) { + my $nd = $s->resultset('Device')->search({dns => { '-ilike' => "\%$q\%" }}); + if ($nd->count) { + if ($nd->count == 1) { + # redirect to device details for the one device + redirect uri_for('/device', + {tab => 'details', q => $nd->first->ip, f => ''}); + } params->{'tab'} = 'device'; } elsif ($s->resultset('DevicePort')