summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author无闻 <u@gogs.io>2015-03-19 17:03:03 -0400
committer无闻 <u@gogs.io>2015-03-19 17:03:03 -0400
commite312634286e68d8fac4d20adb729661f8a444b2a (patch)
tree1c885def01ff73104086d57dfb31085c1a1a4729
parent7fe68d3db70edfb960ecdbaca688ba2c95219b5c (diff)
parent96a71aaed8b01e505fffbd740ffb492ce89cead1 (diff)
downloadgitea-e312634286e68d8fac4d20adb729661f8a444b2a.tar.gz
gitea-e312634286e68d8fac4d20adb729661f8a444b2a.zip
Merge pull request #1091 from sapk/fix-ng-issue-pages
Apply ng to issue dashboard
-rw-r--r--public/ng/css/gogs.css29
-rw-r--r--public/ng/css/ui.css37
-rw-r--r--public/ng/less/gogs/issue.less28
-rw-r--r--public/ng/less/ui/form.less31
-rw-r--r--public/ng/less/ui/menu.less7
-rw-r--r--public/ng/less/ui/reset.less4
-rw-r--r--public/ng/less/ui/var.less4
-rw-r--r--routers/user/home.go9
-rw-r--r--templates/user/issues.tmpl95
9 files changed, 184 insertions, 60 deletions
diff --git a/public/ng/css/gogs.css b/public/ng/css/gogs.css
index fd1fb59331..67bc7bb309 100644
--- a/public/ng/css/gogs.css
+++ b/public/ng/css/gogs.css
@@ -2414,6 +2414,35 @@ textarea#issue-add-content {
#milestone-list .action-bar a {
margin-left: 12px;
}
+.issues.list-group {
+ margin: 10px 0 20px 0;
+}
+.issues.list-group > .list-group-item {
+ background-color: #FFF;
+ border: 1px solid #e5e5e5;
+ display: block;
+ padding: 10px 15px;
+ margin-bottom: -1px;
+}
+.issues.list-group > .list-group-item:hover {
+ background-color: rgba(19, 95, 215, 0.03);
+}
+.issues.list-group > .list-group-item > .title {
+ margin-bottom: 16px;
+ font-weight: bold;
+ font-size: 1.2em;
+}
+.issues.list-group > .list-group-item > .title > a {
+ color: #444;
+}
+.issues.list-group > .list-group-item > .info span {
+ margin-right: 12px;
+ color: #888;
+ line-height: 20px;
+}
+.issues.list-group > .list-group-item > .info span > a {
+ color: #444;
+}
.org-header-alert .alert {
margin-top: 10px;
}
diff --git a/public/ng/css/ui.css b/public/ng/css/ui.css
index d4a8170ed0..e1cafb29fa 100644
--- a/public/ng/css/ui.css
+++ b/public/ng/css/ui.css
@@ -188,7 +188,8 @@ input:focus,
background-color: #f2fffc;
outline: none;
}
-button {
+button,
+.btn {
overflow: visible;
padding: .6em 1.2em;
}
@@ -431,6 +432,19 @@ dt {
background-color: #fafafa;
color: #444444;
}
+.btn-white {
+ background-color: #ffffff;
+ color: #444444;
+ border: 1px solid #c6c6c6;
+}
+.btn-white:hover {
+ background-color: #e8e8e8;
+ color: #444444;
+}
+.btn-white.active {
+ background-color: #e8e8e8;
+ color: #444444;
+}
.btn-active {
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1) inset, 0 0 4px rgba(0, 0, 0, 0.15) inset;
}
@@ -475,6 +489,22 @@ dt {
background-image: none !important;
color: #ffffff;
}
+.btn-group {
+ display: inline-block;
+}
+.btn-group > .btn {
+ position: relative;
+ float: left;
+ margin-right: -1px;
+}
+.btn-group > .btn:first-child {
+ border-bottom-left-radius: .25em;
+ border-top-left-radius: .25em;
+}
+.btn-group > .btn:last-child {
+ border-bottom-right-radius: .25em;
+ border-top-right-radius: .25em;
+}
.ipt:focus {
border-color: #428bca;
}
@@ -550,6 +580,10 @@ ul.menu > li > a:hover {
background-color: #eaeaea;
color: #444444;
}
+ul.menu > li > a.active {
+ background-color: #4183c4;
+ color: #FFF;
+}
ul.menu > li.current > a,
ul.menu > li.hover > a {
color: #444444;
@@ -597,6 +631,7 @@ ul.menu-vertical > li.head,
ul.menu-down > li.head {
display: block;
padding: .4em 1.2em;
+ margin-bottom: 4px;
}
ul.menu-vertical > li.down,
ul.menu-down > li.down {
diff --git a/public/ng/less/gogs/issue.less b/public/ng/less/gogs/issue.less
index b950869cda..c920343de5 100644
--- a/public/ng/less/gogs/issue.less
+++ b/public/ng/less/gogs/issue.less
@@ -511,4 +511,30 @@ textarea#issue-add-content {
margin-left: 12px;
}
}
-} \ No newline at end of file
+}
+
+.issues.list-group {
+ margin: 10px 0 20px 0;
+ > .list-group-item {
+ background-color: #FFF;
+ border: 1px solid #e5e5e5;
+ display: block;
+ padding: 10px 15px;
+ margin-bottom: -1px;
+ &:hover {
+ background-color: rgba(19, 95, 215, 0.03);
+ }
+ > .title {
+ margin-bottom: 16px;
+ font-weight: bold;
+ font-size: 1.2em;
+ > a { color: #444; }
+ }
+ > .info span {
+ margin-right: 12px;
+ color: #888;
+ line-height: 20px;
+ > a { color: #444; }
+ }
+ }
+}
diff --git a/public/ng/less/ui/form.less b/public/ng/less/ui/form.less
index e7b49523d0..aeaf9c8813 100644
--- a/public/ng/less/ui/form.less
+++ b/public/ng/less/ui/form.less
@@ -70,6 +70,19 @@
}
}
+.btn-white {
+ background-color: @btnWhiteColor;
+ color: @baseFontColor;
+ border: 1px solid @btnWhiteBorderColor;
+ &:hover {
+ background-color: @btnWhiteHoverColor;
+ color: @baseFontColor;
+ }
+ &.active {
+ background-color: @btnWhiteHoverColor;
+ color: @baseFontColor;
+ }
+}
// status buttons
.btn-active {
@@ -118,6 +131,22 @@
}
}
+.btn-group {
+ display: inline-block;
+ > .btn {
+ position: relative;
+ float: left;
+ margin-right: -1px;
+ &:first-child{
+ border-bottom-left-radius: .25em;
+ border-top-left-radius: .25em;
+ }
+ &:last-child{
+ border-bottom-right-radius: .25em;
+ border-top-right-radius: .25em;
+ }
+ }
+}
// input form elements
.ipt {
&:focus {
@@ -198,4 +227,4 @@ label {
color: @labelRedColor;
}
}
-} \ No newline at end of file
+}
diff --git a/public/ng/less/ui/menu.less b/public/ng/less/ui/menu.less
index a1daefb365..3035ed1260 100644
--- a/public/ng/less/ui/menu.less
+++ b/public/ng/less/ui/menu.less
@@ -11,6 +11,10 @@ ul.menu {
background-color: @lineMenuHoverBgColor;
color: @lineMenuHoverFontColor;
}
+ &.active {
+ background-color: #4183c4;
+ color: #FFF;
+ }
}
&.current > a,
&.hover > a {
@@ -67,6 +71,7 @@ ul.menu-down {
> li.head {
display: block;
padding: .4em 1.2em;
+ margin-bottom: 4px;
}
> li.down {
position: relative;
@@ -163,4 +168,4 @@ ul.menu-radius {
content: "\25B4";
margin-left: .4em;
}
-} \ No newline at end of file
+}
diff --git a/public/ng/less/ui/reset.less b/public/ng/less/ui/reset.less
index d6abb0e536..26ec6292a7 100644
--- a/public/ng/less/ui/reset.less
+++ b/public/ng/less/ui/reset.less
@@ -238,7 +238,7 @@ input,
}
}
-button {
+button,.btn {
overflow: visible;
padding: .6em 1.2em;
}
@@ -365,4 +365,4 @@ pre {
dt {
font-weight: bold;
-} \ No newline at end of file
+}
diff --git a/public/ng/less/ui/var.less b/public/ng/less/ui/var.less
index c9eb162930..98027e545c 100644
--- a/public/ng/less/ui/var.less
+++ b/public/ng/less/ui/var.less
@@ -45,6 +45,10 @@
@btnGrayHoverColor: #FAFAFA;
@btnGrayBorderColor: #D0D0D0;
+@btnWhiteColor: #FFF;
+@btnWhiteHoverColor: #e8e8e8;
+@btnWhiteBorderColor: #c6c6c6;
+
@lineMenuHoverBgColor: #EAEAEA;
@lineMenuHoverFontColor: #444;
diff --git a/routers/user/home.go b/routers/user/home.go
index 86e907e349..3484e78050 100644
--- a/routers/user/home.go
+++ b/routers/user/home.go
@@ -261,8 +261,10 @@ func Email2User(ctx *middleware.Context) {
ctx.Redirect(setting.AppSubUrl + "/user/" + u.Name)
}
-func Issues(ctx *middleware.Context) {
- ctx.Data["Title"] = "Your Issues"
+func Issues(ctx *middleware.Context) {
+ ctx.Data["Title"] = ctx.Tr("issues")
+ ctx.Data["PageIsDashboard"] = true
+ ctx.Data["PageIsIssues"] = true
viewType := ctx.Query("type")
types := []string{"assigned", "created_by"}
@@ -386,5 +388,8 @@ func Issues(ctx *middleware.Context) {
} else {
ctx.Data["ShowCount"] = issueStats.OpenCount
}
+
+ ctx.Data["ContextUser"] = ctx.User
+
ctx.HTML(200, ISSUES)
}
diff --git a/templates/user/issues.tmpl b/templates/user/issues.tmpl
index bb81d4fae8..aec09f7010 100644
--- a/templates/user/issues.tmpl
+++ b/templates/user/issues.tmpl
@@ -1,53 +1,44 @@
-{{template "base/head" .}}
-{{template "base/navbar" .}}
-<div id="body-nav">
- <div class="container">
- <ul class="nav nav-pills pull-right">
- <li><a href="{{AppSubUrl}}/">News Feed</a></li>
- <li class="active"><a href="{{AppSubUrl}}/issues">Issues</a></li>
- <!-- <li><a href="{{AppSubUrl}}/pulls">Pull Requests</a></li>
- <li><a href="{{AppSubUrl}}/stars">Stars</a></li> -->
- </ul>
- <h3>Your Issues</h3>
- </div>
+{{template "ng/base/head" .}}
+{{template "ng/base/header" .}}
+{{template "user/dashboard/nav" .}}
+<div id="dashboard-wrapper">
+ <div id="dashboard" class="container" data-page="user">
+ {{if .HasInfo}}<div class="alert alert-info">{{.InfoMsg}}</div>{{end}}
+ <div id="issue">
+ <div class="left grid-1-5 filter-list">
+ <ul class="list-unstyled menu menu-vertical">
+ <li><a href="{{AppSubUrl}}/issues?state={{.State}}&repoid={{.RepoId}}" class="radius{{if eq .ViewType "all"}} active{{end}}" >In your repositories <strong class="pull-right">{{.IssueStats.AllCount}}</strong></a></li>
+ <li><a href="{{AppSubUrl}}/issues?type=assigned&repoid={{.RepoId}}&state={{.State}}" class="radius{{if eq .ViewType "assigned"}} active{{end}}">Assigned to you <strong class="pull-right">{{.IssueStats.AssignCount}}</strong></a></li>
+ <li><a href="{{AppSubUrl}}/issues?type=created_by&repoid={{.RepoId}}&state={{.State}}" class="radius{{if eq .ViewType "created_by"}} active{{end}}">Created by you <strong class="pull-right">{{.IssueStats.CreateCount}}</strong></a></li>
+ <li><hr/></li>
+ {{range .Repos}}
+ <li><a href="{{AppSubUrl}}/issues?type={{$.ViewType}}{{if eq $.RepoId .Id}}{{else}}&repoid={{.Id}}{{end}}&state={{$.State}}" class="radius{{if eq $.RepoId .Id}} active{{end}}">{{$.SignedUser.Name}}/{{.Name}} <strong class="pull-right">{{if $.IsShowClosed}}{{.NumClosedIssues}}{{else}}{{.NumOpenIssues}}{{end}}</strong></a></li>
+ {{end}}
+ </ul>
+ </div>
+ <div class="right grid-3-4">
+ <div class="filter-option">
+ <div class="btn-group">
+ <a class="btn btn-white btn-small issue-open{{if not .IsShowClosed}} active{{end}}" href="{{AppSubUrl}}/issues?type={{.ViewType}}&repoid={{.RepoId}}">Open</a>
+ <a class="btn btn-white btn-small issue-close{{if .IsShowClosed}} active{{end}}" href="{{AppSubUrl}}/issues?type={{.ViewType}}&repoid={{.RepoId}}&state=closed">Closed</a>
+ </div>
+ </div>
+ <div class="issues list-group">
+ {{range .Issues}}{{if .}}
+ <div class="list-group-item issue-item" id="issue-{{.Id}}" onclick="window.location.href='{{AppSubUrl}}/{{.Repo.Owner.Name}}/{{.Repo.Name}}/issues/{{.Index}}'">
+ <span class="number pull-right">#{{.Index}}</span>
+ <h5 class="title"><a href="{{AppSubUrl}}/{{.Repo.Owner.Name}}/{{.Repo.Name}}/issues/{{.Index}}">{{.Name}}</a></h5>
+ <p class="info">
+ <span class="author"><img class="avatar" src="{{.Poster.AvatarLink}}" alt="" width="20"/>
+ <a href="{{AppSubUrl}}/{{.Poster.Name}}">{{.Poster.Name}}</a></span>
+ <span class="time">{{TimeSince .Created $.Lang}}</span>
+ <span class="comment"><i class="fa fa-comments"></i> {{.NumComments}}</span>
+ </p>
+ </div>
+ {{end}}{{end}}
+ </div>
+ </div>
+ </div>
+ </div>
</div>
-
-<div id="body" class="container" data-page="user">
- {{if .HasInfo}}<div class="alert alert-info">{{.InfoMsg}}</div>{{end}}
- <div id="issue">
- <div class="col-md-3 filter-list">
- <ul class="list-unstyled">
- <li><a href="{{AppSubUrl}}/issues?state={{.State}}&repoid={{.RepoId}}"{{if eq .ViewType "all"}} class="active"{{end}}>In your repositories <strong class="pull-right">{{.IssueStats.AllCount}}</strong></a></li>
- <li><a href="{{AppSubUrl}}/issues?type=assigned&repoid={{.RepoId}}&state={{.State}}"{{if eq .ViewType "assigned"}} class="active"{{end}}>Assigned to you <strong class="pull-right">{{.IssueStats.AssignCount}}</strong></a></li>
- <li><a href="{{AppSubUrl}}/issues?type=created_by&repoid={{.RepoId}}&state={{.State}}"{{if eq .ViewType "created_by"}} class="active"{{end}}>Created by you <strong class="pull-right">{{.IssueStats.CreateCount}}</strong></a></li>
- <li><hr/></li>
- {{range .Repos}}
- <li><a href="{{AppSubUrl}}/issues?type={{$.ViewType}}{{if eq $.RepoId .Id}}{{else}}&repoid={{.Id}}{{end}}&state={{$.State}}" class="sm{{if eq $.RepoId .Id}} active{{end}}">{{$.SignedUser.Name}}/{{.Name}} <strong class="pull-right">{{if $.IsShowClosed}}{{.NumClosedIssues}}{{else}}{{.NumOpenIssues}}{{end}}</strong></a></li>
- {{end}}
- </ul>
- </div>
- <div class="col-md-9">
- <div class="filter-option">
- <div class="btn-group">
- <a class="btn btn-default issue-open{{if not .IsShowClosed}} active{{end}}" href="{{AppSubUrl}}/issues?type={{.ViewType}}&repoid={{.RepoId}}">Open</a>
- <a class="btn btn-default issue-close{{if .IsShowClosed}} active{{end}}" href="{{AppSubUrl}}/issues?type={{.ViewType}}&repoid={{.RepoId}}&state=closed">Closed</a>
- </div>
- </div>
- <div class="issues list-group">
- {{range .Issues}}{{if .}}
- <div class="list-group-item issue-item" id="issue-{{.Id}}">
- <span class="number pull-right">#{{.Index}}</span>
- <h5 class="title"><a href="{{AppSubUrl}}/{{.Repo.Owner.Name}}/{{.Repo.Name}}/issues/{{.Index}}">{{.Name}}</a></h5>
- <p class="info">
- <span class="author"><img class="avatar" src="{{.Poster.AvatarLink}}" alt="" width="20"/>
- <a href="{{AppSubUrl}}/{{.Poster.Name}}">{{.Poster.Name}}</a></span>
- <span class="time">{{TimeSince .Created $.Lang}}</span>
- <span class="comment"><i class="fa fa-comments"></i> {{.NumComments}}</span>
- </p>
- </div>
- {{end}}{{end}}
- </div>
- </div>
- </div>
-</div>
-{{template "base/footer" .}} \ No newline at end of file
+{{template "ng/base/footer" .}}