Added create issue

tokarchuk/v1.17
Unknown 11 years ago
parent 23d103c721
commit 2fa8d0c8dd
  1. 2
      gogs.go
  2. 9
      modules/auth/issue.go
  3. 3
      modules/avatar/avatar.go
  4. 5
      modules/base/tool.go
  5. 5
      modules/middleware/repo.go
  6. 5
      routers/repo/branch.go
  7. 11
      routers/repo/issue.go
  8. 5
      routers/repo/pull.go
  9. 14
      routers/repo/repo.go
  10. 5
      serve.go
  11. 9
      templates/issue/create.tmpl
  12. 5
      templates/issue/list.tmpl
  13. 2
      templates/repo/nav.tmpl
  14. 6
      web.go

@ -19,7 +19,7 @@ import (
// Test that go1.2 tag above is included in builds. main.go refers to this definition. // Test that go1.2 tag above is included in builds. main.go refers to this definition.
const go12tag = true const go12tag = true
const APP_VER = "0.1.7.0324" const APP_VER = "0.1.7.0325"
func init() { func init() {
base.AppVer = APP_VER base.AppVer = APP_VER

@ -17,9 +17,8 @@ import (
) )
type CreateIssueForm struct { type CreateIssueForm struct {
IssueName string `form:"name" binding:"Required;MaxSize(50)"` IssueName string `form:"title" binding:"Required;MaxSize(50)"`
RepoId int64 `form:"repoid" binding:"Required"` MilestoneId int64 `form:"milestoneid"`
MilestoneId int64 `form:"milestoneid" binding:"Required"`
AssigneeId int64 `form:"assigneeid"` AssigneeId int64 `form:"assigneeid"`
Labels string `form:"labels"` Labels string `form:"labels"`
Content string `form:"content"` Content string `form:"content"`
@ -27,9 +26,7 @@ type CreateIssueForm struct {
func (f *CreateIssueForm) Name(field string) string { func (f *CreateIssueForm) Name(field string) string {
names := map[string]string{ names := map[string]string{
"IssueName": "Issue name", "IssueName": "Issue name",
"RepoId": "Repository ID",
"MilestoneId": "Milestone ID",
} }
return names[field] return names[field]
} }

@ -30,8 +30,9 @@ import (
"sync" "sync"
"time" "time"
"github.com/gogits/gogs/modules/log"
"github.com/nfnt/resize" "github.com/nfnt/resize"
"github.com/gogits/gogs/modules/log"
) )
var ( var (

@ -102,7 +102,10 @@ func CreateTimeLimitCode(data string, minutes int, startInf interface{}) string
// AvatarLink returns avatar link by given e-mail. // AvatarLink returns avatar link by given e-mail.
func AvatarLink(email string) string { func AvatarLink(email string) string {
return "/avatar/" + EncodeMd5(email) if Service.EnableCacheAvatar {
return "/avatar/" + EncodeMd5(email)
}
return "http://1.gravatar.com/avatar/" + EncodeMd5(email)
} }
// Seconds-based time units // Seconds-based time units

@ -76,6 +76,11 @@ func RepoAssignment(redirect bool) martini.Handler {
ctx.Repo.CloneLink.SSH = fmt.Sprintf("%s@%s:%s/%s.git", base.RunUser, base.Domain, user.LowerName, repo.LowerName) ctx.Repo.CloneLink.SSH = fmt.Sprintf("%s@%s:%s/%s.git", base.RunUser, base.Domain, user.LowerName, repo.LowerName)
ctx.Repo.CloneLink.HTTPS = fmt.Sprintf("%s://%s/%s/%s.git", scheme, base.Domain, user.LowerName, repo.LowerName) ctx.Repo.CloneLink.HTTPS = fmt.Sprintf("%s://%s/%s/%s.git", scheme, base.Domain, user.LowerName, repo.LowerName)
if len(params["branchname"]) == 0 {
params["branchname"] = "master"
}
ctx.Data["Branchname"] = params["branchname"]
ctx.Data["IsRepositoryValid"] = true ctx.Data["IsRepositoryValid"] = true
ctx.Data["Repository"] = repo ctx.Data["Repository"] = repo
ctx.Data["Owner"] = user ctx.Data["Owner"] = user

@ -26,11 +26,6 @@ func Branches(ctx *middleware.Context, params martini.Params) {
ctx.Data["Username"] = params["username"] ctx.Data["Username"] = params["username"]
ctx.Data["Reponame"] = params["reponame"] ctx.Data["Reponame"] = params["reponame"]
if len(params["branchname"]) == 0 {
params["branchname"] = "master"
}
ctx.Data["Branchname"] = params["branchname"]
ctx.Data["Branches"] = brs ctx.Data["Branches"] = brs
ctx.Data["IsRepoToolbarBranches"] = true ctx.Data["IsRepoToolbarBranches"] = true

@ -30,12 +30,7 @@ func Issues(ctx *middleware.Context, params martini.Params) {
ctx.Handle(200, "issue.Issues: %v", err) ctx.Handle(200, "issue.Issues: %v", err)
return return
} }
ctx.HTML(200, "issue/list")
if len(params["branchname"]) == 0 {
params["branchname"] = "master"
}
ctx.Data["Branchname"] = params["branchname"]
ctx.HTML(200, "issue/repo")
} }
func CreateIssue(ctx *middleware.Context, params martini.Params, form auth.CreateIssueForm) { func CreateIssue(ctx *middleware.Context, params martini.Params, form auth.CreateIssueForm) {
@ -57,10 +52,10 @@ func CreateIssue(ctx *middleware.Context, params martini.Params, form auth.Creat
return return
} }
issue, err := models.CreateIssue(ctx.User.Id, form.RepoId, form.MilestoneId, form.AssigneeId, issue, err := models.CreateIssue(ctx.User.Id, ctx.Repo.Repository.Id, form.MilestoneId, form.AssigneeId,
form.IssueName, form.Labels, form.Content, false) form.IssueName, form.Labels, form.Content, false)
if err == nil { if err == nil {
log.Trace("%s Issue created: %d", form.RepoId, issue.Id) log.Trace("%d Issue created: %d", ctx.Repo.Repository.Id, issue.Id)
ctx.Redirect(fmt.Sprintf("/%s/%s/issues/%d", params["username"], params["reponame"], issue.Index)) ctx.Redirect(fmt.Sprintf("/%s/%s/issues/%d", params["username"], params["reponame"], issue.Index))
return return
} }

@ -12,10 +12,5 @@ import (
func Pulls(ctx *middleware.Context, params martini.Params) { func Pulls(ctx *middleware.Context, params martini.Params) {
ctx.Data["IsRepoToolbarPulls"] = true ctx.Data["IsRepoToolbarPulls"] = true
if len(params["branchname"]) == 0 {
params["branchname"] = "master"
}
ctx.Data["Branchname"] = params["branchname"]
ctx.HTML(200, "repo/pulls") ctx.HTML(200, "repo/pulls")
} }

@ -57,10 +57,6 @@ func Single(ctx *middleware.Context, params martini.Params) {
return return
} }
if len(params["branchname"]) == 0 {
params["branchname"] = "master"
}
// Get tree path // Get tree path
treename := params["_1"] treename := params["_1"]
@ -177,7 +173,6 @@ func Single(ctx *middleware.Context, params martini.Params) {
ctx.Data["Username"] = params["username"] ctx.Data["Username"] = params["username"]
ctx.Data["Reponame"] = params["reponame"] ctx.Data["Reponame"] = params["reponame"]
ctx.Data["Branchname"] = params["branchname"]
var treenames []string var treenames []string
Paths := make([]string, 0) Paths := make([]string, 0)
@ -216,10 +211,6 @@ func SingleDownload(ctx *middleware.Context, params martini.Params) {
return return
} }
if len(params["branchname"]) == 0 {
params["branchname"] = "master"
}
// Get tree path // Get tree path
treename := params["_1"] treename := params["_1"]
@ -290,11 +281,6 @@ func Setting(ctx *middleware.Context, params martini.Params) {
title = t title = t
} }
if len(params["branchname"]) == 0 {
params["branchname"] = "master"
}
ctx.Data["Branchname"] = params["branchname"]
ctx.Data["Title"] = title + " - settings" ctx.Data["Title"] = title + " - settings"
ctx.HTML(200, "repo/setting") ctx.HTML(200, "repo/setting")
} }

@ -249,8 +249,8 @@ func runServ(k *cli.Context) {
} }
} }
if refname == "" { if refname == "" {
println("No find any reference name:", b.String()) println("Not found any reference name:", b.String())
log.Error("No find any reference name: " + b.String()) log.Error("Not found any reference name: " + b.String())
return return
} }
@ -267,7 +267,6 @@ func runServ(k *cli.Context) {
return return
} }
if ref, ok = refs[refname]; !ok { if ref, ok = refs[refname]; !ok {
log.Error("unknow reference name -", refname, "-", b.String())
log.Error("unknow reference name -", refname, "-", b.String()) log.Error("unknow reference name -", refname, "-", b.String())
return return
} }

