Apply ng to issue dashboard
This commit is contained in:
parent
e9c599b48a
commit
96a71aaed8
9 changed files with 184 additions and 60 deletions
|
@ -2413,6 +2413,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;
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -511,4 +511,30 @@ textarea#issue-add-content {
|
|||
margin-left: 12px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.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; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -238,7 +238,7 @@ input,
|
|||
}
|
||||
}
|
||||
|
||||
button {
|
||||
button,.btn {
|
||||
overflow: visible;
|
||||
padding: .6em 1.2em;
|
||||
}
|
||||
|
@ -365,4 +365,4 @@ pre {
|
|||
|
||||
dt {
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -45,6 +45,10 @@
|
|||
@btnGrayHoverColor: #FAFAFA;
|
||||
@btnGrayBorderColor: #D0D0D0;
|
||||
|
||||
@btnWhiteColor: #FFF;
|
||||
@btnWhiteHoverColor: #e8e8e8;
|
||||
@btnWhiteBorderColor: #c6c6c6;
|
||||
|
||||
@lineMenuHoverBgColor: #EAEAEA;
|
||||
@lineMenuHoverFontColor: #444;
|
||||
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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" .}}
|
||||
{{template "ng/base/footer" .}}
|
||||
|
|
Reference in a new issue