From 0055cbd3651ebde0f8b6cc70c9c44de56dc38830 Mon Sep 17 00:00:00 2001 From: Martin van Beurden Date: Sun, 14 Sep 2014 19:35:22 +0200 Subject: Allow Gogs to run from a suburl behind a reverse proxy. e.g. http://mydomain.com/gogs/ Conflicts: modules/setting/setting.go Conflicts: templates/repo/release/list.tmpl templates/user/dashboard/dashboard.tmpl Conflicts: routers/repo/setting.go --- modules/middleware/context.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'modules/middleware/context.go') diff --git a/modules/middleware/context.go b/modules/middleware/context.go index 3ef1b1d6..5c26f91f 100644 --- a/modules/middleware/context.go +++ b/modules/middleware/context.go @@ -187,7 +187,7 @@ func Contexter() macaron.Handler { Session: sess, } // Compute current URL for real-time change language. - link := ctx.Req.RequestURI + link := setting.AppRootSubUrl + ctx.Req.RequestURI i := strings.Index(link, "?") if i > -1 { link = link[:i] -- cgit v1.2.3 From 7ba9257a7ff659417501baf7358216555cebcd86 Mon Sep 17 00:00:00 2001 From: Unknwon Date: Fri, 19 Sep 2014 20:11:34 -0400 Subject: Add suburl support --- cmd/web.go | 7 +++++-- gogs.go | 2 +- models/action.go | 2 +- models/user.go | 6 +++--- modules/base/markdown.go | 2 +- modules/base/template.go | 16 ++++++++-------- modules/middleware/auth.go | 8 ++++---- modules/middleware/context.go | 2 +- modules/middleware/org.go | 6 +++--- modules/middleware/repo.go | 12 ++++++------ modules/setting/setting.go | 13 +++++++------ routers/admin/admin.go | 2 +- routers/admin/auths.go | 8 ++++---- routers/admin/users.go | 8 ++++---- routers/home.go | 2 +- routers/install.go | 2 +- routers/org/members.go | 2 +- routers/org/org.go | 2 +- routers/org/setting.go | 8 ++++---- routers/repo/commit.go | 4 ++-- routers/repo/issue.go | 6 +++--- routers/repo/repo.go | 4 ++-- routers/repo/setting.go | 16 ++++++++-------- routers/user/auth.go | 12 ++++++------ routers/user/home.go | 6 +++--- routers/user/setting.go | 18 +++++++++--------- routers/user/social.go | 4 ++-- templates/.VERSION | 2 +- templates/admin/auth/edit.tmpl | 2 +- templates/admin/auth/list.tmpl | 10 +++++----- templates/admin/auth/new.tmpl | 2 +- templates/admin/dashboard.tmpl | 4 ++-- templates/admin/nav.tmpl | 14 +++++++------- templates/admin/org/list.tmpl | 6 +++--- templates/admin/repo/list.tmpl | 8 ++++---- templates/admin/user/edit.tmpl | 2 +- templates/admin/user/list.tmpl | 10 +++++----- templates/admin/user/new.tmpl | 2 +- templates/base/head.tmpl | 26 +++++++++++++------------- templates/base/navbar.tmpl | 18 +++++++++--------- templates/explore/nav.tmpl | 2 +- templates/explore/repos.tmpl | 2 +- templates/home.tmpl | 4 ++-- templates/install.tmpl | 2 +- templates/ng/base/head.tmpl | 22 +++++++++++----------- templates/ng/base/header.tmpl | 26 +++++++++++++------------- templates/ng/base/social.tmpl | 8 ++++---- templates/org/base/header.tmpl | 2 +- templates/org/create.tmpl | 4 ++-- templates/org/home.tmpl | 16 ++++++++-------- templates/org/member/members.tmpl | 2 +- templates/org/new.tmpl | 4 ++-- templates/org/settings/delete.tmpl | 2 +- templates/org/settings/nav.tmpl | 6 +++--- templates/org/settings/options.tmpl | 2 +- templates/org/team/members.tmpl | 2 +- templates/org/team/repositories.tmpl | 2 +- templates/org/team/teams.tmpl | 2 +- templates/repo/bare.tmpl | 2 +- templates/repo/commits_table.tmpl | 4 ++-- templates/repo/create.tmpl | 4 ++-- templates/repo/diff.tmpl | 2 +- templates/repo/header.tmpl | 2 +- templates/repo/issue/list.tmpl | 2 +- templates/repo/issue/view.tmpl | 26 +++++++++++++------------- templates/repo/migrate.tmpl | 4 ++-- templates/repo/nav.tmpl | 6 +++--- templates/repo/release/list.tmpl | 4 ++-- templates/repo/setting_nav.tmpl | 6 +++--- templates/repo/settings/collaboration.tmpl | 2 +- templates/repo/single.tmpl | 2 +- templates/repo/single_list.tmpl | 6 +++--- templates/repo/view_list.tmpl | 4 ++-- templates/status/404.tmpl | 2 +- templates/status/500.tmpl | 2 +- templates/user/auth/activate.tmpl | 2 +- templates/user/auth/forgot_passwd.tmpl | 2 +- templates/user/auth/reset_passwd.tmpl | 2 +- templates/user/auth/signin.tmpl | 6 +++--- templates/user/auth/signup.tmpl | 4 ++-- templates/user/dashboard/dashboard.tmpl | 24 ++++++++++++------------ templates/user/dashboard/nav.tmpl | 6 +++--- templates/user/issues.tmpl | 24 ++++++++++++------------ templates/user/profile.tmpl | 2 +- templates/user/settings/delete.tmpl | 2 +- templates/user/settings/nav.tmpl | 10 +++++----- templates/user/settings/password.tmpl | 2 +- templates/user/settings/profile.tmpl | 2 +- templates/user/settings/social.tmpl | 2 +- templates/user/settings/sshkeys.tmpl | 4 ++-- 90 files changed, 287 insertions(+), 283 deletions(-) (limited to 'modules/middleware/context.go') diff --git a/cmd/web.go b/cmd/web.go index f56ae826..45f35a35 100644 --- a/cmd/web.go +++ b/cmd/web.go @@ -79,6 +79,7 @@ func newMacaron() *macaron.Macaron { IndentJSON: macaron.Env != macaron.PROD, })) m.Use(i18n.I18n(i18n.Options{ + SubURL: setting.AppSubUrl, Langs: setting.Langs, Names: setting.Names, Redirect: true, @@ -88,7 +89,9 @@ func newMacaron() *macaron.Macaron { Interval: setting.CacheInternal, Conn: setting.CacheConn, })) - m.Use(captcha.Captchaer()) + m.Use(captcha.Captchaer(captcha.Options{ + SubURL: setting.AppSubUrl, + })) m.Use(session.Sessioner(session.Options{ Provider: setting.SessionProvider, Config: *setting.SessionConfig, @@ -365,7 +368,7 @@ func runWeb(*cli.Context) { var err error listenAddr := fmt.Sprintf("%s:%s", setting.HttpAddr, setting.HttpPort) - log.Info("Listen: %v://%s", setting.Protocol, listenAddr) + log.Info("Listen: %v://%s%s", setting.Protocol, listenAddr, setting.AppSubUrl) switch setting.Protocol { case setting.HTTP: err = http.ListenAndServe(listenAddr, m) diff --git a/gogs.go b/gogs.go index c5249b25..8f9bc767 100644 --- a/gogs.go +++ b/gogs.go @@ -17,7 +17,7 @@ import ( "github.com/gogits/gogs/modules/setting" ) -const APP_VER = "0.5.2.0917 Beta" +const APP_VER = "0.5.3.0919 Beta" func init() { runtime.GOMAXPROCS(runtime.NumCPU()) diff --git a/models/action.go b/models/action.go index 596f51af..b4457656 100644 --- a/models/action.go +++ b/models/action.go @@ -137,7 +137,7 @@ func updateIssuesCommit(userId, repoId int64, repoUserName, repoName string, com return err } - url := fmt.Sprintf("%s/%s/%s/commit/%s", setting.AppRootSubUrl, repoUserName, repoName, c.Sha1) + url := fmt.Sprintf("%s/%s/%s/commit/%s", setting.AppSubUrl, repoUserName, repoName, c.Sha1) message := fmt.Sprintf(`%s`, url, c.Message) if _, err = CreateComment(userId, issue.RepoId, issue.Id, 0, 0, COMMIT, message, nil); err != nil { diff --git a/models/user.go b/models/user.go index 1bed8109..46e1b155 100644 --- a/models/user.go +++ b/models/user.go @@ -82,14 +82,14 @@ type User struct { // DashboardLink returns the user dashboard page link. func (u *User) DashboardLink() string { if u.IsOrganization() { - return setting.AppRootSubUrl + "/org/" + u.Name + "/dashboard/" + return setting.AppSubUrl + "/org/" + u.Name + "/dashboard/" } - return setting.AppRootSubUrl + "/" + return setting.AppSubUrl + "/" } // HomeLink returns the user home page link. func (u *User) HomeLink() string { - return setting.AppRootSubUrl + "/user/" + u.Name + return setting.AppSubUrl + "/user/" + u.Name } // AvatarLink returns user gravatar link. diff --git a/modules/base/markdown.go b/modules/base/markdown.go index 2aa81005..a3db15df 100644 --- a/modules/base/markdown.go +++ b/modules/base/markdown.go @@ -113,7 +113,7 @@ func RenderSpecialLink(rawBytes []byte, urlPrefix string) []byte { ms := MentionPattern.FindAll(line, -1) for _, m := range ms { line = bytes.Replace(line, m, - []byte(fmt.Sprintf(`%s`, setting.AppRootSubUrl, m[1:], m)), -1) + []byte(fmt.Sprintf(`%s`, setting.AppSubUrl, m[1:], m)), -1) } } diff --git a/modules/base/template.go b/modules/base/template.go index dd883ea3..ec419149 100644 --- a/modules/base/template.go +++ b/modules/base/template.go @@ -82,8 +82,8 @@ var TemplateFuncs template.FuncMap = map[string]interface{}{ "AppName": func() string { return setting.AppName }, - "AppRootSubUrl": func() string { - return setting.AppRootSubUrl + "AppSubUrl": func() string { + return setting.AppSubUrl }, "AppVer": func() string { return setting.AppVer @@ -210,7 +210,7 @@ func ActionDesc(act Actioner) string { content := act.GetContent() switch act.GetOpType() { case 1: // Create repository. - return fmt.Sprintf(TPL_CREATE_REPO, setting.AppRootSubUrl, actUserName, actUserName, repoLink, repoName) + return fmt.Sprintf(TPL_CREATE_REPO, setting.AppSubUrl, actUserName, actUserName, repoLink, repoName) case 5: // Commit repository. var push *PushCommits if err := json.Unmarshal([]byte(content), &push); err != nil { @@ -223,20 +223,20 @@ func ActionDesc(act Actioner) string { if push.Len > 3 { buf.WriteString(fmt.Sprintf(`
%d other commits >>
`, actUserName, repoName, branch, push.Len)) } - return fmt.Sprintf(TPL_COMMIT_REPO, setting.AppRootSubUrl, actUserName, actUserName, repoLink, branch, branch, repoLink, repoLink, + return fmt.Sprintf(TPL_COMMIT_REPO, setting.AppSubUrl, actUserName, actUserName, repoLink, branch, branch, repoLink, repoLink, buf.String()) case 6: // Create issue. infos := strings.SplitN(content, "|", 2) - return fmt.Sprintf(TPL_CREATE_ISSUE, setting.AppRootSubUrl, actUserName, actUserName, repoLink, infos[0], repoLink, infos[0], + return fmt.Sprintf(TPL_CREATE_ISSUE, setting.AppSubUrl, actUserName, actUserName, repoLink, infos[0], repoLink, infos[0], AvatarLink(email), infos[1]) case 8: // Transfer repository. newRepoLink := content + "/" + repoName - return fmt.Sprintf(TPL_TRANSFER_REPO, setting.AppRootSubUrl, actUserName, actUserName, repoLink, newRepoLink, newRepoLink) + return fmt.Sprintf(TPL_TRANSFER_REPO, setting.AppSubUrl, actUserName, actUserName, repoLink, newRepoLink, newRepoLink) case 9: // Push tag. - return fmt.Sprintf(TPL_PUSH_TAG, setting.AppRootSubUrl, actUserName, actUserName, repoLink, branch, branch, repoLink, repoLink) + return fmt.Sprintf(TPL_PUSH_TAG, setting.AppSubUrl, actUserName, actUserName, repoLink, branch, branch, repoLink, repoLink) case 10: // Comment issue. infos := strings.SplitN(content, "|", 2) - return fmt.Sprintf(TPL_COMMENT_ISSUE, setting.AppRootSubUrl, actUserName, actUserName, repoLink, infos[0], repoLink, infos[0], + return fmt.Sprintf(TPL_COMMENT_ISSUE, setting.AppSubUrl, actUserName, actUserName, repoLink, infos[0], repoLink, infos[0], AvatarLink(email), infos[1]) default: return "invalid type" diff --git a/modules/middleware/auth.go b/modules/middleware/auth.go index ccd8d031..8fae5d1e 100644 --- a/modules/middleware/auth.go +++ b/modules/middleware/auth.go @@ -25,13 +25,13 @@ func Toggle(options *ToggleOptions) macaron.Handler { return func(ctx *Context) { // Cannot view any page before installation. if !setting.InstallLock { - ctx.Redirect(setting.AppRootSubUrl + "/install") + ctx.Redirect(setting.AppSubUrl + "/install") return } // Redirect to dashboard if user tries to visit any non-login page. if options.SignOutRequire && ctx.IsSigned && ctx.Req.RequestURI != "/" { - ctx.Redirect(setting.AppRootSubUrl + "/") + ctx.Redirect(setting.AppSubUrl + "/") return } @@ -48,8 +48,8 @@ func Toggle(options *ToggleOptions) macaron.Handler { if strings.HasSuffix(ctx.Req.RequestURI, "watch") { return } - ctx.SetCookie("redirect_to", "/"+url.QueryEscape(setting.AppRootSubUrl + ctx.Req.RequestURI)) - ctx.Redirect(setting.AppRootSubUrl + "/user/login") + ctx.SetCookie("redirect_to", "/"+url.QueryEscape(setting.AppSubUrl+ctx.Req.RequestURI)) + ctx.Redirect(setting.AppSubUrl + "/user/login") return } else if !ctx.User.IsActive && setting.Service.RegisterEmailConfirm { ctx.Data["Title"] = ctx.Tr("auth.active_your_account") diff --git a/modules/middleware/context.go b/modules/middleware/context.go index 5c26f91f..9145038f 100644 --- a/modules/middleware/context.go +++ b/modules/middleware/context.go @@ -187,7 +187,7 @@ func Contexter() macaron.Handler { Session: sess, } // Compute current URL for real-time change language. - link := setting.AppRootSubUrl + ctx.Req.RequestURI + link := setting.AppSubUrl + ctx.Req.RequestURI i := strings.Index(link, "?") if i > -1 { link = link[:i] diff --git a/modules/middleware/org.go b/modules/middleware/org.go index 3a2cf7bc..be102989 100644 --- a/modules/middleware/org.go +++ b/modules/middleware/org.go @@ -38,7 +38,7 @@ func OrgAssignment(redirect bool, args ...bool) macaron.Handler { ctx.Handle(404, "GetUserByName", err) } else if redirect { log.Error(4, "GetUserByName", err) - ctx.Redirect(setting.AppRootSubUrl + "/") + ctx.Redirect(setting.AppSubUrl + "/") } else { ctx.Handle(500, "GetUserByName", err) } @@ -68,7 +68,7 @@ func OrgAssignment(redirect bool, args ...bool) macaron.Handler { } ctx.Data["IsOrganizationOwner"] = ctx.Org.IsOwner - ctx.Org.OrgLink = setting.AppRootSubUrl + "/org/" + org.Name + ctx.Org.OrgLink = setting.AppSubUrl + "/org/" + org.Name ctx.Data["OrgLink"] = ctx.Org.OrgLink // Team. @@ -80,7 +80,7 @@ func OrgAssignment(redirect bool, args ...bool) macaron.Handler { ctx.Handle(404, "GetTeam", err) } else if redirect { log.Error(4, "GetTeam", err) - ctx.Redirect(setting.AppRootSubUrl + "/") + ctx.Redirect(setting.AppSubUrl + "/") } else { ctx.Handle(500, "GetTeam", err) } diff --git a/modules/middleware/repo.go b/modules/middleware/repo.go index e7d7fb56..79b01133 100644 --- a/modules/middleware/repo.go +++ b/modules/middleware/repo.go @@ -60,7 +60,7 @@ func RepoAssignment(redirect bool, args ...bool) macaron.Handler { ctx.Handle(404, "GetUserByName", err) } else if redirect { log.Error(4, "GetUserByName", err) - ctx.Redirect(setting.AppRootSubUrl + "/") + ctx.Redirect(setting.AppSubUrl + "/") } else { ctx.Handle(500, "GetUserByName", err) } @@ -72,7 +72,7 @@ func RepoAssignment(redirect bool, args ...bool) macaron.Handler { if u == nil { if redirect { - ctx.Redirect(setting.AppRootSubUrl + "/") + ctx.Redirect(setting.AppSubUrl + "/") return } ctx.Handle(404, "RepoAssignment", errors.New("invliad user account for single repository")) @@ -92,7 +92,7 @@ func RepoAssignment(redirect bool, args ...bool) macaron.Handler { ctx.Handle(404, "GetRepositoryByName", err) return } else if redirect { - ctx.Redirect(setting.AppRootSubUrl + "/") + ctx.Redirect(setting.AppSubUrl + "/") return } ctx.Handle(500, "GetRepositoryByName", err) @@ -160,7 +160,7 @@ func RepoAssignment(redirect bool, args ...bool) macaron.Handler { return } ctx.Repo.GitRepo = gitRepo - ctx.Repo.RepoLink = setting.AppRootSubUrl + "/" + u.Name + "/" + repo.Name + ctx.Repo.RepoLink = setting.AppSubUrl + "/" + u.Name + "/" + repo.Name ctx.Data["RepoLink"] = ctx.Repo.RepoLink tags, err := ctx.Repo.GitRepo.GetTags() @@ -298,8 +298,8 @@ func RequireTrueOwner() macaron.Handler { return func(ctx *Context) { if !ctx.Repo.IsTrueOwner && !ctx.Repo.IsAdmin { if !ctx.IsSigned { - ctx.SetCookie("redirect_to", "/"+url.QueryEscape(setting.AppRootSubUrl + ctx.Req.RequestURI)) - ctx.Redirect(setting.AppRootSubUrl + "/user/login") + ctx.SetCookie("redirect_to", "/"+url.QueryEscape(setting.AppSubUrl+ctx.Req.RequestURI)) + ctx.Redirect(setting.AppSubUrl + "/user/login") return } ctx.Handle(404, ctx.Req.RequestURI, nil) diff --git a/modules/setting/setting.go b/modules/setting/setting.go index 74427744..321282df 100644 --- a/modules/setting/setting.go +++ b/modules/setting/setting.go @@ -32,10 +32,10 @@ const ( var ( // App settings. - AppVer string - AppName string - AppUrl string - AppRootSubUrl string + AppVer string + AppName string + AppUrl string + AppSubUrl string // Server settings. Protocol Scheme @@ -167,11 +167,12 @@ func NewConfigContext() { AppUrl += "/" } + // Check if has app suburl. url, err := url.Parse(AppUrl) if err != nil { - log.Fatal(4, "Invalid ROOT_URL %s: %s", AppUrl, err) + log.Fatal(4, "Invalid ROOT_URL(%s): %s", AppUrl, err) } - AppRootSubUrl = strings.TrimSuffix(url.Path, "/") + AppSubUrl = strings.TrimSuffix(url.Path, "/") Protocol = HTTP if Cfg.MustValue("server", "PROTOCOL") == "https" { diff --git a/routers/admin/admin.go b/routers/admin/admin.go index 1fee7adb..6f2966bc 100644 --- a/routers/admin/admin.go +++ b/routers/admin/admin.go @@ -143,7 +143,7 @@ func Dashboard(ctx *middleware.Context) { } else { ctx.Flash.Success(success) } - ctx.Redirect(setting.AppRootSubUrl + "/admin") + ctx.Redirect(setting.AppSubUrl + "/admin") return } diff --git a/routers/admin/auths.go b/routers/admin/auths.go index 9eaae489..e537572b 100644 --- a/routers/admin/auths.go +++ b/routers/admin/auths.go @@ -100,7 +100,7 @@ func NewAuthSourcePost(ctx *middleware.Context, form auth.AuthenticationForm) { } log.Trace("Authentication created by admin(%s): %s", ctx.User.Name, form.AuthName) - ctx.Redirect(setting.AppRootSubUrl + "/admin/auths") + ctx.Redirect(setting.AppSubUrl + "/admin/auths") } func EditAuthSource(ctx *middleware.Context) { @@ -181,7 +181,7 @@ func EditAuthSourcePost(ctx *middleware.Context, form auth.AuthenticationForm) { log.Trace("Authentication changed by admin(%s): %s", ctx.User.Name, form.AuthName) ctx.Flash.Success(ctx.Tr("admin.auths.update_success")) - ctx.Redirect(setting.AppRootSubUrl + "/admin/auths/" + ctx.Params(":authid")) + ctx.Redirect(setting.AppSubUrl + "/admin/auths/" + ctx.Params(":authid")) } func DeleteAuthSource(ctx *middleware.Context) { @@ -201,12 +201,12 @@ func DeleteAuthSource(ctx *middleware.Context) { switch err { case models.ErrAuthenticationUserUsed: ctx.Flash.Error("form.still_own_user") - ctx.Redirect(setting.AppRootSubUrl + "/admin/auths/" + ctx.Params(":authid")) + ctx.Redirect(setting.AppSubUrl + "/admin/auths/" + ctx.Params(":authid")) default: ctx.Handle(500, "DelLoginSource", err) } return } log.Trace("Authentication deleted by admin(%s): %s", ctx.User.Name, a.Name) - ctx.Redirect(setting.AppRootSubUrl + "/admin/auths") + ctx.Redirect(setting.AppSubUrl + "/admin/auths") } diff --git a/routers/admin/users.go b/routers/admin/users.go index 5cdb0f5c..fc3b0cbc 100644 --- a/routers/admin/users.go +++ b/routers/admin/users.go @@ -121,7 +121,7 @@ func NewUserPost(ctx *middleware.Context, form auth.RegisterForm) { return } log.Trace("Account created by admin(%s): %s", ctx.User.Name, u.Name) - ctx.Redirect(setting.AppRootSubUrl + "/admin/users") + ctx.Redirect(setting.AppSubUrl + "/admin/users") } func EditUser(ctx *middleware.Context) { @@ -198,7 +198,7 @@ func EditUserPost(ctx *middleware.Context, form auth.AdminEditUserForm) { ctx.Data["User"] = u ctx.Flash.Success(ctx.Tr("admin.users.update_profile_success")) - ctx.Redirect(setting.AppRootSubUrl + "/admin/users/" + ctx.Params(":userid")) + ctx.Redirect(setting.AppSubUrl + "/admin/users/" + ctx.Params(":userid")) } func DeleteUser(ctx *middleware.Context) { @@ -218,12 +218,12 @@ func DeleteUser(ctx *middleware.Context) { switch err { case models.ErrUserOwnRepos: ctx.Flash.Error(ctx.Tr("admin.users.still_own_repo")) - ctx.Redirect(setting.AppRootSubUrl + "/admin/users/" + ctx.Params(":userid")) + ctx.Redirect(setting.AppSubUrl + "/admin/users/" + ctx.Params(":userid")) default: ctx.Handle(500, "DeleteUser", err) } return } log.Trace("Account deleted by admin(%s): %s", ctx.User.Name, u.Name) - ctx.Redirect(setting.AppRootSubUrl + "/admin/users") + ctx.Redirect(setting.AppSubUrl + "/admin/users") } diff --git a/routers/home.go b/routers/home.go index 8e973d16..dd604ec7 100644 --- a/routers/home.go +++ b/routers/home.go @@ -33,7 +33,7 @@ func Home(ctx *middleware.Context) { // Check auto-login. uname := ctx.GetCookie(setting.CookieUserName) if len(uname) != 0 { - ctx.Redirect(setting.AppRootSubUrl + "/user/login") + ctx.Redirect(setting.AppSubUrl + "/user/login") return } diff --git a/routers/install.go b/routers/install.go index 54da4d4f..07af613c 100644 --- a/routers/install.go +++ b/routers/install.go @@ -253,5 +253,5 @@ func InstallPost(ctx *middleware.Context, form auth.InstallForm) { log.Info("First-time run install finished!") ctx.Flash.Success(ctx.Tr("install.install_success")) - ctx.Redirect(setting.AppRootSubUrl + "/user/login") + ctx.Redirect(setting.AppSubUrl + "/user/login") } diff --git a/routers/org/members.go b/routers/org/members.go index d3bd51ea..f571e334 100644 --- a/routers/org/members.go +++ b/routers/org/members.go @@ -87,7 +87,7 @@ func MembersAction(ctx *middleware.Context) { if ctx.Params(":action") != "leave" { ctx.Redirect(ctx.Org.OrgLink + "/members") } else { - ctx.Redirect(setting.AppRootSubUrl + "/") + ctx.Redirect(setting.AppSubUrl + "/") } } diff --git a/routers/org/org.go b/routers/org/org.go index cea70823..ab589832 100644 --- a/routers/org/org.go +++ b/routers/org/org.go @@ -83,5 +83,5 @@ func CreatePost(ctx *middleware.Context, form auth.CreateOrgForm) { } log.Trace("Organization created: %s", org.Name) - ctx.Redirect(setting.AppRootSubUrl + "/org/" + form.OrgName + "/dashboard") + ctx.Redirect(setting.AppSubUrl + "/org/" + form.OrgName + "/dashboard") } diff --git a/routers/org/setting.go b/routers/org/setting.go index 3d397c0c..0522f998 100644 --- a/routers/org/setting.go +++ b/routers/org/setting.go @@ -49,7 +49,7 @@ func SettingsPost(ctx *middleware.Context, form auth.UpdateOrgSettingForm) { } else if err = models.ChangeUserName(org, form.OrgUserName); err != nil { if err == models.ErrUserNameIllegal { ctx.Flash.Error(ctx.Tr("form.illegal_username")) - ctx.Redirect(setting.AppRootSubUrl + "/org/" + org.LowerName + "/settings") + ctx.Redirect(setting.AppSubUrl + "/org/" + org.LowerName + "/settings") return } else { ctx.Handle(500, "ChangeUserName", err) @@ -73,7 +73,7 @@ func SettingsPost(ctx *middleware.Context, form auth.UpdateOrgSettingForm) { } log.Trace("Organization setting updated: %s", org.Name) ctx.Flash.Success(ctx.Tr("org.settings.update_setting_success")) - ctx.Redirect(setting.AppRootSubUrl + "/org/" + org.Name + "/settings") + ctx.Redirect(setting.AppSubUrl + "/org/" + org.Name + "/settings") } func SettingsDelete(ctx *middleware.Context) { @@ -87,13 +87,13 @@ func SettingsDelete(ctx *middleware.Context) { switch err { case models.ErrUserOwnRepos: ctx.Flash.Error(ctx.Tr("form.org_still_own_repo")) - ctx.Redirect(setting.AppRootSubUrl + "/org/" + org.LowerName + "/settings/delete") + ctx.Redirect(setting.AppSubUrl + "/org/" + org.LowerName + "/settings/delete") default: ctx.Handle(500, "DeleteOrganization", err) } } else { log.Trace("Organization deleted: %s", ctx.User.Name) - ctx.Redirect(setting.AppRootSubUrl + "/") + ctx.Redirect(setting.AppSubUrl + "/") } return } diff --git a/routers/repo/commit.go b/routers/repo/commit.go index e58b9e78..218cae7b 100644 --- a/routers/repo/commit.go +++ b/routers/repo/commit.go @@ -159,8 +159,8 @@ func Diff(ctx *middleware.Context) { ctx.Data["Diff"] = diff ctx.Data["Parents"] = parents ctx.Data["DiffNotAvailable"] = diff.NumFiles() == 0 - ctx.Data["SourcePath"] = setting.AppRootSubUrl + "/" + path.Join(userName, repoName, "src", commitId) - ctx.Data["RawPath"] = setting.AppRootSubUrl + "/" + path.Join(userName, repoName, "raw", commitId) + ctx.Data["SourcePath"] = setting.AppSubUrl + "/" + path.Join(userName, repoName, "src", commitId) + ctx.Data["RawPath"] = setting.AppSubUrl + "/" + path.Join(userName, repoName, "raw", commitId) ctx.HTML(200, DIFF) } diff --git a/routers/repo/issue.go b/routers/repo/issue.go index 8aba82ff..3a028e58 100644 --- a/routers/repo/issue.go +++ b/routers/repo/issue.go @@ -54,8 +54,8 @@ func Issues(ctx *middleware.Context) { isShowClosed := ctx.Query("state") == "closed" if viewType != "all" && !ctx.IsSigned { - ctx.SetCookie("redirect_to", "/"+url.QueryEscape(setting.AppRootSubUrl + ctx.Req.RequestURI)) - ctx.Redirect(setting.AppRootSubUrl + "/user/login") + ctx.SetCookie("redirect_to", "/"+url.QueryEscape(setting.AppSubUrl+ctx.Req.RequestURI)) + ctx.Redirect(setting.AppSubUrl + "/user/login") return } @@ -312,7 +312,7 @@ func CreateIssuePost(ctx *middleware.Context, form auth.CreateIssueForm) { } log.Trace("%d Issue created: %d", ctx.Repo.Repository.Id, issue.Id) - send(200, fmt.Sprintf("%s/%s/%s/issues/%d", setting.AppRootSubUrl, ctx.Params(":username"), ctx.Params(":reponame"), issue.Index), nil) + send(200, fmt.Sprintf("%s/%s/%s/issues/%d", setting.AppSubUrl, ctx.Params(":username"), ctx.Params(":reponame"), issue.Index), nil) } func checkLabels(labels, allLabels []*models.Label) { diff --git a/routers/repo/repo.go b/routers/repo/repo.go index 3bd9aa7c..ae599f9f 100644 --- a/routers/repo/repo.go +++ b/routers/repo/repo.go @@ -96,7 +96,7 @@ func CreatePost(ctx *middleware.Context, form auth.CreateRepoForm) { form.Gitignore, form.License, form.Private, false, form.InitReadme) if err == nil { log.Trace("Repository created: %s/%s", ctxUser.Name, form.RepoName) - ctx.Redirect(setting.AppRootSubUrl + "/" + ctxUser.Name + "/" + form.RepoName) + ctx.Redirect(setting.AppSubUrl + "/" + ctxUser.Name + "/" + form.RepoName) return } else if err == models.ErrRepoAlreadyExist { ctx.Data["Err_RepoName"] = true @@ -180,7 +180,7 @@ func MigratePost(ctx *middleware.Context, form auth.MigrateRepoForm) { form.Mirror, url) if err == nil { log.Trace("Repository migrated: %s/%s", ctxUser.Name, form.RepoName) - ctx.Redirect(setting.AppRootSubUrl + "/" + ctxUser.Name + "/" + form.RepoName) + ctx.Redirect(setting.AppSubUrl + "/" + ctxUser.Name + "/" + form.RepoName) return } else if err == models.ErrRepoAlreadyExist { ctx.Data["Err_RepoName"] = true diff --git a/routers/repo/setting.go b/routers/repo/setting.go index 926b5432..137d104f 100644 --- a/routers/repo/setting.go +++ b/routers/repo/setting.go @@ -97,7 +97,7 @@ func SettingsPost(ctx *middleware.Context, form auth.RepoSettingForm) { } ctx.Flash.Success(ctx.Tr("repo.settings.update_settings_success")) - ctx.Redirect(fmt.Sprintf("%s/%s/%s/settings", setting.AppRootSubUrl, ctx.Repo.Owner.Name, ctx.Repo.Repository.Name)) + ctx.Redirect(fmt.Sprintf("%s/%s/%s/settings", setting.AppSubUrl, ctx.Repo.Owner.Name, ctx.Repo.Repository.Name)) case "transfer": if ctx.Repo.Repository.Name != form.RepoName { ctx.RenderWithErr(ctx.Tr("form.enterred_invalid_repo_name"), SETTINGS_OPTIONS, nil) @@ -122,7 +122,7 @@ func SettingsPost(ctx *middleware.Context, form auth.RepoSettingForm) { } log.Trace("Repository transfered: %s/%s -> %s", ctx.Repo.Owner.Name, ctx.Repo.Repository.Name, newOwner) ctx.Flash.Success(ctx.Tr("repo.settings.transfer_succeed")) - ctx.Redirect(setting.AppRootSubUrl + "/") + ctx.Redirect(setting.AppSubUrl + "/") case "delete": if ctx.Repo.Repository.Name != form.RepoName { ctx.RenderWithErr(ctx.Tr("form.enterred_invalid_repo_name"), SETTINGS_OPTIONS, nil) @@ -151,9 +151,9 @@ func SettingsPost(ctx *middleware.Context, form auth.RepoSettingForm) { } log.Trace("Repository deleted: %s/%s", ctx.Repo.Owner.Name, ctx.Repo.Repository.Name) if ctx.Repo.Owner.IsOrganization() { - ctx.Redirect(setting.AppRootSubUrl + "/org/" + ctx.Repo.Owner.Name + "/dashboard") + ctx.Redirect(setting.AppSubUrl + "/org/" + ctx.Repo.Owner.Name + "/dashboard") } else { - ctx.Redirect(setting.AppRootSubUrl + "/") + ctx.Redirect(setting.AppSubUrl + "/") } } } @@ -167,7 +167,7 @@ func SettingsCollaboration(ctx *middleware.Context) { if ctx.Req.Method == "POST" { name := strings.ToLower(ctx.Query("collaborator")) if len(name) == 0 || ctx.Repo.Owner.LowerName == name { - ctx.Redirect(setting.AppRootSubUrl + ctx.Req.URL.Path) + ctx.Redirect(setting.AppSubUrl + ctx.Req.URL.Path) return } has, err := models.HasAccess(name, repoLink, models.WRITABLE) @@ -175,7 +175,7 @@ func SettingsCollaboration(ctx *middleware.Context) { ctx.Handle(500, "HasAccess", err) return } else if has { - ctx.Redirect(setting.AppRootSubUrl + ctx.Req.URL.Path) + ctx.Redirect(setting.AppSubUrl + ctx.Req.URL.Path) return } @@ -183,7 +183,7 @@ func SettingsCollaboration(ctx *middleware.Context) { if err != nil { if err == models.ErrUserNotExist { ctx.Flash.Error(ctx.Tr("form.user_not_exist")) - ctx.Redirect(setting.AppRootSubUrl + ctx.Req.URL.Path) + ctx.Redirect(setting.AppSubUrl + ctx.Req.URL.Path) } else { ctx.Handle(500, "GetUserByName", err) } @@ -204,7 +204,7 @@ func SettingsCollaboration(ctx *middleware.Context) { } ctx.Flash.Success(ctx.Tr("repo.settings.add_collaborator_success")) - ctx.Redirect(setting.AppRootSubUrl + ctx.Req.URL.Path) + ctx.Redirect(setting.AppSubUrl + ctx.Req.URL.Path) return } diff --git a/routers/user/auth.go b/routers/user/auth.go index 1dbc3300..71622e55 100644 --- a/routers/user/auth.go +++ b/routers/user/auth.go @@ -82,7 +82,7 @@ func SignIn(ctx *middleware.Context) { return } - ctx.Redirect(setting.AppRootSubUrl + "/") + ctx.Redirect(setting.AppSubUrl + "/") } func SignInPost(ctx *middleware.Context, form auth.SignInForm) { @@ -140,7 +140,7 @@ func SignInPost(ctx *middleware.Context, form auth.SignInForm) { return } - ctx.Redirect(setting.AppRootSubUrl + "/") + ctx.Redirect(setting.AppSubUrl + "/") } func SignOut(ctx *middleware.Context) { @@ -151,7 +151,7 @@ func SignOut(ctx *middleware.Context) { ctx.Session.Delete("socialEmail") ctx.SetCookie(setting.CookieUserName, "", -1) ctx.SetCookie(setting.CookieRememberName, "", -1) - ctx.Redirect(setting.AppRootSubUrl + "/") + ctx.Redirect(setting.AppSubUrl + "/") } func oauthSignUp(ctx *middleware.Context, sid int64) { @@ -288,7 +288,7 @@ func SignUpPost(ctx *middleware.Context, cpt *captcha.Captcha, form auth.Registe return } - ctx.Redirect(setting.AppRootSubUrl + "/user/login") + ctx.Redirect(setting.AppSubUrl + "/user/login") } func Activate(ctx *middleware.Context) { @@ -335,7 +335,7 @@ func Activate(ctx *middleware.Context) { ctx.Session.Set("uid", user.Id) ctx.Session.Set("uname", user.Name) - ctx.Redirect(setting.AppRootSubUrl + "/") + ctx.Redirect(setting.AppSubUrl + "/") return } @@ -437,7 +437,7 @@ func ResetPasswdPost(ctx *middleware.Context) { } log.Trace("User password reset: %s", u.Name) - ctx.Redirect(setting.AppRootSubUrl + "/user/login") + ctx.Redirect(setting.AppSubUrl + "/user/login") return } diff --git a/routers/user/home.go b/routers/user/home.go index b411b8fc..031872fc 100644 --- a/routers/user/home.go +++ b/routers/user/home.go @@ -127,7 +127,7 @@ func Profile(ctx *middleware.Context) { uname := ctx.Params(":username") // Special handle for FireFox requests favicon.ico. if uname == "favicon.ico" { - ctx.Redirect(setting.AppRootSubUrl + "/img/favicon.png") + ctx.Redirect(setting.AppSubUrl + "/img/favicon.png") return } @@ -142,7 +142,7 @@ func Profile(ctx *middleware.Context) { } if u.IsOrganization() { - ctx.Redirect(setting.AppRootSubUrl + "/org/" + u.Name) + ctx.Redirect(setting.AppSubUrl + "/org/" + u.Name) return } @@ -182,7 +182,7 @@ func Email2User(ctx *middleware.Context) { } return } - ctx.Redirect(setting.AppRootSubUrl + "/user/" + u.Name) + ctx.Redirect(setting.AppSubUrl + "/user/" + u.Name) } const ( diff --git a/routers/user/setting.go b/routers/user/setting.go index a540f054..8f778acd 100644 --- a/routers/user/setting.go +++ b/routers/user/setting.go @@ -56,7 +56,7 @@ func SettingsPost(ctx *middleware.Context, form auth.UpdateProfileForm) { } else if err = models.ChangeUserName(ctx.User, form.UserName); err != nil { if err == models.ErrUserNameIllegal { ctx.Flash.Error(ctx.Tr("form.illegal_username")) - ctx.Redirect(setting.AppRootSubUrl + "/user/settings") + ctx.Redirect(setting.AppSubUrl + "/user/settings") return } else { ctx.Handle(500, "ChangeUserName", err) @@ -79,7 +79,7 @@ func SettingsPost(ctx *middleware.Context, form auth.UpdateProfileForm) { } log.Trace("User setting updated: %s", ctx.User.Name) ctx.Flash.Success(ctx.Tr("settings.update_profile_success")) - ctx.Redirect(setting.AppRootSubUrl + "/user/settings") + ctx.Redirect(setting.AppSubUrl + "/user/settings") } func SettingsPassword(ctx *middleware.Context) { @@ -120,7 +120,7 @@ func SettingsPasswordPost(ctx *middleware.Context, form auth.ChangePasswordForm) ctx.Flash.Success(ctx.Tr("settings.change_password_success")) } - ctx.Redirect(setting.AppRootSubUrl + "/user/settings/password") + ctx.Redirect(setting.AppSubUrl + "/user/settings/password") } func SettingsSSHKeys(ctx *middleware.Context) { @@ -161,7 +161,7 @@ func SettingsSSHKeysPost(ctx *middleware.Context, form auth.AddSSHKeyForm) { ctx.Handle(500, "DeletePublicKey", err) } else { log.Trace("SSH key deleted: %s", ctx.User.Name) - ctx.Redirect(setting.AppRootSubUrl + "/user/settings/ssh") + ctx.Redirect(setting.AppSubUrl + "/user/settings/ssh") } return } @@ -178,7 +178,7 @@ func SettingsSSHKeysPost(ctx *middleware.Context, form auth.AddSSHKeyForm) { if ok, err := models.CheckPublicKeyString(cleanContent); !ok { ctx.Flash.Error(ctx.Tr("form.invalid_ssh_key", err.Error())) - ctx.Redirect(setting.AppRootSubUrl + "/user/settings/ssh") + ctx.Redirect(setting.AppSubUrl + "/user/settings/ssh") return } @@ -197,7 +197,7 @@ func SettingsSSHKeysPost(ctx *middleware.Context, form auth.AddSSHKeyForm) { } else { log.Trace("SSH key added: %s", ctx.User.Name) ctx.Flash.Success(ctx.Tr("settings.add_key_success")) - ctx.Redirect(setting.AppRootSubUrl + "/user/settings/ssh") + ctx.Redirect(setting.AppSubUrl + "/user/settings/ssh") return } } @@ -218,7 +218,7 @@ func SettingsSocial(ctx *middleware.Context) { return } ctx.Flash.Success(ctx.Tr("settings.unbind_success")) - ctx.Redirect(setting.AppRootSubUrl + "/user/settings/social") + ctx.Redirect(setting.AppSubUrl + "/user/settings/social") return } @@ -249,13 +249,13 @@ func SettingsDelete(ctx *middleware.Context) { switch err { case models.ErrUserOwnRepos: ctx.Flash.Error(ctx.Tr("form.still_own_repo")) - ctx.Redirect(setting.AppRootSubUrl + "/user/settings/delete") + ctx.Redirect(setting.AppSubUrl + "/user/settings/delete") default: ctx.Handle(500, "DeleteUser", err) } } else { log.Trace("Account deleted: %s", ctx.User.Name) - ctx.Redirect(setting.AppRootSubUrl + "/") + ctx.Redirect(setting.AppSubUrl + "/") } return } diff --git a/routers/user/social.go b/routers/user/social.go index fc2ea5fb..0bc1fa59 100644 --- a/routers/user/social.go +++ b/routers/user/social.go @@ -22,7 +22,7 @@ import ( func extractPath(next string) string { n, err := url.Parse(next) if err != nil { - return setting.AppRootSubUrl + "/" + return setting.AppSubUrl + "/" } return n.Path } @@ -88,7 +88,7 @@ func SocialSignIn(ctx *middleware.Context) { return } case models.ErrOauth2NotAssociated: - next = setting.AppRootSubUrl + "/user/sign_up" + next = setting.AppSubUrl + "/user/sign_up" default: ctx.Handle(500, "social.SocialSignIn(GetOauth2)", err) return diff --git a/templates/.VERSION b/templates/.VERSION index 29de2fdf..9df945b7 100644 --- a/templates/.VERSION +++ b/templates/.VERSION @@ -1 +1 @@ -0.5.2.0917 Beta \ No newline at end of file +0.5.3.0919 Beta \ No newline at end of file diff --git a/templates/admin/auth/edit.tmpl b/templates/admin/auth/edit.tmpl index 4dead7f0..9697b773 100644 --- a/templates/admin/auth/edit.tmpl +++ b/templates/admin/auth/edit.tmpl @@ -12,7 +12,7 @@
{{.i18n.Tr "admin.auths.edit"}}
-
+ {{.CsrfTokenHtml}} {{$type := .Source.Type}} diff --git a/templates/admin/auth/list.tmpl b/templates/admin/auth/list.tmpl index ba10e1d2..01b586fb 100644 --- a/templates/admin/auth/list.tmpl +++ b/templates/admin/auth/list.tmpl @@ -13,7 +13,7 @@ {{.i18n.Tr "admin.auths.auth_manage_panel"}}
- {{.i18n.Tr "admin.auths.new"}} + {{.i18n.Tr "admin.auths.new"}}
@@ -31,20 +31,20 @@ {{range .Sources}} - + - + {{end}}
{{.Id}}{{.Name}}{{.Name}} {{.TypeString}} {{DateFormat .Updated "M d, Y"}} {{DateFormat .Created "M d, Y"}}
{{if or .LastPageNum .NextPageNum}} {{end}}
diff --git a/templates/admin/auth/new.tmpl b/templates/admin/auth/new.tmpl index 869eff32..daae60e0 100644 --- a/templates/admin/auth/new.tmpl +++ b/templates/admin/auth/new.tmpl @@ -12,7 +12,7 @@
{{.i18n.Tr "admin.auths.new"}}
- + {{.CsrfTokenHtml}}
diff --git a/templates/admin/dashboard.tmpl b/templates/admin/dashboard.tmpl index 00696611..80c02828 100644 --- a/templates/admin/dashboard.tmpl +++ b/templates/admin/dashboard.tmpl @@ -34,11 +34,11 @@ {{.i18n.Tr "admin.dashboard.clean_unbind_oauth"}} - {{.i18n.Tr "admin.dashboard.operation_run"}} + {{.i18n.Tr "admin.dashboard.operation_run"}} {{.i18n.Tr "admin.dashboard.delete_inactivate_accounts"}} - {{.i18n.Tr "admin.dashboard.operation_run"}} + {{.i18n.Tr "admin.dashboard.operation_run"}} diff --git a/templates/admin/nav.tmpl b/templates/admin/nav.tmpl index ae44f4a8..e294cd92 100644 --- a/templates/admin/nav.tmpl +++ b/templates/admin/nav.tmpl @@ -2,13 +2,13 @@

{{.i18n.Tr "admin_panel"}}

\ No newline at end of file diff --git a/templates/admin/org/list.tmpl b/templates/admin/org/list.tmpl index f42c2c53..f901c696 100644 --- a/templates/admin/org/list.tmpl +++ b/templates/admin/org/list.tmpl @@ -30,7 +30,7 @@ {{range .Orgs}} {{.Id}} - {{.Name}} + {{.Name}} {{.Email}} {{.NumTeams}} {{.NumMembers}} @@ -42,8 +42,8 @@ {{if or .LastPageNum .NextPageNum}} {{end}}
diff --git a/templates/admin/repo/list.tmpl b/templates/admin/repo/list.tmpl index 3e7442a6..cb333aeb 100644 --- a/templates/admin/repo/list.tmpl +++ b/templates/admin/repo/list.tmpl @@ -31,8 +31,8 @@ {{range .Repos}} {{.Id}} - {{.Owner.Name}} - {{.Name}} + {{.Owner.Name}} + {{.Name}} {{.NumWatches}} {{.NumIssues}} @@ -44,8 +44,8 @@ {{if or .LastPageNum .NextPageNum}} {{end}} diff --git a/templates/admin/user/edit.tmpl b/templates/admin/user/edit.tmpl index e9ed7836..3924afec 100644 --- a/templates/admin/user/edit.tmpl +++ b/templates/admin/user/edit.tmpl @@ -12,7 +12,7 @@
{{.i18n.Tr "admin.users.edit_account"}}
- + {{.CsrfTokenHtml}}
diff --git a/templates/admin/user/list.tmpl b/templates/admin/user/list.tmpl index f85bb6c0..1092539e 100644 --- a/templates/admin/user/list.tmpl +++ b/templates/admin/user/list.tmpl @@ -13,7 +13,7 @@ {{.i18n.Tr "admin.users.user_manage_panel"}}
- {{.i18n.Tr "admin.users.new_account"}} + {{.i18n.Tr "admin.users.new_account"}}
@@ -32,21 +32,21 @@ {{range .Users}} - + - + {{end}}
{{.Id}}{{.Name}}{{.Name}} {{.Email}} {{.NumRepos}} {{DateFormat .Created "M d, Y"}}
{{if or .LastPageNum .NextPageNum}} {{end}}
diff --git a/templates/admin/user/new.tmpl b/templates/admin/user/new.tmpl index db842c68..38acbf8f 100644 --- a/templates/admin/user/new.tmpl +++ b/templates/admin/user/new.tmpl @@ -12,7 +12,7 @@
{{.i18n.Tr "admin.users.new_account"}}
- + {{.CsrfTokenHtml}}
diff --git a/templates/base/head.tmpl b/templates/base/head.tmpl index 55dd4690..7775933c 100644 --- a/templates/base/head.tmpl +++ b/templates/base/head.tmpl @@ -1,8 +1,8 @@ - + - + @@ -19,21 +19,21 @@ {{else}} - - + + - - + + {{end}} - - - - - + + + + + - - + + {{if .Title}}{{.Title}} - {{end}}{{AppName}} diff --git a/templates/base/navbar.tmpl b/templates/base/navbar.tmpl index 991e773d..b69e9dc4 100644 --- a/templates/base/navbar.tmpl +++ b/templates/base/navbar.tmpl @@ -1,8 +1,8 @@ diff --git a/templates/explore/nav.tmpl b/templates/explore/nav.tmpl index a6c0acad..556627b0 100644 --- a/templates/explore/nav.tmpl +++ b/templates/explore/nav.tmpl @@ -2,7 +2,7 @@

{{.i18n.Tr "explore"}}

\ No newline at end of file diff --git a/templates/explore/repos.tmpl b/templates/explore/repos.tmpl index b8ae1791..954d0b06 100644 --- a/templates/explore/repos.tmpl +++ b/templates/explore/repos.tmpl @@ -12,7 +12,7 @@
  • {{.NumStars}}
  • {{.NumForks}}
  • -

    {{.Name}}

    +

    {{.Name}}

    {{.Description}}

    {{$.i18n.Tr "org.repo_updated"}} {{TimeSince .Updated $.i18n.Lang}}

    diff --git a/templates/home.tmpl b/templates/home.tmpl index 0fa70869..da73025d 100644 --- a/templates/home.tmpl +++ b/templates/home.tmpl @@ -3,12 +3,12 @@

    Gogs

    {{.i18n.Tr "app_desc"}}

    -
    + {{.CsrfTokenHtml}} diff --git a/templates/install.tmpl b/templates/install.tmpl index eb294082..f1c28031 100644 --- a/templates/install.tmpl +++ b/templates/install.tmpl @@ -8,7 +8,7 @@
    {{.i18n.Tr "install.title"}}
    - + {{.CsrfTokenHtml}}
    {{.i18n.Tr "install.requite_db_desc"}}
    diff --git a/templates/ng/base/head.tmpl b/templates/ng/base/head.tmpl index 222edb69..efdc9653 100644 --- a/templates/ng/base/head.tmpl +++ b/templates/ng/base/head.tmpl @@ -1,6 +1,6 @@ - + @@ -9,27 +9,27 @@ {{if .Repository.IsGoget}}{{end}} - + {{if CdnMode}} {{else}} - + - + {{end}} - - - - + + + + - - - + + + {{if .Title}}{{.Title}} - {{end}}{{AppName}} diff --git a/templates/ng/base/header.tmpl b/templates/ng/base/header.tmpl index af3bc02f..aec4e2ef 100644 --- a/templates/ng/base/header.tmpl +++ b/templates/ng/base/header.tmpl @@ -2,37 +2,37 @@ -

    {{.Name}}

    +

    {{.Name}}

    {{.Description}}

    {{$.i18n.Tr "org.repo_updated"}} {{TimeSince .Updated $.i18n.Lang}}

    @@ -46,20 +46,20 @@
    {{if $isMember}} - {{.Org.NumMembers}} + {{.Org.NumMembers}} {{end}} {{.i18n.Tr "org.people"}}
    {{range .Members}} {{if or $isMember (.IsPublicMember $.Org.Id)}} - + {{end}} {{end}}
    {{if .IsOrganizationOwner}} {{end}}
    @@ -67,14 +67,14 @@
    - {{.Org.NumTeams}} + {{.Org.NumTeams}} {{.i18n.Tr "org.teams"}}
      {{range .Teams}}
    • - {{.Name}} + {{.Name}}

      {{.NumMembers}} {{$.i18n.Tr "org.lower_members"}} · {{.NumRepos}} {{$.i18n.Tr "org.lower_repositories"}}

    • {{end}} @@ -82,7 +82,7 @@
    {{if .IsOrganizationOwner}} {{end}}
    diff --git a/templates/org/member/members.tmpl b/templates/org/member/members.tmpl index eb4b9b7f..0e7453ac 100644 --- a/templates/org/member/members.tmpl +++ b/templates/org/member/members.tmpl @@ -14,7 +14,7 @@ {{range .Members}}
    - {{.FullName}}({{.Name}}) + {{.FullName}}({{.Name}})
    • {{ $isPublic := .IsPublicMember $.Org.Id}} diff --git a/templates/org/new.tmpl b/templates/org/new.tmpl index eb5fd9a3..4e42775a 100644 --- a/templates/org/new.tmpl +++ b/templates/org/new.tmpl @@ -1,7 +1,7 @@ {{template "base/head" .}} {{template "base/navbar" .}}
      -
      + {{.CsrfTokenHtml}}

      Create New Organization

      {{template "base/alert" .}} @@ -24,7 +24,7 @@
      - Cancel + Cancel
      diff --git a/templates/org/settings/delete.tmpl b/templates/org/settings/delete.tmpl index 938fdd64..8b698e0d 100644 --- a/templates/org/settings/delete.tmpl +++ b/templates/org/settings/delete.tmpl @@ -12,7 +12,7 @@

      {{.i18n.Tr "org.settings.delete_account"}}

      {{.i18n.Tr "org.settings.delete_prompt" | Str2html}} -
      + {{.CsrfTokenHtml}}

      diff --git a/templates/org/settings/nav.tmpl b/templates/org/settings/nav.tmpl index 63cb6f08..11d32d7f 100644 --- a/templates/org/settings/nav.tmpl +++ b/templates/org/settings/nav.tmpl @@ -4,9 +4,9 @@

      diff --git a/templates/org/settings/options.tmpl b/templates/org/settings/options.tmpl index 09492193..793b9c29 100644 --- a/templates/org/settings/options.tmpl +++ b/templates/org/settings/options.tmpl @@ -12,7 +12,7 @@
      {{.i18n.Tr "org.settings.options"}}
      - + {{.CsrfTokenHtml}}
      diff --git a/templates/org/team/members.tmpl b/templates/org/team/members.tmpl index ad9b30ed..66f496eb 100644 --- a/templates/org/team/members.tmpl +++ b/templates/org/team/members.tmpl @@ -30,7 +30,7 @@ {{if $.IsOrganizationOwner}} {{$.i18n.Tr "org.members.remove"}} {{end}} - + {{.Name}} {{.FullName}} ({{.Name}}) diff --git a/templates/org/team/repositories.tmpl b/templates/org/team/repositories.tmpl index f7ff97d8..31b6477c 100644 --- a/templates/org/team/repositories.tmpl +++ b/templates/org/team/repositories.tmpl @@ -30,7 +30,7 @@ {{if $canAddRemove}} {{$.i18n.Tr "org.teams.remove_repo"}} {{end}} - + {{$.Org.Name}}/{{.Name}} diff --git a/templates/org/team/teams.tmpl b/templates/org/team/teams.tmpl index 6440807f..30df3e40 100644 --- a/templates/org/team/teams.tmpl +++ b/templates/org/team/teams.tmpl @@ -25,7 +25,7 @@ {{if .NumMembers}}
      {{range .Members}} - + {{end}} diff --git a/templates/repo/bare.tmpl b/templates/repo/bare.tmpl index 712e7013..2a1409a6 100644 --- a/templates/repo/bare.tmpl +++ b/templates/repo/bare.tmpl @@ -5,7 +5,7 @@

      - {{.Repository.Owner.Name}} + {{.Repository.Owner.Name}} / {{.Repository.Name}}

      diff --git a/templates/repo/commits_table.tmpl b/templates/repo/commits_table.tmpl index aa97925c..cb2ed5d0 100644 --- a/templates/repo/commits_table.tmpl +++ b/templates/repo/commits_table.tmpl @@ -26,8 +26,8 @@ {{$r := List .Commits}} {{range $r}} - {{.Author.Name}} - {{SubStr .Id.String 0 10}} + {{.Author.Name}} + {{SubStr .Id.String 0 10}} {{.Summary}} {{TimeSince .Author.When $.Lang}} diff --git a/templates/repo/create.tmpl b/templates/repo/create.tmpl index 7b3c85ae..5d0c9b0f 100644 --- a/templates/repo/create.tmpl +++ b/templates/repo/create.tmpl @@ -1,7 +1,7 @@ {{template "ng/base/head" .}} {{template "ng/base/header" .}}
      - + {{.CsrfTokenHtml}}

      {{.i18n.Tr "new_repo"}}

      @@ -75,7 +75,7 @@
      - {{.i18n.Tr "cancel"}} + {{.i18n.Tr "cancel"}}
      diff --git a/templates/repo/diff.tmpl b/templates/repo/diff.tmpl index 548c7a35..8e5efd14 100644 --- a/templates/repo/diff.tmpl +++ b/templates/repo/diff.tmpl @@ -30,7 +30,7 @@

      - {{.Commit.Author.Name}} + {{.Commit.Author.Name}} {{TimeSince .Commit.Author.When $.Lang}}

      diff --git a/templates/repo/header.tmpl b/templates/repo/header.tmpl index dc271a75..524bfd11 100644 --- a/templates/repo/header.tmpl +++ b/templates/repo/header.tmpl @@ -2,7 +2,7 @@

      - {{.Owner.Name}} + {{.Owner.Name}} / {{.Repository.Name}} {{if .Repository.IsMirror}}{{.i18n.Tr "mirror"}}{{end}} diff --git a/templates/repo/issue/list.tmpl b/templates/repo/issue/list.tmpl index 1849602b..0f9daae9 100644 --- a/templates/repo/issue/list.tmpl +++ b/templates/repo/issue/list.tmpl @@ -85,7 +85,7 @@

      - {{.Poster.Name}} + {{.Poster.Name}} {{TimeSince .Created $.Lang}} {{.NumComments}}

      diff --git a/templates/repo/issue/view.tmpl b/templates/repo/issue/view.tmpl index dbbd1d92..49aa982a 100644 --- a/templates/repo/issue/view.tmpl +++ b/templates/repo/issue/view.tmpl @@ -8,7 +8,7 @@
      #{{.Issue.Index}}
      - +

      {{.Issue.Name}}

      @@ -17,7 +17,7 @@ {{end}} {{if .Issue.IsClosed}}Closed{{else}}Open{{end}} - {{.Issue.Poster.Name}} opened this issue + {{.Issue.Poster.Name}} opened this issue {{TimeSince .Issue.Created $.Lang}} · {{.Issue.NumComments}} comments

      @@ -63,10 +63,10 @@ {{/* 0 = COMMENT, 1 = REOPEN, 2 = CLOSE, 3 = ISSUE, 4 = COMMIT, 5 = PULL */}} {{if eq .Type 0}}
      - +
      - {{.Poster.Name}} commented {{TimeSince .Created $.Lang}} + {{.Poster.Name}} commented {{TimeSince .Created $.Lang}} Owner @@ -93,25 +93,25 @@
      {{else if eq .Type 1}}
      - +
      - {{.Poster.Name}} Reopened this issue {{TimeSince .Created $.Lang}} + {{.Poster.Name}} Reopened this issue {{TimeSince .Created $.Lang}}
      {{else if eq .Type 2}}
      - +
      - {{.Poster.Name}} Closed this issue {{TimeSince .Created $.Lang}} + {{.Poster.Name}} Closed this issue {{TimeSince .Created $.Lang}}
      {{else if eq .Type 4}}
      - +
      - {{.Poster.Name}} Referenced this issue {{TimeSince .Created $.Lang}} + {{.Poster.Name}} Referenced this issue {{TimeSince .Created $.Lang}}

      - + {{.ContentHtml}}

      @@ -120,7 +120,7 @@ {{end}}
      {{if .SignedUser}}
      - +
      {{.CsrfTokenHtml}}
      @@ -163,7 +163,7 @@
      -
      {{else}}
      Sign up for free to join this conversation. Already have an account? Sign in to comment
      {{end}} +
      {{else}}
      Sign up for free to join this conversation. Already have an account? Sign in to comment
      {{end}}
      diff --git a/templates/repo/migrate.tmpl b/templates/repo/migrate.tmpl index f40124bf..b28d0647 100644 --- a/templates/repo/migrate.tmpl +++ b/templates/repo/migrate.tmpl @@ -1,7 +1,7 @@ {{template "ng/base/head" .}} {{template "ng/base/header" .}}
      -
      + {{.CsrfTokenHtml}}

      {{.i18n.Tr "new_migrate"}}

      @@ -74,7 +74,7 @@
      - {{.i18n.Tr "cancel"}} + {{.i18n.Tr "cancel"}}
      diff --git a/templates/repo/nav.tmpl b/templates/repo/nav.tmpl index 566e11a0..dfcfd745 100644 --- a/templates/repo/nav.tmpl +++ b/templates/repo/nav.tmpl @@ -2,7 +2,7 @@
      -

      {{.Owner.Name}} / {{.Repository.Name}} {{if .Repository.IsPrivate}}Private{{else if .Repository.IsMirror}}Mirror{{end}}

      +

      {{.Owner.Name}} / {{.Repository.Name}} {{if .Repository.IsPrivate}}Private{{else if .Repository.IsMirror}}Mirror{{end}}

      {{.Repository.DescriptionHtml}}{{if .Repository.Website}} {{.Repository.Website}}{{end}}

      @@ -32,7 +32,7 @@
      {{if .IsSigned}} -
      +
      {{if .IsRepositoryWatching}} {{else}} @@ -59,7 +59,7 @@
      --> {{end}}
      diff --git a/templates/repo/release/list.tmpl b/templates/repo/release/list.tmpl index 2bb5faa4..58a050ab 100644 --- a/templates/repo/release/list.tmpl +++ b/templates/repo/release/list.tmpl @@ -6,7 +6,7 @@

      Releases + Tags -->

        @@ -28,7 +28,7 @@

        {{.Title}} (edit)

           - {{.Publisher.Name}} + {{.Publisher.Name}} {{if .Created}}{{TimeSince .Created $.Lang}}{{end}} {{.NumCommitsBehind}} commits to {{.Target}} since this release

        diff --git a/templates/repo/setting_nav.tmpl b/templates/repo/setting_nav.tmpl index 8cd1f2a2..5aa77f0b 100644 --- a/templates/repo/setting_nav.tmpl +++ b/templates/repo/setting_nav.tmpl @@ -1,7 +1,7 @@ \ No newline at end of file diff --git a/templates/repo/settings/collaboration.tmpl b/templates/repo/settings/collaboration.tmpl index 99561e27..98091c35 100644 --- a/templates/repo/settings/collaboration.tmpl +++ b/templates/repo/settings/collaboration.tmpl @@ -18,7 +18,7 @@ {{range .Collaborators}}
      • {{if not (eq .Id $.Owner.Id)}}{{end}} - + {{.Name}} {{.FullName}} ({{.Name}}) diff --git a/templates/repo/single.tmpl b/templates/repo/single.tmpl index 9fbf2f55..d640fb00 100644 --- a/templates/repo/single.tmpl +++ b/templates/repo/single.tmpl @@ -12,7 +12,7 @@
      diff --git a/templates/repo/single_list.tmpl b/templates/repo/single_list.tmpl index 6728dd70..03511a80 100644 --- a/templates/repo/single_list.tmpl +++ b/templates/repo/single_list.tmpl @@ -1,9 +1,9 @@
      - {{.LastCommit.Author.Name}} {{TimeSince .LastCommit.Author.When}} + {{.LastCommit.Author.Name}} {{TimeSince .LastCommit.Author.When}}
      @@ -36,7 +36,7 @@ diff --git a/templates/status/404.tmpl b/templates/status/404.tmpl index 5a57e954..fe6739b9 100644 --- a/templates/status/404.tmpl +++ b/templates/status/404.tmpl @@ -1,7 +1,7 @@ {{template "ng/base/head" .}} {{template "ng/base/header" .}}
      -

      404

      +

      404



      Application Version: {{AppVer}}

      diff --git a/templates/status/500.tmpl b/templates/status/500.tmpl index 5bfdccc6..21116fa3 100644 --- a/templates/status/500.tmpl +++ b/templates/status/500.tmpl @@ -1,7 +1,7 @@ {{template "ng/base/head" .}} {{template "ng/base/header" .}}
      -

      500

      +

      500



      {{if .ErrorMsg}}

      An error has occurred : {{.ErrorMsg}}

      {{end}} diff --git a/templates/user/auth/activate.tmpl b/templates/user/auth/activate.tmpl index 554e2b78..b4dbb2e2 100644 --- a/templates/user/auth/activate.tmpl +++ b/templates/user/auth/activate.tmpl @@ -1,7 +1,7 @@ {{template "ng/base/head" .}} {{template "ng/base/header" .}}
      -
      + {{.CsrfTokenHtml}}

      {{.i18n.Tr "auth.active_your_account"}}

      diff --git a/templates/user/auth/forgot_passwd.tmpl b/templates/user/auth/forgot_passwd.tmpl index a1a10093..6122dfce 100644 --- a/templates/user/auth/forgot_passwd.tmpl +++ b/templates/user/auth/forgot_passwd.tmpl @@ -1,7 +1,7 @@ {{template "ng/base/head" .}} {{template "ng/base/header" .}}
      - + {{.CsrfTokenHtml}}

      {{.i18n.Tr "auth.forgot_password"}}

      diff --git a/templates/user/auth/reset_passwd.tmpl b/templates/user/auth/reset_passwd.tmpl index de2976d6..d63d7a0f 100644 --- a/templates/user/auth/reset_passwd.tmpl +++ b/templates/user/auth/reset_passwd.tmpl @@ -1,7 +1,7 @@ {{template "ng/base/head" .}} {{template "ng/base/header" .}}
      - + {{.CsrfTokenHtml}}

      {{.i18n.Tr "auth.reset_password"}}

      diff --git a/templates/user/auth/signin.tmpl b/templates/user/auth/signin.tmpl index e9ec87cc..54748077 100644 --- a/templates/user/auth/signin.tmpl +++ b/templates/user/auth/signin.tmpl @@ -1,7 +1,7 @@ {{template "ng/base/head" .}} {{template "ng/base/header" .}}
      - +

      {{if .IsSocialLogin}}{{.i18n.Tr "social_sign_in" | Str2html}}{{else}}{{.i18n.Tr "sign_in"}}{{end}}

      @@ -24,12 +24,12 @@
           - {{if not .IsSocialLogin}}{{.i18n.Tr "auth.forget_password"}}{{end}} + {{if not .IsSocialLogin}}{{.i18n.Tr "auth.forget_password"}}{{end}}
      {{if not .IsSocialLogin}} {{if .OauthEnabled}}
      diff --git a/templates/user/auth/signup.tmpl b/templates/user/auth/signup.tmpl index af4c250f..b68c7963 100644 --- a/templates/user/auth/signup.tmpl +++ b/templates/user/auth/signup.tmpl @@ -1,7 +1,7 @@ {{template "ng/base/head" .}} {{template "ng/base/header" .}}
      - +

      {{if .IsSocialLogin}}{{.i18n.Tr "social_sign_in" | Str2html}}{{else}}{{.i18n.Tr "sign_up"}}{{end}}

      @@ -40,7 +40,7 @@
      {{end}}
      diff --git a/templates/user/dashboard/dashboard.tmpl b/templates/user/dashboard/dashboard.tmpl index db838452..0d728ef4 100644 --- a/templates/user/dashboard/dashboard.tmpl +++ b/templates/user/dashboard/dashboard.tmpl @@ -12,17 +12,17 @@

      - {{.GetActUserName}} + {{.GetActUserName}} {{if eq .GetOpType 1}} - {{$.i18n.Tr "action.create_repo" AppRootSubUrl .GetRepoLink .GetRepoLink | Str2html}} + {{$.i18n.Tr "action.create_repo" AppSubUrl .GetRepoLink .GetRepoLink | Str2html}} {{else if eq .GetOpType 5}} - {{$.i18n.Tr "action.commit_repo" AppRootSubUrl .GetRepoLink .GetBranch .GetBranch AppRootSubUrl .GetRepoLink .GetRepoLink | Str2html}} + {{$.i18n.Tr "action.commit_repo" AppSubUrl .GetRepoLink .GetBranch .GetBranch AppSubUrl .GetRepoLink .GetRepoLink | Str2html}} {{else if eq .GetOpType 6}} {{ $index := index .GetIssueInfos 0}} - {{$.i18n.Tr "action.create_issue" AppRootSubUrl .GetRepoLink $index .GetRepoLink $index | Str2html}} + {{$.i18n.Tr "action.create_issue" AppSubUrl .GetRepoLink $index .GetRepoLink $index | Str2html}} {{else if eq .GetOpType 10}} {{ $index := index .GetIssueInfos 0}} - {{$.i18n.Tr "action.comment_issue" AppRootSubUrl .GetRepoLink $index .GetRepoLink $index | Str2html}} + {{$.i18n.Tr "action.comment_issue" AppSubUrl .GetRepoLink $index .GetRepoLink $index | Str2html}} {{end}}

      {{if eq .GetOpType 5}} @@ -31,7 +31,7 @@ {{ $push := ActionContent2Commits .}} {{ $repoLink := .GetRepoLink}} {{range $push.Commits}} -
    • {{ShortSha .Sha1}} {{.Message}}
    • +
    • {{ShortSha .Sha1}} {{.Message}}
    • {{end}}
      @@ -58,9 +58,9 @@ @@ -75,7 +75,7 @@
      diff --git a/templates/user/issues.tmpl b/templates/user/issues.tmpl index 19b0526c..45492039 100644 --- a/templates/user/issues.tmpl +++ b/templates/user/issues.tmpl @@ -3,10 +3,10 @@

      Your Issues

      @@ -17,30 +17,30 @@
      {{range .Issues}}{{if .}}
      #{{.Index}} -
      {{.Name}}
      +
      {{.Name}}

      - {{.Poster.Name}} + {{.Poster.Name}} {{TimeSince .Created $.Lang}} {{.NumComments}}

      diff --git a/templates/user/profile.tmpl b/templates/user/profile.tmpl index 1b51a871..4e3b32b5 100644 --- a/templates/user/profile.tmpl +++ b/templates/user/profile.tmpl @@ -66,7 +66,7 @@
    • {{.NumForks}}

      - {{.Name}}{{if .IsPrivate}} Private{{end}} + {{.Name}}{{if .IsPrivate}} Private{{end}}

      {{.Description}}

      Last updated {{TimeSince .Updated $.Lang}}
      diff --git a/templates/user/settings/delete.tmpl b/templates/user/settings/delete.tmpl index 78574ba1..cc6bf273 100644 --- a/templates/user/settings/delete.tmpl +++ b/templates/user/settings/delete.tmpl @@ -11,7 +11,7 @@

      {{.i18n.Tr "settings.delete_account"}}

      {{.i18n.Tr "settings.delete_prompt" | Str2html}} - + {{.CsrfTokenHtml}}

      diff --git a/templates/user/settings/nav.tmpl b/templates/user/settings/nav.tmpl index 52fc83e1..fd60cb53 100644 --- a/templates/user/settings/nav.tmpl +++ b/templates/user/settings/nav.tmpl @@ -2,11 +2,11 @@

      {{.i18n.Tr "settings"}}

      \ No newline at end of file diff --git a/templates/user/settings/password.tmpl b/templates/user/settings/password.tmpl index ccafd3ed..4f2f63e4 100644 --- a/templates/user/settings/password.tmpl +++ b/templates/user/settings/password.tmpl @@ -9,7 +9,7 @@

      {{.i18n.Tr "settings.change_password"}}

      - + {{.CsrfTokenHtml}}

      diff --git a/templates/user/settings/profile.tmpl b/templates/user/settings/profile.tmpl index e344fb9a..577b6ee2 100644 --- a/templates/user/settings/profile.tmpl +++ b/templates/user/settings/profile.tmpl @@ -11,7 +11,7 @@

      {{.i18n.Tr "settings.public_profile"}}
      - + {{.CsrfTokenHtml}}
      {{.i18n.Tr "settings.profile_desc"}}
      diff --git a/templates/user/settings/social.tmpl b/templates/user/settings/social.tmpl index a2585922..7514b232 100644 --- a/templates/user/settings/social.tmpl +++ b/templates/user/settings/social.tmpl @@ -20,7 +20,7 @@

      {{.Identity}}

      {{$.i18n.Tr "settings.add_on"}} {{DateFormat .Created "M d, Y"}} — {{$.i18n.Tr "settings.last_used"}} {{DateFormat .Updated "M d, Y"}}

      - {{$.i18n.Tr "settings.unbind"}} + {{$.i18n.Tr "settings.unbind"}}
    • {{end}} diff --git a/templates/user/settings/sshkeys.tmpl b/templates/user/settings/sshkeys.tmpl index 2d186121..188f078a 100644 --- a/templates/user/settings/sshkeys.tmpl +++ b/templates/user/settings/sshkeys.tmpl @@ -23,7 +23,7 @@

      {{.Fingerprint}}

      {{$.i18n.Tr "settings.add_on"}} {{DateFormat .Created "M d, Y"}} — {{if .HasUsed}}{{$.i18n.Tr "settings.last_used"}} {{DateFormat .Updated "M d, Y"}}{{else}}{{$.i18n.Tr "settings.no_activity"}}{{end}}

      - + {{$.CsrfTokenHtml}} @@ -35,7 +35,7 @@

      {{.i18n.Tr "settings.ssh_helper" | Str2html}}


      - + {{.CsrfTokenHtml}}

      {{.i18n.Tr "settings.add_new_key"}}

      -- cgit v1.2.3 From 49193bebd283322bb997b7aed09fc7818a881af9 Mon Sep 17 00:00:00 2001 From: Unknwon Date: Sun, 28 Sep 2014 01:38:25 -0400 Subject: UI: Confirmation box --- cmd/web.go | 6 ++ conf/locale/locale_en-US.ini | 13 ++++ conf/locale/locale_zh-CN.ini | 15 ++++ gogs.go | 3 +- modules/middleware/context.go | 18 ----- public/ng/css/gogs.css | 4 + public/ng/js/gogs.js | 146 +++++++++++++++++++++++------------ public/ng/js/min/gogs-min.js | 10 +-- public/ng/less/gogs/repository.less | 4 + templates/.VERSION | 2 +- templates/admin/auth/edit.tmpl | 9 ++- templates/admin/user/edit.tmpl | 11 ++- templates/org/settings/delete.tmpl | 11 ++- templates/org/settings/options.tmpl | 9 ++- templates/org/team/new.tmpl | 9 ++- templates/repo/home.tmpl | 2 +- templates/repo/settings/options.tmpl | 9 ++- templates/user/settings/delete.tmpl | 11 ++- templates/user/settings/profile.tmpl | 4 +- 19 files changed, 210 insertions(+), 86 deletions(-) (limited to 'modules/middleware/context.go') diff --git a/cmd/web.go b/cmd/web.go index 8a87f86b..f226e76e 100644 --- a/cmd/web.go +++ b/cmd/web.go @@ -50,6 +50,7 @@ and it takes care of all the other things for you`, // checkVersion checks if binary matches the version of templates files. func checkVersion() { + // Templates. data, err := ioutil.ReadFile(path.Join(setting.StaticRootPath, "templates/.VERSION")) if err != nil { log.Fatal(4, "Fail to read 'templates/.VERSION': %v", err) @@ -57,6 +58,11 @@ func checkVersion() { if string(data) != setting.AppVer { log.Fatal(4, "Binary and template file version does not match, did you forget to recompile?") } + + // Macaron. + if macaron.Version() != "0.1.8.0927" { + log.Fatal(4, "Macaron version does not match, did you forget to update?(github.com/Unknwon/macaron)") + } } // newMacaron initializes Macaron instance. diff --git a/conf/locale/locale_en-US.ini b/conf/locale/locale_en-US.ini index f0e0877f..3990ea87 100644 --- a/conf/locale/locale_en-US.ini +++ b/conf/locale/locale_en-US.ini @@ -223,6 +223,8 @@ unbind_success = Social account has been unbound. delete_account = Delete Your Account delete_prompt = The operation will delete your account permanently, and CANNOT be undone! confirm_delete_account = Confirm Deletion +delete_account_title = Account Deletion +delete_account_desc = This account is going to be deleted permanently, do you want to continue? [repo] owner = Owner @@ -257,6 +259,7 @@ unstar = Unstar star = Star fork = Fork +no_desc = No Description quick_guide = Quick Guide clone_this_repo = Clone this repository create_new_repo_command = Create a new repository on the command line @@ -289,6 +292,8 @@ settings.basic_settings = Basic Settings settings.danger_zone = Danger Zone settings.site = Official Site settings.update_settings = Update Settings +settings.change_reponame = Repository Name Changed +settings.change_reponame_desc = Repository name has been changed, do you want to continue? This will affect all links relate to this repository. settings.transfer = Transfer Ownership settings.transfer_desc = Transfer this repo to another user or to an organization where you have admin rights. settings.new_owner_has_same_repo = New owner already has a repository with same name. @@ -349,11 +354,15 @@ settings.full_name = Full Name settings.website = Website settings.location = Location settings.update_settings = Update Settings +settings.change_orgname = Organization Name Changed +settings.change_orgname_desc = Organization name has been changed, do you want to continue? This will affect all links relate to this organization. settings.update_setting_success = Organization setting has been successfully updated. settings.delete = Delete Organization settings.delete_account = Delete This Organization settings.delete_prompt = The operation will delete this organization permanently, and CANNOT be undone! settings.confirm_delete_account = Confirm Deletion +settings.delete_org_title = Organization Deletion +settings.delete_org_desc = This organization is going to be deleted permanently, do you want to continue? settings.hooks_desc = Add webhooks that will be triggered for all repositories under this organization. members.public = Public @@ -383,6 +392,8 @@ teams.members = Team Members teams.update_settings = Update Settings teams.delete_team = Delete This Team teams.add_team_member = Add Team Member +teams.delete_team_title = Team Deletion +teams.delete_team_desc = This team is going to be deleted, do you want to continue? Members of this team may lose access to some repositories. teams.delete_team_success = Given team has been successfully deleted. teams.read_permission_desc = This team grants Read access: members can view and clone the team's repositories. teams.write_permission_desc = This team grants Write access: members can read from and push to the team's repositories. @@ -499,6 +510,8 @@ auths.activated = This authentication has activated auths.update_success = Authorization setting has been successfully updated. auths.update = Update Authorization Setting auths.delete = Delete This Authorization +auths.delete_auth_title = Authorization Deletion +auths.delete_auth_desc = This authorization is going to be deleted, do you want to continue? config.server_config = Server Configuration config.app_name = Application Name diff --git a/conf/locale/locale_zh-CN.ini b/conf/locale/locale_zh-CN.ini index 4d80327e..6ecd529d 100644 --- a/conf/locale/locale_zh-CN.ini +++ b/conf/locale/locale_zh-CN.ini @@ -223,6 +223,8 @@ unbind_success = 社交帐号解除绑定成功! delete_account = 删除当前帐户 delete_prompt = 删除操作会永久清除您的帐户信息,并且 不可恢复! confirm_delete_account = 确认删除帐户 +delete_account_title = 帐户删除操作 +delete_account_desc = 该帐户将被永久性删除,您确定要继续操作吗? [repo] owner = 拥有者 @@ -257,6 +259,7 @@ unstar = 取消点赞 star = 点赞 fork = 派生 +no_desc = 暂无描述 quick_guide = 快速帮助 clone_this_repo = 克隆当前仓库 create_new_repo_command = 从命令行创建一个新的仓库 @@ -289,6 +292,8 @@ settings.basic_settings = 基本设置 settings.danger_zone = 危险操作区 settings.site = 官方网站 settings.update_settings = 更新仓库设置 +settings.change_reponame = 仓库名称将被修改 +settings.change_reponame_desc = 仓库名称被修改,您确定要继续操作吗?这将会影响到所有与该仓库有关的链接。 settings.transfer = 转移仓库所有权 settings.transfer_desc = 您可以将仓库转移至您拥有管理员权限的帐户或组织。 settings.new_owner_has_same_repo = 新的仓库拥有者已经存在同名仓库! @@ -349,11 +354,16 @@ settings.full_name = 组织全名 settings.website = 官方网站 settings.location = 所在地区 settings.update_settings = 更新组织设置 +settings.change_orgname = 组织名称将被修改 +settings.change_orgname_desc = 组织名称被修改,您确定要继续操作吗?这将会影响到所有与该组织有关的链接。 settings.update_setting_success = 组织设置更新成功! settings.delete = 删除组织 settings.delete_account = 删除当前组织 settings.delete_prompt = 删除操作会永久清除该组织的信息,并且 不可恢复! settings.confirm_delete_account = 确认删除组织 +settings.delete_org_title = 组织删除操作 +settings.delete_org_desc = 该组织将被永久性删除,您确定要继续操作吗? +settings.hooks_desc = 在此处添加的 Web 钩子将会应用到该组织下的 所有仓库。 members.public = 公开成员 members.public_helper = 设为私有 @@ -382,6 +392,8 @@ teams.members = 团队成员 teams.update_settings = 更新团队设置 teams.delete_team = 删除当前团队 teams.add_team_member = 添加团队成员 +teams.delete_team_title = 团队删除操作 +teams.delete_team_desc = 删除操作会永久清除有关该团队的信息,您确定要继续操作吗?团队成员可能会失去对某些仓库的操作权限。 teams.delete_team_success = 指定团队删除成功! teams.read_permission_desc = 该团队拥有对所属仓库的 读取 权限,团队成员可以进行查看和克隆等只读操作。 teams.write_permission_desc = 该团队拥有对所属仓库的 读取写入 的权限。 @@ -457,6 +469,7 @@ users.is_activated = 该用户已被激活 users.is_admin = 该用户具有管理员权限 users.update_profile = 更新用户信息 users.delete_account = 删除该用户 +users.still_own_repo = 该帐户仍然是某些仓库的拥有者,您必须先转移或删除它们才能执行删除帐户操作! orgs.org_manage_panel = 组织管理面板 orgs.name = 组织名称 @@ -497,6 +510,8 @@ auths.activated = 该授权认证已经启用 auths.update_success = 授权认证设置更新成功! auths.update = 更新授权认证信息 auths.delete = 删除该授权认证 +auths.delete_auth_title = 授权认证删除操作 +auths.delete_auth_desc = 该授权认证将被删除,您确定要继续吗? config.server_config = 服务器配置 config.app_name = 应用名称 diff --git a/gogs.go b/gogs.go index 28b0fecc..a5d9a49f 100644 --- a/gogs.go +++ b/gogs.go @@ -17,7 +17,7 @@ import ( "github.com/gogits/gogs/modules/setting" ) -const APP_VER = "0.5.4.0926 Beta" +const APP_VER = "0.5.4.0927 Beta" func init() { runtime.GOMAXPROCS(runtime.NumCPU()) @@ -38,5 +38,6 @@ func main() { cmd.CmdCert, } app.Flags = append(app.Flags, []cli.Flag{}...) + println(runtime.Version()) app.Run(os.Args) } diff --git a/modules/middleware/context.go b/modules/middleware/context.go index 9145038f..90716d2c 100644 --- a/modules/middleware/context.go +++ b/modules/middleware/context.go @@ -9,7 +9,6 @@ import ( "html/template" "io" "net/http" - "path" "strings" "time" @@ -140,23 +139,6 @@ func (ctx *Context) Handle(status int, title string, err error) { ctx.HTML(status, base.TplName(fmt.Sprintf("status/%d", status))) } -func (ctx *Context) ServeFile(file string, names ...string) { - var name string - if len(names) > 0 { - name = names[0] - } else { - name = path.Base(file) - } - ctx.Resp.Header().Set("Content-Description", "File Transfer") - ctx.Resp.Header().Set("Content-Type", "application/octet-stream") - ctx.Resp.Header().Set("Content-Disposition", "attachment; filename="+name) - ctx.Resp.Header().Set("Content-Transfer-Encoding", "binary") - ctx.Resp.Header().Set("Expires", "0") - ctx.Resp.Header().Set("Cache-Control", "must-revalidate") - ctx.Resp.Header().Set("Pragma", "public") - http.ServeFile(ctx.Resp, ctx.Req, file) -} - func (ctx *Context) ServeContent(name string, r io.ReadSeeker, params ...interface{}) { modtime := time.Now() for _, p := range params { diff --git a/public/ng/css/gogs.css b/public/ng/css/gogs.css index dbaa3db1..a0be4ee4 100644 --- a/public/ng/css/gogs.css +++ b/public/ng/css/gogs.css @@ -1472,6 +1472,10 @@ The register and sign-in page style font-family: Consolas, Menlo, Monaco, "Lucida Console", monospace; font-size: 14px; } +.no-desc { + color: #888; + font-style: italic; +} #admin-wrapper, #setting-wrapper { padding-bottom: 100px; diff --git a/public/ng/js/gogs.js b/public/ng/js/gogs.js index fcad5cbc..9a861004 100644 --- a/public/ng/js/gogs.js +++ b/public/ng/js/gogs.js @@ -293,39 +293,38 @@ function initCore() { } e.preventDefault(); }); + + // Popup. + $(document).on('click', '.popup-modal-dismiss', function (e) { + e.preventDefault(); + $.magnificPopup.close(); + }); } function initUserSetting() { // Confirmation of change username in user profile page. var $username = $('#username'); - var $form = $('#user-profile-form'); - var confimed = false; - $('.popup-modal').magnificPopup({ + var $profile_form = $('#user-profile-form'); + $('#change-username-btn').magnificPopup({ modal: true, callbacks: { open: function () { if (($username.data('uname') == $username.val())) { $.magnificPopup.close(); - $form.submit(); + $profile_form.submit(); } } } - }); - $(document).on('click', '.popup-modal-dismiss', function (e) { - e.preventDefault(); - $.magnificPopup.close(); - }); - $('#modal-submit').click(function(){ - $.magnificPopup.close(); - confimed = true; - $form.submit(); - }); - $form.submit(function (e) { - if (($username.data('uname') != $username.val()) && !confimed) { + }).click(function () { + if (($username.data('uname') != $username.val())) { e.preventDefault(); return true; } }); + $('#change-username-submit').click(function () { + $.magnificPopup.close(); + $profile_form.submit(); + }); // Show add SSH key panel. $('#ssh-add').click(function () { @@ -333,11 +332,15 @@ function initUserSetting() { }); // Confirmation of delete account. - $('#delete-account-button').click(function (e) { - if (!confirm('This account is going to be deleted, do you want to continue?')) { - e.preventDefault(); - return true; - } + $('#delete-account-btn').magnificPopup({ + modal: true + }).click(function (e) { + e.preventDefault(); + return true; + }); + $('#delete-account-submit').click(function () { + $.magnificPopup.close(); + $('#delete-account-form').submit(); }); } @@ -409,13 +412,28 @@ function initHookTypeChange() { function initRepoSetting() { // Options. // Confirmation of changing repository name. - $('#repo-setting-form').submit(function (e) { - var $reponame = $('#repo_name'); - if (($reponame.data('repo-name') != $reponame.val()) && !confirm('Repository name has been changed, do you want to continue?')) { + var $reponame = $('#repo_name'); + var $setting_form = $('#repo-setting-form'); + $('#change-reponame-btn').magnificPopup({ + modal: true, + callbacks: { + open: function () { + if (($reponame.data('repo-name') == $reponame.val())) { + $.magnificPopup.close(); + $setting_form.submit(); + } + } + } + }).click(function () { + if (($reponame.data('repo-name') != $reponame.val())) { e.preventDefault(); return true; } }); + $('#change-reponame-submit').click(function () { + $.magnificPopup.close(); + $setting_form.submit(); + }); initHookTypeChange(); @@ -451,19 +469,39 @@ function initRepoSetting() { function initOrgSetting() { // Options. // Confirmation of changing organization name. - $('#org-setting-form').submit(function (e) { - var $orgname = $('#orgname'); - if (($orgname.data('orgname') != $orgname.val()) && !confirm('Organization name has been changed, do you want to continue?')) { + var $orgname = $('#orgname'); + var $setting_form = $('#org-setting-form'); + $('#change-orgname-btn').magnificPopup({ + modal: true, + callbacks: { + open: function () { + if (($orgname.data('orgname') == $orgname.val())) { + $.magnificPopup.close(); + $setting_form.submit(); + } + } + } + }).click(function () { + if (($orgname.data('orgname') != $orgname.val())) { e.preventDefault(); return true; } }); + $('#change-orgname-submit').click(function () { + $.magnificPopup.close(); + $setting_form.submit(); + }); + // Confirmation of delete organization. - $('#delete-org-button').click(function (e) { - if (!confirm('This organization is going to be deleted, do you want to continue?')) { - e.preventDefault(); - return true; - } + $('#delete-org-btn').magnificPopup({ + modal: true + }).click(function (e) { + e.preventDefault(); + return true; + }); + $('#delete-org-submit').click(function () { + $.magnificPopup.close(); + $('#delete-org-form').submit(); }); initHookTypeChange(); @@ -493,11 +531,14 @@ function initInvite() { function initOrgTeamCreate() { // Delete team. - $('#org-team-delete').click(function (e) { - if (!confirm('This team is going to be deleted, do you want to continue?')) { - e.preventDefault(); - return true; - } + $('#org-team-delete').magnificPopup({ + modal: true + }).click(function (e) { + e.preventDefault(); + return true; + }); + $('#delete-team-submit').click(function () { + $.magnificPopup.close(); var $form = $('#team-create-form'); $form.attr('action', $form.data('delete-url')); }); @@ -561,15 +602,20 @@ function initAdmin() { $('.auth-name').toggleShow(); } }); + // Delete account. - $('#user-delete').click(function (e) { - if (!confirm('This account is going to be deleted, do you want to continue?')) { - e.preventDefault(); - return true; - } + $('#delete-account-btn').magnificPopup({ + modal: true + }).click(function (e) { + e.preventDefault(); + return true; + }); + $('#delete-account-submit').click(function () { + $.magnificPopup.close(); var $form = $('#user-profile-form'); $form.attr('action', $form.data('delete-url')); }); + // Create authorization. $('#auth-type').on("change", function () { var v = $(this).val(); @@ -582,13 +628,17 @@ function initAdmin() { $('.ldap').toggleHide(); } }); + // Delete authorization. - $('#auth-delete').click(function (e) { - if (!confirm('This authorization is going to be deleted, do you want to continue?')) { - e.preventDefault(); - return true; - } - var $form = $('auth-setting-form'); + $('#delete-auth-btn').magnificPopup({ + modal: true + }).click(function (e) { + e.preventDefault(); + return true; + }); + $('#delete-auth-submit').click(function () { + $.magnificPopup.close(); + var $form = $('#auth-setting-form'); $form.attr('action', $form.data('delete-url')); }); } diff --git a/public/ng/js/min/gogs-min.js b/public/ng/js/min/gogs-min.js index d27e0a8b..5bb6daa7 100644 --- a/public/ng/js/min/gogs-min.js +++ b/public/ng/js/min/gogs-min.js @@ -1,5 +1,5 @@ -function Tabs(e){function t(e){console.log("hide",e),e.removeClass("js-tab-nav-show"),$(e.data("tab-target")).removeClass("js-tab-show").hide()}function n(e){console.log("show",e),e.addClass("js-tab-nav-show"),$(e.data("tab-target")).addClass("js-tab-show").show()}var r=$(e);if(r.length){var i=r.find(".js-tab-nav-show");i.length&&$(i.data("tab-target")).addClass("js-tab-show"),r.on("click",".js-tab-nav",function(e){e.preventDefault();var o=$(this);o.hasClass("js-tab-nav-show")||(i=r.find(".js-tab-nav-show").eq(0),t(i),n(o))}),console.log("init tabs @",e)}}function Preview(e,t){function n(e){return e.find(".js-preview-input").eq(0)}function r(e){return e.hasClass("js-preview-container")?e:e.find(".js-preview-container").eq(0)}var i=$(e),o=$(t),a=n(o);if(!a.length)return void console.log("[preview]: no preview input");var s=r(o);return s.length?(i.on("click",function(){$.post("/api/v1/markdown",{text:a.val()},function(e){s.html(e)})}),void console.log("[preview]: init preview @",e,"&",t)):void console.log("[preview]: no preview container")}function initCore(){Gogs.renderMarkdown(),Gogs.renderCodeView(),$(".js-tab-nav").click(function(e){$(this).hasClass("js-tab-nav-show")||($(this).parent().find(".js-tab-nav-show").each(function(){$(this).removeClass("js-tab-nav-show"),$($(this).data("tab-target")).hide()}),$(this).addClass("js-tab-nav-show"),$($(this).data("tab-target")).show()),e.preventDefault()})}function initUserSetting(){var e=$("#username"),t=$("#user-profile-form"),n=!1;$(".popup-modal").magnificPopup({modal:!0,callbacks:{open:function(){e.data("uname")==e.val()&&($.magnificPopup.close(),t.submit())}}}),$(document).on("click",".popup-modal-dismiss",function(e){e.preventDefault(),$.magnificPopup.close()}),$("#modal-submit").click(function(){$.magnificPopup.close(),n=!0,t.submit()}),t.submit(function(t){return e.data("uname")==e.val()||n?void 0:(t.preventDefault(),!0)}),$("#ssh-add").click(function(){$("#user-ssh-add-form").removeClass("hide")}),$("#delete-account-button").click(function(e){return confirm("This account is going to be deleted, do you want to continue?")?void 0:(e.preventDefault(),!0)})}function initRepoCreate(){$("#repo-create-owner-list").on("click","li",function(){if(!$(this).hasClass("checked")){var e=$(this).data("uid");$("#repo-owner-id").val(e),$("#repo-owner-avatar").attr("src",$(this).find("img").attr("src")),$("#repo-owner-name").text($(this).text().trim()),$(this).parent().find(".checked").removeClass("checked"),$(this).addClass("checked"),console.log("set repo owner to uid :",e,$(this).text().trim())}}),$("#auth-button").click(function(e){$("#repo-migrate-auth").slideToggle("fast"),e.preventDefault()}),console.log("initRepoCreate")}function initRepo(){$("#repo-clone-ssh").click(function(){$(this).removeClass("btn-gray").addClass("btn-blue"),$("#repo-clone-https").removeClass("btn-blue").addClass("btn-gray"),$("#repo-clone-url").val($(this).data("link")),$(".clone-url").text($(this).data("link"))}),$("#repo-clone-https").click(function(){$(this).removeClass("btn-gray").addClass("btn-blue"),$("#repo-clone-ssh").removeClass("btn-blue").addClass("btn-gray"),$("#repo-clone-url").val($(this).data("link")),$(".clone-url").text($(this).data("link"))});var e=$("#repo-clone-copy");e.hover(function(){Gogs.bindCopy($(this))}),e.tipsy({fade:!0})}function initHookTypeChange(){$("select#hook-type").on("change",function(){hookTypes=["Gogs","Slack"];var e=$(this).val();hookTypes.forEach(function(t){e===t?$("div#"+t.toLowerCase()).toggleShow():$("div#"+t.toLowerCase()).toggleHide()})})}function initRepoSetting(){$("#repo-setting-form").submit(function(e){var t=$("#repo_name");return t.data("repo-name")==t.val()||confirm("Repository name has been changed, do you want to continue?")?void 0:(e.preventDefault(),!0)}),initHookTypeChange(),$("#transfer-button").click(function(){$("#transfer-form").show()}),$("#delete-button").click(function(){$("#delete-form").show()}),$("#repo-collab-list hr:last-child").remove();var e=$("#repo-collaborator").next().next().find("ul");$("#repo-collaborator").on("keyup",function(){var t=$(this);return t.val()?void Gogs.searchUsers(t.val(),e):void e.toggleHide()}).on("focus",function(){$(this).val()?e.toggleShow():e.toggleHide()}).next().next().find("ul").on("click","li",function(){$("#repo-collaborator").val($(this).text()),e.toggleHide()})}function initOrgSetting(){$("#org-setting-form").submit(function(e){var t=$("#orgname");return t.data("orgname")==t.val()||confirm("Organization name has been changed, do you want to continue?")?void 0:(e.preventDefault(),!0)}),$("#delete-org-button").click(function(e){return confirm("This organization is going to be deleted, do you want to continue?")?void 0:(e.preventDefault(),!0)}),initHookTypeChange()}function initInvite(){var e=$("#org-member-invite-list");$("#org-member-invite").on("keyup",function(){var t=$(this);return t.val()?void Gogs.searchUsers(t.val(),e):void e.toggleHide()}).on("focus",function(){$(this).val()?e.toggleShow():e.toggleHide()}).next().next().find("ul").on("click","li",function(){$("#org-member-invite").val($(this).text()),e.toggleHide()})}function initOrgTeamCreate(){$("#org-team-delete").click(function(e){if(!confirm("This team is going to be deleted, do you want to continue?"))return e.preventDefault(),!0;var t=$("#team-create-form");t.attr("action",t.data("delete-url"))})}function initTeamMembersList(){var e=$("#org-team-members-list");$("#org-team-members-add").on("keyup",function(){var t=$(this);return t.val()?void Gogs.searchUsers(t.val(),e):void e.toggleHide()}).on("focus",function(){$(this).val()?e.toggleShow():e.toggleHide()}).next().next().find("ul").on("click","li",function(){$("#org-team-members-add").val($(this).text()),e.toggleHide()})}function initTeamRepositoriesList(){var e=$("#org-team-repositories-list");$("#org-team-repositories-add").on("keyup",function(){var t=$(this);return t.val()?void Gogs.searchRepos(t.val(),e,"uid="+t.data("uid")):void e.toggleHide()}).on("focus",function(){$(this).val()?e.toggleShow():e.toggleHide()}).next().next().find("ul").on("click","li",function(){$("#org-team-repositories-add").val($(this).text()),e.toggleHide()})}function initAdmin(){$("#login-type").on("change",function(){var e=$(this).val();e.indexOf("0-")+1?($(".auth-name").toggleHide(),$(".pwd").find("input").attr("required","required").end().toggleShow()):($(".pwd").find("input").removeAttr("required").end().toggleHide(),$(".auth-name").toggleShow())}),$("#user-delete").click(function(e){if(!confirm("This account is going to be deleted, do you want to continue?"))return e.preventDefault(),!0;var t=$("#user-profile-form");t.attr("action",t.data("delete-url"))}),$("#auth-type").on("change",function(){var e=$(this).val();2==e&&($(".ldap").toggleShow(),$(".smtp").toggleHide()),3==e&&($(".smtp").toggleShow(),$(".ldap").toggleHide())}),$("#auth-delete").click(function(e){if(!confirm("This authorization is going to be deleted, do you want to continue?"))return e.preventDefault(),!0;var t=$("auth-setting-form");t.attr("action",t.data("delete-url"))})}function initInstall(){!function(){var e="127.0.0.1:3306",t="127.0.0.1:5432";$("#install-database").on("change",function(){var n=$(this).val();"SQLite3"!=n?($(".server-sql").show(),$(".sqlite-setting").addClass("hide"),"PostgreSQL"==n?($(".pgsql-setting").removeClass("hide"),$("#database-host").val()==e&&$("#database-host").val(t)):"MySQL"==n?($(".pgsql-setting").addClass("hide"),$("#database-host").val()==t&&$("#database-host").val(e)):$(".pgsql-setting").addClass("hide")):($(".server-sql").hide(),$(".pgsql-setting").hide(),$(".sqlite-setting").removeClass("hide"))})}()}function initProfile(){$("#profile-avatar").tipsy({fade:!0})}function homepage(){$("#promo-form").submit(function(e){return""===$("#username").val()?(e.preventDefault(),window.location.href=Gogs.AppSubUrl+"/user/login",!0):void 0}),$("#register-button").click(function(e){return""===$("#username").val()?(e.preventDefault(),window.location.href=Gogs.AppSubUrl+"/user/sign_up",!0):void $("#promo-form").attr("action",Gogs.AppSubUrl+"/user/sign_up")})}!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){function n(e){var t=e.length,n=ot.type(e);return"function"===n||ot.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e}function r(e,t,n){if(ot.isFunction(t))return ot.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return ot.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(pt.test(t))return ot.filter(t,e,n);t=ot.filter(t,e)}return ot.grep(e,function(e){return ot.inArray(e,t)>=0!==n})}function i(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function o(e){var t=wt[e]={};return ot.each(e.match(xt)||[],function(e,n){t[n]=!0}),t}function a(){mt.addEventListener?(mt.removeEventListener("DOMContentLoaded",s,!1),e.removeEventListener("load",s,!1)):(mt.detachEvent("onreadystatechange",s),e.detachEvent("onload",s))}function s(){(mt.addEventListener||"load"===event.type||"complete"===mt.readyState)&&(a(),ot.ready())}function l(e,t,n){if(void 0===n&&1===e.nodeType){var r="data-"+t.replace($t,"-$1").toLowerCase();if(n=e.getAttribute(r),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:kt.test(n)?ot.parseJSON(n):n}catch(i){}ot.data(e,t,n)}else n=void 0}return n}function u(e){var t;for(t in e)if(("data"!==t||!ot.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function c(e,t,n,r){if(ot.acceptData(e)){var i,o,a=ot.expando,s=e.nodeType,l=s?ot.cache:e,u=s?e[a]:e[a]&&a;if(u&&l[u]&&(r||l[u].data)||void 0!==n||"string"!=typeof t)return u||(u=s?e[a]=V.pop()||ot.guid++:a),l[u]||(l[u]=s?{}:{toJSON:ot.noop}),("object"==typeof t||"function"==typeof t)&&(r?l[u]=ot.extend(l[u],t):l[u].data=ot.extend(l[u].data,t)),o=l[u],r||(o.data||(o.data={}),o=o.data),void 0!==n&&(o[ot.camelCase(t)]=n),"string"==typeof t?(i=o[t],null==i&&(i=o[ot.camelCase(t)])):i=o,i}}function d(e,t,n){if(ot.acceptData(e)){var r,i,o=e.nodeType,a=o?ot.cache:e,s=o?e[ot.expando]:ot.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){ot.isArray(t)?t=t.concat(ot.map(t,ot.camelCase)):t in r?t=[t]:(t=ot.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;for(;i--;)delete r[t[i]];if(n?!u(r):!ot.isEmptyObject(r))return}(n||(delete a[s].data,u(a[s])))&&(o?ot.cleanData([e],!0):rt.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}function f(){return!0}function p(){return!1}function h(){try{return mt.activeElement}catch(e){}}function m(e){var t=Pt.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function g(e,t){var n,r,i=0,o=typeof e.getElementsByTagName!==St?e.getElementsByTagName(t||"*"):typeof e.querySelectorAll!==St?e.querySelectorAll(t||"*"):void 0;if(!o)for(o=[],n=e.childNodes||e;null!=(r=n[i]);i++)!t||ot.nodeName(r,t)?o.push(r):ot.merge(o,g(r,t));return void 0===t||t&&ot.nodeName(e,t)?ot.merge([e],o):o}function v(e){jt.test(e.type)&&(e.defaultChecked=e.checked)}function y(e,t){return ot.nodeName(e,"table")&&ot.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function b(e){return e.type=(null!==ot.find.attr(e,"type"))+"/"+e.type,e}function x(e){var t=Zt.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function w(e,t){for(var n,r=0;null!=(n=e[r]);r++)ot._data(n,"globalEval",!t||ot._data(t[r],"globalEval"))}function C(e,t){if(1===t.nodeType&&ot.hasData(e)){var n,r,i,o=ot._data(e),a=ot._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)ot.event.add(t,n,s[n][r])}a.data&&(a.data=ot.extend({},a.data))}}function S(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!rt.noCloneEvent&&t[ot.expando]){i=ot._data(t);for(r in i.events)ot.removeEvent(t,r,i.handle);t.removeAttribute(ot.expando)}"script"===n&&t.text!==e.text?(b(t).text=e.text,x(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),rt.html5Clone&&e.innerHTML&&!ot.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&jt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}function T(t,n){var r,i=ot(n.createElement(t)).appendTo(n.body),o=e.getDefaultComputedStyle&&(r=e.getDefaultComputedStyle(i[0]))?r.display:ot.css(i[0],"display");return i.detach(),o}function k(e){var t=mt,n=Jt[e];return n||(n=T(e,t),"none"!==n&&n||(Kt=(Kt||ot("