]> source.dussan.org Git - gitea.git/commitdiff
Working on issue and install page
authorUnknown <joe2010xtmf@163.com>
Thu, 27 Mar 2014 20:31:32 +0000 (16:31 -0400)
committerUnknown <joe2010xtmf@163.com>
Thu, 27 Mar 2014 20:31:32 +0000 (16:31 -0400)
models/issue.go
models/repo.go
routers/repo/issue.go
routers/user/user.go
templates/install.tmpl
templates/issue/list.tmpl
templates/issue/user.tmpl

index b05667c3a8f36147d8a79cd5c6c78f542e8354c9..b30676e940b10e0e3dd3060b0239cc0746d8c1de 100644 (file)
@@ -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)
index e6d4639b0247e754d289790aae04c3a9a519e1b2..43d4aa739fe12774391074ce9bbd26f80e6c8cf3 100644 (file)
@@ -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"`
index effb1fab3797a641f03e719f8d86d92478bc5c4e..23571e759bcdaf970c37c4f1bcb9b105716deea2 100644 (file)
@@ -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
index d3ef96211eb242f444438cfa8fa24fe424fbc804..052a2774989e2f04a6dd66e24c68671b2d73d40a 100644 (file)
@@ -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")
 }
 
index b2ae3bac21995ef0a6f908652887f587e5d83050..4fbef3cba06dacfc8a35879d102149a78a9f5249 100644 (file)
@@ -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>
                     <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>
             </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>
 
             <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>
 
         <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>
                         <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>
index b8947d9fc5dcc4021985f66c89264a82228d4ec9..39a4af56918fdacddb75b86e105d85ed694f60d0 100644 (file)
@@ -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>
index cf5e365dcffa88187afc6c0db07f55964134ed1a..edffde4f430c2b9db54875e3beb51dee3e9e1b1e 100644 (file)
     <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">