@ -4,13 +4,14 @@
{{template "repo/toolbar" .}} {{template "repo/toolbar" .}}
<div id="body" class="container"> <div id="body" class="container">
<div id="issue"> <div id="issue">
<form class="form" action="#" method="post" id="issue-create-form"> <form class="form" action="/{{.RepositoryLink}}/issues/new" method="post" id="issue-create-form">
{{.CsrfTokenHtml}}
<div class="col-md-1"> <div class="col-md-1">
<img class="avatar" src="http://tp2.sinaimg.cn/5068084885/50/40050297589/1" alt=""/> <img class="avatar" src="{{.SignedUser.AvatarLink}}" alt=""/>
</div> </div>
<div class="col-md-8 panel panel-default"> <div class="col-md-8 panel panel-default">
<div class="form-group panel-body"> <div class="form-group panel-body">
<input class="form-control input-lg" type="text" name="title" required="required" placeholder="Title"/> <input class="form-control input-lg" type="text" name="title" required="required" placeholder="Title" value="{{.title}}" />
</div> </div>
<div class="form-group panel-body"> <div class="form-group panel-body">
<div class="md-help pull-right"><!-- todo help link --> <div class="md-help pull-right"><!-- todo help link -->
@ -23,7 +24,7 @@
<div class="tab-content"> <div class="tab-content">
<div class="tab-pane" id="issue-textarea"> <div class="tab-pane" id="issue-textarea">
<div class="form-group"> <div class="form-group">
<textarea class="form-control" name="content" id="issue-content" rows="10" placeholder="Write some content"></textarea> <textarea class="form-control" name="content" id="issue-content" rows="10" placeholder="Write some content">{{.content}}</textarea>
</div> </div>
</div> </div>
<div class="tab-pane" id="issue-preview">preview</div> <div class="tab-pane" id="issue-preview">preview</div>

