FIX: ensures emoji helper is working with custom emojis (#7843)

This commit is contained in:
Joffrey JAFFEUX 2019-07-03 09:23:40 +02:00 committed by GitHub
parent 0733ed3a2b
commit 9ee2c121c1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 19 additions and 3 deletions

View File

@ -7,7 +7,10 @@ module EmojiHelper
str = str.gsub(/:([\w\-+]*(?::t\d)?):/) do |name|
code = $1
if Emoji.exists?(code)
if code && Emoji.custom?(code)
emoji = Emoji[code]
"<img src=\"#{emoji.url}\" title=\"#{code}\" class=\"emoji\" alt=\"#{code}\">"
elsif code && Emoji.exists?(code)
"<img src=\"#{Emoji.url_for(code)}\" title=\"#{code}\" class=\"emoji\" alt=\"#{code}\">"
else
name

View File

@ -38,6 +38,11 @@ class Emoji
Discourse.cache.fetch(cache_key("tonable_emojis")) { db['tonableEmojis'] }
end
def self.custom?(name)
name = name.delete_prefix(':').delete_suffix(':')
Emoji.custom.detect { |e| e.name == name }.present?
end
def self.exists?(name)
Emoji[name].present?
end

View File

@ -19,6 +19,10 @@ class Plugin::CustomEmoji
emojis[name] = url
end
def self.unregister(name)
emojis.delete(name)
end
def self.translations
@@translations ||= {}
end

View File

@ -7,10 +7,14 @@ describe EmojiHelper do
describe "emoji_codes_to_img" do
it "replaces emoji codes by images" do
str = "This is a good day :woman: :man:t4:"
Plugin::CustomEmoji.register("xxxxxx", "/public/xxxxxx.png")
str = "This is a good day :xxxxxx: :woman: :man:t4:"
replaced_str = helper.emoji_codes_to_img(str)
expect(replaced_str).to eq("This is a good day <img src=\"/images/emoji/twitter/woman.png?v=#{Emoji::EMOJI_VERSION}\" title=\"woman\" class=\"emoji\" alt=\"woman\"> <img src=\"/images/emoji/twitter/man/4.png?v=#{Emoji::EMOJI_VERSION}\" title=\"man:t4\" class=\"emoji\" alt=\"man:t4\">")
expect(replaced_str).to eq("This is a good day <img src=\"/public/xxxxxx.png\" title=\"xxxxxx\" class=\"emoji\" alt=\"xxxxxx\"> <img src=\"/images/emoji/twitter/woman.png?v=#{Emoji::EMOJI_VERSION}\" title=\"woman\" class=\"emoji\" alt=\"woman\"> <img src=\"/images/emoji/twitter/man/4.png?v=#{Emoji::EMOJI_VERSION}\" title=\"man:t4\" class=\"emoji\" alt=\"man:t4\">")
Plugin::CustomEmoji.unregister("xxxxxx")
end
it "doesn't replace if code doesn't exist" do