@@ -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) |