m.Get("/user/:username", ignSignIn, user.Profile) | m.Get("/user/:username", ignSignIn, user.Profile) | ||||
m.Group("/repo", func(r martini.Router) { | m.Group("/repo", func(r martini.Router) { | ||||
r.Get("/create", repo.Create) // TODO | |||||
r.Get("/create", repo.Create) | |||||
r.Post("/create", bindIgnErr(auth.CreateRepoForm{}), repo.CreatePost) | r.Post("/create", bindIgnErr(auth.CreateRepoForm{}), repo.CreatePost) | ||||
r.Get("/migrate", repo.Migrate) | r.Get("/migrate", repo.Migrate) | ||||
r.Post("/migrate", bindIgnErr(auth.MigrateRepoForm{}), repo.MigratePost) | r.Post("/migrate", bindIgnErr(auth.MigrateRepoForm{}), repo.MigratePost) | ||||
m.Get("/template/**", dev.TemplatePreview) | m.Get("/template/**", dev.TemplatePreview) | ||||
} | } | ||||
reqOwner := middleware.RequireOwner | |||||
m.Group("/:username/:reponame", func(r martini.Router) { | m.Group("/:username/:reponame", func(r martini.Router) { | ||||
r.Get("/settings", repo.Setting) | r.Get("/settings", repo.Setting) | ||||
r.Post("/settings", repo.SettingPost) | |||||
r.Post("/settings", bindIgnErr(auth.RepoSettingForm{}), repo.SettingPost) | |||||
r.Get("/settings/collaboration", repo.Collaboration) | r.Get("/settings/collaboration", repo.Collaboration) | ||||
r.Post("/settings/collaboration", repo.CollaborationPost) | r.Post("/settings/collaboration", repo.CollaborationPost) | ||||
r.Get("/settings/hooks", repo.WebHooks) | |||||
r.Get("/settings/hooks", repo.WebHooks) // TODO | |||||
r.Get("/settings/hooks/add", repo.WebHooksAdd) | r.Get("/settings/hooks/add", repo.WebHooksAdd) | ||||
r.Get("/settings/hooks/id", repo.WebHooksEdit) | r.Get("/settings/hooks/id", repo.WebHooksEdit) | ||||
}, reqSignIn, middleware.RepoAssignment(true), reqOwner()) | |||||
m.Group("/:username/:reponame", func(r martini.Router) { | |||||
r.Get("/action/:action", repo.Action) | r.Get("/action/:action", repo.Action) | ||||
r.Get("/issues/new", repo.CreateIssue) | r.Get("/issues/new", repo.CreateIssue) | ||||
r.Post("/issues/new", bindIgnErr(auth.CreateIssueForm{}), repo.CreateIssuePost) | r.Post("/issues/new", bindIgnErr(auth.CreateIssueForm{}), repo.CreateIssuePost) |
"github.com/go-martini/martini" | "github.com/go-martini/martini" | ||||
"github.com/gogits/gogs/modules/base" | "github.com/gogits/gogs/modules/base" | ||||
"github.com/gogits/gogs/modules/log" | |||||
"github.com/gogits/gogs/modules/middleware/binding" | "github.com/gogits/gogs/modules/middleware/binding" | ||||
) | ) | ||||
} | } | ||||
func (f *AdminEditUserForm) Validate(errors *binding.BindingErrors, req *http.Request, context martini.Context) { | func (f *AdminEditUserForm) Validate(errors *binding.BindingErrors, req *http.Request, context martini.Context) { | ||||
if req.Method == "GET" || errors.Count() == 0 { | |||||
return | |||||
} | |||||
data := context.Get(reflect.TypeOf(base.TmplData{})).Interface().(base.TmplData) | data := context.Get(reflect.TypeOf(base.TmplData{})).Interface().(base.TmplData) | ||||
data["HasError"] = true | |||||
AssignForm(f, data) | |||||
if len(errors.Overall) > 0 { | |||||
for _, err := range errors.Overall { | |||||
log.Error("AdminEditUserForm.Validate: %v", err) | |||||
} | |||||
return | |||||
} | |||||
validate(errors, data, f) | validate(errors, data, f) | ||||
} | } |
} | } | ||||
func (f *InstallForm) Validate(errors *binding.BindingErrors, req *http.Request, context martini.Context) { | func (f *InstallForm) Validate(errors *binding.BindingErrors, req *http.Request, context martini.Context) { | ||||
if req.Method == "GET" || errors.Count() == 0 { | |||||
return | |||||
} | |||||
data := context.Get(reflect.TypeOf(base.TmplData{})).Interface().(base.TmplData) | data := context.Get(reflect.TypeOf(base.TmplData{})).Interface().(base.TmplData) | ||||
data["HasError"] = true | |||||
AssignForm(f, data) | |||||
if len(errors.Overall) > 0 { | |||||
for _, err := range errors.Overall { | |||||
log.Error("InstallForm.Validate: %v", err) | |||||
} | |||||
return | |||||
} | |||||
validate(errors, data, f) | validate(errors, data, f) | ||||
} | } |
"github.com/go-martini/martini" | "github.com/go-martini/martini" | ||||
"github.com/gogits/gogs/modules/base" | "github.com/gogits/gogs/modules/base" | ||||
"github.com/gogits/gogs/modules/log" | |||||
"github.com/gogits/gogs/modules/middleware/binding" | "github.com/gogits/gogs/modules/middleware/binding" | ||||
) | ) | ||||
} | } | ||||
func (f *AuthenticationForm) Validate(errors *binding.BindingErrors, req *http.Request, context martini.Context) { | func (f *AuthenticationForm) Validate(errors *binding.BindingErrors, req *http.Request, context martini.Context) { | ||||
if req.Method == "GET" || errors.Count() == 0 { | |||||
return | |||||
} | |||||
data := context.Get(reflect.TypeOf(base.TmplData{})).Interface().(base.TmplData) | data := context.Get(reflect.TypeOf(base.TmplData{})).Interface().(base.TmplData) | ||||
data["HasError"] = true | |||||
AssignForm(f, data) | |||||
if len(errors.Overall) > 0 { | |||||
for _, err := range errors.Overall { | |||||
log.Error("AuthenticationForm.Validate: %v", err) | |||||
} | |||||
return | |||||
} | |||||
validate(errors, data, f) | validate(errors, data, f) | ||||
} | } |
"github.com/go-martini/martini" | "github.com/go-martini/martini" | ||||
"github.com/gogits/gogs/modules/base" | "github.com/gogits/gogs/modules/base" | ||||
"github.com/gogits/gogs/modules/log" | |||||
"github.com/gogits/gogs/modules/middleware/binding" | "github.com/gogits/gogs/modules/middleware/binding" | ||||
) | ) | ||||
type CreateRepoForm struct { | type CreateRepoForm struct { | ||||
RepoName string `form:"repo" binding:"Required;AlphaDash"` | |||||
RepoName string `form:"repo" binding:"Required;AlphaDash;MaxSize(100)"` | |||||
Private bool `form:"private"` | Private bool `form:"private"` | ||||
Description string `form:"desc" binding:"MaxSize(100)"` | Description string `form:"desc" binding:"MaxSize(100)"` | ||||
Language string `form:"language"` | Language string `form:"language"` | ||||
} | } | ||||
func (f *CreateRepoForm) Validate(errors *binding.BindingErrors, req *http.Request, context martini.Context) { | func (f *CreateRepoForm) Validate(errors *binding.BindingErrors, req *http.Request, context martini.Context) { | ||||
if req.Method == "GET" || errors.Count() == 0 { | |||||
return | |||||
} | |||||
data := context.Get(reflect.TypeOf(base.TmplData{})).Interface().(base.TmplData) | data := context.Get(reflect.TypeOf(base.TmplData{})).Interface().(base.TmplData) | ||||
data["HasError"] = true | |||||
AssignForm(f, data) | |||||
if len(errors.Overall) > 0 { | |||||
for _, err := range errors.Overall { | |||||
log.Error("CreateRepoForm.Validate: %v", err) | |||||
} | |||||
return | |||||
} | |||||
validate(errors, data, f) | validate(errors, data, f) | ||||
} | } | ||||
Url string `form:"url" binding:"Url"` | Url string `form:"url" binding:"Url"` | ||||
AuthUserName string `form:"auth_username"` | AuthUserName string `form:"auth_username"` | ||||
AuthPasswd string `form:"auth_password"` | AuthPasswd string `form:"auth_password"` | ||||
RepoName string `form:"repo" binding:"Required;AlphaDash"` | |||||
RepoName string `form:"repo" binding:"Required;AlphaDash;MaxSize(100)"` | |||||
Mirror bool `form:"mirror"` | Mirror bool `form:"mirror"` | ||||
Private bool `form:"private"` | Private bool `form:"private"` | ||||
Description string `form:"desc" binding:"MaxSize(100)"` | Description string `form:"desc" binding:"MaxSize(100)"` | ||||
} | } | ||||
func (f *MigrateRepoForm) Validate(errors *binding.BindingErrors, req *http.Request, context martini.Context) { | func (f *MigrateRepoForm) Validate(errors *binding.BindingErrors, req *http.Request, context martini.Context) { | ||||
if req.Method == "GET" || errors.Count() == 0 { | |||||
return | |||||
} | |||||
data := context.Get(reflect.TypeOf(base.TmplData{})).Interface().(base.TmplData) | data := context.Get(reflect.TypeOf(base.TmplData{})).Interface().(base.TmplData) | ||||
data["HasError"] = true | |||||
AssignForm(f, data) | |||||
validate(errors, data, f) | |||||
} | |||||
if len(errors.Overall) > 0 { | |||||
for _, err := range errors.Overall { | |||||
log.Error("MigrateRepoForm.Validate: %v", err) | |||||
} | |||||
return | |||||
type RepoSettingForm struct { | |||||
RepoName string `form:"name" binding:"Required;AlphaDash;MaxSize(100)"` | |||||
Description string `form:"desc" binding:"MaxSize(100)"` | |||||
Website string `form:"url" binding:"Url;MaxSize(100)"` | |||||
Branch string `form:"branch"` | |||||
Interval int `form:"interval"` | |||||
Private bool `form:"private"` | |||||
GoGet bool `form:"goget"` | |||||
} | |||||
func (f *RepoSettingForm) Name(field string) string { | |||||
names := map[string]string{ | |||||
"RepoName": "Repository name", | |||||
"Description": "Description", | |||||
"Website": "Website address", | |||||
} | } | ||||
return names[field] | |||||
} | |||||
func (f *RepoSettingForm) Validate(errors *binding.BindingErrors, req *http.Request, context martini.Context) { | |||||
data := context.Get(reflect.TypeOf(base.TmplData{})).Interface().(base.TmplData) | |||||
validate(errors, data, f) | validate(errors, data, f) | ||||
} | } |
break | break | ||||
} | } | ||||
case rule == "Url": | case rule == "Url": | ||||
if !urlPattern.MatchString(fmt.Sprintf("%v", fieldValue)) { | |||||
str := fmt.Sprintf("%v", fieldValue) | |||||
if len(str) == 0 { | |||||
continue | |||||
} else if !urlPattern.MatchString(str) { | |||||
errors.Fields[field.Name] = BindingUrlError | errors.Fields[field.Name] = BindingUrlError | ||||
break | break | ||||
} | } |
import ( | import ( | ||||
"errors" | "errors" | ||||
"fmt" | "fmt" | ||||
"net/url" | |||||
"strings" | "strings" | ||||
"github.com/go-martini/martini" | "github.com/go-martini/martini" | ||||
ctx.Data["IsRepositoryWatching"] = ctx.Repo.IsWatching | ctx.Data["IsRepositoryWatching"] = ctx.Repo.IsWatching | ||||
} | } | ||||
} | } | ||||
func RequireOwner() martini.Handler { | |||||
return func(ctx *Context) { | |||||
if !ctx.Repo.IsOwner { | |||||
if !ctx.IsSigned { | |||||
ctx.SetCookie("redirect_to", "/"+url.QueryEscape(ctx.Req.RequestURI)) | |||||
ctx.Redirect("/user/login") | |||||
return | |||||
} | |||||
ctx.Handle(404, ctx.Req.RequestURI, nil) | |||||
return | |||||
} | |||||
} | |||||
} |
ctx.Data["PageIsUsers"] = true | ctx.Data["PageIsUsers"] = true | ||||
var err error | var err error | ||||
ctx.Data["Users"], err = models.GetUsers(100, 0) | |||||
ctx.Data["Users"], err = models.GetUsers(200, 0) | |||||
if err != nil { | if err != nil { | ||||
ctx.Handle(200, "admin.Users", err) | |||||
ctx.Handle(500, "admin.Users", err) | |||||
return | return | ||||
} | } | ||||
ctx.HTML(200, "admin/users") | ctx.HTML(200, "admin/users") | ||||
} | } | ||||
func Auths(ctx *middleware.Context) { | |||||
ctx.Data["Title"] = "Auth Sources" | |||||
ctx.Data["PageIsAuths"] = true | |||||
func Repositories(ctx *middleware.Context) { | |||||
ctx.Data["Title"] = "Repository Management" | |||||
ctx.Data["PageIsRepos"] = true | |||||
var err error | var err error | ||||
ctx.Data["Sources"], err = models.GetAuths() | |||||
ctx.Data["Repos"], err = models.GetRepos(200, 0) | |||||
if err != nil { | if err != nil { | ||||
ctx.Handle(200, "admin.Auths", err) | |||||
ctx.Handle(500, "admin.Repositories", err) | |||||
return | return | ||||
} | } | ||||
ctx.HTML(200, "admin/auths") | |||||
ctx.HTML(200, "admin/repos") | |||||
} | } | ||||
func Repositories(ctx *middleware.Context) { | |||||
ctx.Data["Title"] = "Repository Management" | |||||
ctx.Data["PageIsRepos"] = true | |||||
func Auths(ctx *middleware.Context) { | |||||
ctx.Data["Title"] = "Auth Sources" | |||||
ctx.Data["PageIsAuths"] = true | |||||
var err error | var err error | ||||
ctx.Data["Repos"], err = models.GetRepos(100, 0) | |||||
ctx.Data["Sources"], err = models.GetAuths() | |||||
if err != nil { | if err != nil { | ||||
ctx.Handle(200, "admin.Repositories", err) | |||||
ctx.Handle(500, "admin.Auths", err) | |||||
return | return | ||||
} | } | ||||
ctx.HTML(200, "admin/repos") | |||||
ctx.HTML(200, "admin/auths") | |||||
} | } | ||||
func Config(ctx *middleware.Context) { | func Config(ctx *middleware.Context) { |
ctx.Data["Title"] = "New Account" | ctx.Data["Title"] = "New Account" | ||||
ctx.Data["PageIsUsers"] = true | ctx.Data["PageIsUsers"] = true | ||||
if ctx.HasError() { | |||||
ctx.HTML(200, "admin/users/new") | |||||
return | |||||
} | |||||
if form.Password != form.RetypePasswd { | if form.Password != form.RetypePasswd { | ||||
ctx.Data["HasError"] = true | |||||
ctx.Data["Err_Password"] = true | ctx.Data["Err_Password"] = true | ||||
ctx.Data["Err_RetypePasswd"] = true | ctx.Data["Err_RetypePasswd"] = true | ||||
ctx.Data["ErrorMsg"] = "Password and re-type password are not same" | |||||
auth.AssignForm(form, ctx.Data) | |||||
} | |||||
if ctx.HasError() { | |||||
ctx.HTML(200, "admin/users/new") | |||||
ctx.RenderWithErr("Password and re-type password are not same.", "admin/users/new", &form) | |||||
return | return | ||||
} | } | ||||
"encoding/base64" | "encoding/base64" | ||||
"errors" | "errors" | ||||
"fmt" | "fmt" | ||||
"github.com/gogits/git" | |||||
"path" | "path" | ||||
"path/filepath" | "path/filepath" | ||||
"strings" | "strings" | ||||
"github.com/go-martini/martini" | "github.com/go-martini/martini" | ||||
"github.com/gogits/git" | |||||
"github.com/gogits/gogs/models" | "github.com/gogits/gogs/models" | ||||
"github.com/gogits/gogs/modules/auth" | "github.com/gogits/gogs/modules/auth" | ||||
"github.com/gogits/gogs/modules/base" | "github.com/gogits/gogs/modules/base" |
"github.com/gogits/git" | "github.com/gogits/git" | ||||
"github.com/gogits/gogs/models" | "github.com/gogits/gogs/models" | ||||
"github.com/gogits/gogs/modules/auth" | |||||
"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/gogits/gogs/modules/mailer" | "github.com/gogits/gogs/modules/mailer" | ||||
) | ) | ||||
func Setting(ctx *middleware.Context) { | func Setting(ctx *middleware.Context) { | ||||
if !ctx.Repo.IsOwner { | |||||
ctx.Handle(404, "repo.Setting", nil) | |||||
return | |||||
} | |||||
ctx.Data["IsRepoToolbarSetting"] = true | ctx.Data["IsRepoToolbarSetting"] = true | ||||
ctx.Data["Title"] = strings.TrimPrefix(ctx.Repo.RepoLink, "/") + " - settings" | ctx.Data["Title"] = strings.TrimPrefix(ctx.Repo.RepoLink, "/") + " - settings" | ||||
ctx.HTML(200, "repo/setting") | ctx.HTML(200, "repo/setting") | ||||
} | } | ||||
func SettingPost(ctx *middleware.Context) { | |||||
if !ctx.Repo.IsOwner { | |||||
ctx.Error(404) | |||||
return | |||||
} | |||||
func SettingPost(ctx *middleware.Context, form auth.RepoSettingForm) { | |||||
ctx.Data["IsRepoToolbarSetting"] = true | ctx.Data["IsRepoToolbarSetting"] = true | ||||
switch ctx.Query("action") { | switch ctx.Query("action") { | ||||
case "update": | case "update": | ||||
newRepoName := ctx.Query("name") | |||||
if ctx.HasError() { | |||||
ctx.HTML(200, "repo/setting") | |||||
return | |||||
} | |||||
newRepoName := form.RepoName | |||||
// Check if repository name has been changed. | // Check if repository name has been changed. | ||||
if ctx.Repo.Repository.Name != newRepoName { | if ctx.Repo.Repository.Name != newRepoName { | ||||
isExist, err := models.IsRepositoryExist(ctx.Repo.Owner, newRepoName) | isExist, err := models.IsRepositoryExist(ctx.Repo.Owner, newRepoName) | ||||
ctx.Repo.Repository.Name = newRepoName | ctx.Repo.Repository.Name = newRepoName | ||||
} | } | ||||
br := ctx.Query("branch") | |||||
br := form.Branch | |||||
if git.IsBranchExist(models.RepoPath(ctx.User.Name, ctx.Repo.Repository.Name), br) { | if git.IsBranchExist(models.RepoPath(ctx.User.Name, ctx.Repo.Repository.Name), br) { | ||||
ctx.Repo.Repository.DefaultBranch = br | ctx.Repo.Repository.DefaultBranch = br | ||||
} | } | ||||
ctx.Repo.Repository.Description = ctx.Query("desc") | |||||
ctx.Repo.Repository.Website = ctx.Query("site") | |||||
ctx.Repo.Repository.IsPrivate = ctx.Query("private") == "on" | |||||
ctx.Repo.Repository.IsGoget = ctx.Query("goget") == "on" | |||||
ctx.Repo.Repository.Description = form.Description | |||||
ctx.Repo.Repository.Website = form.Website | |||||
ctx.Repo.Repository.IsPrivate = form.Private | |||||
ctx.Repo.Repository.IsGoget = form.GoGet | |||||
if err := models.UpdateRepository(ctx.Repo.Repository); err != nil { | if err := models.UpdateRepository(ctx.Repo.Repository); err != nil { | ||||
ctx.Handle(404, "repo.SettingPost(update)", err) | ctx.Handle(404, "repo.SettingPost(update)", err) | ||||
return | return | ||||
log.Trace("%s Repository updated: %s/%s", ctx.Req.RequestURI, ctx.Repo.Owner.Name, ctx.Repo.Repository.Name) | log.Trace("%s Repository updated: %s/%s", ctx.Req.RequestURI, ctx.Repo.Owner.Name, ctx.Repo.Repository.Name) | ||||
if ctx.Repo.Repository.IsMirror { | if ctx.Repo.Repository.IsMirror { | ||||
if len(ctx.Query("interval")) > 0 { | |||||
var err error | |||||
ctx.Repo.Mirror.Interval, err = base.StrTo(ctx.Query("interval")).Int() | |||||
if err != nil { | |||||
log.Error("repo.SettingPost(get mirror interval): %v", err) | |||||
} else if err = models.UpdateMirror(ctx.Repo.Mirror); err != nil { | |||||
if form.Interval > 0 { | |||||
ctx.Repo.Mirror.Interval = form.Interval | |||||
if err := models.UpdateMirror(ctx.Repo.Mirror); err != nil { | |||||
log.Error("repo.SettingPost(UpdateMirror): %v", err) | log.Error("repo.SettingPost(UpdateMirror): %v", err) | ||||
} | } | ||||
} | } | ||||
} | } | ||||
func Collaboration(ctx *middleware.Context) { | func Collaboration(ctx *middleware.Context) { | ||||
if !ctx.Repo.IsOwner { | |||||
ctx.Error(404) | |||||
return | |||||
} | |||||
repoLink := strings.TrimPrefix(ctx.Repo.RepoLink, "/") | repoLink := strings.TrimPrefix(ctx.Repo.RepoLink, "/") | ||||
ctx.Data["IsRepoToolbarCollaboration"] = true | ctx.Data["IsRepoToolbarCollaboration"] = true | ||||
ctx.Data["Title"] = repoLink + " - collaboration" | ctx.Data["Title"] = repoLink + " - collaboration" | ||||
} | } | ||||
func CollaborationPost(ctx *middleware.Context) { | func CollaborationPost(ctx *middleware.Context) { | ||||
if !ctx.Repo.IsOwner { | |||||
ctx.Error(404) | |||||
return | |||||
} | |||||
repoLink := strings.TrimPrefix(ctx.Repo.RepoLink, "/") | repoLink := strings.TrimPrefix(ctx.Repo.RepoLink, "/") | ||||
name := strings.ToLower(ctx.Query("collaborator")) | name := strings.ToLower(ctx.Query("collaborator")) | ||||
if len(name) == 0 || ctx.Repo.Owner.LowerName == name { | if len(name) == 0 || ctx.Repo.Owner.LowerName == name { | ||||
} | } | ||||
func WebHooks(ctx *middleware.Context) { | func WebHooks(ctx *middleware.Context) { | ||||
if !ctx.Repo.IsOwner { | |||||
ctx.Handle(404, "repo.WebHooks", nil) | |||||
return | |||||
} | |||||
ctx.Data["IsRepoToolbarWebHooks"] = true | ctx.Data["IsRepoToolbarWebHooks"] = true | ||||
ctx.Data["Title"] = strings.TrimPrefix(ctx.Repo.RepoLink, "/") + " - Web Hooks" | ctx.Data["Title"] = strings.TrimPrefix(ctx.Repo.RepoLink, "/") + " - Web Hooks" | ||||
ctx.HTML(200, "repo/hooks") | ctx.HTML(200, "repo/hooks") | ||||
} | } | ||||
func WebHooksAdd(ctx *middleware.Context) { | func WebHooksAdd(ctx *middleware.Context) { | ||||
if !ctx.Repo.IsOwner { | |||||
ctx.Handle(404, "repo.WebHooksAdd", nil) | |||||
return | |||||
} | |||||
ctx.Data["IsRepoToolbarWebHooks"] = true | ctx.Data["IsRepoToolbarWebHooks"] = true | ||||
ctx.Data["Title"] = strings.TrimPrefix(ctx.Repo.RepoLink, "/") + " - Add Web Hook" | ctx.Data["Title"] = strings.TrimPrefix(ctx.Repo.RepoLink, "/") + " - Add Web Hook" | ||||
ctx.HTML(200, "repo/hooks_add") | ctx.HTML(200, "repo/hooks_add") | ||||
} | } | ||||
func WebHooksEdit(ctx *middleware.Context) { | func WebHooksEdit(ctx *middleware.Context) { | ||||
if !ctx.Repo.IsOwner { | |||||
ctx.Handle(404, "repo.WebHooksEdit", nil) | |||||
return | |||||
} | |||||
ctx.Data["IsRepoToolbarWebHooks"] = true | ctx.Data["IsRepoToolbarWebHooks"] = true | ||||
ctx.Data["Title"] = strings.TrimPrefix(ctx.Repo.RepoLink, "/") + " - Web Hook Name" | ctx.Data["Title"] = strings.TrimPrefix(ctx.Repo.RepoLink, "/") + " - Web Hook Name" | ||||
ctx.HTML(200, "repo/hooks_edit") | ctx.HTML(200, "repo/hooks_edit") |
if form.Password != form.RetypePasswd { | if form.Password != form.RetypePasswd { | ||||
ctx.Data["Err_Password"] = true | ctx.Data["Err_Password"] = true | ||||
ctx.Data["Err_RetypePasswd"] = true | ctx.Data["Err_RetypePasswd"] = true | ||||
ctx.RenderWithErr("Password and re-type password are not same", "user/signup", &form) | |||||
ctx.RenderWithErr("Password and re-type password are not same.", "user/signup", &form) | |||||
return | return | ||||
} | } | ||||
<li class="list-group-item{{if .PageIsDashboard}} active{{end}}"><a href="/admin"><i class="fa fa-tachometer fa-lg"></i> Dashboard</a></li> | <li class="list-group-item{{if .PageIsDashboard}} active{{end}}"><a href="/admin"><i class="fa fa-tachometer fa-lg"></i> Dashboard</a></li> | ||||
<li class="list-group-item{{if .PageIsUsers}} active{{end}}"><a href="/admin/users"><i class="fa fa-users fa-lg"></i> Users</a></li> | <li class="list-group-item{{if .PageIsUsers}} active{{end}}"><a href="/admin/users"><i class="fa fa-users fa-lg"></i> Users</a></li> | ||||
<li class="list-group-item{{if .PageIsRepos}} active{{end}}"><a href="/admin/repos"><i class="fa fa-book fa-lg"></i> Repositories</a></li> | <li class="list-group-item{{if .PageIsRepos}} active{{end}}"><a href="/admin/repos"><i class="fa fa-book fa-lg"></i> Repositories</a></li> | ||||
<li class="list-group-item{{if .PageIsConfig}} active{{end}}"><a href="/admin/config"><i class="fa fa-cogs fa-lg"></i> Configuration</a></li> | |||||
<li class="list-group-item{{if .PageIsAuths}} active{{end}}"><a href="/admin/auths"><i class="fa fa-certificate fa-lg"></i> Authentication</a></li> | <li class="list-group-item{{if .PageIsAuths}} active{{end}}"><a href="/admin/auths"><i class="fa fa-certificate fa-lg"></i> Authentication</a></li> | ||||
<li class="list-group-item{{if .PageIsConfig}} active{{end}}"><a href="/admin/config"><i class="fa fa-cogs fa-lg"></i> Configuration</a></li> | |||||
</ul> | </ul> | ||||
</div> | </div> |