From a8d8e7256249cb280b39d114dd6d6eadd4fec187 Mon Sep 17 00:00:00 2001
From: FuXiaoHei <fuxiaohei@hexiaz.com>
Date: Thu, 13 Mar 2014 14:08:49 +0800
Subject: [PATCH] single repository setting page ui

---
 public/css/gogs.css           |  2 +-
 public/js/app.js              |  6 +++---
 routers/repo/single.go        | 11 +++++++++++
 templates/repo/nav.tmpl       | 31 +++++++++++++++++++++++++++++++
 templates/repo/setting.tmpl   | 33 +++++++++++++++++++++++++++++++++
 templates/repo/single.tmpl    | 32 +-------------------------------
 templates/repo/toolbar.tmpl   |  4 ++--
 templates/user/dashboard.tmpl |  2 +-
 templates/user/profile.tmpl   |  7 +------
 web.go                        |  2 ++
 10 files changed, 86 insertions(+), 44 deletions(-)
 create mode 100644 templates/repo/nav.tmpl
 create mode 100644 templates/repo/setting.tmpl

diff --git a/public/css/gogs.css b/public/css/gogs.css
index 3d8dc3fddb..a44d4a9380 100755
--- a/public/css/gogs.css
+++ b/public/css/gogs.css
@@ -269,7 +269,7 @@ body {
 
 /* gogits user setting */
 
-#gogs-user-setting-nav > h4, #gogs-user-setting-container > h4, #gogs-ssh-keys > h4, #gogs-user-delete > h4 {
+#gogs-user-setting-nav > h4, #gogs-user-setting-container > h4, #gogs-ssh-keys > h4, #gogs-user-delete > h4 ,#gogs-repo-setting-container .tab-pane > h4{
     padding-bottom: 18px;
     margin-bottom: 18px;
     border-bottom: 1px solid #CCC;
diff --git a/public/js/app.js b/public/js/app.js
index a789122b1b..69d21020e8 100644
--- a/public/js/app.js
+++ b/public/js/app.js
@@ -41,9 +41,8 @@ var Gogits = {
         });
     };
     Gogits.initTabs = function () {
-        var $tabs = $('[data-toggle=tab]');
-        $tabs.tab("show");
-        $tabs.find("li:eq(" + index + ") a").tab("show");
+        var $tabs = $('[data-init=tabs]');
+        $tabs.find("li:eq(0) a").tab("show");
     }
 })(jQuery);
 
