| @@ -161,3 +161,53 @@ func AssignForm(form interface{}, data base.TmplData) { | |||
| data[fieldName] = val.Field(i).Interface() | |||
| } | |||
| } | |||
| type InstallForm struct { | |||
| Database string `form:"database" binding:"Required"` | |||
| Host string `form:"host"` | |||
| User string `form:"user"` | |||
| Passwd string `form:"passwd"` | |||
| DatabaseName string `form:"database_name"` | |||
| SslMode string `form:"ssl_mode"` | |||
| DatabasePath string `form:"database_path"` | |||
| RepoRootPath string `form:"repo_path"` | |||
| RunUser string `form:"run_user"` | |||
| AppUrl string `form:"app_url"` | |||
| AdminName string `form:"admin_name" binding:"Required"` | |||
| AdminPasswd string `form:"admin_pwd" binding:"Required;MinSize(6);MaxSize(30)"` | |||
| AdminEmail string `form:"admin_email" binding:"Required;Email;MaxSize(50)"` | |||
| SmtpHost string `form:"smtp_host"` | |||
| SmtpEmail string `form:"mailer_user"` | |||
| SmtpPasswd string `form:"mailer_pwd"` | |||
| RegisterConfirm string `form:"register_confirm"` | |||
| MailNotify string `form:"mail_notify"` | |||
| } | |||
| func (f *InstallForm) Name(field string) string { | |||
| names := map[string]string{ | |||
| "Database": "Database name", | |||
| "AdminName": "Admin user name", | |||
| "AdminPasswd": "Admin password", | |||
| "AdminEmail": "Admin e-maill address", | |||
| } | |||
| return names[field] | |||
| } | |||
| func (f *InstallForm) Validate(errors *binding.Errors, 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["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) | |||
| } | |||
| @@ -8,11 +8,12 @@ import ( | |||
| "errors" | |||
| "github.com/gogits/gogs/models" | |||
| "github.com/gogits/gogs/modules/auth" | |||
| "github.com/gogits/gogs/modules/base" | |||
| "github.com/gogits/gogs/modules/middleware" | |||
| ) | |||
| func Install(ctx *middleware.Context) { | |||
| func Install(ctx *middleware.Context, form auth.InstallForm) { | |||
| if base.InstallLock { | |||
| ctx.Handle(404, "install.Install", errors.New("Installation is prohibited")) | |||
| return | |||
| @@ -43,7 +43,7 @@ | |||
| <label class="col-md-3 control-label">Database Name: </label> | |||
| <div class="col-md-8"> | |||
| <input name="database" type="text" class="form-control" placeholder="Type mysql database name" value="{{.DbCfg.Name}}" required="required"> | |||
| <input name="database_name" type="text" class="form-control" placeholder="Type mysql database name" value="{{.DbCfg.Name}}" required="required"> | |||
| <p class="help-block">Recommend use INNODB engine with utf8_general_ci charset.</p> | |||
| </div> | |||
| </div> | |||
| @@ -64,7 +64,7 @@ | |||
| <label class="col-md-3 control-label">Path: </label> | |||
| <div class="col-md-8"> | |||
| <input name="path" class="form-control" placeholder="Type sqlite3 file path" value="{{.DbCfg.Path}}"> | |||
| <input name="database_path" class="form-control" placeholder="Type sqlite3 file path" value="{{.DbCfg.Path}}"> | |||
| <p class="help-block">The file path of SQLite3 database.</p> | |||
| </div> | |||
| </div> | |||
| @@ -78,7 +78,7 @@ | |||
| <label class="col-md-3 control-label">Repository Path: </label> | |||
| <div class="col-md-8"> | |||
| <input name="repo-path" type="text" class="form-control" placeholder="Type your repository directory" value="{{.RepoRootPath}}" required="required"> | |||
| <input name="repo_path" type="text" class="form-control" placeholder="Type your repository directory" value="{{.RepoRootPath}}" required="required"> | |||
| <p class="help-block">The git copy of each repository is saved in this directory.</p> | |||
| </div> | |||
| @@ -88,7 +88,7 @@ | |||
| <label class="col-md-3 control-label">Run User: </label> | |||
| <div class="col-md-8"> | |||
| <input name="system-user" type="text" class="form-control" placeholder="Type system user name" value="{{.RunUser}}" required="required"> | |||
| <input name="run_user" type="text" class="form-control" placeholder="Type system user name" value="{{.RunUser}}" required="required"> | |||
| <p class="help-block">The user has access to visit and run Gogs.</p> | |||
| </div> | |||
| </div> | |||
| @@ -90,7 +90,7 @@ func runWeb(*cli.Context) { | |||
| // Routers. | |||
| m.Get("/", ignSignIn, routers.Home) | |||
| m.Get("/install", routers.Install) | |||
| m.Any("/install", routers.Install) | |||
| m.Get("/issues", reqSignIn, user.Issues) | |||
| m.Get("/pulls", reqSignIn, user.Pulls) | |||
| m.Get("/stars", reqSignIn, user.Stars) | |||