mirror of
https://github.com/discourse/discourse.git
synced 2025-05-24 23:24:10 +08:00
FIX: Display Google search form when 404 page is rendered by Ember.
This commit is contained in:
@ -1,20 +1,21 @@
|
|||||||
class ExceptionsController < ApplicationController
|
class ExceptionsController < ApplicationController
|
||||||
skip_before_filter :check_xhr, :preload_json
|
skip_before_filter :check_xhr, :preload_json
|
||||||
|
before_action :hide_google
|
||||||
|
|
||||||
def not_found
|
def not_found
|
||||||
@hide_google = true if SiteSetting.login_required
|
|
||||||
|
|
||||||
# centralize all rendering of 404 into app controller
|
# centralize all rendering of 404 into app controller
|
||||||
raise Discourse::NotFound
|
raise Discourse::NotFound
|
||||||
end
|
end
|
||||||
|
|
||||||
# Give us an endpoint to use for 404 content in the ember app
|
# Give us an endpoint to use for 404 content in the ember app
|
||||||
def not_found_body
|
def not_found_body
|
||||||
|
|
||||||
# Don't show google search if it's embedded in the Ember app
|
|
||||||
@hide_google = true
|
|
||||||
|
|
||||||
render html: build_not_found_page(200, false)
|
render html: build_not_found_page(200, false)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def hide_google
|
||||||
|
@hide_google = true if SiteSetting.login_required
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
@ -30,9 +30,9 @@
|
|||||||
<div class="span10 page-not-found-search">
|
<div class="span10 page-not-found-search">
|
||||||
<h2><%= t 'page_not_found.search_title' %></h2>
|
<h2><%= t 'page_not_found.search_title' %></h2>
|
||||||
<p>
|
<p>
|
||||||
<form action='//google.com/search' id='google-search' onsubmit="return google_button_clicked()">
|
<form action='//google.com/search' id='google-search'>
|
||||||
<input type="text" id='user-query' value="<%= @slug %>">
|
<input type="text" name="q" value="<%= @slug %>">
|
||||||
<input type='hidden' id='google-query' name="q">
|
<input type='hidden'name="as_sitesearch" value="<%= local_domain %>">
|
||||||
<button class="btn btn-primary"><%= t 'page_not_found.search_google' %></button>
|
<button class="btn btn-primary"><%= t 'page_not_found.search_google' %></button>
|
||||||
</form>
|
</form>
|
||||||
</p>
|
</p>
|
||||||
@ -40,12 +40,6 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script language="Javascript">
|
<script language="Javascript">
|
||||||
function google_button_clicked(e) {
|
|
||||||
var searchValue = document.getElementById('user-query').value;
|
|
||||||
document.getElementById('google-query').value = 'site:<%= local_domain %> ' + searchValue;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
window.onpopstate = function(event) {
|
window.onpopstate = function(event) {
|
||||||
if (event.state && !window.hasOwnProperty("Discourse")) { //check if Discourse object exists if not take care of back navigation
|
if (event.state && !window.hasOwnProperty("Discourse")) { //check if Discourse object exists if not take care of back navigation
|
||||||
window.location = document.location;
|
window.location = document.location;
|
||||||
|
Reference in New Issue
Block a user