* Display all organization from user settings * fix Tab selection * Update locale_en-US.ini * Add a condition for display Create organization button * Remove french translation * Remove unnecessary admin flagtags/v1.21.12.1
| @@ -298,6 +298,7 @@ orgs = Organizations | |||||
| delete = Delete Account | delete = Delete Account | ||||
| twofa = Two-Factor Authentication | twofa = Two-Factor Authentication | ||||
| account_link = External Accounts | account_link = External Accounts | ||||
| organization = Organization | |||||
| uid = Uid | uid = Uid | ||||
| public_profile = Public Profile | public_profile = Public Profile | ||||
| @@ -431,6 +432,8 @@ remove_account_link = Remove linked account | |||||
| remove_account_link_desc = Removing this linked account will revoke all related access using this account. Do you want to continue? | remove_account_link_desc = Removing this linked account will revoke all related access using this account. Do you want to continue? | ||||
| remove_account_link_success = Account link has been removed successfully! | remove_account_link_success = Account link has been removed successfully! | ||||
| orgs_none = You are not a member of any organizations. | |||||
| delete_account = Delete Your Account | delete_account = Delete Your Account | ||||
| delete_prompt = The operation will delete your account permanently, and <strong>CANNOT</strong> be undone! | delete_prompt = The operation will delete your account permanently, and <strong>CANNOT</strong> be undone! | ||||
| confirm_delete_account = Confirm Deletion | confirm_delete_account = Confirm Deletion | ||||
| @@ -223,6 +223,7 @@ func RegisterRoutes(m *macaron.Macaron) { | |||||
| m.Post("/applications/delete", user.SettingsDeleteApplication) | m.Post("/applications/delete", user.SettingsDeleteApplication) | ||||
| m.Route("/delete", "GET,POST", user.SettingsDelete) | m.Route("/delete", "GET,POST", user.SettingsDelete) | ||||
| m.Combo("/account_link").Get(user.SettingsAccountLinks).Post(user.SettingsDeleteAccountLink) | m.Combo("/account_link").Get(user.SettingsAccountLinks).Post(user.SettingsDeleteAccountLink) | ||||
| m.Get("/organization", user.SettingsOrganization) | |||||
| m.Group("/two_factor", func() { | m.Group("/two_factor", func() { | ||||
| m.Get("", user.SettingsTwoFactor) | m.Get("", user.SettingsTwoFactor) | ||||
| m.Post("/regenerate_scratch", user.SettingsTwoFactorRegenerateScratch) | m.Post("/regenerate_scratch", user.SettingsTwoFactorRegenerateScratch) | ||||
| @@ -38,6 +38,7 @@ const ( | |||||
| tplSettingsTwofa base.TplName = "user/settings/twofa" | tplSettingsTwofa base.TplName = "user/settings/twofa" | ||||
| tplSettingsTwofaEnroll base.TplName = "user/settings/twofa_enroll" | tplSettingsTwofaEnroll base.TplName = "user/settings/twofa_enroll" | ||||
| tplSettingsAccountLink base.TplName = "user/settings/account_link" | tplSettingsAccountLink base.TplName = "user/settings/account_link" | ||||
| tplSettingsOrganization base.TplName = "user/settings/organization" | |||||
| tplSettingsDelete base.TplName = "user/settings/delete" | tplSettingsDelete base.TplName = "user/settings/delete" | ||||
| tplSecurity base.TplName = "user/security" | tplSecurity base.TplName = "user/security" | ||||
| ) | ) | ||||
| @@ -771,3 +772,16 @@ func SettingsDelete(ctx *context.Context) { | |||||
| ctx.HTML(200, tplSettingsDelete) | ctx.HTML(200, tplSettingsDelete) | ||||
| } | } | ||||
| // SettingsOrganization render all the organization of the user | |||||
| func SettingsOrganization(ctx *context.Context) { | |||||
| ctx.Data["Title"] = ctx.Tr("settings") | |||||
| ctx.Data["PageIsSettingsOrganization"] = true | |||||
| orgs, err := models.GetOrgsByUserID(ctx.User.ID, ctx.IsSigned) | |||||
| if err != nil { | |||||
| ctx.Handle(500, "GetOrgsByUserID", err) | |||||
| return | |||||
| } | |||||
| ctx.Data["Orgs"] = orgs | |||||
| ctx.HTML(200, tplSettingsOrganization) | |||||
| } | |||||
| @@ -28,6 +28,9 @@ | |||||
| <a class="{{if .PageIsSettingsAccountLink}}active{{end}} item" href="{{AppSubUrl}}/user/settings/account_link"> | <a class="{{if .PageIsSettingsAccountLink}}active{{end}} item" href="{{AppSubUrl}}/user/settings/account_link"> | ||||
| {{.i18n.Tr "settings.account_link"}} | {{.i18n.Tr "settings.account_link"}} | ||||
| </a> | </a> | ||||
| <a class="{{if .PageIsSettingsOrganization}}active{{end}} item" href="{{AppSubUrl}}/user/settings/organization"> | |||||
| {{.i18n.Tr "settings.organization"}} | |||||
| </a> | |||||
| <a class="{{if .PageIsSettingsDelete}}active{{end}} item" href="{{AppSubUrl}}/user/settings/delete"> | <a class="{{if .PageIsSettingsDelete}}active{{end}} item" href="{{AppSubUrl}}/user/settings/delete"> | ||||
| {{.i18n.Tr "settings.delete"}} | {{.i18n.Tr "settings.delete"}} | ||||
| </a> | </a> | ||||
| @@ -0,0 +1,35 @@ | |||||
| {{template "base/head" .}} | |||||
| <div class="user settings account_link"> | |||||
| {{template "user/settings/navbar" .}} | |||||
| <div class="ui container"> | |||||
| {{template "base/alert" .}} | |||||
| <h4 class="ui top attached header"> | |||||
| {{.i18n.Tr "settings.orgs"}} | |||||
| {{if .SignedUser.CanCreateOrganization}} | |||||
| <div class="ui right"> | |||||
| <a class="ui black tiny button" href="{{AppSubUrl}}/org/create">{{.i18n.Tr "admin.orgs.new_orga"}}</a> | |||||
| </div> | |||||
| {{end}} | |||||
| </h4> | |||||
| <div class="ui attached segment orgs"> | |||||
| {{if .Orgs}} | |||||
| <div class="ui middle aligned divided list"> | |||||
| {{range .Orgs}} | |||||
| <div class="item"> | |||||
| <div class="right floated content"> | |||||
| <a class="ui blue small button" href="{{AppSubUrl}}/org/{{.Name}}/members/action/leave?uid={{.ID}}">{{$.i18n.Tr "org.members.leave"}}</a> | |||||
| </div> | |||||
| <img class="ui mini image" src="{{.RelAvatarLink}}"> | |||||
| <div class="content"> | |||||
| <a href="{{.HomeLink}}">{{.Name}}</a> | |||||
| </div> | |||||
| </div> | |||||
| {{end}} | |||||
| </div> | |||||
| {{else}} | |||||
| {{.i18n.Tr "settings.orgs_none"}} | |||||
| {{end}} | |||||
| </div> | |||||
| </div> | |||||
| </div> | |||||
| {{template "base/footer" .}} | |||||