summaryrefslogtreecommitdiffstats
path: root/routers
diff options
context:
space:
mode:
authorpuni9869 <80308335+puni9869@users.noreply.github.com>2023-08-14 15:26:14 +0530
committerGitHub <noreply@github.com>2023-08-14 11:56:14 +0200
commitcafce3b4b5afb3f254a48e87f1516d7b5dc209b6 (patch)
tree2775b10c6b55ea659b87c5d22f30ecc45c5871e1 /routers
parentdb7b0a1a4ef2222ca6209c190b2283f27061db55 (diff)
downloadgitea-cafce3b4b5afb3f254a48e87f1516d7b5dc209b6.tar.gz
gitea-cafce3b4b5afb3f254a48e87f1516d7b5dc209b6.zip
Allow to archive labels (#26478)
## Archived labels This adds the structure to allow for archived labels. Archived labels are, just like closed milestones or projects, a medium to hide information without deleting it. It is especially useful if there are outdated labels that should no longer be used without deleting the label entirely. ## Changes 1. UI and API have been equipped with the support to mark a label as archived 2. The time when a label has been archived will be stored in the DB ## Outsourced for the future There's no special handling for archived labels at the moment. This will be done in the future. ## Screenshots ![image](https://github.com/go-gitea/gitea/assets/80308335/208f95cd-42e4-4ed7-9a1f-cd2050a645d4) ![image](https://github.com/go-gitea/gitea/assets/80308335/746428e0-40bb-45b3-b992-85602feb371d) Part of https://github.com/go-gitea/gitea/issues/25237 --------- Co-authored-by: delvh <dev.lh@web.de> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
Diffstat (limited to 'routers')
-rw-r--r--routers/api/v1/org/label.go1
-rw-r--r--routers/api/v1/repo/label.go3
-rw-r--r--routers/web/org/org_labels.go1
-rw-r--r--routers/web/repo/issue_label.go15
-rw-r--r--routers/web/repo/issue_label_test.go7
5 files changed, 17 insertions, 10 deletions
diff --git a/routers/api/v1/org/label.go b/routers/api/v1/org/label.go
index 183c1e6cc8..9ef28d4db9 100644
--- a/routers/api/v1/org/label.go
+++ b/routers/api/v1/org/label.go
@@ -209,6 +209,7 @@ func EditLabel(ctx *context.APIContext) {
if form.Description != nil {
l.Description = *form.Description
}
+ l.SetArchived(form.IsArchived != nil && *form.IsArchived)
if err := issues_model.UpdateLabel(l); err != nil {
ctx.Error(http.StatusInternalServerError, "UpdateLabel", err)
return
diff --git a/routers/api/v1/repo/label.go b/routers/api/v1/repo/label.go
index 6cb231f596..fc9a16b58a 100644
--- a/routers/api/v1/repo/label.go
+++ b/routers/api/v1/repo/label.go
@@ -151,7 +151,6 @@ func CreateLabel(ctx *context.APIContext) {
return
}
form.Color = color
-
l := &issues_model.Label{
Name: form.Name,
Exclusive: form.Exclusive,
@@ -159,6 +158,7 @@ func CreateLabel(ctx *context.APIContext) {
RepoID: ctx.Repo.Repository.ID,
Description: form.Description,
}
+ l.SetArchived(form.IsArchived)
if err := issues_model.NewLabel(ctx, l); err != nil {
ctx.Error(http.StatusInternalServerError, "NewLabel", err)
return
@@ -231,6 +231,7 @@ func EditLabel(ctx *context.APIContext) {
if form.Description != nil {
l.Description = *form.Description
}
+ l.SetArchived(form.IsArchived != nil && *form.IsArchived)
if err := issues_model.UpdateLabel(l); err != nil {
ctx.Error(http.StatusInternalServerError, "UpdateLabel", err)
return
diff --git a/routers/web/org/org_labels.go b/routers/web/org/org_labels.go
index a9f9e963d4..2c7725e38d 100644
--- a/routers/web/org/org_labels.go
+++ b/routers/web/org/org_labels.go
@@ -75,6 +75,7 @@ func UpdateLabel(ctx *context.Context) {
l.Exclusive = form.Exclusive
l.Description = form.Description
l.Color = form.Color
+ l.SetArchived(form.IsArchived)
if err := issues_model.UpdateLabel(l); err != nil {
ctx.ServerError("UpdateLabel", err)
return
diff --git a/routers/web/repo/issue_label.go b/routers/web/repo/issue_label.go
index 5d326bab58..257610d3af 100644
--- a/routers/web/repo/issue_label.go
+++ b/routers/web/repo/issue_label.go
@@ -14,6 +14,7 @@ import (
"code.gitea.io/gitea/modules/label"
"code.gitea.io/gitea/modules/log"
repo_module "code.gitea.io/gitea/modules/repository"
+ "code.gitea.io/gitea/modules/timeutil"
"code.gitea.io/gitea/modules/web"
"code.gitea.io/gitea/services/forms"
issue_service "code.gitea.io/gitea/services/issue"
@@ -111,11 +112,12 @@ func NewLabel(ctx *context.Context) {
}
l := &issues_model.Label{
- RepoID: ctx.Repo.Repository.ID,
- Name: form.Title,
- Exclusive: form.Exclusive,
- Description: form.Description,
- Color: form.Color,
+ RepoID: ctx.Repo.Repository.ID,
+ Name: form.Title,
+ Exclusive: form.Exclusive,
+ Description: form.Description,
+ Color: form.Color,
+ ArchivedUnix: timeutil.TimeStamp(0),
}
if err := issues_model.NewLabel(ctx, l); err != nil {
ctx.ServerError("NewLabel", err)
@@ -137,11 +139,12 @@ func UpdateLabel(ctx *context.Context) {
}
return
}
-
l.Name = form.Title
l.Exclusive = form.Exclusive
l.Description = form.Description
l.Color = form.Color
+
+ l.SetArchived(form.IsArchived)
if err := issues_model.UpdateLabel(l); err != nil {
ctx.ServerError("UpdateLabel", err)
return
diff --git a/routers/web/repo/issue_label_test.go b/routers/web/repo/issue_label_test.go
index 4c9a359438..e29582f968 100644
--- a/routers/web/repo/issue_label_test.go
+++ b/routers/web/repo/issue_label_test.go
@@ -97,9 +97,10 @@ func TestUpdateLabel(t *testing.T) {
test.LoadUser(t, ctx, 2)
test.LoadRepo(t, ctx, 1)
web.SetForm(ctx, &forms.CreateLabelForm{
- ID: 2,
- Title: "newnameforlabel",
- Color: "#abcdef",
+ ID: 2,
+ Title: "newnameforlabel",
+ Color: "#abcdef",
+ IsArchived: true,
})
UpdateLabel(ctx)
assert.EqualValues(t, http.StatusSeeOther, ctx.Resp.Status())