FEATURE: Link to text customization when editing system badges (#11345)

Being that system badges ship with every instance of Discourse, we've opted to define the name, description, and long description in our locales files to promote translation into other languages. When an admin visited the overview page of a system badge in their admin panel, they were met with disabled inputs for these text properties. The problem is that we failed to educate the admin that the text needs to be managed via the site text customization settings. 

This change adds a small "Customize Text" link under theses inputs that takes the admin to the specific site text customization where they can make desired changes.
This commit is contained in:
tshenry 2020-12-08 11:55:49 -08:00 committed by GitHub
parent 3e1b84963d
commit a446e0fde1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 30 additions and 5 deletions

View File

@ -56,6 +56,11 @@ export default Controller.extend(bufferedProperty("model"), {
return modelQuery && modelQuery.trim().length > 0;
},
@discourseComputed("model.i18n_name")
textCustomizationPrefix(i18n_name) {
return `badges.${i18n_name}.`;
},
@observes("model.id")
_resetSaving: function () {
this.set("saving", false);

View File

@ -4,6 +4,11 @@
<label for="name">{{i18n "admin.badges.name"}}</label>
{{#if readOnly}}
{{input type="text" name="name" value=buffered.name disabled=true}}
<p class="help">
{{#link-to "adminSiteText.edit" (concat textCustomizationPrefix "name")}}
{{i18n "admin.badges.read_only_setting_help"}}
{{/link-to}}
</p>
{{else}}
{{input type="text" name="name" value=buffered.name}}
{{/if}}
@ -64,6 +69,11 @@
<label for="description">{{i18n "admin.badges.description"}}</label>
{{#if buffered.system}}
{{textarea name="description" value=buffered.description disabled=true}}
<p class="help">
{{#link-to "adminSiteText.edit" (concat textCustomizationPrefix "description")}}
{{i18n "admin.badges.read_only_setting_help"}}
{{/link-to}}
</p>
{{else}}
{{textarea name="description" value=buffered.description}}
{{/if}}
@ -73,6 +83,11 @@
<label for="long_description">{{i18n "admin.badges.long_description"}}</label>
{{#if buffered.system}}
{{textarea name="long_description" value=buffered.long_description disabled=true}}
<p class="help">
{{#link-to "adminSiteText.edit" (concat textCustomizationPrefix "long_description")}}
{{i18n "admin.badges.read_only_setting_help"}}
{{/link-to}}
</p>
{{else}}
{{textarea name="long_description" value=buffered.long_description}}
{{/if}}

View File

@ -289,15 +289,15 @@ class Badge < ActiveRecord::Base
query.blank? && !system?
end
def i18n_name
@i18n_name ||= self.class.i18n_name(name)
end
protected
def ensure_not_system
self.id = [Badge.maximum(:id) + 1, 100].max unless id
end
def i18n_name
@i18n_name ||= self.class.i18n_name(name)
end
end
# == Schema Information

View File

@ -1,9 +1,13 @@
# frozen_string_literal: true
class AdminBadgeSerializer < BadgeSerializer
attributes :query, :trigger, :target_posts, :auto_revoke, :show_posts
attributes :query, :trigger, :target_posts, :auto_revoke, :show_posts, :i18n_name
def include_long_description?
true
end
def include_i18n_name?
object.system?
end
end

View File

@ -4889,6 +4889,7 @@ en:
image: Image
icon_help: "Enter a Font Awesome icon name (use prefix 'far-' for regular icons and 'fab-' for brand icons)"
image_help: "Enter the URL of the image (overrides icon field if both are set)"
read_only_setting_help: "Customize text"
query: Badge Query (SQL)
target_posts: Query targets posts
auto_revoke: Run revocation query daily