UX: Replace Google search with Discourse search on not found page

* UX: Replace Google search with Discourse search on not found page.

* FIX: Update application_controller_spec.rb.
This commit is contained in:
Misaka 0x4e21 2018-08-15 09:53:04 +08:00 committed by Sam
parent 06f82a7d72
commit d4fd19d49a
5 changed files with 9 additions and 10 deletions

View File

@ -700,7 +700,7 @@ class ApplicationController < ActionController::Base
@slug = params[:slug].class == String ? params[:slug] : ''
@slug = (params[:id].class == String ? params[:id] : '') if @slug.blank?
@slug.tr!('-', ' ')
@hide_google = true if SiteSetting.login_required
@hide_search = true if SiteSetting.login_required
render_to_string status: status, layout: layout, formats: [:html], template: '/exceptions/not_found'
end

View File

@ -1,6 +1,6 @@
class ExceptionsController < ApplicationController
skip_before_action :check_xhr, :preload_json
before_action :hide_google
before_action :hide_search
def not_found
# centralize all rendering of 404 into app controller
@ -14,8 +14,8 @@ class ExceptionsController < ApplicationController
private
def hide_google
@hide_google = true if SiteSetting.login_required
def hide_search
@hide_search = true if SiteSetting.login_required
end
end

View File

@ -25,15 +25,14 @@
</div>
<% end %>
<%- unless @hide_google %>
<%- unless @hide_search%>
<div class="row">
<div class="page-not-found-search">
<h2><%= t 'page_not_found.search_title' %></h2>
<p>
<form action='//google.com/search' id='google-search'>
<form action='/search' id='discourse-search'>
<input type="text" name="q" value="<%= @slug %>">
<input type='hidden' name="as_sitesearch" value="<%= Discourse.base_url %>">
<button class="btn btn-primary"><%= t 'page_not_found.search_google' %></button>
<button class="btn btn-primary"><%= t 'page_not_found.search_button' %></button>
</form>
</p>
</div>

View File

@ -3165,7 +3165,7 @@ en:
recent_topics: "Recent"
see_more: "More"
search_title: "Search this site"
search_google: "Google"
search_button: "Search"
offline:
title: "Cannot load app"

View File

@ -68,7 +68,7 @@ RSpec.describe ApplicationController do
it 'should return 404 and show Google search' do
get "/t/nope-nope/99999999"
expect(response.status).to eq(404)
expect(response.body).to include(I18n.t('page_not_found.search_google'))
expect(response.body).to include(I18n.t('page_not_found.search_button'))
end
it 'should not include Google search if login_required is enabled' do