From ee047312a1a3238a8504200f7ded8536ebc838e3 Mon Sep 17 00:00:00 2001
From: silverwind <me@silverwind.io>
Date: Mon, 24 Aug 2020 03:44:53 +0200
Subject: [PATCH] Fix emoji replacements, make emoji images consistent (#12567)

- Fix emoji not being replaced in issue title change text
- Make the image attributes consistent, add alt, remove align

Co-authored-by: zeripath <art27@cantab.net>
Co-authored-by: techknowlogick <techknowlogick@gitea.io>
---
 modules/markup/html.go                          | 1 +
 modules/markup/html_test.go                     | 2 +-
 modules/templates/helper.go                     | 2 +-
 templates/repo/issue/view_content/comments.tmpl | 2 +-
 web_src/js/features/emoji.js                    | 2 +-
 5 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/modules/markup/html.go b/modules/markup/html.go
index 41248654d8..bef6269a69 100644
--- a/modules/markup/html.go
+++ b/modules/markup/html.go
@@ -481,6 +481,7 @@ func createCustomEmoji(alias, class string) *html.Node {
 		Attr:     []html.Attribute{},
 	}
 	if class != "" {
+		img.Attr = append(img.Attr, html.Attribute{Key: "alt", Val: fmt.Sprintf(`:%s:`, alias)})
 		img.Attr = append(img.Attr, html.Attribute{Key: "src", Val: fmt.Sprintf(`%s/img/emoji/%s.png`, setting.StaticURLPrefix, alias)})
 	}
 
diff --git a/modules/markup/html_test.go b/modules/markup/html_test.go
index 69c4e675f5..7f820d3990 100644
--- a/modules/markup/html_test.go
+++ b/modules/markup/html_test.go
@@ -255,7 +255,7 @@ func TestRender_emoji(t *testing.T) {
 	//Text that should be turned into or recognized as emoji
 	test(
 		":gitea:",
-		`<p><span class="emoji" aria-label="gitea"><img src="`+setting.StaticURLPrefix+`/img/emoji/gitea.png"/></span></p>`)
+		`<p><span class="emoji" aria-label="gitea"><img alt=":gitea:" src="`+setting.StaticURLPrefix+`/img/emoji/gitea.png"/></span></p>`)
 
 	test(
 		"Some text with 😄 in the middle",
diff --git a/modules/templates/helper.go b/modules/templates/helper.go
index 718fe8f267..f86287f10b 100644
--- a/modules/templates/helper.go
+++ b/modules/templates/helper.go
@@ -607,7 +607,7 @@ func ReactionToEmoji(reaction string) template.HTML {
 	if val != nil {
 		return template.HTML(val.Emoji)
 	}
-	return template.HTML(fmt.Sprintf(`<img src=%s/img/emoji/%s.png></img>`, setting.StaticURLPrefix, reaction))
+	return template.HTML(fmt.Sprintf(`<img alt=":%s:" src="%s/img/emoji/%s.png"></img>`, reaction, setting.StaticURLPrefix, reaction))
 }
 
 // RenderNote renders the contents of a git-notes file as a commit message.
diff --git a/templates/repo/issue/view_content/comments.tmpl b/templates/repo/issue/view_content/comments.tmpl
index 850c5b9157..39468ee6b2 100644
--- a/templates/repo/issue/view_content/comments.tmpl
+++ b/templates/repo/issue/view_content/comments.tmpl
@@ -218,7 +218,7 @@
 			</a>
 			<span class="text grey">
 				<a class="author" href="{{.Poster.HomeLink}}">{{.Poster.GetDisplayName}}</a>
-				{{$.i18n.Tr "repo.issues.change_title_at" (.OldTitle|Escape) (.NewTitle|Escape) $createdStr | Safe}}
+				{{$.i18n.Tr "repo.issues.change_title_at" (.OldTitle|RenderEmoji) (.NewTitle|RenderEmoji) $createdStr | Safe}}
 			</span>
 		</div>
 	{{else if eq .Type 11}}
diff --git a/web_src/js/features/emoji.js b/web_src/js/features/emoji.js
index 3c24a165b9..51d8801dc8 100644
--- a/web_src/js/features/emoji.js
+++ b/web_src/js/features/emoji.js
@@ -24,7 +24,7 @@ for (const key of emojiKeys) {
 export function emojiHTML(name) {
   let inner;
   if (name === 'gitea') {
-    inner = `<img class="emoji" alt=":${name}:" src="${StaticUrlPrefix}/img/emoji/gitea.png" align="absmiddle">`;
+    inner = `<img alt=":${name}:" src="${StaticUrlPrefix}/img/emoji/gitea.png">`;
   } else {
     inner = emojiString(name);
   }