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:
Bianca Nenciu 2022-05-17 18:37:43 +03:00 committed by GitHub
parent 0feffa6f88
commit 985afe1092
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 19 additions and 1 deletions

View File

@ -1226,6 +1226,7 @@ export default RestModel.extend({
const json = error.jqXHR.responseJSON;
if (json && json.extras && json.extras.html) {
topic.set("errorTitle", json.extras.title);
topic.set("errorHtml", json.extras.html);
} else {
topic.set("errorMessage", I18n.t("topic.server_error.description"));

View File

@ -36,6 +36,10 @@ const TopicRoute = DiscourseRoute.extend({
titleToken() {
const model = this.modelFor("topic");
if (model) {
if (model.get("errorHtml")) {
return model.get("errorTitle");
}
const result = model.get("unicode_title") || model.get("title"),
cat = model.get("category");

View File

@ -321,7 +321,11 @@ class ApplicationController < ActionController::Base
with_resolved_locale(check_current_user: false) do
# 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')
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
@ -896,6 +900,7 @@ class ApplicationController < ActionController::Base
end
@container_class = "wrap not-found-container"
@page_title = I18n.t("page_not_found.page_title")
@title = opts[:title] || I18n.t("page_not_found.title")
@group = opts[:group]
@hide_search = true if SiteSetting.login_required

View File

@ -1,3 +1,5 @@
<% content_for :title do %><%= @page_title %> - <%= SiteSetting.title %><% end %>
<div class="page-not-found">
<h1 class="title"><%= @title %></h1>

View File

@ -4065,6 +4065,7 @@ en:
site_setting_missing: "`%{name}` site setting has to be set."
page_not_found:
page_title: "Page Not Found"
title: "Oops! That page doesnt exist or is private."
popular_topics: "Popular"
recent_topics: "Recent"

View File

@ -7,6 +7,11 @@ RSpec.describe ExceptionsController do
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(
"img",
with: {