| @@ -1,7 +1,9 @@ | |||||
| Gogs - Go Git Service [](https://app.wercker.com/project/bykey/ad0bdb0bc450ac6f09bc56b9640a50aa) [](https://gowalker.org/github.com/gogits/gogs) | Gogs - Go Git Service [](https://app.wercker.com/project/bykey/ad0bdb0bc450ac6f09bc56b9640a50aa) [](https://gowalker.org/github.com/gogits/gogs) | ||||
| ===================== | ===================== | ||||
| Gogs(Go Git Service) is a GitHub-like clone in the Go Programming Language, it currently supports Linux and Max OS X, but Windows has **NOT** supported yet due to installation problem with [libgit2](http://libgit2.github.com/) in Windows. | |||||
| Gogs(Go Git Service) is a GitHub-like clone in the Go Programming Language. | |||||
| Since we choose to use pure Go implmentation of Git manipulation, Gogs certainly supports **ALL platforms** that Go supports, including Linux, Max OS X, and Windows with **ZERO** dependency. | |||||
| ##### Current version: 0.0.8 Alpha | ##### Current version: 0.0.8 Alpha | ||||
| @@ -41,6 +41,23 @@ func (ctx *Context) Query(name string) string { | |||||
| // return ctx.p[name] | // return ctx.p[name] | ||||
| // } | // } | ||||
| // HasError returns true if error occurs in form validation. | |||||
| func (ctx *Context) HasError() bool { | |||||
| hasErr, ok := ctx.Data["HasError"] | |||||
| if !ok { | |||||
| return false | |||||
| } | |||||
| return hasErr.(bool) | |||||
| } | |||||
| // RenderWithErr used for page has form validation but need to prompt error to users. | |||||
| func (ctx *Context) RenderWithErr(msg, tpl string, form auth.Form) { | |||||
| ctx.Data["HasError"] = true | |||||
| ctx.Data["ErrorMsg"] = msg | |||||
| auth.AssignForm(form, ctx.Data) | |||||
| ctx.Render.HTML(200, tpl, ctx.Data) | |||||
| } | |||||
| // Handle handles and logs error by given status. | // Handle handles and logs error by given status. | ||||
| func (ctx *Context) Handle(status int, title string, err error) { | func (ctx *Context) Handle(status int, title string, err error) { | ||||
| ctx.Data["ErrorMsg"] = err | ctx.Data["ErrorMsg"] = err | ||||
| @@ -20,7 +20,7 @@ func Create(ctx *middleware.Context, form auth.CreateRepoForm) { | |||||
| return | return | ||||
| } | } | ||||
| if hasErr, ok := ctx.Data["HasError"]; ok && hasErr.(bool) { | |||||
| if ctx.HasError() { | |||||
| ctx.Render.HTML(200, "repo/create", ctx.Data) | ctx.Render.HTML(200, "repo/create", ctx.Data) | ||||
| return | return | ||||
| } | } | ||||
| @@ -30,10 +30,7 @@ func Create(ctx *middleware.Context, form auth.CreateRepoForm) { | |||||
| user, err := models.GetUserById(form.UserId) | user, err := models.GetUserById(form.UserId) | ||||
| if err != nil { | if err != nil { | ||||
| if err.Error() == models.ErrUserNotExist.Error() { | if err.Error() == models.ErrUserNotExist.Error() { | ||||
| ctx.Data["HasError"] = true | |||||
| ctx.Data["ErrorMsg"] = "User does not exist" | |||||
| auth.AssignForm(form, ctx.Data) | |||||
| ctx.Render.HTML(200, "repo/create", ctx.Data) | |||||
| ctx.RenderWithErr("User does not exist", "repo/create", &form) | |||||
| return | return | ||||
| } | } | ||||
| } | } | ||||
| @@ -48,10 +45,7 @@ func Create(ctx *middleware.Context, form auth.CreateRepoForm) { | |||||
| } | } | ||||
| if err.Error() == models.ErrRepoAlreadyExist.Error() { | if err.Error() == models.ErrRepoAlreadyExist.Error() { | ||||
| ctx.Data["HasError"] = true | |||||
| ctx.Data["ErrorMsg"] = "Repository name has already been used" | |||||
| auth.AssignForm(form, ctx.Data) | |||||
| ctx.Render.HTML(200, "repo/create", ctx.Data) | |||||
| ctx.RenderWithErr("Repository name has already been used", "repo/create", &form) | |||||
| return | return | ||||
| } | } | ||||
| @@ -52,6 +52,5 @@ func Setting(ctx *middleware.Context) { | |||||
| ctx.Data["Title"] = ctx.Data["Title"].(string) + " - settings" | ctx.Data["Title"] = ctx.Data["Title"].(string) + " - settings" | ||||
| ctx.Data["IsRepoToolbarSetting"] = true | ctx.Data["IsRepoToolbarSetting"] = true | ||||
| ctx.Render.HTML(200, "repo/setting", ctx.Data) | ctx.Render.HTML(200, "repo/setting", ctx.Data) | ||||
| } | } | ||||
| @@ -128,9 +128,7 @@ func SettingSSHKeys(ctx *middleware.Context, form auth.AddSSHKeyForm) { | |||||
| } | } | ||||
| if err := models.AddPublicKey(k); err != nil { | if err := models.AddPublicKey(k); err != nil { | ||||
| ctx.Data["ErrorMsg"] = err | |||||
| log.Error("ssh.AddPublicKey: %v", err) | |||||
| ctx.Render.HTML(200, "base/error", ctx.Data) | |||||
| ctx.Handle(200, "ssh.AddPublicKey", err) | |||||
| return | return | ||||
| } else { | } else { | ||||
| ctx.Data["AddSSHKeySuccess"] = true | ctx.Data["AddSSHKeySuccess"] = true | ||||
| @@ -140,9 +138,7 @@ func SettingSSHKeys(ctx *middleware.Context, form auth.AddSSHKeyForm) { | |||||
| // List existed SSH keys. | // List existed SSH keys. | ||||
| keys, err := models.ListPublicKey(ctx.User.Id) | keys, err := models.ListPublicKey(ctx.User.Id) | ||||
| if err != nil { | if err != nil { | ||||
| ctx.Data["ErrorMsg"] = err | |||||
| log.Error("ssh.ListPublicKey: %v", err) | |||||
| ctx.Render.HTML(200, "base/error", ctx.Data) | |||||
| ctx.Handle(200, "ssh.ListPublicKey", err) | |||||
| return | return | ||||
| } | } | ||||
| @@ -82,10 +82,7 @@ func SignIn(ctx *middleware.Context, form auth.LogInForm) { | |||||
| user, err := models.LoginUserPlain(form.UserName, form.Password) | user, err := models.LoginUserPlain(form.UserName, form.Password) | ||||
| if err != nil { | if err != nil { | ||||
| if err.Error() == models.ErrUserNotExist.Error() { | if err.Error() == models.ErrUserNotExist.Error() { | ||||
| ctx.Data["HasError"] = true | |||||
| ctx.Data["ErrorMsg"] = "Username or password is not correct" | |||||
| auth.AssignForm(form, ctx.Data) | |||||
| ctx.Render.HTML(200, "user/signin", ctx.Data) | |||||
| ctx.RenderWithErr("Username or password is not correct", "user/signin", &form) | |||||
| return | return | ||||
| } | } | ||||
| @@ -121,7 +118,7 @@ func SignUp(ctx *middleware.Context, form auth.RegisterForm) { | |||||
| auth.AssignForm(form, ctx.Data) | auth.AssignForm(form, ctx.Data) | ||||
| } | } | ||||
| if hasErr, ok := ctx.Data["HasError"]; ok && hasErr.(bool) { | |||||
| if ctx.HasError() { | |||||
| ctx.Render.HTML(200, "user/signup", ctx.Data) | ctx.Render.HTML(200, "user/signup", ctx.Data) | ||||
| return | return | ||||
| } | } | ||||
| @@ -133,18 +130,11 @@ func SignUp(ctx *middleware.Context, form auth.RegisterForm) { | |||||
| } | } | ||||
| if err := models.RegisterUser(u); err != nil { | if err := models.RegisterUser(u); err != nil { | ||||
| ctx.Data["HasError"] = true | |||||
| auth.AssignForm(form, ctx.Data) | |||||
| switch err.Error() { | switch err.Error() { | ||||
| case models.ErrUserAlreadyExist.Error(): | case models.ErrUserAlreadyExist.Error(): | ||||
| ctx.Data["Err_Username"] = true | |||||
| ctx.Data["ErrorMsg"] = "Username has been already taken" | |||||
| ctx.Render.HTML(200, "user/signup", ctx.Data) | |||||
| ctx.RenderWithErr("Username has been already taken", "user/signup", &form) | |||||
| case models.ErrEmailAlreadyUsed.Error(): | case models.ErrEmailAlreadyUsed.Error(): | ||||
| ctx.Data["Err_Email"] = true | |||||
| ctx.Data["ErrorMsg"] = "E-mail address has been already used" | |||||
| ctx.Render.HTML(200, "user/signup", ctx.Data) | |||||
| ctx.RenderWithErr("E-mail address has been already used", "user/signup", &form) | |||||
| default: | default: | ||||
| ctx.Handle(200, "user.SignUp", err) | ctx.Handle(200, "user.SignUp", err) | ||||
| } | } | ||||
| @@ -22,7 +22,7 @@ | |||||
| <span class="clearfix"></span> | <span class="clearfix"></span> | ||||
| </li> | </li> | ||||
| {{else}} | {{else}} | ||||
| <li>Not any activity yet.</li> | |||||
| <li>No any activity yet.</li> | |||||
| {{end}} | {{end}} | ||||
| </ul> | </ul> | ||||
| </div> | </div> | ||||
| @@ -39,7 +39,7 @@ | |||||
| <span class="clearfix"></span> | <span class="clearfix"></span> | ||||
| </li> | </li> | ||||
| {{else}} | {{else}} | ||||
| <li>Not any public activity yet.</li> | |||||
| <li>No any public activity yet.</li> | |||||
| {{end}} | {{end}} | ||||
| </ul> | </ul> | ||||
| </div> | </div> | ||||