diff options
author | 无闻 <u@gogs.io> | 2015-03-19 17:03:03 -0400 |
---|---|---|
committer | 无闻 <u@gogs.io> | 2015-03-19 17:03:03 -0400 |
commit | e312634286e68d8fac4d20adb729661f8a444b2a (patch) | |
tree | 1c885def01ff73104086d57dfb31085c1a1a4729 | |
parent | 7fe68d3db70edfb960ecdbaca688ba2c95219b5c (diff) | |
parent | 96a71aaed8b01e505fffbd740ffb492ce89cead1 (diff) | |
download | gitea-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.css | 29 | ||||
-rw-r--r-- | public/ng/css/ui.css | 37 | ||||
-rw-r--r-- | public/ng/less/gogs/issue.less | 28 | ||||
-rw-r--r-- | public/ng/less/ui/form.less | 31 | ||||
-rw-r--r-- | public/ng/less/ui/menu.less | 7 | ||||
-rw-r--r-- | public/ng/less/ui/reset.less | 4 | ||||
-rw-r--r-- | public/ng/less/ui/var.less | 4 | ||||
-rw-r--r-- | routers/user/home.go | 9 | ||||
-rw-r--r-- | templates/user/issues.tmpl | 95 |
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" .}} |