mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	single repository page ui, add spec handler to get repo
This commit is contained in:
		
							
								
								
									
										6
									
								
								gogs.go
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								gogs.go
									
									
									
									
									
								
							@@ -20,19 +20,19 @@ import (
 | 
				
			|||||||
// Test that go1.1 tag above is included in builds. main.go refers to this definition.
 | 
					// Test that go1.1 tag above is included in builds. main.go refers to this definition.
 | 
				
			||||||
const go11tag = true
 | 
					const go11tag = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const APP_VER = "0.0.5.0311"
 | 
					const APP_VER = "0.0.5.0313"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func init() {
 | 
					func init() {
 | 
				
			||||||
	runtime.GOMAXPROCS(runtime.NumCPU())
 | 
						runtime.GOMAXPROCS(runtime.NumCPU())
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func checkRunUser() bool {
 | 
					func checkRunUser() bool {
 | 
				
			||||||
	user, err := user.Current()
 | 
						u, err := user.Current()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		// TODO: log
 | 
							// TODO: log
 | 
				
			||||||
		return false
 | 
							return false
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return user.Username == base.Cfg.MustValue("", "RUN_USER")
 | 
						return u.Username == base.Cfg.MustValue("", "RUN_USER")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func main() {
 | 
					func main() {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -92,7 +92,7 @@ func setEngine() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func init() {
 | 
					func init() {
 | 
				
			||||||
	setEngine()
 | 
						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 {
 | 
						if err != nil {
 | 
				
			||||||
		fmt.Printf("sync database struct error: %s\n", err)
 | 
							fmt.Printf("sync database struct error: %s\n", err)
 | 
				
			||||||
		os.Exit(2)
 | 
							os.Exit(2)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -137,7 +137,8 @@ func CreateRepository(user *User, repoName, desc, repoLang, license string, priv
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return repo, nil
 | 
					
 | 
				
			||||||
 | 
						return repo, NewRepoAction(user, repo)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// InitRepository initializes README and .gitignore if needed.
 | 
					// InitRepository initializes README and .gitignore if needed.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -61,26 +61,6 @@ type Follow struct {
 | 
				
			|||||||
	Created  time.Time `xorm:"created"`
 | 
						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 (
 | 
					var (
 | 
				
			||||||
	ErrUserOwnRepos     = errors.New("User still have ownership of repositories")
 | 
						ErrUserOwnRepos     = errors.New("User still have ownership of repositories")
 | 
				
			||||||
	ErrUserAlreadyExist = errors.New("User already exist")
 | 
						ErrUserAlreadyExist = errors.New("User already exist")
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -90,6 +90,11 @@ func (f *LogInForm) Validate(errors *binding.Errors, req *http.Request, context
 | 
				
			|||||||
	validate(errors, data, f)
 | 
						validate(errors, data, f)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type FeedsForm struct {
 | 
				
			||||||
 | 
						UserId int64 `form:"userid" binding:"Required"`
 | 
				
			||||||
 | 
						Offset int64 `form:"offset"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func getMinMaxSize(field reflect.StructField) string {
 | 
					func getMinMaxSize(field reflect.StructField) string {
 | 
				
			||||||
	for _, rule := range strings.Split(field.Tag.Get("binding"), ";") {
 | 
						for _, rule := range strings.Split(field.Tag.Get("binding"), ";") {
 | 
				
			||||||
		if strings.HasPrefix(rule, "MinSize(") || strings.HasPrefix(rule, "MaxSize(") {
 | 
							if strings.HasPrefix(rule, "MinSize(") || strings.HasPrefix(rule, "MaxSize(") {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,10 +2,11 @@ package repo
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"github.com/codegangsta/martini"
 | 
						"github.com/codegangsta/martini"
 | 
				
			||||||
 | 
						"github.com/martini-contrib/render"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/gogits/gogs/models"
 | 
						"github.com/gogits/gogs/models"
 | 
				
			||||||
	"github.com/gogits/gogs/modules/base"
 | 
						"github.com/gogits/gogs/modules/base"
 | 
				
			||||||
	"github.com/gogits/gogs/modules/log"
 | 
						"github.com/gogits/gogs/modules/log"
 | 
				
			||||||
	"github.com/martini-contrib/render"
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func Single(params martini.Params, r render.Render, data base.TmplData) {
 | 
					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)
 | 
							r.HTML(200, "base/error", data)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	data["Files"] = files
 | 
					
 | 
				
			||||||
	data["IsRepoToolbarSource"] = true
 | 
						data["IsRepoToolbarSource"] = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						data["Files"] = files
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	r.HTML(200, "repo/single", data)
 | 
						r.HTML(200, "repo/single", data)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,6 +5,7 @@
 | 
				
			|||||||
package user
 | 
					package user
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"bytes"
 | 
				
			||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/codegangsta/martini"
 | 
						"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")
 | 
						r.Redirect("/user/login")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// TODO: unfinished
 | 
					 | 
				
			||||||
func Delete(data base.TmplData, req *http.Request, session sessions.Session, r render.Render) {
 | 
					func Delete(data base.TmplData, req *http.Request, session sessions.Session, r render.Render) {
 | 
				
			||||||
	data["Title"] = "Delete Account"
 | 
						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)
 | 
						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()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										5
									
								
								web.go
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								web.go
									
									
									
									
									
								
							@@ -64,19 +64,20 @@ func runWeb(*cli.Context) {
 | 
				
			|||||||
	m.Any("/user/logout", auth.SignInRequire(true), user.SignOut)
 | 
						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/sign_up", auth.SignOutRequire(), binding.BindIgnErr(auth.RegisterForm{}), user.SignUp)
 | 
				
			||||||
	m.Any("/user/delete", auth.SignInRequire(true), user.Delete)
 | 
						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", auth.SignInRequire(true), user.Setting)
 | 
				
			||||||
	m.Any("/user/setting/ssh", auth.SignInRequire(true), binding.BindIgnErr(auth.AddSSHKeyForm{}), user.SettingSSHKeys)
 | 
						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("/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/create", auth.SignInRequire(true), binding.BindIgnErr(auth.CreateRepoForm{}), repo.Create)
 | 
				
			||||||
	m.Any("/repo/delete", auth.SignInRequire(true), repo.Delete)
 | 
						m.Any("/repo/delete", auth.SignInRequire(true), repo.Delete)
 | 
				
			||||||
	m.Any("/repo/list", auth.SignInRequire(false), repo.List)
 | 
						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", auth.SignInRequire(false), auth.RepoAssignment(true), repo.Single)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						//m.Get("/:username/:reponame", repo.Repo)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	listenAddr := fmt.Sprintf("%s:%s",
 | 
						listenAddr := fmt.Sprintf("%s:%s",
 | 
				
			||||||
		base.Cfg.MustValue("server", "HTTP_ADDR"),
 | 
							base.Cfg.MustValue("server", "HTTP_ADDR"),
 | 
				
			||||||
		base.Cfg.MustValue("server", "HTTP_PORT", "3000"))
 | 
							base.Cfg.MustValue("server", "HTTP_PORT", "3000"))
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user