| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -13,6 +13,8 @@ import ( | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"code.gitea.io/gitea/models" | 
					 | 
					 | 
					 | 
						"code.gitea.io/gitea/models" | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"code.gitea.io/gitea/modules/context" | 
					 | 
					 | 
					 | 
						"code.gitea.io/gitea/modules/context" | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						"code.gitea.io/gitea/modules/markup" | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						"code.gitea.io/gitea/modules/markup/markdown" | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"code.gitea.io/gitea/modules/setting" | 
					 | 
					 | 
					 | 
						"code.gitea.io/gitea/modules/setting" | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"code.gitea.io/gitea/modules/templates" | 
					 | 
					 | 
					 | 
						"code.gitea.io/gitea/modules/templates" | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"code.gitea.io/gitea/modules/util" | 
					 | 
					 | 
					 | 
						"code.gitea.io/gitea/modules/util" | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -44,6 +46,25 @@ func toReleaseLink(act *models.Action) string { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						return act.GetRepoLink() + "/releases/tag/" + util.PathEscapeSegments(act.GetBranch()) | 
					 | 
					 | 
					 | 
						return act.GetRepoLink() + "/releases/tag/" + util.PathEscapeSegments(act.GetBranch()) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					} | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					// renderMarkdown creates a minimal markdown render context from an action.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					// If rendering fails, the original markdown text is returned
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					func renderMarkdown(ctx *context.Context, act *models.Action, content string) string { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						markdownCtx := &markup.RenderContext{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							Ctx:       ctx, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							URLPrefix: act.GetRepoLink(), | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							Type:      markdown.MarkupName, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							Metas: map[string]string{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								"user": act.GetRepoUserName(), | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								"repo": act.GetRepoName(), | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							}, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						markdown, err := markdown.RenderString(markdownCtx, content) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						if err != nil { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							return content | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						return markdown | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// feedActionsToFeedItems convert gitea's Action feed to feeds Item
 | 
					 | 
					 | 
					 | 
					// feedActionsToFeedItems convert gitea's Action feed to feeds Item
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					func feedActionsToFeedItems(ctx *context.Context, actions []*models.Action) (items []*feeds.Item, err error) { | 
					 | 
					 | 
					 | 
					func feedActionsToFeedItems(ctx *context.Context, actions []*models.Action) (items []*feeds.Item, err error) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						for _, act := range actions { | 
					 | 
					 | 
					 | 
						for _, act := range actions { | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -192,12 +213,12 @@ func feedActionsToFeedItems(ctx *context.Context, actions []*models.Action) (ite | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								case models.ActionCreateIssue, models.ActionCreatePullRequest: | 
					 | 
					 | 
					 | 
								case models.ActionCreateIssue, models.ActionCreatePullRequest: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									desc = strings.Join(act.GetIssueInfos(), "#") | 
					 | 
					 | 
					 | 
									desc = strings.Join(act.GetIssueInfos(), "#") | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									content = act.GetIssueContent() | 
					 | 
					 | 
					 | 
									content = renderMarkdown(ctx, act, act.GetIssueContent()) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								case models.ActionCommentIssue, models.ActionApprovePullRequest, models.ActionRejectPullRequest, models.ActionCommentPull: | 
					 | 
					 | 
					 | 
								case models.ActionCommentIssue, models.ActionApprovePullRequest, models.ActionRejectPullRequest, models.ActionCommentPull: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									desc = act.GetIssueTitle() | 
					 | 
					 | 
					 | 
									desc = act.GetIssueTitle() | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									comment := act.GetIssueInfos()[1] | 
					 | 
					 | 
					 | 
									comment := act.GetIssueInfos()[1] | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									if len(comment) != 0 { | 
					 | 
					 | 
					 | 
									if len(comment) != 0 { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
										desc += "\n\n" + comment | 
					 | 
					 | 
					 | 
										desc += "\n\n" + renderMarkdown(ctx, act, comment) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									} | 
					 | 
					 | 
					 | 
									} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								case models.ActionMergePullRequest: | 
					 | 
					 | 
					 | 
								case models.ActionMergePullRequest: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									desc = act.GetIssueInfos()[1] | 
					 | 
					 | 
					 | 
									desc = act.GetIssueInfos()[1] | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |