Fixes #577.
Unified · Split
| @@ -229,6 +229,7 @@ class App < Sinatra::Application · 228 unmodified lines | ||
| 229 | 229 | end |
| 230 | 230 | |
| 231 | 231 | get '/' do |
| 232 | + return redirect "/#q=#{params[:q]}" if params[:q] | |
| 232 | 233 | return redirect '/' unless request.query_string.empty? # courtesy of HTML5 App Cache |
| 233 | 234 | response.headers['Content-Security-Policy'] = settings.csp if settings.csp |
| 234 | 235 | erb :index |
| @@ -17,6 +17,12 @@ class AppTest < MiniTest::Spec · 16 unmodified lines | ||
| 17 | 17 | assert last_response.ok? |
| 18 | 18 | end |
| 19 | 19 | |
| 20 | + it "redirects to /#q= when there is a 'q' query param" do | |
| 21 | + get '/search', q: 'foo' | |
| 22 | + assert last_response.redirect? | |
| 23 | + assert_equal 'http://example.org/#q=foo', last_response['Location'] | |
| 24 | + end | |
| 25 | + | |
| 20 | 26 | it "redirects without the query string" do |
| 21 | 27 | get '/', foo: 'bar' |
| 22 | 28 | assert last_response.redirect? |
| @@ -5,7 +5,7 @@ · 4 unmodified lines | ||
| 5 | 5 | <button type="button" class="_mobile-btn _menu-btn">Menu</button> |
| 6 | 6 | <button type="button" class="_mobile-btn _home-btn">Home</button> |
| 7 | 7 | <form class="_search" role="search"> |
| 8 | − <input type="search" class="_search-input" placeholder="Search…" autocomplete="off" autocapitalize="off" autocorrect="off" spellcheck="false" maxlength="30" aria-label="Search"> | |
| 8 | + <input type="search" name="q" class="_search-input" placeholder="Search…" autocomplete="off" autocapitalize="off" autocorrect="off" spellcheck="false" maxlength="30" aria-label="Search"> | |
| 9 | 9 | <button type="reset" class="_search-clear" title="Clear search">Clear search</button> |
| 10 | 10 | <div class="_search-tag"></div> |
| 11 | 11 | </form> |