implement tabbed search
This commit is contained in:
		| @@ -1,13 +1,15 @@ | ||||
| package Netdisco; | ||||
|  | ||||
| use Dancer ':syntax'; | ||||
| use Dancer::Plugin::Ajax; | ||||
| use Dancer::Plugin::Database; | ||||
| use Digest::MD5 (); | ||||
|  | ||||
| hook 'before' => sub { | ||||
|     if (! session('user') && request->path !~ m{^/login}) { | ||||
|         var(requested_path => request->path); | ||||
|         request->path_info('/'); | ||||
|         session(user => 'oliver'); # XXX | ||||
|         #var(requested_path => request->path); | ||||
|         #request->path_info('/'); | ||||
|     } | ||||
| }; | ||||
|  | ||||
| @@ -15,6 +17,35 @@ get '/' => sub { | ||||
|     template 'index'; | ||||
| }; | ||||
|  | ||||
| ajax '/ajax/content/search/:thing' => sub { | ||||
|     return ''; | ||||
| }; | ||||
|  | ||||
| post '/search' => sub { | ||||
|     my $q = param('q'); | ||||
|     if ($q and not param('tab')) { | ||||
|         # pick most likely tab for initial results | ||||
|         if ($q =~ m/^\d+$/) { | ||||
|             params->{'tab'} = 'vlan'; | ||||
|         } | ||||
|         else { | ||||
|             params->{'tab'} = 'device'; | ||||
|         } | ||||
|     } | ||||
|     elsif (not $q) { | ||||
|         redirect '/'; | ||||
|         return; | ||||
|     } | ||||
|  | ||||
|     # set up default search options for each type | ||||
|     if (param('tab') and param('tab') ne 'node') { | ||||
|         params->{'stamps'} = 'checked'; | ||||
|         params->{'vendor'} = 'checked'; | ||||
|     } | ||||
|  | ||||
|     template 'search'; | ||||
| }; | ||||
|  | ||||
| post '/login' => sub { | ||||
|     if (param('username') and param('password')) { | ||||
|         my $user = database->quick_select('users', | ||||
| @@ -38,7 +69,9 @@ get '/logout' => sub { | ||||
| }; | ||||
|  | ||||
| any qr{.*} => sub { | ||||
|     redirect '/?notfound=1'; | ||||
|     var('notfound' => true); | ||||
|     status 'not_found'; | ||||
|     template 'index'; | ||||
| }; | ||||
|  | ||||
| true; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user