summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorValery Sizov <valery@gitlab.com>2015-12-11 13:10:00 +0200
committerValery Sizov <valery@gitlab.com>2015-12-11 13:17:12 +0200
commit72b7d1f59d4fb26fb9119c5a059528f0fc951904 (patch)
tree18faa50e9d67746be474577f395c720ff49df81b
parentcd97dba2a9a26e83818f7e111bc0b0185a7ced8a (diff)
downloadgitlab-ce-72b7d1f59d4fb26fb9119c5a059528f0fc951904.tar.gz
emoji aliases problem
-rw-r--r--CHANGELOG1
-rw-r--r--app/assets/javascripts/awards_handler.coffee7
-rw-r--r--app/models/note.rb3
-rw-r--r--app/views/votes/_votes_block.html.haml3
-rw-r--r--lib/award_emoji.rb35
-rw-r--r--spec/models/note_spec.rb9
6 files changed, 55 insertions, 3 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 585e6c42043..3ec005c58f6 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -43,6 +43,7 @@ v 8.3.0 (unreleased)
- Prevent possible XSS attack with award-emoji
- Upgraded Sidekiq to 4.x
- Accept COPYING,COPYING.lesser, and licence as license file (Zeger-Jan van de Weg)
+ - Fix emoji aliases problem
v 8.2.3
- Fix application settings cache not expiring after changes (Stan Hu)
diff --git a/app/assets/javascripts/awards_handler.coffee b/app/assets/javascripts/awards_handler.coffee
index 96fd8f8773e..3ff9ba77dfc 100644
--- a/app/assets/javascripts/awards_handler.coffee
+++ b/app/assets/javascripts/awards_handler.coffee
@@ -1,11 +1,13 @@
class @AwardsHandler
- constructor: (@post_emoji_url, @noteable_type, @noteable_id) ->
+ constructor: (@post_emoji_url, @noteable_type, @noteable_id, @aliases) ->
addAward: (emoji) ->
+ emoji = @normilizeEmojiName(emoji)
@postEmoji emoji, =>
@addAwardToEmojiBar(emoji)
addAwardToEmojiBar: (emoji, custom_path = '') ->
+ emoji = @normilizeEmojiName(emoji)
if @exist(emoji)
if @isActive(emoji)
@decrementCounter(emoji)
@@ -94,3 +96,6 @@ class @AwardsHandler
$('body, html').animate({
scrollTop: $('.awards').offset().top - 80
}, 200)
+
+ normilizeEmojiName: (emoji) ->
+ @aliases[emoji] || emoji
diff --git a/app/models/note.rb b/app/models/note.rb
index 8f0efa8d4b7..04053ccc61e 100644
--- a/app/models/note.rb
+++ b/app/models/note.rb
@@ -377,6 +377,7 @@ class Note < ActiveRecord::Base
end
def award_emoji_name
- note.match(Gitlab::Markdown::EmojiFilter.emoji_pattern)[1]
+ original_name = note.match(Gitlab::Markdown::EmojiFilter.emoji_pattern)[1]
+ AwardEmoji.normilize_emoji_name(original_name)
end
end
diff --git a/app/views/votes/_votes_block.html.haml b/app/views/votes/_votes_block.html.haml
index 7eb27c12d33..6071f1484c6 100644
--- a/app/views/votes/_votes_block.html.haml
+++ b/app/views/votes/_votes_block.html.haml
@@ -19,7 +19,8 @@
post_emoji_url = "#{award_toggle_namespace_project_notes_path(@project.namespace, @project)}"
noteable_type = "#{votable.class.name.underscore}"
noteable_id = "#{votable.id}"
- window.awards_handler = new AwardsHandler(post_emoji_url, noteable_type, noteable_id)
+ aliases = #{AwardEmoji::ALIASES.to_json}
+ window.awards_handler = new AwardsHandler(post_emoji_url, noteable_type, noteable_id, aliases)
$(".awards-menu li").click (e)->
emoji = $(this).data("emoji")
diff --git a/lib/award_emoji.rb b/lib/award_emoji.rb
index d58a196c4ef..4d99164bc33 100644
--- a/lib/award_emoji.rb
+++ b/lib/award_emoji.rb
@@ -6,7 +6,42 @@ class AwardEmoji
"ambulance", "anguished", "two_hearts", "wink"
]
+ ALIASES = {
+ pout: "rage",
+ satisfied: "laughing",
+ hankey: "shit",
+ poop: "shit",
+ collision: "boom",
+ thumbsup: "+1",
+ thumbsdown: "-1",
+ punch: "facepunch",
+ raised_hand: "hand",
+ running: "runner",
+ ng_woman: "no_good",
+ shoe: "mans_shoe",
+ tshirt: "shirt",
+ honeybee: "bee",
+ flipper: "dolphin",
+ paw_prints: "feet",
+ waxing_gibbous_moon: "moon",
+ telephone: "phone",
+ knife: "hocho",
+ envelope: "email",
+ pencil: "memo",
+ open_book: "book",
+ sailboat: "boat",
+ red_car: "car",
+ lantern: "izakaya_lantern",
+ uk: "gb",
+ heavy_exclamation_mark: "exclamation",
+ squirrel: "shipit"
+ }.with_indifferent_access
+
def self.path_to_emoji_image(name)
"emoji/#{Emoji.emoji_filename(name)}.png"
end
+
+ def self.normilize_emoji_name(name)
+ ALIASES[name] || name
+ end
end
diff --git a/spec/models/note_spec.rb b/spec/models/note_spec.rb
index 5b6f177ebb2..216c7dabae0 100644
--- a/spec/models/note_spec.rb
+++ b/spec/models/note_spec.rb
@@ -159,4 +159,13 @@ describe Note, models: true do
expect(note.editable?).to be_falsy
end
end
+
+ describe "set_award!" do
+ let(:issue) { create :issue }
+
+ it "converts aliases to actual name" do
+ note = create :note, note: ":thumbsup:", noteable: issue
+ expect(note.reload.note).to eq("+1")
+ end
+ end
end