mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-11-28 12:16:17 +01:00
fix #1960
This commit is contained in:
parent
134d8e7681
commit
5dc3dd1704
13 changed files with 173 additions and 136 deletions
|
@ -5,7 +5,7 @@ Gogs - Go Git Service [![Build Status](https://travis-ci.org/gogits/gogs.svg?bra
|
|||
|
||||
![](public/img/gogs-large-resize.png)
|
||||
|
||||
##### Current version: 0.7.12 Beta
|
||||
##### Current version: 0.7.13 Beta
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
|
|
|
@ -515,10 +515,13 @@ func runWeb(ctx *cli.Context) {
|
|||
m.Group("", func() {
|
||||
m.Get("/releases", repo.Releases)
|
||||
m.Get("/^:type(issues|pulls)$", repo.RetrieveLabels, repo.Issues)
|
||||
m.Get("/^:type(issues|pulls)$/:index", repo.ViewIssue)
|
||||
m.Get("/labels/", repo.RetrieveLabels, repo.Labels)
|
||||
m.Get("/milestones", repo.Milestones)
|
||||
}, middleware.RepoRef())
|
||||
}, middleware.RepoRef(),
|
||||
func(ctx *middleware.Context) {
|
||||
ctx.Data["PageIsList"] = true
|
||||
})
|
||||
m.Get("/^:type(issues|pulls)$/:index", repo.ViewIssue)
|
||||
|
||||
m.Get("/branches", repo.Branches)
|
||||
m.Get("/archive/*", repo.Download)
|
||||
|
|
2
gogs.go
2
gogs.go
|
@ -17,7 +17,7 @@ import (
|
|||
"github.com/gogits/gogs/modules/setting"
|
||||
)
|
||||
|
||||
const APP_VER = "0.7.12.1116 Beta"
|
||||
const APP_VER = "0.7.13.1116 Beta"
|
||||
|
||||
func init() {
|
||||
runtime.GOMAXPROCS(runtime.NumCPU())
|
||||
|
|
|
@ -265,7 +265,7 @@ func (u *User) UploadAvatar(data []byte) error {
|
|||
return fmt.Errorf("Decode: %v", err)
|
||||
}
|
||||
|
||||
m := resize.Resize(234, 234, img, resize.NearestNeighbor)
|
||||
m := resize.Resize(290, 290, img, resize.NearestNeighbor)
|
||||
|
||||
sess := x.NewSession()
|
||||
defer sessionRelease(sess)
|
||||
|
|
|
@ -104,7 +104,7 @@ func New(hash string, cacheDir string) *Avatar {
|
|||
expireDuration: time.Minute * 10,
|
||||
reqParams: url.Values{
|
||||
"d": {"retro"},
|
||||
"size": {"200"},
|
||||
"size": {"290"},
|
||||
"r": {"pg"}}.Encode(),
|
||||
imagePath: filepath.Join(cacheDir, hash+".image"), //maybe png or jpeg
|
||||
}
|
||||
|
@ -194,7 +194,7 @@ func (this *service) mustInt(r *http.Request, defaultValue int, keys ...string)
|
|||
func (this *service) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
urlPath := r.URL.Path
|
||||
hash := urlPath[strings.LastIndex(urlPath, "/")+1:]
|
||||
size := this.mustInt(r, 80, "s", "size") // default size = 80*80
|
||||
size := this.mustInt(r, 290, "s", "size") // default size = 290*290
|
||||
|
||||
avatar := New(hash, this.cacheDir)
|
||||
avatar.AlterImage = this.altImage
|
||||
|
|
|
@ -848,6 +848,9 @@ pre.raw {
|
|||
.ui .text.yellow {
|
||||
color: #FBBD08 !important;
|
||||
}
|
||||
.ui .text.gold {
|
||||
color: #a1882b !important;
|
||||
}
|
||||
.ui .text.left {
|
||||
text-align: left !important;
|
||||
}
|
||||
|
@ -2688,6 +2691,23 @@ footer .container .links > *:first-child {
|
|||
.user.settings .email.list .item:not(:first-child) .button {
|
||||
margin-top: -10px;
|
||||
}
|
||||
.user.profile .ui.card .username {
|
||||
display: block;
|
||||
}
|
||||
.user.profile .ui.card .extra.content {
|
||||
padding: 0;
|
||||
}
|
||||
.user.profile .ui.card .extra.content ul {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.user.profile .ui.card .extra.content ul li {
|
||||
padding: 10px;
|
||||
list-style: none;
|
||||
}
|
||||
.user.profile .ui.card .extra.content ul li:not(:last-child) {
|
||||
border-bottom: 1px solid #eaeaea;
|
||||
}
|
||||
.dashboard {
|
||||
padding-top: 15px;
|
||||
padding-bottom: 80px;
|
||||
|
@ -2820,24 +2840,26 @@ footer .container .links > *:first-child {
|
|||
padding-top: 15px;
|
||||
padding-bottom: 80px;
|
||||
}
|
||||
.explore.repositories .ui.repository.list .item {
|
||||
border-top: 1px solid #eee;
|
||||
padding-top: 25px;
|
||||
.ui.repository.list .item {
|
||||
padding-bottom: 25px;
|
||||
}
|
||||
.explore.repositories .ui.repository.list .item .ui.header {
|
||||
.ui.repository.list .item:not(:first-child) {
|
||||
border-top: 1px solid #eee;
|
||||
padding-top: 25px;
|
||||
}
|
||||
.ui.repository.list .item .ui.header {
|
||||
font-size: 1.5rem;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
.explore.repositories .ui.repository.list .item .ui.header .metas {
|
||||
.ui.repository.list .item .ui.header .metas {
|
||||
color: #888;
|
||||
font-size: 13px;
|
||||
font-weight: normal;
|
||||
}
|
||||
.explore.repositories .ui.repository.list .item .ui.header .metas span:not(:last-child) {
|
||||
.ui.repository.list .item .ui.header .metas span:not(:last-child) {
|
||||
margin-right: 5px;
|
||||
}
|
||||
.explore.repositories .ui.repository.list .item .time {
|
||||
.ui.repository.list .item .time {
|
||||
font-size: 12px;
|
||||
color: #808080;
|
||||
}
|
||||
|
|
|
@ -139,6 +139,9 @@ pre {
|
|||
&.yellow {
|
||||
color: #FBBD08 !important;
|
||||
}
|
||||
&.gold {
|
||||
color: #a1882b !important;
|
||||
}
|
||||
|
||||
&.left {
|
||||
text-align: left !important;
|
||||
|
|
|
@ -1,13 +1,17 @@
|
|||
.explore {
|
||||
padding-top: 15px;
|
||||
padding-bottom: @footer-margin * 2;
|
||||
}
|
||||
|
||||
&.repositories {
|
||||
.ui.repository.list {
|
||||
.ui.repository.list {
|
||||
.item {
|
||||
padding-bottom: 25px;
|
||||
|
||||
&:not(:first-child) {
|
||||
border-top: 1px solid #eee;
|
||||
padding-top: 25px;
|
||||
padding-bottom: 25px;
|
||||
}
|
||||
|
||||
.ui.header {
|
||||
font-size: 1.5rem;
|
||||
padding-bottom: 10px;
|
||||
|
@ -25,6 +29,4 @@
|
|||
color: #808080;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -18,4 +18,29 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.profile {
|
||||
.ui.card {
|
||||
.username {
|
||||
display: block;
|
||||
}
|
||||
.extra.content {
|
||||
padding: 0;
|
||||
|
||||
ul {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
|
||||
li {
|
||||
padding: 10px;
|
||||
list-style: none;
|
||||
|
||||
&:not(:last-child) {
|
||||
border-bottom: 1px solid #eaeaea;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1 +1 @@
|
|||
0.7.12.1116 Beta
|
||||
0.7.13.1116 Beta
|
|
@ -5,7 +5,7 @@
|
|||
{{template "explore/navbar" .}}
|
||||
<div class="twelve wide column content">
|
||||
<div class="ui repository list">
|
||||
{{range $i, $v := .Repos}}
|
||||
{{range .Repos}}
|
||||
<div class="item">
|
||||
<div class="ui header">
|
||||
<a href="{{AppSubUrl}}/{{.Owner.Name}}/{{.Name}}">{{.Owner.Name}} / {{.Name}}</a>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<div class="ui compact small menu">
|
||||
{{if not .CommitsCount}}
|
||||
{{if not .PageIsList}}
|
||||
<a class="{{if .PageIsIssueList}}active{{end}} item" href="{{.RepoLink}}/issues">{{.i18n.Tr "repo.issues"}}</a>
|
||||
<a class="{{if .PageIsPullList}}active{{end}} item" href="{{.RepoLink}}/pulls">{{.i18n.Tr "repo.pulls"}}</a>
|
||||
{{end}}
|
||||
|
|
|
@ -1,104 +1,86 @@
|
|||
{{template "ng/base/head" .}}
|
||||
{{template "ng/base/header" .}}
|
||||
<div class="main-wrapper">
|
||||
<div id="user-profile-page" class="container clear">
|
||||
<div class="grid-1-5 left">
|
||||
<div>
|
||||
{{template "base/head" .}}
|
||||
<div class="user profile">
|
||||
<div class="ui container">
|
||||
<div class="ui grid">
|
||||
<div class="ui five wide column">
|
||||
<div class="ui card">
|
||||
{{if and (.Owner.UseCustomAvatar) (eq .SignedUserName .Owner.Name)}}
|
||||
<a href="{{AppSubUrl}}/user/settings" id="profile-avatar" original-title="{{.i18n.Tr "user.change_custom_avatar"}}">
|
||||
{{else if eq .SignedUserName .Owner.Name}}
|
||||
<a href="http://gravatar.com/emails/" id="profile-avatar" original-title="{{.i18n.Tr "user.change_avatar"}}">
|
||||
{{else}}
|
||||
<a id="profile-avatar">
|
||||
{{end}}
|
||||
<img class="profile-avatar" src="{{.Owner.AvatarLink}}?s=234" title="{{.Owner.Name}}"/>
|
||||
<a class="image poping up" href="{{AppSubUrl}}/user/settings" id="profile-avatar" data-content="{{.i18n.Tr "user.change_custom_avatar"}}" data-variation="inverted tiny" data-position="bottom center">
|
||||
<img src="{{.Owner.AvatarLink}}?s=290" title="{{.Owner.Name}}"/>
|
||||
</a>
|
||||
<div class="text-center" id="profile-name">
|
||||
{{if .Owner.FullName}}<span id="profile-fullname" class="center-block">{{.Owner.FullName}}</span><br>{{end}}
|
||||
<span class="center-block" id="profile-username">{{.Owner.Name}}</span>
|
||||
{{else if eq .SignedUserName .Owner.Name}}
|
||||
<a class="image poping up" href="http://gravatar.com/emails/" id="profile-avatar" data-content="{{.i18n.Tr "user.change_avatar"}}" data-variation="inverted tiny" data-position="bottom center">
|
||||
<img src="{{.Owner.AvatarLink}}?s=290" title="{{.Owner.Name}}"/>
|
||||
</a>
|
||||
{{else}}
|
||||
<span class="image">
|
||||
<img src="{{.Owner.AvatarLink}}?s=290" title="{{.Owner.Name}}"/>
|
||||
</span>
|
||||
{{end}}
|
||||
<div class="content">
|
||||
{{if .Owner.FullName}}<span class="header text center">{{.Owner.FullName}}</span>{{end}}
|
||||
<span class="username text center">{{.Owner.Name}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="profile-info">
|
||||
<hr>
|
||||
<ul class="list-no-style">
|
||||
<div class="extra content">
|
||||
<ul class="text black">
|
||||
{{if .Owner.Location}}
|
||||
<li class="list-group-item"><i class="octicon octicon-location"></i> {{.Owner.Location}}</li>
|
||||
<li><i class="icon octicon octicon-location"></i> {{.Owner.Location}}</li>
|
||||
{{end}}
|
||||
{{if and .Owner.Email .IsSigned}}
|
||||
<li class="list-group-item"><i class="octicon octicon-mail"></i> <a href="mailto:{{.Owner.Email}}" rel="nofollow">{{.Owner.Email}}</a></li>
|
||||
<li>
|
||||
<i class="icon octicon octicon-mail"></i>
|
||||
<a href="mailto:{{.Owner.Email}}" rel="nofollow">{{.Owner.Email}}</a>
|
||||
</li>
|
||||
{{end}}
|
||||
{{if .Owner.Website}}
|
||||
<li class="list-group-item"><i class="octicon octicon-link"></i> <a target="_blank" href="{{.Owner.Website}}">{{.Owner.Website}}</a></li>
|
||||
<li>
|
||||
<i class="icon octicon octicon-link"></i>
|
||||
<a target="_blank" href="{{.Owner.Website}}">{{.Owner.Website}}</a>
|
||||
</li>
|
||||
{{end}}
|
||||
<li class="list-group-item"><i class="octicon octicon-clock"></i> {{.i18n.Tr "user.join_on"}} {{DateFmtShort .Owner.Created}}</li>
|
||||
<li><i class="icon octicon octicon-clock"></i> {{.i18n.Tr "user.join_on"}} {{DateFmtShort .Owner.Created}}</li>
|
||||
</ul>
|
||||
<hr>
|
||||
<ul class="list-no-style">
|
||||
<li class="list-group-item profile-rel">
|
||||
<a class="text-black" href="">
|
||||
<strong>{{.Owner.NumFollowers}}</strong>
|
||||
<p>{{.i18n.Tr "user.followers"}}</p>
|
||||
</a>
|
||||
</li>
|
||||
<li class="list-group-item profile-rel">
|
||||
<a class="text-black" href="">
|
||||
<strong>{{.Owner.NumStars}}</strong>
|
||||
<p>{{.i18n.Tr "user.starred"}}</p>
|
||||
</a>
|
||||
</li>
|
||||
<li class="list-group-item profile-rel">
|
||||
<a class="text-black" href="">
|
||||
<strong>{{.Owner.NumFollowings}}</strong>
|
||||
<p>{{.i18n.Tr "user.following"}}</p>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<hr>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-4-5 left">
|
||||
<div id="profile-body">
|
||||
<ul class="menu menu-line" id="profile-header">
|
||||
<li>
|
||||
<a {{if not .TabName}}class="current"{{end}} href="{{.Owner.HomeLink}}"><i class="octicon octicon-repo"></i> {{.i18n.Tr "user.repositories"}}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a {{if eq .TabName "activity"}}class="current"{{end}} href="{{.Owner.HomeLink}}?tab=activity"><i class="octicon octicon-repo"></i> {{.i18n.Tr "user.activity"}}</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
{{if eq .TabName "activity"}}
|
||||
<div class="tab-pane active" id="dashboard-news">
|
||||
<br>
|
||||
{{template "user/dashboard/feeds" .}}
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="tab-pane active">
|
||||
<div id="org-repo-list">
|
||||
<div class="ui eleven wide column">
|
||||
<div class="ui secondary pointing menu">
|
||||
<a class="{{if ne .TabName "activity"}}active{{end}} item" href="{{.Owner.HomeLink}}">
|
||||
<i class="icon octicon octicon-repo"></i> {{.i18n.Tr "user.repositories"}}
|
||||
</a>
|
||||
<a class="item">
|
||||
<a class="{{if eq .TabName "activity"}}active{{end}} item" href="{{.Owner.HomeLink}}?tab=activity">
|
||||
<i class="icon octicon octicon-rss"></i> {{.i18n.Tr "user.activity"}}
|
||||
</a>
|
||||
</a>
|
||||
</div>
|
||||
{{if ne .TabName "activity"}}
|
||||
<div class="ui repository list">
|
||||
{{range .Repos}}
|
||||
{{if or (not .IsPrivate) (.HasAccess $.SignedUser)}}
|
||||
<div class="org-repo-item">
|
||||
<ul class="org-repo-status right">
|
||||
<li><i class="octicon octicon-star"></i> {{.NumStars}}</li>
|
||||
<li><i class="octicon octicon-git-branch"></i> {{.NumForks}}</li>
|
||||
</ul>
|
||||
<h2>
|
||||
<div class="item">
|
||||
<div class="ui header">
|
||||
<a href="{{AppSubUrl}}/{{$.Owner.Name}}/{{.Name}}">{{.Name}}</a>
|
||||
{{if .IsPrivate}}
|
||||
<span class="text-gold"><i class="octicon octicon-lock"></i></span>
|
||||
<span class="text gold"><i class="icon octicon octicon-lock"></i></span>
|
||||
{{end}}
|
||||
</h2>
|
||||
<p class="org-repo-description">{{.Description}}</p>
|
||||
<p class="org-repo-updated">{{$.i18n.Tr "org.repo_updated"}} {{TimeSince .Updated $.i18n.Lang}}</p>
|
||||
|
||||
<div class="ui right metas">
|
||||
<span class="text grey"><i class="octicon octicon-star"></i> {{.NumStars}}</span>
|
||||
<span class="text grey"><i class="octicon octicon-git-branch"></i> {{.NumForks}}</span>
|
||||
</div>
|
||||
</div>
|
||||
{{if .Description}}<p>{{.Description}}</p>{{end}}
|
||||
<p class="time">{{$.i18n.Tr "org.repo_updated"}} {{TimeSince .Updated $.i18n.Lang}}</p>
|
||||
</div>
|
||||
{{end}}
|
||||
{{end}}
|
||||
</div>
|
||||
</div>
|
||||
{{else}}
|
||||
<br>
|
||||
{{template "user/dashboard/feeds" .}}
|
||||
{{end}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{template "ng/base/footer" .}}
|
||||
{{template "base/footer" .}}
|
Loading…
Reference in a new issue