@@ -69,6 +68,7 @@ var Gogits = {
 
 function initCore() {
     Gogits.initTooltips();
+    Gogits.initTabs();
     Gogits.initModals();
 }
 
diff --git a/routers/repo/single.go b/routers/repo/single.go
index db16a84b8a..4870adbd0a 100644
--- a/routers/repo/single.go
+++ b/routers/repo/single.go
@@ -28,3 +28,14 @@ func Single(params martini.Params, r render.Render, data base.TmplData) {
 
 	r.HTML(200, "repo/single", data)
 }
+
+func Setting(r render.Render, data base.TmplData) {
+	if !data["IsRepositoryValid"].(bool) {
+		return
+	}
+
+	data["Title"] = data["Title"].(string) + " - settings"
+	data["IsRepoToolbarSetting"] = true
+
+	r.HTML(200, "repo/setting", data)
+}
diff --git a/templates/repo/nav.tmpl b/templates/repo/nav.tmpl
new file mode 100644
index 0000000000..1e52488897
--- /dev/null
+++ b/templates/repo/nav.tmpl
@@ -0,0 +1,31 @@
+<div id="gogs-body-nav" class="gogs-repo-nav">
+    <div class="container">
+        <div class="gogs-repo-btns pull-right">
+            <div class="btn-group" id="gogs-repo-watching">
+                <button type="button" class="btn btn-default"><i class="fa fa-eye"></i>Watch {x}</button>
+                <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
+                    <span class="caret"></span>
+                    <span class="sr-only">Toggle Dropdown</span>
+                </button>
+                <div class="dropdown-menu" role="menu">
+                    <div class="dropdown-item" data-val="not-watching">
+                        <h4 role="presentation" class="dropdown-header">Not Watching</h4>
+                        <p class="description">You only receive notifications for conversations in which you participate or are @mentioned.</p>
+                        <p class="divider"></p>
+                    </div>
+                    <div class="dropdown-item" data-val="watching">
+                        <h4 role="presentation" class="dropdown-header">Watching</h4>
+                        <p class="description">You receive notifications for all conversations in this repository.</p>
+                    </div>
+                </div>
+            </div>
+            <div class="btn-group">
+                <button type="button" class="btn btn-default"><i class="fa fa-star"></i>Star&nbsp;&nbsp;{{.Repository.NumStars}}</button>
+            </div>
+            <div class="btn-group">
+                <button type="button" class="btn btn-default"><i class="fa fa-code-fork"></i>Fork&nbsp;&nbsp;{{.Repository.NumForks}}</button>
+            </div>
+        </div>
+        <h3><i class="fa fa-book fa-lg"></i><a href="/{{.Owner.Name}}/">{{.Owner.Name}}</a> / {{.Repository.Name}}</h3>
+    </div>
+</div>
\ No newline at end of file
diff --git a/templates/repo/setting.tmpl b/templates/repo/setting.tmpl
new file mode 100644
index 0000000000..262b91a187
--- /dev/null
+++ b/templates/repo/setting.tmpl
@@ -0,0 +1,33 @@
+{{template "base/head" .}}
+{{template "base/navbar" .}}
+{{template "repo/nav" .}}
+{{template "repo/toolbar" .}}
+<div id="gogs-body" class="container">
+    <div id="gogs-user-setting-nav" class="col-md-3">
+        <h4>Repository Settings</h4>
+        <ul class="list-group" data-init="tabs">
+            <li class="list-group-item"><a href="#options" data-toggle="tab">Options</a></li>
+            <!--<li class="list-group-item" data-toggle="tab"><a href="#">Collaborators</a></li>
+            <li class="list-group-item" data-toggle="tab"><a href="#">Notifications</a></li>-->
+            <li class="list-group-item"><a href="#delete" data-toggle="tab">Delete</a></li>
+        </ul>
+    </div>
+    <div id="gogs-repo-setting-container" class="col-md-9 tab-content">
+        <div id="options" class="tab-pane">
+            repo-options
+        </div>
+        <div id="delete" class="tab-pane">
+            <h4>Delete Repository</h4>
+            <p class="alert alert-warning">Unexpected bad things will happen if you don't read this!</p>
+            <p>This action <strong>CANNOT</strong> be undone. This will delete the repository, wiki, issues, and comments permanently. </p>
+
+            <form action="/repo/delete" method="post">
+                <input type="hidden" name="reponame" value="{{.Repository.Name}}"/>
+                <input type="hidden" name="username" value="{{.Owner.Name}}"/>
+                <hr/>
+                <button class="btn btn-danger btn-lg">I understand the consequences, delete this repository</button>
+            </form>
+        </div>
+    </div>
+</div>
+{{template "base/footer" .}}
\ No newline at end of file
diff --git a/templates/repo/single.tmpl b/templates/repo/single.tmpl
index 28bbea635f..96ca95bd8e 100644
--- a/templates/repo/single.tmpl
+++ b/templates/repo/single.tmpl
@@ -1,36 +1,6 @@
 {{template "base/head" .}}
 {{template "base/navbar" .}}
-<div id="gogs-body-nav" class="gogs-repo-nav">
-    <div class="container">
-        <div class="gogs-repo-btns pull-right">
-            <div class="btn-group" id="gogs-repo-watching">
-                <button type="button" class="btn btn-default"><i class="fa fa-eye"></i>Watch {x}</button>
-                <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
-                    <span class="caret"></span>
-                    <span class="sr-only">Toggle Dropdown</span>
-                </button>
-                <div class="dropdown-menu" role="menu">
-                    <div class="dropdown-item" data-val="not-watching">
-                        <h4 role="presentation" class="dropdown-header">Not Watching</h4>
-                        <p class="description">You only receive notifications for conversations in which you participate or are @mentioned.</p>
-                        <p class="divider"></p>
-                    </div>
-                    <div class="dropdown-item" data-val="watching">
-                        <h4 role="presentation" class="dropdown-header">Watching</h4>
-                        <p class="description">You receive notifications for all conversations in this repository.</p>
-                    </div>
-                </div>
-            </div>
-            <div class="btn-group">
-                <button type="button" class="btn btn-default"><i class="fa fa-star"></i>Star&nbsp;&nbsp;{{.Repository.NumStars}}</button>
-            </div>
-            <div class="btn-group">
-                <button type="button" class="btn btn-default"><i class="fa fa-code-fork"></i>Fork&nbsp;&nbsp;{{.Repository.NumForks}}</button>
-            </div>
-        </div>
-        <h3><i class="fa fa-book fa-lg"></i><a href="/{{.Owner.Name}}/">{{.Owner.Name}}</a> / {{.Repository.Name}}</h3>
-    </div>
-</div>
+{{template "repo/nav" .}}
 {{template "repo/toolbar" .}}
 <div id="gogs-body" class="container">
     <h4>Source Files:</h4>
diff --git a/templates/repo/toolbar.tmpl b/templates/repo/toolbar.tmpl
index 57408e18e8..fb2145ab3d 100644
--- a/templates/repo/toolbar.tmpl
+++ b/templates/repo/toolbar.tmpl
@@ -11,7 +11,7 @@
                                 <li><a href="#">develop</a></li>
                             </ul>
                         </li>
-                        <li class="{{if .IsRepoToolbarSource}}active{{end}}"><a href="#">Source</a></li>
+                        <li class="{{if .IsRepoToolbarSource}}active{{end}}"><a href="/{{.RepositoryLink}}">Source</a></li>
                         <li><a href="#">Commits</a></li>
                         <li><a href="#">Issues <span class="badge">42</span></a></li>
                         <li><a href="#">Pull Requests</a></li>
@@ -32,7 +32,7 @@
                                 <li><a href="#">Network</a></li>
                             </ul>
                         </li>{{if .IsRepositoryOwner}}
-                        <li class="{{if .IsRepoToolbarSetting}}active{{end}}"><a href="/{{.RepositoryLink}}/settings/">Settings</a></li>{{end}}
+                        <li class="{{if .IsRepoToolbarSetting}}active{{end}}"><a href="/{{.RepositoryLink}}/settings">Settings</a></li>{{end}}
                     </ul>
                 </div>
             </div>
diff --git a/templates/user/dashboard.tmpl b/templates/user/dashboard.tmpl
index d422f8ffe4..e8fbe29605 100644
--- a/templates/user/dashboard.tmpl
+++ b/templates/user/dashboard.tmpl
@@ -22,7 +22,7 @@
             </div>
             <div class="panel-body">
                 <ul class="list-group">{{range .MyRepos}}
-                    <li class="list-group-item"><i class="fa fa-book"></i><a href="/{{$.SignedUserName}}/{{.Name}}/">{{.Name}}</a>
+                    <li class="list-group-item"><i class="fa fa-book"></i><a href="/{{$.SignedUserName}}/{{.Name}}">{{.Name}}</a>
                         <span class="stars pull-right"><i class="fa fa-star"></i>{{.NumStars}}</span>
                     </li>{{end}}
                 </ul>
diff --git a/templates/user/profile.tmpl b/templates/user/profile.tmpl
index 09fe4ae5b6..79e6062bcb 100644
--- a/templates/user/profile.tmpl
+++ b/templates/user/profile.tmpl
@@ -18,7 +18,7 @@
         </div>
     </div>
     <div id="gogs-user-activity" class="col-md-9">
-        <ul class="nav nav-tabs" id="gogs-user-act-tabs">
+        <ul class="nav nav-tabs" id="gogs-user-act-tabs" data-init="tabs">
             <li class="active"><a href="#repo" data-toggle="tab"><i class="fa fa-gittip"></i>Repositories</a></li>
             <li><a href="#activity" data-toggle="tab"><i class="fa fa-rss"></i>Activity</a></li>
         </ul>
@@ -28,9 +28,4 @@
         </div>
     </div>
 </div>
-<script>
-    $(function () {
-        Gogits.showTab("#gogs-user-act-tabs");
-    });
-</script>
 {{template "base/footer" .}}
\ No newline at end of file
diff --git a/web.go b/web.go
index 8e5bbaef0f..f8d85562f7 100644
--- a/web.go
+++ b/web.go
@@ -74,6 +74,8 @@ func runWeb(*cli.Context) {
 	m.Any("/repo/create", auth.SignInRequire(true), binding.BindIgnErr(auth.CreateRepoForm{}), repo.Create)
 	m.Any("/repo/delete", auth.SignInRequire(true), repo.Delete)
 	m.Any("/repo/list", auth.SignInRequire(false), repo.List)
+
+	m.Get("/:username/:reponame/settings", auth.SignInRequire(false), auth.RepoAssignment(true), repo.Setting)
 	m.Get("/:username/:reponame", auth.SignInRequire(false), auth.RepoAssignment(true), repo.Single)
 
 	//m.Get("/:username/:reponame", repo.Repo)