From 77c40c7889046e80959449bff1d1ad610520d2dd Mon Sep 17 00:00:00 2001 From: avadesian Date: Wed, 4 Aug 2021 11:26:42 +0800 Subject: [PATCH 1/5] merge duplicate committers who are not system users --- routers/repo/view.go | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/routers/repo/view.go b/routers/repo/view.go index 5c116285f..945f6b0e0 100644 --- a/routers/repo/view.go +++ b/routers/repo/view.go @@ -590,20 +590,31 @@ func Home(ctx *context.Context) { if err == nil && contributors != nil { var contributorInfos []*ContributorInfo for _, c := range contributors { + // get user info from committer email user, err := models.GetUserByEmail(c.Email) if err == nil { + // committer is system user, get info through user's primary email existedContributorInfo := getContributorInfo(contributorInfos,user.Email) if existedContributorInfo != nil { + // existed: same primary email, different committer name existedContributorInfo.CommitCnt += c.CommitCnt }else{ + // new committer info contributorInfos = append(contributorInfos, &ContributorInfo{ user, user.Email,c.CommitCnt, }) } } else { - contributorInfos = append(contributorInfos, &ContributorInfo{ - nil, c.Email,c.CommitCnt, - }) + // committer is not system user + existedContributorInfo := getContributorInfo(contributorInfos,c.Email) + if existedContributorInfo != nil { + // existed: same primary email, different committer name + existedContributorInfo.CommitCnt += c.CommitCnt + }else{ + contributorInfos = append(contributorInfos, &ContributorInfo{ + nil, c.Email,c.CommitCnt, + }) + } } } ctx.Data["ContributorInfo"] = contributorInfos From db6cf3ee40894e1c1d011756bf99a9578c435bc7 Mon Sep 17 00:00:00 2001 From: lewis <747342561@qq.com> Date: Wed, 4 Aug 2021 16:14:15 +0800 Subject: [PATCH 2/5] fix left problem of 186 --- models/user_mail.go | 12 ++++++++++++ routers/user/auth.go | 9 +++++++++ routers/user/setting/profile.go | 12 ++++++++++++ 3 files changed, 33 insertions(+) mode change 100644 => 100755 models/user_mail.go mode change 100644 => 100755 routers/user/setting/profile.go diff --git a/models/user_mail.go b/models/user_mail.go old mode 100644 new mode 100755 index af9602e71..7244ec378 --- a/models/user_mail.go +++ b/models/user_mail.go @@ -80,6 +80,18 @@ func GetEmailAddressByID(uid, id int64) (*EmailAddress, error) { return email, nil } +// GetEmailAddressByIDAndEmail gets a user's email address by ID and email +func GetEmailAddressByIDAndEmail(uid int64, emailAddr string) (*EmailAddress, error) { + // User ID is required for security reasons + email := &EmailAddress{UID: uid, Email: emailAddr} + if has, err := x.Get(email); err != nil { + return nil, err + } else if !has { + return nil, nil + } + return email, nil +} + func isEmailActive(e Engine, email string, userID, emailID int64) (bool, error) { if len(email) == 0 { return true, nil diff --git a/routers/user/auth.go b/routers/user/auth.go index dd66fcb8b..13e338565 100755 --- a/routers/user/auth.go +++ b/routers/user/auth.go @@ -1266,6 +1266,15 @@ func Activate(ctx *context.Context) { log.Error("Error storing session: %v", err) } + email, err := models.GetEmailAddressByIDAndEmail(user.ID, user.Email) + if err != nil || email == nil{ + log.Error("GetEmailAddressByIDAndEmail failed", ctx.Data["MsgID"]) + } else { + if err := email.Activate(); err != nil { + log.Error("Activate failed: %v", err, ctx.Data["MsgID"]) + } + } + ctx.Flash.Success(ctx.Tr("auth.account_activated")) ctx.Redirect(setting.AppSubURL + "/") return diff --git a/routers/user/setting/profile.go b/routers/user/setting/profile.go old mode 100644 new mode 100755 index d6f25f913..a385f2cac --- a/routers/user/setting/profile.go +++ b/routers/user/setting/profile.go @@ -96,6 +96,18 @@ func ProfilePost(ctx *context.Context, form auth.UpdateProfileForm) { ctx.User.Location = form.Location ctx.User.Language = form.Language ctx.User.Description = form.Description + isUsed, err := models.IsEmailUsed(form.Email) + if err != nil { + ctx.ServerError("IsEmailUsed", err) + return + } + + if isUsed { + ctx.Flash.Error(ctx.Tr("form.email_been_used")) + ctx.Redirect(setting.AppSubURL + "/user/settings") + return + } + if err := models.UpdateUserSetting(ctx.User); err != nil { if _, ok := err.(models.ErrEmailAlreadyUsed); ok { ctx.Flash.Error(ctx.Tr("form.email_been_used")) From 374ae4611bdd2d1d26ff1687f2e0b0bc1f2870de Mon Sep 17 00:00:00 2001 From: OpenIhu Date: Wed, 4 Aug 2021 17:24:28 +0800 Subject: [PATCH 3/5] =?UTF-8?q?ContributorInfo=E8=B6=85=E8=BF=873=E4=B8=AA?= =?UTF-8?q?=E6=8A=98=E5=8F=A0=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- templates/repo/home.tmpl | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/templates/repo/home.tmpl b/templates/repo/home.tmpl index 7d632ea14..8065ce12d 100644 --- a/templates/repo/home.tmpl +++ b/templates/repo/home.tmpl @@ -193,13 +193,16 @@

贡献者 ({{len .ContributorInfo}})

- -
+ +
{{range .ContributorInfo}} - {{/*  {{.UserInfo.Name}}*/}} {{if .UserInfo}} {{else if .Email}} @@ -215,4 +218,12 @@
+ + {{template "base/footer" .}} From 4945ca4bdba7a96dce61778c72dfd28a5be9974e Mon Sep 17 00:00:00 2001 From: OpenIhu Date: Wed, 4 Aug 2021 21:28:16 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E8=B0=83=E6=95=B4ContributorInfo=E8=B6=85?= =?UTF-8?q?=E8=BF=8725=E4=B8=AA=E6=8A=98=E5=8F=A0=EF=BC=8C=E5=B9=B6?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E9=82=AE=E4=BB=B6=E8=81=94=E7=B3=BB=E8=80=85?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E9=A3=8E=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- templates/repo/home.tmpl | 53 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 45 insertions(+), 8 deletions(-) diff --git a/templates/repo/home.tmpl b/templates/repo/home.tmpl index 8065ce12d..a7eb085de 100644 --- a/templates/repo/home.tmpl +++ b/templates/repo/home.tmpl @@ -4,6 +4,48 @@ font-size: 1.0em; margin-bottom: 1.0rem; } +#contributorInfo > a:nth-child(n+25){ + display:none; +} +#contributorInfo > a{ + width: 2.0em; + float: left; + margin: .25em; +} +#contributorInfo > a.circular{ + height: 2.0em; + padding: 0; + overflow: hidden; + letter-spacing:1.0em; + text-indent: 0.6em; + line-height: 2.0em; + text-transform:capitalize; + color: #FFF; +} +#contributorInfo > a.circular:nth-child(9n+1){ + background-color: #00ADD8; +} +#contributorInfo > a.circular:nth-child(9n+2){ + background-color: #796218; +} +#contributorInfo > a.circular:nth-child(9n+3){ + background-color: #772c5a; +} +#contributorInfo > a.circular:nth-child(9n+4){ + background-color: #33225c; +} +#contributorInfo > a.circular:nth-child(9n+5){ + background-color: #146e5b; +} +#contributorInfo > a.circular:nth-child(9n+6){ + background-color: #26557c; +} +#contributorInfo > a.circular:nth-child(9n+7){ + background-color: #5c223a; +} +#contributorInfo > a.circular:nth-child(9n+8){ + background-color: #3f5720; +}
{{template "repo/header" .}} @@ -196,17 +238,12 @@ 全部 {{svg "octicon-chevron-right" 16}}
-
{{range .ContributorInfo}} {{if .UserInfo}} - + {{else if .Email}} - + {{.Email}} {{end}} {{end}}
@@ -222,7 +259,7 @@ From 29ed7e81bca9fb0c6dba0a8dd52837017fc530c4 Mon Sep 17 00:00:00 2001 From: OpenIhu Date: Wed, 4 Aug 2021 21:41:22 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E8=B0=83=E6=95=B4ContributorInfo=E9=82=AE?= =?UTF-8?q?=E4=BB=B6=E8=81=94=E7=B3=BB=E8=80=85=E5=A4=B4=E5=83=8F=E9=A3=8E?= =?UTF-8?q?=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- templates/repo/home.tmpl | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/templates/repo/home.tmpl b/templates/repo/home.tmpl index a7eb085de..75cee742e 100644 --- a/templates/repo/home.tmpl +++ b/templates/repo/home.tmpl @@ -23,28 +23,28 @@ color: #FFF; } #contributorInfo > a.circular:nth-child(9n+1){ - background-color: #00ADD8; + background-color: #4ccdec; } #contributorInfo > a.circular:nth-child(9n+2){ - background-color: #796218; + background-color: #e0b265; } #contributorInfo > a.circular:nth-child(9n+3){ - background-color: #772c5a; + background-color: #d884b7; } #contributorInfo > a.circular:nth-child(9n+4){ - background-color: #33225c; + background-color: #8c6bdc; } #contributorInfo > a.circular:nth-child(9n+5){ - background-color: #146e5b; + background-color: #3cb99f; } #contributorInfo > a.circular:nth-child(9n+6){ - background-color: #26557c; + background-color: #6995b9; } #contributorInfo > a.circular:nth-child(9n+7){ - background-color: #5c223a; + background-color: #ab91a7; } #contributorInfo > a.circular:nth-child(9n+8){ - background-color: #3f5720; + background-color: #bfd0aa; }