@ -18,6 +18,11 @@
<a class="btn btn-default issue-close" href="#">Close 128</a> <a class="btn btn-default issue-close" href="#">Close 128</a>
</div> </div>
</div> </div>
<div class="issues list-group">
{{range .Issues}}
<div class="list-group-item issue-item" id="{{.Id}}"></div>
{{end}}
</div>
<div class="issues list-group"> <div class="issues list-group">
<div class="list-group-item unread issue-item" id="issue-id"> <div class="list-group-item unread issue-item" id="issue-id">
<span class="number pull-right">#123</span> <span class="number pull-right">#123</span>

@ -2,7 +2,7 @@
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-md-7"> <div class="col-md-7">
<h3 class="name"><i class="fa fa-book fa-lg"></i><a href="{{.Owner.HomeLink}}">{{.Owner.Name}}</a> / {{.Repository.Name}}</h3> <h3 class="name"><i class="fa fa-book fa-lg"></i><a href="{{.Owner.HomeLink}}">{{.Owner.Name}}</a> / <a href="/{{.Owner.Name}}/{{.Repository.Name}}">{{.Repository.Name}}</a></h3>
<p class="desc">{{.Repository.Description}}{{if .Repository.Website}} <a href="{{.Repository.Website}}">{{.Repository.Website}}</a>{{end}}</p> <p class="desc">{{.Repository.Description}}{{if .Repository.Website}} <a href="{{.Repository.Website}}">{{.Repository.Website}}</a>{{end}}</p>
</div> </div>
<div class="col-md-5 actions text-right clone-group-btn"> <div class="col-md-5 actions text-right clone-group-btn">

@ -90,7 +90,7 @@ func runWeb(*cli.Context) {
// Routers. // Routers.
m.Get("/", ignSignIn, routers.Home) m.Get("/", ignSignIn, routers.Home)
m.Get("/install",routers.Install) m.Get("/install", routers.Install)
m.Get("/issues", reqSignIn, user.Issues) m.Get("/issues", reqSignIn, user.Issues)
m.Get("/pulls", reqSignIn, user.Pulls) m.Get("/pulls", reqSignIn, user.Pulls)
m.Get("/stars", reqSignIn, user.Stars) m.Get("/stars", reqSignIn, user.Stars)
@ -142,13 +142,13 @@ func runWeb(*cli.Context) {
r.Post("/settings", repo.SettingPost) r.Post("/settings", repo.SettingPost)
r.Get("/settings", repo.Setting) r.Get("/settings", repo.Setting)
r.Get("/action/:action", repo.Action) r.Get("/action/:action", repo.Action)
r.Any("/issues/new", binding.BindIgnErr(auth.CreateIssueForm{}), repo.CreateIssue)
r.Post("/issues/:index", binding.BindIgnErr(auth.CreateIssueForm{}), repo.UpdateIssue)
}, reqSignIn, middleware.RepoAssignment(true)) }, reqSignIn, middleware.RepoAssignment(true))
m.Group("/:username/:reponame", func(r martini.Router) { m.Group("/:username/:reponame", func(r martini.Router) {
r.Get("/commits/:branchname", repo.Commits) r.Get("/commits/:branchname", repo.Commits)
r.Get("/issues", repo.Issues) r.Get("/issues", repo.Issues)
r.Any("/issues/new", binding.BindIgnErr(auth.CreateIssueForm{}), repo.CreateIssue)
r.Get("/issues/:index", repo.ViewIssue) r.Get("/issues/:index", repo.ViewIssue)
r.Post("/issues/:index", binding.BindIgnErr(auth.CreateIssueForm{}), repo.UpdateIssue)
r.Get("/pulls", repo.Pulls) r.Get("/pulls", repo.Pulls)
r.Get("/branches", repo.Branches) r.Get("/branches", repo.Branches)
r.Get("/src/:branchname", repo.Single) r.Get("/src/:branchname", repo.Single)

Loading…
Cancel
Save