mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-29 10:57:44 +09:00 
			
		
		
		
	Add custom emoji support (#16004)
This commit is contained in:
		| @@ -6,7 +6,6 @@ package markup | ||||
|  | ||||
| import ( | ||||
| 	"bytes" | ||||
| 	"fmt" | ||||
| 	"io" | ||||
| 	"io/ioutil" | ||||
| 	"net/url" | ||||
| @@ -66,7 +65,7 @@ var ( | ||||
| 	blackfridayExtRegex = regexp.MustCompile(`[^:]*:user-content-`) | ||||
|  | ||||
| 	// EmojiShortCodeRegex find emoji by alias like :smile: | ||||
| 	EmojiShortCodeRegex = regexp.MustCompile(`\:[\w\+\-]+\:{1}`) | ||||
| 	EmojiShortCodeRegex = regexp.MustCompile(`:[\w\+\-]+:`) | ||||
| ) | ||||
|  | ||||
| // CSS class for action keywords (e.g. "closes: #1") | ||||
| @@ -460,17 +459,14 @@ func createEmoji(content, class, name string) *html.Node { | ||||
| 	return span | ||||
| } | ||||
|  | ||||
| func createCustomEmoji(alias, class string) *html.Node { | ||||
|  | ||||
| func createCustomEmoji(alias string) *html.Node { | ||||
| 	span := &html.Node{ | ||||
| 		Type: html.ElementNode, | ||||
| 		Data: atom.Span.String(), | ||||
| 		Attr: []html.Attribute{}, | ||||
| 	} | ||||
| 	if class != "" { | ||||
| 		span.Attr = append(span.Attr, html.Attribute{Key: "class", Val: class}) | ||||
| 		span.Attr = append(span.Attr, html.Attribute{Key: "aria-label", Val: alias}) | ||||
| 	} | ||||
| 	span.Attr = append(span.Attr, html.Attribute{Key: "class", Val: "emoji"}) | ||||
| 	span.Attr = append(span.Attr, html.Attribute{Key: "aria-label", Val: alias}) | ||||
|  | ||||
| 	img := &html.Node{ | ||||
| 		Type:     html.ElementNode, | ||||
| @@ -478,10 +474,8 @@ func createCustomEmoji(alias, class string) *html.Node { | ||||
| 		Data:     "img", | ||||
| 		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/assets/img/emoji/%s.png`, setting.StaticURLPrefix, alias)}) | ||||
| 	} | ||||
| 	img.Attr = append(img.Attr, html.Attribute{Key: "alt", Val: ":" + alias + ":"}) | ||||
| 	img.Attr = append(img.Attr, html.Attribute{Key: "src", Val: setting.StaticURLPrefix + "/assets/img/emoji/" + alias + ".png"}) | ||||
|  | ||||
| 	span.AppendChild(img) | ||||
| 	return span | ||||
| @@ -948,9 +942,8 @@ func emojiShortCodeProcessor(ctx *RenderContext, node *html.Node) { | ||||
| 		converted := emoji.FromAlias(alias) | ||||
| 		if converted == nil { | ||||
| 			// check if this is a custom reaction | ||||
| 			s := strings.Join(setting.UI.Reactions, " ") + "gitea" | ||||
| 			if strings.Contains(s, alias) { | ||||
| 				replaceContent(node, m[0], m[1], createCustomEmoji(alias, "emoji")) | ||||
| 			if _, exist := setting.UI.CustomEmojisMap[alias]; exist { | ||||
| 				replaceContent(node, m[0], m[1], createCustomEmoji(alias)) | ||||
| 				node = node.NextSibling.NextSibling | ||||
| 				start = 0 | ||||
| 				continue | ||||
|   | ||||
		Reference in New Issue
	
	Block a user