UX: Add group name to error message (#11333)

The group name used to be part of the error message, but was removed
in a past commit.
This commit is contained in:
Dan Ungureanu 2020-11-24 13:06:52 +02:00 committed by GitHub
parent 2742595b00
commit 123107c28f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 29 additions and 1 deletions

View File

@ -207,6 +207,7 @@ class ApplicationController < ActionController::Base
403,
include_ember: true,
custom_message: e.custom_message,
custom_message_params: e.custom_message_params,
group: e.group
)
end

View File

@ -112,6 +112,7 @@ class TopicsController < ApplicationController
'not in group',
ex.obj,
custom_message: 'not_in_group.title_topic',
custom_message_params: { group: group.name },
group: group
)
end

View File

@ -281,7 +281,7 @@ en:
email_template_cant_be_modified: "This email template can't be modified"
invalid_whisper_access: "Either whispers are not enabled or you do not have access to create whisper posts"
not_in_group:
title_topic: "You must be in a group to see this topic."
title_topic: "You need to request membership to the '%{group}' group to see this topic."
title_category: "You must be in a group to see this category."
request_membership: "Request Membership"
join_group: "Join Group"

View File

@ -142,6 +142,7 @@ module Discourse
attr_reader :obj
attr_reader :opts
attr_reader :custom_message
attr_reader :custom_message_params
attr_reader :group
def initialize(msg = nil, obj = nil, opts = nil)
@ -150,6 +151,7 @@ module Discourse
@opts = opts || {}
@obj = obj
@custom_message = opts[:custom_message] if @opts[:custom_message]
@custom_message_params = opts[:custom_message_params] if @opts[:custom_message_params]
@group = opts[:group] if @opts[:group]
end
end

View File

@ -1584,6 +1584,30 @@ RSpec.describe TopicsController do
end
end
describe 'when topic is allowed to a group' do
let(:group) { Fabricate(:group, public_admission: true) }
let(:category) do
Fabricate(:category_with_definition).tap do |category|
category.set_permissions(group => :full)
category.save!
end
end
let(:topic) { Fabricate(:topic, category: category) }
before do
SiteSetting.detailed_404 = true
end
it 'shows a descriptive error message containing the group name' do
get "/t/#{topic.id}.json"
html = CGI.unescapeHTML(response.parsed_body["extras"]["html"])
expect(response.status).to eq(403)
expect(html).to include(I18n.t('not_in_group.title_topic', group: group.name))
expect(html).to include(I18n.t('not_in_group.join_group'))
end
end
it 'correctly renders canoicals' do
get "/t/#{topic.id}", params: { slug: topic.slug }