mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-29 10:57:44 +09:00 
			
		
		
		
	single repository page ui
This commit is contained in:
		| @@ -12,8 +12,11 @@ import ( | ||||
|  | ||||
| 	"github.com/gogits/binding" | ||||
|  | ||||
| 	"github.com/gogits/gogs/models" | ||||
| 	"github.com/gogits/gogs/modules/base" | ||||
| 	"github.com/gogits/gogs/modules/log" | ||||
| 	"github.com/martini-contrib/render" | ||||
| 	"github.com/martini-contrib/sessions" | ||||
| ) | ||||
|  | ||||
| type CreateRepoForm struct { | ||||
| @@ -52,3 +55,62 @@ func (f *CreateRepoForm) Validate(errors *binding.Errors, req *http.Request, con | ||||
|  | ||||
| 	validate(errors, data, f) | ||||
| } | ||||
|  | ||||
| func RepoAssignment(redirect bool) martini.Handler { | ||||
| 	return func(params martini.Params, r render.Render, data base.TmplData, session sessions.Session) { | ||||
| 		// assign false first | ||||
| 		data["IsRepositoryValid"] = false | ||||
|  | ||||
| 		var ( | ||||
| 			user *models.User | ||||
| 			err  error | ||||
| 		) | ||||
| 		// get repository owner | ||||
| 		isOwner := (data["SignedUserName"] == params["username"]) | ||||
| 		if !isOwner { | ||||
| 			user, err = models.GetUserByName(params["username"]) | ||||
| 			if err != nil { | ||||
| 				if redirect { | ||||
| 					r.Redirect("/") | ||||
| 					return | ||||
| 				} | ||||
| 				//data["ErrorMsg"] = err | ||||
| 				//log.Error("repo.Single: %v", err) | ||||
| 				//r.HTML(200, "base/error", data) | ||||
| 				return | ||||
| 			} | ||||
| 		} else { | ||||
| 			user = SignedInUser(session) | ||||
| 		} | ||||
| 		if user == nil { | ||||
| 			if redirect { | ||||
| 				r.Redirect("/") | ||||
| 				return | ||||
| 			} | ||||
| 			//data["ErrorMsg"] = "invliad user account for single repository" | ||||
| 			//log.Error("repo.Single: %v", err) | ||||
| 			//r.HTML(200, "base/error", data) | ||||
| 			return | ||||
| 		} | ||||
| 		data["IsRepositoryOwner"] = isOwner | ||||
|  | ||||
| 		// get repository | ||||
| 		repo, err := models.GetRepositoryByName(user, params["reponame"]) | ||||
| 		if err != nil { | ||||
| 			if redirect { | ||||
| 				r.Redirect("/") | ||||
| 				return | ||||
| 			} | ||||
| 			//data["ErrorMsg"] = err | ||||
| 			//log.Error("repo.Single: %v", err) | ||||
| 			//r.HTML(200, "base/error", data) | ||||
| 			return | ||||
| 		} | ||||
|  | ||||
| 		data["Repository"] = repo | ||||
| 		data["Owner"] = user | ||||
| 		data["Title"] = user.Name + "/" + repo.Name | ||||
| 		data["RepositoryLink"] = data["Title"] | ||||
| 		data["IsRepositoryValid"] = true | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -1,56 +1,14 @@ | ||||
| package repo | ||||
|  | ||||
| import ( | ||||
| 	"github.com/codegangsta/martini" | ||||
| 	"github.com/gogits/gogs/models" | ||||
| 	"github.com/gogits/gogs/modules/auth" | ||||
| 	"github.com/gogits/gogs/modules/base" | ||||
| 	"github.com/martini-contrib/render" | ||||
| 	"github.com/martini-contrib/sessions" | ||||
| 	"net/http" | ||||
| ) | ||||
|  | ||||
|  | ||||
| func Single(params martini.Params, req *http.Request, r render.Render, data base.TmplData, session sessions.Session) { | ||||
| 	var ( | ||||
| 		user *models.User | ||||
| 		err  error | ||||
| 	) | ||||
| 	// get repository owner | ||||
| 	isOwner := (data["SignedUserName"] == params["username"]) | ||||
| 	if !isOwner { | ||||
| 		user, err = models.GetUserByName(params["username"]) | ||||
| 		if err != nil { | ||||
| 			data["ErrorMsg"] = err | ||||
| 			//log.Error("repo.Single: %v", err) | ||||
| 			r.HTML(200, "base/error", data) | ||||
| 			return | ||||
| 		} | ||||
| 	} else { | ||||
| 		user = auth.SignedInUser(session) | ||||
| 	} | ||||
| 	if user == nil { | ||||
| 		data["ErrorMsg"] = "invliad user account for single repository" | ||||
| 		//log.Error("repo.Single: %v", err) | ||||
| 		r.HTML(200, "base/error", data) | ||||
| func Single(r render.Render, data base.TmplData) { | ||||
| 	if !data["IsRepositoryValid"].(bool) { | ||||
| 		return | ||||
| 	} | ||||
| 	data["IsRepositoryOwner"] = isOwner | ||||
|  | ||||
| 	// get repository | ||||
| 	repo, err := models.GetRepositoryByName(user, params["reponame"]) | ||||
| 	if err != nil { | ||||
| 		data["ErrorMsg"] = err | ||||
| 		//log.Error("repo.Single: %v", err) | ||||
| 		r.HTML(200, "base/error", data) | ||||
| 		return | ||||
| 	} | ||||
|  | ||||
| 	data["Repository"] = repo | ||||
| 	data["Owner"] = user | ||||
| 	data["Title"] = user.Name + "/" + repo.Name | ||||
| 	data["RepositoryLink"] = data["Title"] | ||||
| 	data["IsRepoToolbarSource"] = true | ||||
|  | ||||
| 	r.HTML(200, "repo/single", data) | ||||
| } | ||||
|   | ||||
							
								
								
									
										4
									
								
								web.go
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								web.go
									
									
									
									
									
								
							| @@ -70,12 +70,12 @@ func runWeb(*cli.Context) { | ||||
|  | ||||
| 	m.Get("/user/:username", auth.SignInRequire(false), user.Profile) | ||||
|  | ||||
| 	m.Get("/:username/:reponame", repo.Repo) | ||||
| 	//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), repo.Single) | ||||
| 	m.Get("/:username/:reponame", auth.SignInRequire(false), auth.RepoAssignment(true), repo.Single) | ||||
|  | ||||
| 	listenAddr := fmt.Sprintf("%s:%s", | ||||
| 		base.Cfg.MustValue("server", "HTTP_ADDR"), | ||||
|   | ||||
		Reference in New Issue
	
	Block a user