diff options
author | Unknown <joe2010xtmf@163.com> | 2014-03-27 16:31:32 -0400 |
---|---|---|
committer | Unknown <joe2010xtmf@163.com> | 2014-03-27 16:31:32 -0400 |
commit | 34f4af9ebf179dbb24a7da6091b4259d66a3c426 (patch) | |
tree | 41be4b8840f28b03dd12551d6403cd459b9ced10 | |
parent | f76eb8a6662dd705f4c59fd59e583a315a1900d2 (diff) | |
download | gitea-34f4af9ebf179dbb24a7da6091b4259d66a3c426.tar.gz gitea-34f4af9ebf179dbb24a7da6091b4259d66a3c426.zip |
Working on issue and install page
-rw-r--r-- | models/issue.go | 6 | ||||
-rw-r--r-- | models/repo.go | 1 | ||||
-rw-r--r-- | routers/repo/issue.go | 12 | ||||
-rw-r--r-- | routers/user/user.go | 60 | ||||
-rw-r--r-- | templates/install.tmpl | 54 | ||||
-rw-r--r-- | templates/issue/list.tmpl | 4 | ||||
-rw-r--r-- | templates/issue/user.tmpl | 15 |
7 files changed, 118 insertions, 34 deletions
diff --git a/models/issue.go b/models/issue.go index b05667c3a8..b30676e940 100644 --- a/models/issue.go +++ b/models/issue.go @@ -136,6 +136,12 @@ func GetIssues(userId, repoId, posterId, milestoneId int64, page int, isClosed, return issues, err } +// GetUserIssueCount returns the number of issues that were created by given user in repository. +func GetUserIssueCount(userId, repoId int64) int64 { + count, _ := orm.Where("poster_id=?", userId).And("repo_id=?", repoId).Count(new(Issue)) + return count +} + // UpdateIssue updates information of issue. func UpdateIssue(issue *Issue) error { _, err := orm.Id(issue.Id).AllCols().Update(issue) diff --git a/models/repo.go b/models/repo.go index e6d4639b02..43d4aa739f 100644 --- a/models/repo.go +++ b/models/repo.go @@ -84,6 +84,7 @@ type Repository struct { NumForks int NumIssues int NumClosedIssues int + NumOpenIssues int `xorm:"-"` IsPrivate bool IsBare bool Created time.Time `xorm:"created"` diff --git a/routers/repo/issue.go b/routers/repo/issue.go index effb1fab37..23571e759b 100644 --- a/routers/repo/issue.go +++ b/routers/repo/issue.go @@ -21,13 +21,21 @@ func Issues(ctx *middleware.Context) { ctx.Data["Title"] = "Issues" ctx.Data["IsRepoToolbarIssues"] = true ctx.Data["IsRepoToolbarIssuesList"] = true + ctx.Data["ViewType"] = "all" milestoneId, _ := base.StrTo(ctx.Query("milestone")).Int() page, _ := base.StrTo(ctx.Query("page")).Int() + var posterId int64 = 0 + if ctx.Query("type") == "created_by" { + posterId = ctx.User.Id + ctx.Data["ViewType"] = "created_by" + } + ctx.Data["IssueCreatedCount"] = models.GetUserIssueCount(ctx.User.Id, ctx.Repo.Repository.Id) + // Get issues. - issues, err := models.GetIssues(0, ctx.Repo.Repository.Id, 0, - int64(milestoneId), page, ctx.Query("state") == "closed", false, ctx.Query("labels"), ctx.Query("sortType")) + issues, err := models.GetIssues(0, ctx.Repo.Repository.Id, posterId, int64(milestoneId), page, + ctx.Query("state") == "closed", false, ctx.Query("labels"), ctx.Query("sortType")) if err != nil { ctx.Handle(200, "issue.Issues: %v", err) return diff --git a/routers/user/user.go b/routers/user/user.go index d3ef96211e..052a277498 100644 --- a/routers/user/user.go +++ b/routers/user/user.go @@ -286,6 +286,66 @@ func Feeds(ctx *middleware.Context, form auth.FeedsForm) { func Issues(ctx *middleware.Context) { ctx.Data["Title"] = "Your Issues" + ctx.Data["ViewType"] = "all" + + page, _ := base.StrTo(ctx.Query("page")).Int() + + var posterId int64 = 0 + if ctx.Query("type") == "created_by" { + posterId = ctx.User.Id + ctx.Data["ViewType"] = "created_by" + } + + // Get all repositories. + repos, err := models.GetRepositories(ctx.User) + if err != nil { + ctx.Handle(200, "user.Issues(get repository)", err) + return + } + + var closedIssueCount, createdByCount int + + // Get all issues. + allIssues := make([]models.Issue, 0, 5*len(repos)) + for i, repo := range repos { + issues, err := models.GetIssues(0, repo.Id, posterId, 0, page, false, false, "", "") + if err != nil { + ctx.Handle(200, "user.Issues(get issues)", err) + return + } + + closedIssueCount += repo.NumClosedIssues + repos[i].NumOpenIssues = repo.NumIssues - repo.NumClosedIssues + allIssues = append(allIssues, issues...) + } + + showIssues := make([]models.Issue, 0, len(allIssues)) + isShowClosed := ctx.Query("state") == "closed" + ctx.Data["IsShowClosed"] = isShowClosed + + // Get posters and filter issues. + for i := range allIssues { + u, err := models.GetUserById(allIssues[i].PosterId) + if err != nil { + ctx.Handle(200, "user.Issues(get poster): %v", err) + return + } + allIssues[i].Poster = u + if u.Id == ctx.User.Id { + createdByCount++ + } + + if isShowClosed == allIssues[i].IsClosed { + showIssues = append(showIssues, allIssues[i]) + } + } + + ctx.Data["Repos"] = repos + ctx.Data["Issues"] = showIssues + ctx.Data["AllIssueCount"] = len(allIssues) + ctx.Data["ClosedIssueCount"] = closedIssueCount + ctx.Data["OpenIssueCount"] = len(allIssues) - closedIssueCount + ctx.Data["CreatedByCount"] = createdByCount ctx.HTML(200, "issue/user") } diff --git a/templates/install.tmpl b/templates/install.tmpl index b2ae3bac21..4fbef3cba0 100644 --- a/templates/install.tmpl +++ b/templates/install.tmpl @@ -2,13 +2,12 @@ <div id="body" class="container"> <form action="/install" method="post" class="form-horizontal card" id="install-card"> {{.CsrfTokenHtml}} - <h3>Install Steps For First Running</h3> + <h3>Install Steps For First-time Run</h3> <div class="alert alert-danger form-error{{if .HasError}}{{else}} hidden{{end}}">{{.ErrorMsg}}</div> - <p class="help-block text-center">GoGits need MySQL or PostgreSQL server</p> + <p class="help-block text-center">Gogs requires MySQL or PostgreSQL based on your choice</p> <div class="form-group"> <label class="col-md-3 control-label">Database Type: </label> - <div class="col-md-8"> <select name="database" id="install-database" class="form-control"> <option value="mysql">MySQL</option> @@ -46,20 +45,24 @@ <input name="passwd" type="password" class="form-control" placeholder="Type mysql password" required="required"> </div> </div> + <div class="form-group"> - <label class="col-md-3 control-label">Database: </label> + <label class="col-md-3 control-label">Database Name: </label> <div class="col-md-8"> <input name="database" type="text" class="form-control" placeholder="Type mysql database name" value="gogs" required="required"> - <p class="help-block">Recommend use INNODB engine with utf8_general_ci charset.</p> </div> </div> + <div class="form-group pgsql-setting hide"> - <label class="col-md-3 text-right">SSL MODE: </label> + <label class="col-md-3 control-label">SSL Mode: </label> <div class="col-md-8"> - <input name="ssl-mode" type="checkbox" class="form-control"> - <p class="help-block">Use SSL protocol to connect PostgreSQL.</p> + <select name="ssl_mode" class="form-control"> + <option value="disable">Disable</option> + <option value="require">Require</option> + <option value="verify-full">Verify Full</option> + </select> </div> </div> </div> @@ -74,15 +77,15 @@ </div> </div> - <div class="form-group"> + <!-- <div class="form-group"> <div class="col-md-8 col-md-offset-3"> <button class="btn btn-sm btn-info">Test Connection</button> </div> - </div> + </div> --> <hr/> - <p class="help-block text-center">General settings for GoGits</p> + <p class="help-block text-center">General Settings of Gogs</p> <div class="form-group"> <label class="col-md-3 control-label">Repository Path: </label> @@ -98,8 +101,7 @@ <div class="col-md-8"> <input name="system-user" type="text" class="form-control" placeholder="Type mysql password" value="root" required="required"> - - <p class="help-block">The user has access to visit and run GoGits.</p> + <p class="help-block">The user has access to visit and run Gogs.</p> </div> </div> @@ -125,7 +127,7 @@ <hr/> <div class="form-group text-center"> - <button class="btn btn-danger btn-lg">Install GoGits</button> + <button class="btn btn-danger btn-lg">Install Gogs</button> <button class="btn btn-default btn-sm" type="button" data-toggle="modal" data-target="#advance-options-modal"> Advanced Options </button> @@ -163,20 +165,28 @@ <p class="text-center help-block">Notification Settings</p> <div class="form-group"> - <label class="col-md-6 text-right">Enable Register Confirmation: </label> - - <div class="col-md-4"> - <input name="system-user" type="checkbox" class="form-control"> + <div class="col-md-offset-3 col-md-7"> + <div class="checkbox"> + <label> + <input name="system-user" type="checkbox"> + <strong>Enable Register Confirmation</strong> + </label> + </div> </div> </div> - <div class="form-group"> - <label class="col-md-6 text-right">Enable Mail Notification: </label> - <div class="col-md-4"> - <input name="system-user" type="checkbox" class="form-control"> + <div class="form-group"> + <div class="col-md-offset-3 col-md-7"> + <div class="checkbox"> + <label> + <input name="system-user" type="checkbox"> + <strong>Enable Mail Notification</strong> + </label> + </div> </div> </div> </div> + <div class="modal-footer"> <button type="button" class="btn btn-success" data-dismiss="modal">Confirm</button> </div> diff --git a/templates/issue/list.tmpl b/templates/issue/list.tmpl index b8947d9fc5..39a4af5691 100644 --- a/templates/issue/list.tmpl +++ b/templates/issue/list.tmpl @@ -6,9 +6,9 @@ <div id="issue"> <div class="col-md-3 filter-list"> <ul class="list-unstyled"> - <li><a href="#" class="active">All Issues <strong class="pull-right">{{.IssueCount}}</strong></a></li> + <li><a href="/{{.RepositoryLink}}/issues"{{if eq .ViewType "all"}} class="active"{{end}}>All Issues <strong class="pull-right">{{.IssueCount}}</strong></a></li> <!-- <li><a href="#">Assigned to you</a></li> --> - <li><a href="#">Created by you</a></li> + <li><a href="/{{.RepositoryLink}}/issues?type=created_by"{{if eq .ViewType "created_by"}} class="active"{{end}}>Created by you <strong class="pull-right">{{.IssueCreatedCount}}</strong></a></li> <!-- <li><a href="#">Mentioned</a></li> --> </ul> </div> diff --git a/templates/issue/user.tmpl b/templates/issue/user.tmpl index cf5e365dcf..edffde4f43 100644 --- a/templates/issue/user.tmpl +++ b/templates/issue/user.tmpl @@ -16,21 +16,20 @@ <div id="issue"> <div class="col-md-3 filter-list"> <ul class="list-unstyled"> - <li><a href="#" class="active">In your repositories <strong class="pull-right">10</strong></a></li> - <!-- <li><a href="#">Assigned to you</a></li> --> - <li><a href="#">Created by you</a></li> + <li><a href="/issues"{{if eq .ViewType "all"}} class="active"{{end}}>In your repositories <strong class="pull-right">{{.AllIssueCount}}</strong></a></li> <!-- <li><a href="#">Assigned to you</a></li> --> + <li><a href="/issues?type=created_by"{{if eq .ViewType "created_by"}} class="active"{{end}}>Created by you <strong class="pull-right">{{.CreatedByCount}}</strong></a></li> <li><hr/></li> - <li><a href="" class="sm">gogits/gogs <strong class="pull-right">12</strong></a></li> - <li><a href="" class="sm">gogits/session <strong class="pull-right">8</strong></a></li> - <li><a href="" class="sm">gogits/git <strong class="pull-right">2</strong></a></li> + {{range .Repos}} + <li><a href="" class="sm">{{.OwnerId}}/{{.Name}} <strong class="pull-right">{{.NumOpenIssues}}</strong></a></li> + {{end}} </ul> </div> <div class="col-md-9"> <div class="filter-option"> <div class="btn-group"> - <a class="btn btn-default active issue-open" href="#">27 Open</a> - <a class="btn btn-default issue-close" href="#">Close 128</a> + <a class="btn btn-default issue-open{{if not .IsShowClosed}} active{{end}}" href="/issues">{{.OpenIssueCount}} Open</a> + <a class="btn btn-default issue-close{{if .IsShowClosed}} active{{end}}" href="/issues?state=closed">{{.ClosedIssueCount}} Close</a> </div> </div> <div class="issues list-group"> |