Skip to content

Commit bf27fc3

Browse files
delvhGiteaBot
andauthored
Merge new project templates into one (#24985)
Additionally simplify the `new project` template slightly. Review hint: Disable whitespace changes. <details><summary>Before</summary> ## New repo project ![grafik](https://github.com/go-gitea/gitea/assets/51889757/4de977e8-3688-45cd-8832-49b001e6f249) ## Edit repo project ![grafik](https://github.com/go-gitea/gitea/assets/51889757/daaf353f-6c99-48bd-b37a-a3bc64459079) ## New user/org project ![grafik](https://github.com/go-gitea/gitea/assets/51889757/6a5a3be5-f51a-4599-b75c-7adb9710d2fa) ## Edit user/org project ![grafik](https://github.com/go-gitea/gitea/assets/51889757/a4768f49-cf46-4773-8a0f-54dfdcc1c1b8) </details> <details><summary>After</summary> ## New repo project ![grafik](https://github.com/go-gitea/gitea/assets/51889757/3d0ac8a0-850a-4743-963c-71c66ef38d07) ## Edit repo project ![grafik](https://github.com/go-gitea/gitea/assets/51889757/6b86a1cd-e360-4a9b-aaf7-af032d0d991a) ## New user/org project ![grafik](https://github.com/go-gitea/gitea/assets/51889757/a7b0964c-e4c7-4924-842a-52a58499bc36) ## Edit user/org project ![grafik](https://github.com/go-gitea/gitea/assets/51889757/0fbc5605-afee-49bd-a44a-8646f8c55681) </details> --------- Co-authored-by: Giteabot <teabot@gitea.io>
1 parent 3a6a634 commit bf27fc3

File tree

7 files changed

+90
-262
lines changed

7 files changed

+90
-262
lines changed

routers/web/org/projects.go

+13-14
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,9 @@ import (
2626
)
2727

2828
const (
29-
tplProjects base.TplName = "org/projects/list"
30-
tplProjectsNew base.TplName = "org/projects/new"
31-
tplProjectsView base.TplName = "org/projects/view"
32-
tplGenericProjectsNew base.TplName = "user/project"
29+
tplProjects base.TplName = "org/projects/list"
30+
tplProjectsNew base.TplName = "org/projects/new"
31+
tplProjectsView base.TplName = "org/projects/view"
3332
)
3433

3534
// MustEnableProjects check if projects are enabled in settings
@@ -125,14 +124,15 @@ func canWriteProjects(ctx *context.Context) bool {
125124
return ctx.Doer != nil && ctx.ContextUser.ID == ctx.Doer.ID
126125
}
127126

128-
// NewProject render creating a project page
129-
func NewProject(ctx *context.Context) {
127+
// RenderNewProject render creating a project page
128+
func RenderNewProject(ctx *context.Context) {
130129
ctx.Data["Title"] = ctx.Tr("repo.projects.new")
131130
ctx.Data["BoardTypes"] = project_model.GetBoardConfig()
132131
ctx.Data["CardTypes"] = project_model.GetCardConfig()
133132
ctx.Data["CanWriteProjects"] = canWriteProjects(ctx)
134133
ctx.Data["PageIsViewProjects"] = true
135134
ctx.Data["HomeLink"] = ctx.ContextUser.HomeLink()
135+
ctx.Data["CancelLink"] = ctx.ContextUser.HomeLink() + "/-/projects"
136136
shared_user.RenderUserHeader(ctx)
137137
ctx.HTML(http.StatusOK, tplProjectsNew)
138138
}
@@ -144,11 +144,7 @@ func NewProjectPost(ctx *context.Context) {
144144
shared_user.RenderUserHeader(ctx)
145145

146146
if ctx.HasError() {
147-
ctx.Data["CanWriteProjects"] = canWriteProjects(ctx)
148-
ctx.Data["PageIsViewProjects"] = true
149-
ctx.Data["BoardTypes"] = project_model.GetBoardConfig()
150-
ctx.Data["CardTypes"] = project_model.GetCardConfig()
151-
ctx.HTML(http.StatusOK, tplProjectsNew)
147+
RenderNewProject(ctx)
152148
return
153149
}
154150

@@ -227,8 +223,8 @@ func DeleteProject(ctx *context.Context) {
227223
})
228224
}
229225

230-
// EditProject allows a project to be edited
231-
func EditProject(ctx *context.Context) {
226+
// RenderEditProject allows a project to be edited
227+
func RenderEditProject(ctx *context.Context) {
232228
ctx.Data["Title"] = ctx.Tr("repo.projects.edit")
233229
ctx.Data["PageIsEditProjects"] = true
234230
ctx.Data["PageIsViewProjects"] = true
@@ -257,18 +253,21 @@ func EditProject(ctx *context.Context) {
257253
ctx.Data["redirect"] = ctx.FormString("redirect")
258254
ctx.Data["HomeLink"] = ctx.ContextUser.HomeLink()
259255
ctx.Data["card_type"] = p.CardType
256+
ctx.Data["CancelLink"] = fmt.Sprintf("%s/-/projects/%d", ctx.ContextUser.HomeLink(), p.ID)
260257

261258
ctx.HTML(http.StatusOK, tplProjectsNew)
262259
}
263260

264261
// EditProjectPost response for editing a project
265262
func EditProjectPost(ctx *context.Context) {
266263
form := web.GetForm(ctx).(*forms.CreateProjectForm)
264+
projectID := ctx.ParamsInt64(":id")
267265
ctx.Data["Title"] = ctx.Tr("repo.projects.edit")
268266
ctx.Data["PageIsEditProjects"] = true
269267
ctx.Data["PageIsViewProjects"] = true
270268
ctx.Data["CanWriteProjects"] = canWriteProjects(ctx)
271269
ctx.Data["CardTypes"] = project_model.GetCardConfig()
270+
ctx.Data["CancelLink"] = fmt.Sprintf("%s/-/projects/%d", ctx.ContextUser.HomeLink(), projectID)
272271

273272
shared_user.RenderUserHeader(ctx)
274273

@@ -277,7 +276,7 @@ func EditProjectPost(ctx *context.Context) {
277276
return
278277
}
279278

280-
p, err := project_model.GetProjectByID(ctx, ctx.ParamsInt64(":id"))
279+
p, err := project_model.GetProjectByID(ctx, projectID)
281280
if err != nil {
282281
if project_model.IsErrProjectNotExist(err) {
283282
ctx.NotFound("", nil)

routers/web/repo/projects.go

+14-13
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,9 @@ import (
2727
)
2828

2929
const (
30-
tplProjects base.TplName = "repo/projects/list"
31-
tplProjectsNew base.TplName = "repo/projects/new"
32-
tplProjectsView base.TplName = "repo/projects/view"
33-
tplGenericProjectsNew base.TplName = "user/project"
30+
tplProjects base.TplName = "repo/projects/list"
31+
tplProjectsNew base.TplName = "repo/projects/new"
32+
tplProjectsView base.TplName = "repo/projects/view"
3433
)
3534

3635
// MustEnableProjects check if projects are enabled in settings
@@ -121,12 +120,13 @@ func Projects(ctx *context.Context) {
121120
ctx.HTML(http.StatusOK, tplProjects)
122121
}
123122

124-
// NewProject render creating a project page
125-
func NewProject(ctx *context.Context) {
123+
// RenderNewProject render creating a project page
124+
func RenderNewProject(ctx *context.Context) {
126125
ctx.Data["Title"] = ctx.Tr("repo.projects.new")
127126
ctx.Data["BoardTypes"] = project_model.GetBoardConfig()
128127
ctx.Data["CardTypes"] = project_model.GetCardConfig()
129128
ctx.Data["CanWriteProjects"] = ctx.Repo.Permission.CanWrite(unit.TypeProjects)
129+
ctx.Data["CancelLink"] = ctx.Repo.Repository.Link() + "/projects"
130130
ctx.HTML(http.StatusOK, tplProjectsNew)
131131
}
132132

@@ -136,10 +136,7 @@ func NewProjectPost(ctx *context.Context) {
136136
ctx.Data["Title"] = ctx.Tr("repo.projects.new")
137137

138138
if ctx.HasError() {
139-
ctx.Data["CanWriteProjects"] = ctx.Repo.Permission.CanWrite(unit.TypeProjects)
140-
ctx.Data["BoardTypes"] = project_model.GetBoardConfig()
141-
ctx.Data["CardTypes"] = project_model.GetCardConfig()
142-
ctx.HTML(http.StatusOK, tplProjectsNew)
139+
RenderNewProject(ctx)
143140
return
144141
}
145142

@@ -211,8 +208,8 @@ func DeleteProject(ctx *context.Context) {
211208
})
212209
}
213210

214-
// EditProject allows a project to be edited
215-
func EditProject(ctx *context.Context) {
211+
// RenderEditProject allows a project to be edited
212+
func RenderEditProject(ctx *context.Context) {
216213
ctx.Data["Title"] = ctx.Tr("repo.projects.edit")
217214
ctx.Data["PageIsEditProjects"] = true
218215
ctx.Data["CanWriteProjects"] = ctx.Repo.Permission.CanWrite(unit.TypeProjects)
@@ -237,24 +234,28 @@ func EditProject(ctx *context.Context) {
237234
ctx.Data["content"] = p.Description
238235
ctx.Data["card_type"] = p.CardType
239236
ctx.Data["redirect"] = ctx.FormString("redirect")
237+
ctx.Data["CancelLink"] = fmt.Sprintf("%s/projects/%d", ctx.Repo.Repository.Link(), p.ID)
240238

241239
ctx.HTML(http.StatusOK, tplProjectsNew)
242240
}
243241

244242
// EditProjectPost response for editing a project
245243
func EditProjectPost(ctx *context.Context) {
246244
form := web.GetForm(ctx).(*forms.CreateProjectForm)
245+
projectID := ctx.ParamsInt64(":id")
246+
247247
ctx.Data["Title"] = ctx.Tr("repo.projects.edit")
248248
ctx.Data["PageIsEditProjects"] = true
249249
ctx.Data["CanWriteProjects"] = ctx.Repo.Permission.CanWrite(unit.TypeProjects)
250250
ctx.Data["CardTypes"] = project_model.GetCardConfig()
251+
ctx.Data["CancelLink"] = fmt.Sprintf("%s/projects/%d", ctx.Repo.Repository.Link(), projectID)
251252

252253
if ctx.HasError() {
253254
ctx.HTML(http.StatusOK, tplProjectsNew)
254255
return
255256
}
256257

257-
p, err := project_model.GetProjectByID(ctx, ctx.ParamsInt64(":id"))
258+
p, err := project_model.GetProjectByID(ctx, projectID)
258259
if err != nil {
259260
if project_model.IsErrProjectNotExist(err) {
260261
ctx.NotFound("", nil)

routers/web/web.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -824,13 +824,13 @@ func registerRoutes(m *web.Route) {
824824
m.Get("/{id}", org.ViewProject)
825825
}, reqUnitAccess(unit.TypeProjects, perm.AccessModeRead))
826826
m.Group("", func() { //nolint:dupl
827-
m.Get("/new", org.NewProject)
827+
m.Get("/new", org.RenderNewProject)
828828
m.Post("/new", web.Bind(forms.CreateProjectForm{}), org.NewProjectPost)
829829
m.Group("/{id}", func() {
830830
m.Post("", web.Bind(forms.EditProjectBoardForm{}), org.AddBoardToProjectPost)
831831
m.Post("/delete", org.DeleteProject)
832832

833-
m.Get("/edit", org.EditProject)
833+
m.Get("/edit", org.RenderEditProject)
834834
m.Post("/edit", web.Bind(forms.CreateProjectForm{}), org.EditProjectPost)
835835
m.Post("/{action:open|close}", org.ChangeProjectStatus)
836836

@@ -1159,13 +1159,13 @@ func registerRoutes(m *web.Route) {
11591159
m.Get("", repo.Projects)
11601160
m.Get("/{id}", repo.ViewProject)
11611161
m.Group("", func() { //nolint:dupl
1162-
m.Get("/new", repo.NewProject)
1162+
m.Get("/new", repo.RenderNewProject)
11631163
m.Post("/new", web.Bind(forms.CreateProjectForm{}), repo.NewProjectPost)
11641164
m.Group("/{id}", func() {
11651165
m.Post("", web.Bind(forms.EditProjectBoardForm{}), repo.AddBoardToProjectPost)
11661166
m.Post("/delete", repo.DeleteProject)
11671167

1168-
m.Get("/edit", repo.EditProject)
1168+
m.Get("/edit", repo.RenderEditProject)
11691169
m.Post("/edit", web.Bind(forms.CreateProjectForm{}), repo.EditProjectPost)
11701170
m.Post("/{action:open|close}", repo.ChangeProjectStatus)
11711171

templates/org/projects/new.tmpl

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{{template "base/head" .}}
2-
<div role="main" aria-label="{{.Title}}" class="page-content repository packages">
2+
<div role="main" aria-label="{{.Title}}" class="page-content organization projects edit-project new">
33
{{template "user/overview/header" .}}
44
{{template "projects/new" .}}
55
</div>

templates/projects/new.tmpl

+57-74
Original file line numberDiff line numberDiff line change
@@ -1,87 +1,70 @@
1-
<div role="main" aria-label="{{.Title}}" class="page-content repository projects edit-project new milestone">
2-
<div class="ui container">
3-
<div class="navbar">
4-
{{if and .CanWriteProjects .PageIsEditProject}}
5-
<div class="ui right floated secondary menu">
6-
<a class="ui small green button" href="{{$.HomeLink}}/-/projects/new">{{.locale.Tr "repo.milestones.new"}}</a>
7-
</div>
1+
<div class="ui container">
2+
<h2 class="ui dividing header">
3+
{{if .PageIsEditProjects}}
4+
{{.locale.Tr "repo.projects.edit"}}
5+
<div class="sub header">{{.locale.Tr "repo.projects.edit_subheader"}}</div>
6+
{{else}}
7+
{{.locale.Tr "repo.projects.new"}}
8+
<div class="sub header">{{.locale.Tr "repo.projects.new_subheader"}}</div>
89
{{end}}
9-
</div>
10-
<div class="ui divider"></div>
11-
<h2 class="ui dividing header">
12-
{{if .PageIsEditProjects}}
13-
{{.locale.Tr "repo.projects.edit"}}
14-
<div class="sub header">{{.locale.Tr "repo.projects.edit_subheader"}}</div>
15-
{{else}}
16-
{{.locale.Tr "repo.projects.new"}}
17-
<div class="sub header">{{.locale.Tr "repo.projects.new_subheader"}}</div>
18-
{{end}}
19-
</h2>
20-
{{template "base/alert" .}}
21-
<form class="ui form grid" action="{{.Link}}" method="post">
22-
{{.CsrfTokenHtml}}
23-
<div class="eleven wide column">
24-
<input type="hidden" id="redirect" name="redirect" value="{{.redirect}}">
25-
<div class="field {{if .Err_Title}}error{{end}}">
26-
<label>{{.locale.Tr "repo.projects.title"}}</label>
27-
<input name="title" placeholder="{{.locale.Tr "repo.projects.title"}}" value="{{.title}}" autofocus required>
28-
</div>
29-
<div class="field">
30-
<label>{{.locale.Tr "repo.projects.description"}}</label>
31-
<textarea name="content" placeholder="{{.locale.Tr "repo.projects.description_placeholder"}}">{{.content}}</textarea>
32-
</div>
33-
34-
{{if not .PageIsEditProjects}}
35-
<div class="field">
36-
<label>{{.locale.Tr "repo.projects.template.desc"}}</label>
37-
<div class="ui selection dropdown">
38-
<input type="hidden" name="board_type" value="{{.type}}">
39-
<div class="default text">{{.locale.Tr "repo.projects.template.desc_helper"}}</div>
40-
<div class="menu">
41-
{{range $element := .BoardTypes}}
42-
<div class="item" data-id="{{$element.BoardType}}" data-value="{{$element.BoardType}}">{{$.locale.Tr $element.Translation}}</div>
43-
{{end}}
44-
</div>
45-
</div>
46-
</div>
47-
{{end}}
10+
</h2>
11+
{{template "base/alert" .}}
12+
<form class="ui form grid" action="{{.Link}}" method="post">
13+
{{.CsrfTokenHtml}}
14+
<div class="eleven wide column">
15+
<input type="hidden" id="redirect" name="redirect" value="{{.redirect}}">
16+
<div class="field {{if .Err_Title}}error{{end}}">
17+
<label>{{.locale.Tr "repo.projects.title"}}</label>
18+
<input name="title" placeholder="{{.locale.Tr "repo.projects.title"}}" value="{{.title}}" autofocus required>
19+
</div>
20+
<div class="field">
21+
<label>{{.locale.Tr "repo.projects.description"}}</label>
22+
<textarea name="content" placeholder="{{.locale.Tr "repo.projects.description_placeholder"}}">{{.content}}</textarea>
23+
</div>
4824

25+
{{if not .PageIsEditProjects}}
4926
<div class="field">
50-
<label>{{.locale.Tr "repo.projects.card_type.desc"}}</label>
27+
<label>{{.locale.Tr "repo.projects.template.desc"}}</label>
5128
<div class="ui selection dropdown">
52-
{{svg "octicon-triangle-down" 14 "dropdown icon"}}
53-
{{range $element := .CardTypes}}
54-
{{if or (eq $.card_type $element.CardType) (and (not $.PageIsEditProjects) (eq $element.CardType 1))}}
55-
<input type="hidden" name="card_type" value="{{$element.CardType}}">
56-
<div class="default text">{{$.locale.Tr $element.Translation}}</div>
57-
{{end}}
58-
{{end}}
29+
<input type="hidden" name="board_type" value="{{.type}}">
30+
<div class="default text">{{.locale.Tr "repo.projects.template.desc_helper"}}</div>
5931
<div class="menu">
60-
{{range $element := .CardTypes}}
61-
<div class="item" data-id="{{$element.CardType}}" data-value="{{$element.CardType}}">{{$.locale.Tr $element.Translation}}</div>
32+
{{range $element := .BoardTypes}}
33+
<div class="item" data-id="{{$element.BoardType}}" data-value="{{$element.BoardType}}">{{$.locale.Tr $element.Translation}}</div>
6234
{{end}}
6335
</div>
6436
</div>
6537
</div>
66-
</div>
67-
<div class="ui container">
68-
<div class="ui divider"></div>
69-
<div class="ui left">
70-
{{if .PageIsEditProjects}}
71-
<a class="ui cancel button" href="{{$.HomeLink}}/-/projects{{if eq .redirect "project"}}/{{.projectID}}{{end}}">
72-
{{.locale.Tr "repo.milestones.cancel"}}
73-
</a>
74-
<button class="ui primary button">
75-
{{.locale.Tr "repo.projects.modify"}}
76-
</button>
77-
{{else}}
78-
<button class="ui primary button">
79-
{{.locale.Tr "repo.projects.create"}}
80-
</button>
38+
{{end}}
39+
40+
<div class="field">
41+
<label>{{.locale.Tr "repo.projects.card_type.desc"}}</label>
42+
<div class="ui selection dropdown">
43+
{{svg "octicon-triangle-down" 14 "dropdown icon"}}
44+
{{range $element := .CardTypes}}
45+
{{if or (eq $.card_type $element.CardType) (and (not $.PageIsEditProjects) (eq $element.CardType 1))}}
46+
<input type="hidden" name="card_type" value="{{$element.CardType}}">
47+
<div class="default text">{{$.locale.Tr $element.Translation}}</div>
48+
{{end}}
8149
{{end}}
50+
<div class="menu">
51+
{{range $element := .CardTypes}}
52+
<div class="item" data-id="{{$element.CardType}}" data-value="{{$element.CardType}}">{{$.locale.Tr $element.Translation}}</div>
53+
{{end}}
54+
</div>
8255
</div>
8356
</div>
84-
85-
</form>
86-
</div>
57+
</div>
58+
<div class="ui container">
59+
<div class="ui divider"></div>
60+
<div class="ui left">
61+
<a class="ui cancel button" href="{{$.CancelLink}}">
62+
{{.locale.Tr "repo.milestones.cancel"}}
63+
</a>
64+
<button class="ui primary button">
65+
{{if .PageIsEditProjects}}{{.locale.Tr "repo.projects.modify"}}{{else}}{{.locale.Tr "repo.projects.create"}}{{end}}
66+
</button>
67+
</div>
68+
</div>
69+
</form>
8770
</div>

0 commit comments

Comments
 (0)