mirror of
https://github.com/discourse/discourse.git
synced 2025-05-22 22:43:33 +08:00
FEATURE: Add page title to 404 pages (#16846)
The title had to be added both on the 404 page generated by the server side, displayed when the user reaches a bad page directly and the 404 page rendered by Ember when a user reaches a missing topic while navigating the forum.
This commit is contained in:
@ -1226,6 +1226,7 @@ export default RestModel.extend({
|
|||||||
|
|
||||||
const json = error.jqXHR.responseJSON;
|
const json = error.jqXHR.responseJSON;
|
||||||
if (json && json.extras && json.extras.html) {
|
if (json && json.extras && json.extras.html) {
|
||||||
|
topic.set("errorTitle", json.extras.title);
|
||||||
topic.set("errorHtml", json.extras.html);
|
topic.set("errorHtml", json.extras.html);
|
||||||
} else {
|
} else {
|
||||||
topic.set("errorMessage", I18n.t("topic.server_error.description"));
|
topic.set("errorMessage", I18n.t("topic.server_error.description"));
|
||||||
|
@ -36,6 +36,10 @@ const TopicRoute = DiscourseRoute.extend({
|
|||||||
titleToken() {
|
titleToken() {
|
||||||
const model = this.modelFor("topic");
|
const model = this.modelFor("topic");
|
||||||
if (model) {
|
if (model) {
|
||||||
|
if (model.get("errorHtml")) {
|
||||||
|
return model.get("errorTitle");
|
||||||
|
}
|
||||||
|
|
||||||
const result = model.get("unicode_title") || model.get("title"),
|
const result = model.get("unicode_title") || model.get("title"),
|
||||||
cat = model.get("category");
|
cat = model.get("category");
|
||||||
|
|
||||||
|
@ -321,7 +321,11 @@ class ApplicationController < ActionController::Base
|
|||||||
with_resolved_locale(check_current_user: false) do
|
with_resolved_locale(check_current_user: false) do
|
||||||
# Include error in HTML format for topics#show.
|
# Include error in HTML format for topics#show.
|
||||||
if (request.params[:controller] == 'topics' && request.params[:action] == 'show') || (request.params[:controller] == 'categories' && request.params[:action] == 'find_by_slug')
|
if (request.params[:controller] == 'topics' && request.params[:action] == 'show') || (request.params[:controller] == 'categories' && request.params[:action] == 'find_by_slug')
|
||||||
opts[:extras] = { html: build_not_found_page(error_page_opts), group: error_page_opts[:group] }
|
opts[:extras] = {
|
||||||
|
title: I18n.t('page_not_found.page_title'),
|
||||||
|
html: build_not_found_page(error_page_opts),
|
||||||
|
group: error_page_opts[:group]
|
||||||
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -896,6 +900,7 @@ class ApplicationController < ActionController::Base
|
|||||||
end
|
end
|
||||||
|
|
||||||
@container_class = "wrap not-found-container"
|
@container_class = "wrap not-found-container"
|
||||||
|
@page_title = I18n.t("page_not_found.page_title")
|
||||||
@title = opts[:title] || I18n.t("page_not_found.title")
|
@title = opts[:title] || I18n.t("page_not_found.title")
|
||||||
@group = opts[:group]
|
@group = opts[:group]
|
||||||
@hide_search = true if SiteSetting.login_required
|
@hide_search = true if SiteSetting.login_required
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
<% content_for :title do %><%= @page_title %> - <%= SiteSetting.title %><% end %>
|
||||||
|
|
||||||
<div class="page-not-found">
|
<div class="page-not-found">
|
||||||
<h1 class="title"><%= @title %></h1>
|
<h1 class="title"><%= @title %></h1>
|
||||||
|
|
||||||
|
@ -4065,6 +4065,7 @@ en:
|
|||||||
site_setting_missing: "`%{name}` site setting has to be set."
|
site_setting_missing: "`%{name}` site setting has to be set."
|
||||||
|
|
||||||
page_not_found:
|
page_not_found:
|
||||||
|
page_title: "Page Not Found"
|
||||||
title: "Oops! That page doesn’t exist or is private."
|
title: "Oops! That page doesn’t exist or is private."
|
||||||
popular_topics: "Popular"
|
popular_topics: "Popular"
|
||||||
recent_topics: "Recent"
|
recent_topics: "Recent"
|
||||||
|
@ -7,6 +7,11 @@ RSpec.describe ExceptionsController do
|
|||||||
|
|
||||||
expect(response.status).to eq(404)
|
expect(response.status).to eq(404)
|
||||||
|
|
||||||
|
expect(response.body).to have_tag(
|
||||||
|
"title",
|
||||||
|
text: "#{I18n.t("page_not_found.page_title")} - #{SiteSetting.title}"
|
||||||
|
)
|
||||||
|
|
||||||
expect(response.body).to have_tag(
|
expect(response.body).to have_tag(
|
||||||
"img",
|
"img",
|
||||||
with: {
|
with: {
|
||||||
|
Reference in New Issue
Block a user