diff options
author | Rémy Boulanouar <rboulanouar@gmail.com> | 2017-09-14 13:46:14 +0200 |
---|---|---|
committer | Lauris BH <lauris@nix.lv> | 2017-09-14 14:46:14 +0300 |
commit | e5d80b7090d7c1088854e8a0f8223bdf8a769d12 (patch) | |
tree | 0ce2f8ded817b346d6637dd06cf78080dab17bf1 | |
parent | 1739e84ac02c0384c04576a00abab9348293f9c7 (diff) | |
download | gitea-e5d80b7090d7c1088854e8a0f8223bdf8a769d12.tar.gz gitea-e5d80b7090d7c1088854e8a0f8223bdf8a769d12.zip |
Implementation of all repositories of a user from user->settings (#1740)
* Implementation of all repositories of a user from user->settings
* Update message when no repository found
* Update according to comments
* Change UI to have a better look
* improved user repositories UI
-rw-r--r-- | options/locale/locale_en-US.ini | 2 | ||||
-rw-r--r-- | public/css/index.css | 3 | ||||
-rw-r--r-- | public/less/_user.less | 5 | ||||
-rw-r--r-- | routers/routes/routes.go | 1 | ||||
-rw-r--r-- | routers/user/setting.go | 35 | ||||
-rw-r--r-- | templates/user/settings/navbar.tmpl | 2 | ||||
-rw-r--r-- | templates/user/settings/repos.tmpl | 53 |
7 files changed, 101 insertions, 0 deletions
diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index 949f560a33..2e4520a7a3 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -308,6 +308,7 @@ ssh_gpg_keys = SSH / GPG Keys social = Social Accounts applications = Applications orgs = Organizations +repos = Repositories delete = Delete Account twofa = Two-Factor Authentication account_link = External Accounts @@ -446,6 +447,7 @@ remove_account_link_desc = Removing this linked account will revoke all related remove_account_link_success = Account link has been removed successfully! orgs_none = You are not a member of any organizations. +repos_none = You do not own any repositories delete_account = Delete Your Account delete_prompt = The operation will delete your account permanently, and <strong>CANNOT</strong> be undone! diff --git a/public/css/index.css b/public/css/index.css index d09490adbe..ebf8cd1a51 100644 --- a/public/css/index.css +++ b/public/css/index.css @@ -2877,6 +2877,9 @@ footer .ui.language .menu { padding-top: 15px; padding-bottom: 5px; } +.user.settings .iconFloat { + float: left; +} .dashboard { padding-top: 15px; padding-bottom: 80px; diff --git a/public/less/_user.less b/public/less/_user.less index a3e6852994..7b6294448d 100644 --- a/public/less/_user.less +++ b/public/less/_user.less @@ -101,4 +101,9 @@ padding-top: 15px; padding-bottom: 5px; } + &.settings { + .iconFloat { + float: left; + } + } } diff --git a/routers/routes/routes.go b/routers/routes/routes.go index 067bf6a7f6..a0684c8478 100644 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -237,6 +237,7 @@ func RegisterRoutes(m *macaron.Macaron) { m.Route("/delete", "GET,POST", user.SettingsDelete) m.Combo("/account_link").Get(user.SettingsAccountLinks).Post(user.SettingsDeleteAccountLink) m.Get("/organization", user.SettingsOrganization) + m.Get("/repos", user.SettingsRepos) m.Group("/two_factor", func() { m.Get("", user.SettingsTwoFactor) m.Post("/regenerate_scratch", user.SettingsTwoFactorRegenerateScratch) diff --git a/routers/user/setting.go b/routers/user/setting.go index 2c951eaf5f..b71b29ba21 100644 --- a/routers/user/setting.go +++ b/routers/user/setting.go @@ -39,6 +39,7 @@ const ( tplSettingsTwofaEnroll base.TplName = "user/settings/twofa_enroll" tplSettingsAccountLink base.TplName = "user/settings/account_link" tplSettingsOrganization base.TplName = "user/settings/organization" + tplSettingsRepositories base.TplName = "user/settings/repos" tplSettingsDelete base.TplName = "user/settings/delete" tplSecurity base.TplName = "user/security" ) @@ -785,3 +786,37 @@ func SettingsOrganization(ctx *context.Context) { ctx.Data["Orgs"] = orgs ctx.HTML(200, tplSettingsOrganization) } + +// SettingsRepos display a list of all repositories of the user +func SettingsRepos(ctx *context.Context) { + ctx.Data["Title"] = ctx.Tr("settings") + ctx.Data["PageIsSettingsRepos"] = true + ctxUser := ctx.User + + var err error + if err = ctxUser.GetRepositories(1, setting.UI.User.RepoPagingNum); err != nil { + ctx.Handle(500, "GetRepositories", err) + return + } + repos := ctxUser.Repos + + for i := range repos { + if repos[i].IsFork { + err := repos[i].GetBaseRepo() + if err != nil { + ctx.Handle(500, "GetBaseRepo", err) + return + } + err = repos[i].BaseRepo.GetOwner() + if err != nil { + ctx.Handle(500, "GetOwner", err) + return + } + } + } + + ctx.Data["Owner"] = ctxUser + ctx.Data["Repos"] = repos + + ctx.HTML(200, tplSettingsRepositories) +} diff --git a/templates/user/settings/navbar.tmpl b/templates/user/settings/navbar.tmpl index ab9b41666d..b0a3c9fcc3 100644 --- a/templates/user/settings/navbar.tmpl +++ b/templates/user/settings/navbar.tmpl @@ -30,6 +30,8 @@ </a> <a class="{{if .PageIsSettingsOrganization}}active{{end}} item" href="{{AppSubUrl}}/user/settings/organization"> {{.i18n.Tr "settings.organization"}} + <a class="{{if .PageIsSettingsRepos}}active{{end}} item" href="{{AppSubUrl}}/user/settings/repos"> + {{.i18n.Tr "settings.repos"}} </a> <a class="{{if .PageIsSettingsDelete}}active{{end}} item" href="{{AppSubUrl}}/user/settings/delete"> {{.i18n.Tr "settings.delete"}} diff --git a/templates/user/settings/repos.tmpl b/templates/user/settings/repos.tmpl new file mode 100644 index 0000000000..39d98c6d1e --- /dev/null +++ b/templates/user/settings/repos.tmpl @@ -0,0 +1,53 @@ +{{template "base/head" .}}
+<div class="user settings">
+ {{template "user/settings/navbar" .}}
+ <div class="ui container">
+ {{template "base/alert" .}}
+ <h4 class="ui top attached header">
+ {{.i18n.Tr "settings.repos"}}
+ </h4>
+ <div class="ui attached segment">
+ {{if .Repos}}
+ <div class="ui middle aligned divided list">
+ {{range .Repos}}
+ <div class="item">
+ <div class="content">
+ {{if .IsPrivate}}
+ <span class="text gold iconFloat"><i class="octicon octicon-lock"></i></span>
+ {{else if .IsFork}}
+ <span class="iconFloat"><i class="octicon octicon-repo-forked"></i></span>
+ {{else if .IsMirror}}
+ <span class="iconFloat"><i class="octicon octicon-repo-clone"></i></span>
+ {{else}}
+ <span class="iconFloat"><i class="octicon octicon-repo"></i></span>
+ {{end}}
+ <a class="name" href="{{AppSubUrl}}/{{$.Owner.Name}}/{{.Name}}">{{$.Owner.Name}}/{{.Name}}</a>
+ <span>{{SizeFmt .Size}}</span>
+ {{if .IsFork}}
+ {{$.i18n.Tr "repo.forked_from"}}
+ <span><a href="{{AppSubUrl}}/{{.BaseRepo.Owner.Name}}/{{.BaseRepo.Name}}">{{.BaseRepo.Owner.Name}}/{{.BaseRepo.Name}}</a></span>
+ {{end}}
+ </div>
+ </div>
+ {{end}}
+ </div>
+ {{else}}
+ <div class="item">
+ {{.i18n.Tr "settings.repos_none"}}
+ </div>
+ {{end}}
+ </div>
+ </div>
+</div>
+
+<div class="ui small basic delete modal">
+ <div class="ui icon header">
+ <i class="trash icon"></i>
+ {{.i18n.Tr "settings.remove_account_link"}}
+ </div>
+ <div class="content">
+ <p>{{.i18n.Tr "settings.remove_account_link_desc"}}</p>
+ </div>
+ {{template "base/delete_modal_actions" .}}
+</div>
+{{template "base/footer" .}}
|