mirror of
https://github.com/discourse/discourse.git
synced 2025-05-25 09:21:43 +08:00
FIX: ensures emoji helper is working with custom emojis (#7843)
This commit is contained in:
@ -7,7 +7,10 @@ module EmojiHelper
|
|||||||
str = str.gsub(/:([\w\-+]*(?::t\d)?):/) do |name|
|
str = str.gsub(/:([\w\-+]*(?::t\d)?):/) do |name|
|
||||||
code = $1
|
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}\">"
|
"<img src=\"#{Emoji.url_for(code)}\" title=\"#{code}\" class=\"emoji\" alt=\"#{code}\">"
|
||||||
else
|
else
|
||||||
name
|
name
|
||||||
|
@ -38,6 +38,11 @@ class Emoji
|
|||||||
Discourse.cache.fetch(cache_key("tonable_emojis")) { db['tonableEmojis'] }
|
Discourse.cache.fetch(cache_key("tonable_emojis")) { db['tonableEmojis'] }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.custom?(name)
|
||||||
|
name = name.delete_prefix(':').delete_suffix(':')
|
||||||
|
Emoji.custom.detect { |e| e.name == name }.present?
|
||||||
|
end
|
||||||
|
|
||||||
def self.exists?(name)
|
def self.exists?(name)
|
||||||
Emoji[name].present?
|
Emoji[name].present?
|
||||||
end
|
end
|
||||||
|
@ -19,6 +19,10 @@ class Plugin::CustomEmoji
|
|||||||
emojis[name] = url
|
emojis[name] = url
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.unregister(name)
|
||||||
|
emojis.delete(name)
|
||||||
|
end
|
||||||
|
|
||||||
def self.translations
|
def self.translations
|
||||||
@@translations ||= {}
|
@@translations ||= {}
|
||||||
end
|
end
|
||||||
|
@ -7,10 +7,14 @@ describe EmojiHelper do
|
|||||||
|
|
||||||
describe "emoji_codes_to_img" do
|
describe "emoji_codes_to_img" do
|
||||||
it "replaces emoji codes by images" 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)
|
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
|
end
|
||||||
|
|
||||||
it "doesn't replace if code doesn't exist" do
|
it "doesn't replace if code doesn't exist" do
|
||||||
|
Reference in New Issue
Block a user