diff options
-rw-r--r-- | README.md | 2 | ||||
-rw-r--r-- | gogs.go | 2 | ||||
-rw-r--r-- | modules/mailer/mail.go | 71 | ||||
-rw-r--r-- | routers/repo/issue.go | 2 | ||||
-rw-r--r-- | templates/.VERSION | 2 | ||||
-rw-r--r-- | templates/mail/notify/collaborator.tmpl | 18 | ||||
-rw-r--r-- | templates/mail/notify/mention.tmpl | 17 |
7 files changed, 56 insertions, 58 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.6.12 Beta +##### Current version: 0.6.13 Beta <table> <tr> @@ -17,7 +17,7 @@ import ( "github.com/gogits/gogs/modules/setting" ) -const APP_VER = "0.6.12.0916 Beta" +const APP_VER = "0.6.13.0917 Beta" func init() { runtime.GOMAXPROCS(runtime.NumCPU()) diff --git a/modules/mailer/mail.go b/modules/mailer/mail.go index 3e44bc6dfd..2ecb8ffe7b 100644 --- a/modules/mailer/mail.go +++ b/modules/mailer/mail.go @@ -5,7 +5,6 @@ package mailer import ( - "errors" "fmt" "path" @@ -34,27 +33,37 @@ func ComposeTplData(u *models.User) map[interface{}]interface{} { data["AppUrl"] = setting.AppUrl data["ActiveCodeLives"] = setting.Service.ActiveCodeLives / 60 data["ResetPwdCodeLives"] = setting.Service.ResetPwdCodeLives / 60 + if u != nil { data["User"] = u } return data } -func SendActivateAccountMail(c *macaron.Context, u *models.User) { +func SendUserMail(c *macaron.Context, u *models.User, tpl base.TplName, code, subject, info string) { data := ComposeTplData(u) - data["Code"] = u.GenerateActivateCode() - body, err := c.HTMLString(string(AUTH_ACTIVATE), data) + data["Code"] = code + body, err := c.HTMLString(string(tpl), data) if err != nil { log.Error(4, "HTMLString: %v", err) return } - msg := NewMessage([]string{u.Email}, c.Tr("mail.activate_account"), body) - msg.Info = fmt.Sprintf("UID: %d, activate account", u.Id) + msg := NewMessage([]string{u.Email}, subject, body) + msg.Info = fmt.Sprintf("UID: %d, %s", u.Id, info) SendAsync(msg) } +func SendActivateAccountMail(c *macaron.Context, u *models.User) { + SendUserMail(c, u, AUTH_ACTIVATE, u.GenerateActivateCode(), c.Tr("mail.activate_account"), "activate account") +} + +// SendResetPasswordMail sends reset password e-mail. +func SendResetPasswordMail(c *macaron.Context, u *models.User) { + SendUserMail(c, u, AUTH_RESET_PASSWORD, u.GenerateActivateCode(), c.Tr("mail.reset_password"), "reset password") +} + // SendActivateAccountMail sends confirmation e-mail. func SendActivateEmailMail(c *macaron.Context, u *models.User, email *models.EmailAddress) { data := ComposeTplData(u) @@ -72,27 +81,11 @@ func SendActivateEmailMail(c *macaron.Context, u *models.User, email *models.Ema SendAsync(msg) } -// SendResetPasswordMail sends reset password e-mail. -func SendResetPasswordMail(c *macaron.Context, u *models.User) { - data := ComposeTplData(u) - data["Code"] = u.GenerateActivateCode() - body, err := c.HTMLString(string(AUTH_RESET_PASSWORD), data) - if err != nil { - log.Error(4, "HTMLString: %v", err) - return - } - - msg := NewMessage([]string{u.Email}, c.Tr("mail.reset_password"), body) - msg.Info = fmt.Sprintf("UID: %d, reset password", u.Id) - - SendAsync(msg) -} - // SendIssueNotifyMail sends mail notification of all watchers of repository. func SendIssueNotifyMail(u, owner *models.User, repo *models.Repository, issue *models.Issue) ([]string, error) { ws, err := models.GetWatchers(repo.ID) if err != nil { - return nil, errors.New("mail.NotifyWatchers(GetWatchers): " + err.Error()) + return nil, fmt.Errorf("GetWatchers[%d]: %v", repo.ID, err) } tos := make([]string, 0, len(ws)) @@ -101,11 +94,15 @@ func SendIssueNotifyMail(u, owner *models.User, repo *models.Repository, issue * if u.Id == uid { continue } - u, err := models.GetUserByID(uid) + to, err := models.GetUserByID(uid) if err != nil { - return nil, errors.New("mail.NotifyWatchers(GetUserById): " + err.Error()) + return nil, fmt.Errorf("GetUserByID: %v", err) + } + if to.IsOrganization() { + continue } - tos = append(tos, u.Email) + + tos = append(tos, to.Email) } if len(tos) == 0 { @@ -117,7 +114,8 @@ func SendIssueNotifyMail(u, owner *models.User, repo *models.Repository, issue * base.RenderSpecialLink([]byte(issue.Content), owner.Name+"/"+repo.Name), setting.AppUrl, owner.Name, repo.Name, issue.Index) msg := NewMessage(tos, subject, content) - msg.Info = fmt.Sprintf("Subject: %s, send issue notify emails", subject) + msg.Info = fmt.Sprintf("Subject: %s, issue notify", subject) + SendAsync(msg) return tos, nil } @@ -135,35 +133,36 @@ func SendIssueMentionMail(r macaron.Render, u, owner *models.User, data := ComposeTplData(nil) data["IssueLink"] = fmt.Sprintf("%s/%s/issues/%d", owner.Name, repo.Name, issue.Index) data["Subject"] = subject + data["ActUserName"] = u.DisplayName() + data["Content"] = string(base.RenderSpecialLink([]byte(issue.Content), owner.Name+"/"+repo.Name)) body, err := r.HTMLString(string(NOTIFY_MENTION), data) if err != nil { - return fmt.Errorf("mail.SendIssueMentionMail(fail to render): %v", err) + return fmt.Errorf("HTMLString: %v", err) } msg := NewMessage(tos, subject, body) - msg.Info = fmt.Sprintf("Subject: %s, send issue mention emails", subject) + msg.Info = fmt.Sprintf("Subject: %s, issue mention", subject) + SendAsync(msg) return nil } // SendCollaboratorMail sends mail notification to new collaborator. -func SendCollaboratorMail(r macaron.Render, u, owner *models.User, - repo *models.Repository) error { - - subject := fmt.Sprintf("%s added you to %s", owner.Name, repo.Name) +func SendCollaboratorMail(r macaron.Render, u, doer *models.User, repo *models.Repository) error { + subject := fmt.Sprintf("%s added you to %s/%s", doer.Name, repo.Owner.Name, repo.Name) data := ComposeTplData(nil) - data["RepoLink"] = path.Join(owner.Name, repo.Name) + data["RepoLink"] = path.Join(repo.Owner.Name, repo.Name) data["Subject"] = subject body, err := r.HTMLString(string(NOTIFY_COLLABORATOR), data) if err != nil { - return fmt.Errorf("mail.SendCollaboratorMail(fail to render): %v", err) + return fmt.Errorf("HTMLString: %v", err) } msg := NewMessage([]string{u.Email}, subject, body) - msg.Info = fmt.Sprintf("UID: %d, send register mail", u.Id) + msg.Info = fmt.Sprintf("UID: %d, add collaborator", u.Id) SendAsync(msg) return nil diff --git a/routers/repo/issue.go b/routers/repo/issue.go index f9a560827a..cc344bd080 100644 --- a/routers/repo/issue.go +++ b/routers/repo/issue.go @@ -367,7 +367,7 @@ func NewIssuePost(ctx *middleware.Context, form auth.CreateIssueForm) { mentions := base.MentionPattern.FindAllString(issue.Content, -1) if len(mentions) > 0 { for i := range mentions { - mentions[i] = mentions[i][1:] + mentions[i] = strings.TrimSpace(mentions[i])[1:] } if err := models.UpdateMentions(mentions, issue.ID); err != nil { diff --git a/templates/.VERSION b/templates/.VERSION index b2b7e63fda..2380236549 100644 --- a/templates/.VERSION +++ b/templates/.VERSION @@ -1 +1 @@ -0.6.12.0916 Beta
\ No newline at end of file +0.6.13.0917 Beta
\ No newline at end of file diff --git a/templates/mail/notify/collaborator.tmpl b/templates/mail/notify/collaborator.tmpl index 36a3149daa..9b7e76edb7 100644 --- a/templates/mail/notify/collaborator.tmpl +++ b/templates/mail/notify/collaborator.tmpl @@ -1,18 +1,16 @@ <!DOCTYPE html> <html> <head> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <title>{{.Subject}}</title> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + <title>{{.Subject}}</title> </head> <body> - <p>You can now push to this repository.</p> - <p> - --- - <br> - View it on Gogs: - <br> - <a href="{{.AppUrl}}{{.RepoLink}}">{{.AppUrl}}{{.RepoLink}}</a> - </p> + <p>You are now a collaborator of this repository.</p> + <p> + --- + <br> + View it on Gogs: <a href="{{.AppUrl}}{{.RepoLink}}">{{.RepoLink}}</a> + </p> </body> </html> diff --git a/templates/mail/notify/mention.tmpl b/templates/mail/notify/mention.tmpl index be022d0dd7..6c6fba32c5 100644 --- a/templates/mail/notify/mention.tmpl +++ b/templates/mail/notify/mention.tmpl @@ -1,16 +1,17 @@ <!DOCTYPE html> <html> <head> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <title>{{.Subject}}</title> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + <title>{{.Subject}}</title> </head> <body> - <p>{{.ActUserName}} mentioned you.</p> - <p> - --- - <br> - <a href="{{.AppUrl}}{{.IssueLink}}">View it on Gogs</a>. - </p> + <p>@{{.ActUserName}} mentioned you:</p> + <p>{{.Content | Str2html}}</p> + <p> + --- + <br> + <a href="{{.AppUrl}}{{.IssueLink}}">View it on Gogs</a>. + </p> </body> </html> |