summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorqwerty287 <80460567+qwerty287@users.noreply.github.com>2022-01-21 18:59:26 +0100
committerGitHub <noreply@github.com>2022-01-21 18:59:26 +0100
commit1f40933d38b58b60938a77cbea1c847fc8f8c3e5 (patch)
treef817b372123ab31dbbfa54a39087b6e5560eee8e /services
parent108f1aab5cc4e667288a507acadb53a7b6ea4dbe (diff)
downloadgitea-1f40933d38b58b60938a77cbea1c847fc8f8c3e5.tar.gz
gitea-1f40933d38b58b60938a77cbea1c847fc8f8c3e5.zip
Add config options to hide issue events (#17414)
* Add config option to hide issue events Adds a config option `HIDE_ISSUE_EVENTS` to hide most issue events (changed labels, milestones, projects...) on the issue detail page. If this is true, only the following events (comment types) are shown: * plain comments * closed/reopned/merged * reviews * Make configurable using a list * Add docs * Add missing newline * Fix merge issues * Allow changes per user settings * Fix lint * Rm old docs * Apply suggestions from code review * Use bitsets * Rm comment * fmt * Fix lint * Use variable/constant to provide key * fmt * fix lint * refactor * Add a prefix for user setting key * Add license comment * Add license comment * Update services/forms/user_form_hidden_comments.go Co-authored-by: Gusted <williamzijl7@hotmail.com> * check len == 0 Co-authored-by: wxiaoguang <wxiaoguang@gmail.com> Co-authored-by: zeripath <art27@cantab.net> Co-authored-by: Gusted <williamzijl7@hotmail.com> Co-authored-by: 6543 <6543@obermui.de>
Diffstat (limited to 'services')
-rw-r--r--services/forms/user_form_hidden_comments.go105
-rw-r--r--services/mailer/mail.go2
-rw-r--r--services/mailer/mail_comment.go2
-rw-r--r--services/pull/pull.go2
4 files changed, 108 insertions, 3 deletions
diff --git a/services/forms/user_form_hidden_comments.go b/services/forms/user_form_hidden_comments.go
new file mode 100644
index 0000000000..e0c26e8ddf
--- /dev/null
+++ b/services/forms/user_form_hidden_comments.go
@@ -0,0 +1,105 @@
+// Copyright 2021 The Gitea Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package forms
+
+import (
+ "math/big"
+
+ "code.gitea.io/gitea/models"
+ "code.gitea.io/gitea/modules/context"
+ "code.gitea.io/gitea/modules/log"
+)
+
+type hiddenCommentTypeGroupsType map[string][]models.CommentType
+
+// hiddenCommentTypeGroups maps the group names to comment types, these group names comes from the Web UI (appearance.tmpl)
+var hiddenCommentTypeGroups = hiddenCommentTypeGroupsType{
+ "reference": {
+ /*3*/ models.CommentTypeIssueRef,
+ /*4*/ models.CommentTypeCommitRef,
+ /*5*/ models.CommentTypeCommentRef,
+ /*6*/ models.CommentTypePullRef,
+ },
+ "label": {
+ /*7*/ models.CommentTypeLabel,
+ },
+ "milestone": {
+ /*8*/ models.CommentTypeMilestone,
+ },
+ "assignee": {
+ /*9*/ models.CommentTypeAssignees,
+ },
+ "title": {
+ /*10*/ models.CommentTypeChangeTitle,
+ },
+ "branch": {
+ /*11*/ models.CommentTypeDeleteBranch,
+ /*25*/ models.CommentTypeChangeTargetBranch,
+ },
+ "time_tracking": {
+ /*12*/ models.CommentTypeStartTracking,
+ /*13*/ models.CommentTypeStopTracking,
+ /*14*/ models.CommentTypeAddTimeManual,
+ /*15*/ models.CommentTypeCancelTracking,
+ /*26*/ models.CommentTypeDeleteTimeManual,
+ },
+ "deadline": {
+ /*16*/ models.CommentTypeAddedDeadline,
+ /*17*/ models.CommentTypeModifiedDeadline,
+ /*18*/ models.CommentTypeRemovedDeadline,
+ },
+ "dependency": {
+ /*19*/ models.CommentTypeAddDependency,
+ /*20*/ models.CommentTypeRemoveDependency,
+ },
+ "lock": {
+ /*23*/ models.CommentTypeLock,
+ /*24*/ models.CommentTypeUnlock,
+ },
+ "review_request": {
+ /*27*/ models.CommentTypeReviewRequest,
+ },
+ "pull_request_push": {
+ /*29*/ models.CommentTypePullRequestPush,
+ },
+ "project": {
+ /*30*/ models.CommentTypeProject,
+ /*31*/ models.CommentTypeProjectBoard,
+ },
+ "issue_ref": {
+ /*33*/ models.CommentTypeChangeIssueRef,
+ },
+}
+
+// UserHiddenCommentTypesFromRequest parse the form to hidden comment types bitset
+func UserHiddenCommentTypesFromRequest(ctx *context.Context) *big.Int {
+ bitset := new(big.Int)
+ for group, commentTypes := range hiddenCommentTypeGroups {
+ if ctx.FormBool(group) {
+ for _, commentType := range commentTypes {
+ bitset = bitset.SetBit(bitset, int(commentType), 1)
+ }
+ }
+ }
+ return bitset
+}
+
+// IsUserHiddenCommentTypeGroupChecked check whether a hidden comment type group is "enabled" (checked on UI)
+func IsUserHiddenCommentTypeGroupChecked(group string, hiddenCommentTypes *big.Int) (ret bool) {
+ commentTypes, ok := hiddenCommentTypeGroups[group]
+ if !ok {
+ log.Critical("the group map for hidden comment types is out of sync, unknown group: %v", group)
+ return
+ }
+ if hiddenCommentTypes == nil {
+ return false
+ }
+ for _, commentType := range commentTypes {
+ if hiddenCommentTypes.Bit(int(commentType)) == 1 {
+ return true
+ }
+ }
+ return false
+}
diff --git a/services/mailer/mail.go b/services/mailer/mail.go
index 5244cd0433..e5aa250083 100644
--- a/services/mailer/mail.go
+++ b/services/mailer/mail.go
@@ -449,7 +449,7 @@ func actionToTemplate(issue *models.Issue, actionType models.ActionType,
name = "code"
case models.CommentTypeAssignees:
name = "assigned"
- case models.CommentTypePullPush:
+ case models.CommentTypePullRequestPush:
name = "push"
default:
name = "default"
diff --git a/services/mailer/mail_comment.go b/services/mailer/mail_comment.go
index a42458b2c2..baecd2a101 100644
--- a/services/mailer/mail_comment.go
+++ b/services/mailer/mail_comment.go
@@ -21,7 +21,7 @@ func MailParticipantsComment(ctx context.Context, c *models.Comment, opType mode
}
content := c.Content
- if c.Type == models.CommentTypePullPush {
+ if c.Type == models.CommentTypePullRequestPush {
content = ""
}
if err := mailIssueCommentToParticipants(
diff --git a/services/pull/pull.go b/services/pull/pull.go
index 4f691c0eba..10fbc124ac 100644
--- a/services/pull/pull.go
+++ b/services/pull/pull.go
@@ -108,7 +108,7 @@ func NewPullRequest(ctx context.Context, repo *repo_model.Repository, pull *mode
}
ops := &models.CreateCommentOptions{
- Type: models.CommentTypePullPush,
+ Type: models.CommentTypePullRequestPush,
Doer: pull.Poster,
Repo: repo,
Issue: pr.Issue,