From 37fae304d3d335d5e0320a2bd73f86d410b71b84 Mon Sep 17 00:00:00 2001 From: FuXiaoHei Date: Thu, 13 Mar 2014 13:14:43 +0800 Subject: [PATCH] single repository page ui, add spec handler to get repo --- gogs.go | 6 +++--- models/models.go | 2 +- models/repo.go | 3 ++- models/user.go | 20 -------------------- modules/auth/auth.go | 5 +++++ routers/repo/single.go | 8 ++++++-- routers/user/user.go | 20 +++++++++++++++++++- web.go | 5 +++-- 8 files changed, 39 insertions(+), 30 deletions(-) diff --git a/gogs.go b/gogs.go index cf097a3a0f..6865e1f213 100644 --- a/gogs.go +++ b/gogs.go @@ -20,19 +20,19 @@ import ( // Test that go1.1 tag above is included in builds. main.go refers to this definition. const go11tag = true -const APP_VER = "0.0.5.0311" +const APP_VER = "0.0.5.0313" func init() { runtime.GOMAXPROCS(runtime.NumCPU()) } func checkRunUser() bool { - user, err := user.Current() + u, err := user.Current() if err != nil { // TODO: log return false } - return user.Username == base.Cfg.MustValue("", "RUN_USER") + return u.Username == base.Cfg.MustValue("", "RUN_USER") } func main() { diff --git a/models/models.go b/models/models.go index 413775f58b..7c28dc5422 100644 --- a/models/models.go +++ b/models/models.go @@ -92,7 +92,7 @@ func setEngine() { func init() { setEngine() - err := orm.Sync(new(User), new(PublicKey), new(Repository), new(Access)) + err := orm.Sync(new(User), new(PublicKey), new(Repository), new(Access), new(Action)) if err != nil { fmt.Printf("sync database struct error: %s\n", err) os.Exit(2) diff --git a/models/repo.go b/models/repo.go index c790dc90a6..6387090ed0 100644 --- a/models/repo.go +++ b/models/repo.go @@ -137,7 +137,8 @@ func CreateRepository(user *User, repoName, desc, repoLang, license string, priv } return nil, err } - return repo, nil + + return repo, NewRepoAction(user, repo) } // InitRepository initializes README and .gitignore if needed. diff --git a/models/user.go b/models/user.go index 8fa2e44e00..c59e4ae152 100644 --- a/models/user.go +++ b/models/user.go @@ -61,26 +61,6 @@ type Follow struct { Created time.Time `xorm:"created"` } -// Operation types of repository. -const ( - OP_CREATE_REPO = iota + 1 - OP_DELETE_REPO - OP_STAR_REPO - OP_FOLLOW_REPO - OP_COMMIT_REPO - OP_PULL_REQUEST -) - -// An Action represents -type Action struct { - Id int64 - UserId int64 - OpType int - RepoId int64 - Content string - Created time.Time `xorm:"created"` -} - var ( ErrUserOwnRepos = errors.New("User still have ownership of repositories") ErrUserAlreadyExist = errors.New("User already exist") diff --git a/modules/auth/auth.go b/modules/auth/auth.go index b085527554..e4748650c2 100644 --- a/modules/auth/auth.go +++ b/modules/auth/auth.go @@ -90,6 +90,11 @@ func (f *LogInForm) Validate(errors *binding.Errors, req *http.Request, context validate(errors, data, f) } +type FeedsForm struct { + UserId int64 `form:"userid" binding:"Required"` + Offset int64 `form:"offset"` +} + func getMinMaxSize(field reflect.StructField) string { for _, rule := range strings.Split(field.Tag.Get("binding"), ";") { if strings.HasPrefix(rule, "MinSize(") || strings.HasPrefix(rule, "MaxSize(") { diff --git a/routers/repo/single.go b/routers/repo/single.go index 02fd34212a..db16a84b8a 100644 --- a/routers/repo/single.go +++ b/routers/repo/single.go @@ -2,10 +2,11 @@ package repo import ( "github.com/codegangsta/martini" + "github.com/martini-contrib/render" + "github.com/gogits/gogs/models" "github.com/gogits/gogs/modules/base" "github.com/gogits/gogs/modules/log" - "github.com/martini-contrib/render" ) func Single(params martini.Params, r render.Render, data base.TmplData) { @@ -20,7 +21,10 @@ func Single(params martini.Params, r render.Render, data base.TmplData) { r.HTML(200, "base/error", data) return } - data["Files"] = files + data["IsRepoToolbarSource"] = true + + data["Files"] = files + r.HTML(200, "repo/single", data) } diff --git a/routers/user/user.go b/routers/user/user.go index 5017e878c6..ae9dd90290 100644 --- a/routers/user/user.go +++ b/routers/user/user.go @@ -5,6 +5,7 @@ package user import ( + "bytes" "net/http" "github.com/codegangsta/martini" @@ -140,7 +141,6 @@ func SignUp(form auth.RegisterForm, data base.TmplData, req *http.Request, r ren r.Redirect("/user/login") } -// TODO: unfinished func Delete(data base.TmplData, req *http.Request, session sessions.Session, r render.Render) { data["Title"] = "Delete Account" @@ -166,3 +166,21 @@ func Delete(data base.TmplData, req *http.Request, session sessions.Session, r r r.HTML(200, "user/delete", data) } + +func Feeds(form auth.FeedsForm, r render.Render) string { + actions, err := models.GetFeeds(form.UserId, form.Offset) + if err != nil { + return err.Error() + } + + length := len(actions) + buf := bytes.NewBuffer([]byte("[")) + for i, action := range actions { + buf.WriteString(action.Content) + if i < length-1 { + buf.WriteString(",") + } + } + buf.WriteString("]") + return buf.String() +} diff --git a/web.go b/web.go index 9f9b205a74..62395cf0bd 100644 --- a/web.go +++ b/web.go @@ -64,19 +64,20 @@ func runWeb(*cli.Context) { m.Any("/user/logout", auth.SignInRequire(true), user.SignOut) m.Any("/user/sign_up", auth.SignOutRequire(), binding.BindIgnErr(auth.RegisterForm{}), user.SignUp) m.Any("/user/delete", auth.SignInRequire(true), user.Delete) + m.Get("/user/feeds", binding.Bind(auth.FeedsForm{}), user.Feeds) m.Any("/user/setting", auth.SignInRequire(true), user.Setting) m.Any("/user/setting/ssh", auth.SignInRequire(true), binding.BindIgnErr(auth.AddSSHKeyForm{}), user.SettingSSHKeys) m.Get("/user/:username", auth.SignInRequire(false), user.Profile) - //m.Get("/:username/:reponame", repo.Repo) - m.Any("/repo/create", auth.SignInRequire(true), binding.BindIgnErr(auth.CreateRepoForm{}), repo.Create) m.Any("/repo/delete", auth.SignInRequire(true), repo.Delete) m.Any("/repo/list", auth.SignInRequire(false), repo.List) m.Get("/:username/:reponame", auth.SignInRequire(false), auth.RepoAssignment(true), repo.Single) + //m.Get("/:username/:reponame", repo.Repo) + listenAddr := fmt.Sprintf("%s:%s", base.Cfg.MustValue("server", "HTTP_ADDR"), base.Cfg.MustValue("server", "HTTP_PORT", "3000"))