From 57bc2d1ca0bfc3ba90e6d85309dba39415c6db73 Mon Sep 17 00:00:00 2001 From: Unknown Date: Thu, 13 Mar 2014 03:39:18 -0400 Subject: Add update user profile back end, add new gitignore and license, add template data to public profile page --- routers/repo/repo.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'routers/repo/repo.go') diff --git a/routers/repo/repo.go b/routers/repo/repo.go index a12b45d7..e1809b4b 100644 --- a/routers/repo/repo.go +++ b/routers/repo/repo.go @@ -46,7 +46,7 @@ func Create(form auth.CreateRepoForm, req *http.Request, r render.Render, data b if err == nil { if _, err = models.CreateRepository(user, form.RepoName, form.Description, form.Language, form.License, - form.Visibility == "private", form.InitReadme == "true"); err == nil { + form.Visibility == "private", form.InitReadme == "on"); err == nil { if err == nil { data["RepoName"] = user.Name + "/" + form.RepoName r.HTML(200, "repo/created", data) @@ -83,7 +83,7 @@ func Delete(form auth.DeleteRepoForm, req *http.Request, r render.Render, data b return } - r.Redirect("/", 200) + r.Redirect("/", 302) } func List(req *http.Request, r render.Render, data base.TmplData, session sessions.Session) { -- cgit v1.2.3 From 56cf05be771977abd9ae2e68dd446092c595981c Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 14 Mar 2014 01:40:34 -0400 Subject: Add errHandler mid ware --- modules/log/error.go | 32 ++++++++++++++++++++++++++++++++ routers/repo/repo.go | 9 ++++----- web.go | 1 + 3 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 modules/log/error.go (limited to 'routers/repo/repo.go') diff --git a/modules/log/error.go b/modules/log/error.go new file mode 100644 index 00000000..cb94ec24 --- /dev/null +++ b/modules/log/error.go @@ -0,0 +1,32 @@ +// Copyright 2014 The Gogs Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package log + +import ( + "github.com/codegangsta/martini" + "github.com/martini-contrib/render" +) + +// ErrHandler is an interface for custom error handler. +type ErrHandler interface { + Handle(string, render.Render, error) +} + +// ErrHandle is a Middleware that maps a ErrHandler service into the Martini handler chain. +func ErrHandle() martini.Handler { + return func(context martini.Context) { + context.MapTo(&errHandler{}, (*ErrHandler)(nil)) + } +} + +type errHandler struct { +} + +func (eh *errHandler) Handle(title string, r render.Render, err error) { + Error("%s: %v", title, err) + r.HTML(200, "base/error", map[string]interface{}{ + "ErrorMsg": err, + }) +} diff --git a/routers/repo/repo.go b/routers/repo/repo.go index e1809b4b..1c9bb050 100644 --- a/routers/repo/repo.go +++ b/routers/repo/repo.go @@ -5,9 +5,10 @@ package repo import ( + "net/http" + "github.com/martini-contrib/render" "github.com/martini-contrib/sessions" - "net/http" "github.com/gogits/gogs/models" "github.com/gogits/gogs/modules/auth" @@ -15,7 +16,7 @@ import ( "github.com/gogits/gogs/modules/log" ) -func Create(form auth.CreateRepoForm, req *http.Request, r render.Render, data base.TmplData, session sessions.Session) { +func Create(form auth.CreateRepoForm, req *http.Request, r render.Render, data base.TmplData, session sessions.Session, eh log.ErrHandler) { data["Title"] = "Create repository" if req.Method == "GET" { @@ -63,9 +64,7 @@ func Create(form auth.CreateRepoForm, req *http.Request, r render.Render, data b return } - data["ErrorMsg"] = err - log.Error("repo.Create: %v", err) - r.HTML(200, "base/error", data) + eh.Handle("repo.Create", r, err) } func Delete(form auth.DeleteRepoForm, req *http.Request, r render.Render, data base.TmplData, session sessions.Session) { diff --git a/web.go b/web.go index 1fa19afc..30e881bb 100644 --- a/web.go +++ b/web.go @@ -50,6 +50,7 @@ func runWeb(*cli.Context) { // Middlewares. m.Use(render.Renderer(render.Options{Funcs: []template.FuncMap{AppHelpers}})) m.Use(base.InitContext()) + m.Use(log.ErrHandle()) // TODO: should use other store because cookie store is not secure. store := sessions.NewCookieStore([]byte("secret123")) -- cgit v1.2.3 From 15f8bc417e2b5683e2cd578c9c50f51acfd3daba Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 14 Mar 2014 01:51:12 -0400 Subject: Add log.handle --- modules/log/error.go | 32 -------------------------------- modules/log/log.go | 10 ++++++++++ routers/repo/repo.go | 4 ++-- web.go | 1 - 4 files changed, 12 insertions(+), 35 deletions(-) delete mode 100644 modules/log/error.go (limited to 'routers/repo/repo.go') diff --git a/modules/log/error.go b/modules/log/error.go deleted file mode 100644 index cb94ec24..00000000 --- a/modules/log/error.go +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2014 The Gogs Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package log - -import ( - "github.com/codegangsta/martini" - "github.com/martini-contrib/render" -) - -// ErrHandler is an interface for custom error handler. -type ErrHandler interface { - Handle(string, render.Render, error) -} - -// ErrHandle is a Middleware that maps a ErrHandler service into the Martini handler chain. -func ErrHandle() martini.Handler { - return func(context martini.Context) { - context.MapTo(&errHandler{}, (*ErrHandler)(nil)) - } -} - -type errHandler struct { -} - -func (eh *errHandler) Handle(title string, r render.Render, err error) { - Error("%s: %v", title, err) - r.HTML(200, "base/error", map[string]interface{}{ - "ErrorMsg": err, - }) -} diff --git a/modules/log/log.go b/modules/log/log.go index 0634bde6..f71be7c1 100644 --- a/modules/log/log.go +++ b/modules/log/log.go @@ -6,7 +6,11 @@ package log import ( + "github.com/martini-contrib/render" + "github.com/gogits/logs" + + "github.com/gogits/gogs/modules/base" ) var logger *logs.BeeLogger @@ -35,3 +39,9 @@ func Warn(format string, v ...interface{}) { func Critical(format string, v ...interface{}) { logger.Critical(format, v...) } + +func Handle(status int, title, tmpl string, data base.TmplData, r render.Render, err error) { + data["ErrorMsg"] = err + Error("%s: %v", title, err) + r.HTML(status, tmpl, data) +} diff --git a/routers/repo/repo.go b/routers/repo/repo.go index 1c9bb050..706b4f93 100644 --- a/routers/repo/repo.go +++ b/routers/repo/repo.go @@ -16,7 +16,7 @@ import ( "github.com/gogits/gogs/modules/log" ) -func Create(form auth.CreateRepoForm, req *http.Request, r render.Render, data base.TmplData, session sessions.Session, eh log.ErrHandler) { +func Create(form auth.CreateRepoForm, req *http.Request, r render.Render, data base.TmplData, session sessions.Session) { data["Title"] = "Create repository" if req.Method == "GET" { @@ -64,7 +64,7 @@ func Create(form auth.CreateRepoForm, req *http.Request, r render.Render, data b return } - eh.Handle("repo.Create", r, err) + log.Handle(200, "repo.Create", "base/error", data, r, err) } func Delete(form auth.DeleteRepoForm, req *http.Request, r render.Render, data base.TmplData, session sessions.Session) { diff --git a/web.go b/web.go index 30e881bb..1fa19afc 100644 --- a/web.go +++ b/web.go @@ -50,7 +50,6 @@ func runWeb(*cli.Context) { // Middlewares. m.Use(render.Renderer(render.Options{Funcs: []template.FuncMap{AppHelpers}})) m.Use(base.InitContext()) - m.Use(log.ErrHandle()) // TODO: should use other store because cookie store is not secure. store := sessions.NewCookieStore([]byte("secret123")) -- cgit v1.2.3 From 1ce17cce764b5c10feeba5a92586be9a45173e26 Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 14 Mar 2014 01:59:07 -0400 Subject: Add log.handle --- modules/log/log.go | 6 ++++-- routers/repo/repo.go | 10 +++------- routers/repo/single.go | 4 +--- routers/user/setting.go | 12 +++--------- routers/user/user.go | 20 +++++--------------- templates/base/error.tmpl | 7 ------- templates/status/200.tmpl | 7 +++++++ 7 files changed, 23 insertions(+), 43 deletions(-) delete mode 100644 templates/base/error.tmpl create mode 100644 templates/status/200.tmpl (limited to 'routers/repo/repo.go') diff --git a/modules/log/log.go b/modules/log/log.go index f71be7c1..b3a3e0a6 100644 --- a/modules/log/log.go +++ b/modules/log/log.go @@ -6,6 +6,8 @@ package log import ( + "fmt" + "github.com/martini-contrib/render" "github.com/gogits/logs" @@ -40,8 +42,8 @@ func Critical(format string, v ...interface{}) { logger.Critical(format, v...) } -func Handle(status int, title, tmpl string, data base.TmplData, r render.Render, err error) { +func Handle(status int, title string, data base.TmplData, r render.Render, err error) { data["ErrorMsg"] = err Error("%s: %v", title, err) - r.HTML(status, tmpl, data) + r.HTML(status, fmt.Sprintf("status/%d", status), data) } diff --git a/routers/repo/repo.go b/routers/repo/repo.go index 706b4f93..b25ce189 100644 --- a/routers/repo/repo.go +++ b/routers/repo/repo.go @@ -64,7 +64,7 @@ func Create(form auth.CreateRepoForm, req *http.Request, r render.Render, data b return } - log.Handle(200, "repo.Create", "base/error", data, r, err) + log.Handle(200, "repo.Create", data, r, err) } func Delete(form auth.DeleteRepoForm, req *http.Request, r render.Render, data base.TmplData, session sessions.Session) { @@ -76,9 +76,7 @@ func Delete(form auth.DeleteRepoForm, req *http.Request, r render.Render, data b } if err := models.DeleteRepository(form.UserId, form.RepoId, form.UserName); err != nil { - data["ErrorMsg"] = err - log.Error("repo.Delete: %v", err) - r.HTML(200, "base/error", data) + log.Handle(200, "repo.Delete", data, r, err) return } @@ -95,9 +93,7 @@ func List(req *http.Request, r render.Render, data base.TmplData, session sessio data["Title"] = "Repositories" repos, err := models.GetRepositories(u) if err != nil { - data["ErrorMsg"] = err - log.Error("repo.List: %v", err) - r.HTML(200, "base/error", data) + log.Handle(200, "repo.List", data, r, err) return } diff --git a/routers/repo/single.go b/routers/repo/single.go index 1d5e601a..489666f4 100644 --- a/routers/repo/single.go +++ b/routers/repo/single.go @@ -16,9 +16,7 @@ func Single(params martini.Params, r render.Render, data base.TmplData) { files, err := models.GetReposFiles(params["username"], params["reponame"], "HEAD", "/") if err != nil { - data["ErrorMsg"] = err - log.Error("repo.List: %v", err) - r.HTML(200, "base/error", data) + log.Handle(200, "repo.Single", data, r, err) return } diff --git a/routers/user/setting.go b/routers/user/setting.go index 08879ae4..b01d27d8 100644 --- a/routers/user/setting.go +++ b/routers/user/setting.go @@ -40,9 +40,7 @@ func Setting(form auth.UpdateProfileForm, r render.Render, data base.TmplData, r user.Avatar = base.EncodeMd5(form.Avatar) user.AvatarEmail = form.Avatar if err := models.UpdateUser(user); err != nil { - data["ErrorMsg"] = err - log.Error("setting.Setting: %v", err) - r.HTML(200, "base/error", data) + log.Handle(200, "setting.Setting", data, r, err) return } @@ -62,9 +60,7 @@ func SettingPassword(form auth.UpdatePasswdForm, r render.Render, data base.Tmpl user := auth.SignedInUser(session) newUser := &models.User{Passwd: form.NewPasswd} if err := newUser.EncodePasswd(); err != nil { - data["ErrorMsg"] = err - log.Error("setting.UpdatePasswd: %v", err) - r.HTML(200, "base/error", data) + log.Handle(200, "setting.SettingPassword", data, r, err) return } @@ -77,9 +73,7 @@ func SettingPassword(form auth.UpdatePasswdForm, r render.Render, data base.Tmpl } else { user.Passwd = newUser.Passwd if err := models.UpdateUser(user); err != nil { - data["ErrorMsg"] = err - log.Error("setting.UpdatePasswd: %v", err) - r.HTML(200, "base/error", data) + log.Handle(200, "setting.SettingPassword", data, r, err) return } data["IsSuccess"] = true diff --git a/routers/user/user.go b/routers/user/user.go index 2ce158b6..6095b538 100644 --- a/routers/user/user.go +++ b/routers/user/user.go @@ -22,9 +22,7 @@ func Dashboard(r render.Render, data base.TmplData, session sessions.Session) { data["PageIsUserDashboard"] = true repos, err := models.GetRepositories(&models.User{Id: auth.SignedInId(session)}) if err != nil { - data["ErrorMsg"] = err - log.Error("dashboard: %v", err) - r.HTML(200, "base/error", data) + log.Handle(200, "user.Dashboard", data, r, err) return } data["MyRepos"] = repos @@ -37,9 +35,7 @@ func Profile(params martini.Params, r render.Render, data base.TmplData, session // TODO: Need to check view self or others. user, err := models.GetUserByName(params["username"]) if err != nil { - data["ErrorMsg"] = err - log.Error("user.Profile: %v", err) - r.HTML(200, "base/error", data) + log.Handle(200, "user.Profile", data, r, err) return } @@ -70,9 +66,7 @@ func SignIn(form auth.LogInForm, data base.TmplData, req *http.Request, r render return } - data["ErrorMsg"] = err - log.Error("user.SignIn: %v", err) - r.HTML(200, "base/error", data) + log.Handle(200, "user.SignIn", data, r, err) return } @@ -129,9 +123,7 @@ func SignUp(form auth.RegisterForm, data base.TmplData, req *http.Request, r ren data["ErrorMsg"] = "E-mail address has been already used" r.HTML(200, "user/signup", data) default: - data["ErrorMsg"] = err - log.Error("user.SignUp: %v", data) - r.HTML(200, "base/error", nil) + log.Handle(200, "user.SignUp", data, r, err) } return } @@ -155,9 +147,7 @@ func Delete(data base.TmplData, req *http.Request, session sessions.Session, r r case models.ErrUserOwnRepos.Error(): data["ErrorMsg"] = "Your account still have ownership of repository, you have to delete or transfer them first." default: - data["ErrorMsg"] = err - log.Error("user.Delete: %v", data) - r.HTML(200, "base/error", nil) + log.Handle(200, "user.Delete", data, r, err) return } } diff --git a/templates/base/error.tmpl b/templates/base/error.tmpl deleted file mode 100644 index 8f644942..00000000 --- a/templates/base/error.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -{{template "base/head" .}} -{{template "base/navbar" .}} -
-

An error is occurred : {{.ErrorMsg}}

-

Application Version: {{AppVer}}

-
-{{template "base/footer" .}} \ No newline at end of file diff --git a/templates/status/200.tmpl b/templates/status/200.tmpl new file mode 100644 index 00000000..8f644942 --- /dev/null +++ b/templates/status/200.tmpl @@ -0,0 +1,7 @@ +{{template "base/head" .}} +{{template "base/navbar" .}} +
+

An error is occurred : {{.ErrorMsg}}

+

Application Version: {{AppVer}}

+
+{{template "base/footer" .}} \ No newline at end of file -- cgit v1.2.3