aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRémy Boulanouar <rboulanouar@gmail.com>2017-09-14 13:46:14 +0200
committerLauris BH <lauris@nix.lv>2017-09-14 14:46:14 +0300
commite5d80b7090d7c1088854e8a0f8223bdf8a769d12 (patch)
tree0ce2f8ded817b346d6637dd06cf78080dab17bf1
parent1739e84ac02c0384c04576a00abab9348293f9c7 (diff)
downloadgitea-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.ini2
-rw-r--r--public/css/index.css3
-rw-r--r--public/less/_user.less5
-rw-r--r--routers/routes/routes.go1
-rw-r--r--routers/user/setting.go35
-rw-r--r--templates/user/settings/navbar.tmpl2
-rw-r--r--templates/user/settings/repos.tmpl53
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" .}}