From 9c0672e0dd8381558dbae42bb4c49000dc4807c5 Mon Sep 17 00:00:00 2001
From: FuXiaoHei <fuxiaohei@hexiaz.com>
Date: Fri, 14 Mar 2014 11:24:08 +0800
Subject: [PATCH] user update-password page ui

---
 public/css/gogs.css                 | 16 ++++-----
 routers/user/setting.go             |  8 +++++
 templates/user/delete.tmpl          |  6 ++--
 templates/user/email_password.tmpl  | 53 +++++++++++++++++++++++++++++
 templates/user/publickey.tmpl       |  6 ++--
 templates/user/publickey_add.tmpl   | 26 --------------
 templates/user/publickey_added.tmpl |  8 -----
 templates/user/publickey_list.tmpl  | 12 -------
 templates/user/setting.tmpl         |  8 ++---
 web.go                              |  1 +
 10 files changed, 80 insertions(+), 64 deletions(-)
 create mode 100644 templates/user/email_password.tmpl
 delete mode 100644 templates/user/publickey_add.tmpl
 delete mode 100644 templates/user/publickey_added.tmpl
 delete mode 100644 templates/user/publickey_list.tmpl

diff --git a/public/css/gogs.css b/public/css/gogs.css
index a44d4a9380..7a05b9abe4 100755
--- a/public/css/gogs.css
+++ b/public/css/gogs.css
@@ -269,7 +269,8 @@ body {
 
 /* gogits user setting */
 
-#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{
+#gogs-user-setting-nav > h4, #gogs-user-setting-container > h4, #gogs-user-setting-container > div > 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;
@@ -429,8 +430,7 @@ body {
     margin-bottom: 4px;
 }
 
-
-#gogs-repo-toolbar{
+#gogs-repo-toolbar {
     margin-top: 51px;
     margin-bottom: -50px;
     border-bottom: 1px solid #BBB;
@@ -438,23 +438,23 @@ body {
     height: 40px;
 }
 
-#gogs-repo-toolbar .navbar-default{
+#gogs-repo-toolbar .navbar-default {
     border: none;
     height: 39px;
 }
 
-#gogs-repo-toolbar .nav > li > a{
+#gogs-repo-toolbar .nav > li > a {
     height: 39px;
 }
 
-#gogs-repo-toolbar .navbar-toolbar.navbar-default .navbar-nav>.active>a:after{
+#gogs-repo-toolbar .navbar-toolbar.navbar-default .navbar-nav > .active > a:after {
     border-bottom-color: #999;
 }
 
-#gogs-repo-toolbar .navbar.nav-toolbar{
+#gogs-repo-toolbar .navbar.nav-toolbar {
     margin-bottom: 0;
 }
 
-#gogs-repo-toolbar .navbar-collapse{
+#gogs-repo-toolbar .navbar-collapse {
     padding: 0;
 }
\ No newline at end of file
diff --git a/routers/user/setting.go b/routers/user/setting.go
index 02a214b2c1..cf11095bea 100644
--- a/routers/user/setting.go
+++ b/routers/user/setting.go
@@ -47,6 +47,14 @@ func Setting(form auth.UpdateProfileForm, r render.Render, data base.TmplData, r
 	r.HTML(200, "user/setting", data)
 }
 
+func SettingEmailPassword(r render.Render, data base.TmplData, session sessions.Session, req *http.Request) {
+	data["Title"] = "Email & Password"
+	data["PageIsUserSetting"] = true
+	data["IsPwdSuccess"] = (req.FormValue("password") == "true")
+
+	r.HTML(200, "user/email_password", data)
+}
+
 func UpdatePasswd(form auth.UpdatePasswdForm, r render.Render, data base.TmplData, req *http.Request, session sessions.Session) {
 	data["Title"] = "Setting"
 	data["PageIsUserSetting"] = true
diff --git a/templates/user/delete.tmpl b/templates/user/delete.tmpl
index af0e1fbc06..37259f61e5 100644
--- a/templates/user/delete.tmpl
+++ b/templates/user/delete.tmpl
@@ -5,10 +5,10 @@
         <h4>Account Setting</h4>
         <ul class="list-group">
             <li class="list-group-item"><a href="/user/setting">Account Profile</a></li>
-            <li class="list-group-item"><a href="#">Emails and Password</a></li>
-            <li class="list-group-item"><a href="#">Notifications</a></li>
+            <li class="list-group-item"><a href="/user/setting/email_password">Emails and Password</a></li>
+            <li class="list-group-item"><a href="/user/setting/notification">Notifications</a></li>
             <li class="list-group-item"><a href="/user/setting/ssh/">SSH Keys</a></li>
-            <li class="list-group-item"><a href="#">Security</a></li>
+            <li class="list-group-item"><a href="/user/setting/security">Security</a></li>
             <li class="list-group-item list-group-item-success"><a href="/user/delete">Delete Account</a></li>
         </ul>
     </div>
diff --git a/templates/user/email_password.tmpl b/templates/user/email_password.tmpl
new file mode 100644
index 0000000000..364bcf398e
--- /dev/null
+++ b/templates/user/email_password.tmpl
@@ -0,0 +1,53 @@
+{{template "base/head" .}}
+{{template "base/navbar" .}}
+<div id="gogs-body" class="container">
+    <div id="gogs-user-setting-nav" class="col-md-3">
+        <h4>Account Setting</h4>
+        <ul class="list-group">
+            <li class="list-group-item"><a href="/user/setting">Account Profile</a></li>
+            <li class="list-group-item list-group-item-success"><a href="/user/setting/email_password">Emails and Password</a></li>
+            <li class="list-group-item"><a href="/user/setting/notification">Notifications</a></li>
+            <li class="list-group-item"><a href="/user/setting/ssh/">SSH Keys</a></li>
+            <li class="list-group-item"><a href="/user/setting/security">Security</a></li>
+            <li class="list-group-item"><a href="/user/delete">Delete Account</a></li>
+        </ul>
+    </div>
+    <div id="gogs-user-setting-container" class="col-md-9">
+        <div id="gogs-setting-email">
+            <h4>Email</h4>
+            <p><strong>Your Primary Email</strong> will be used for Account related notifications as well as any web based operations, such as edits and merges made via the web.</p>
+            <p>// TODO</p><br/>
+        </div>
+        <div id="gogs-setting-pwd">
+            <h4>Password</h4>
+            <form class="form-horizontal" id="gogs-password-form" method="post" action="/user/setting/update_passwd">{{if .IsPwdSuccess}}
+                <p class="alert alert-success">Password is changed successfully. You can sign in via new password.</p>{{end}}
+                <div class="form-group">
+                    <label class="col-md-2 control-label">Old Password<strong class="text-danger">*</strong></label>
+                    <div class="col-md-8">
+                        <input type="password" name="oldpasswd" class="form-control" placeholder="Type your current password" required="required">
+                    </div>
+                </div>
+                <div class="form-group">
+                    <label class="col-md-2 control-label">New Password<strong class="text-danger">*</strong></label>
+                    <div class="col-md-8">
+                        <input type="password" name="newpasswd" class="form-control" placeholder="Type your new password" required="required">
+                    </div>
+                </div>
+                <div class="form-group">
+                    <label class="col-md-2 control-label">Re-Type<strong class="text-danger">*</strong></label>
+                    <div class="col-md-8">
+                        <input type="password" name="re-type" class="form-control" placeholder="Re-type your new password" required="required">
+                    </div>
+                </div>
+                <div class="form-group">
+                    <div class="col-md-offset-2 col-md-8">
+                        <button type="submit" class="btn btn-primary">Change Password</button>&nbsp;&nbsp;
+                        <a href="/forget-password/">Forget Password ?</a>
+                    </div>
+                </div>
+            </form>
+        </div>
+    </div>
+</div>
+{{template "base/footer" .}}
\ No newline at end of file
diff --git a/templates/user/publickey.tmpl b/templates/user/publickey.tmpl
index 0bd76593e7..195af75887 100644
--- a/templates/user/publickey.tmpl
+++ b/templates/user/publickey.tmpl
@@ -5,10 +5,10 @@
         <h4>Account Setting</h4>
         <ul class="list-group">
             <li class="list-group-item"><a href="/user/setting">Account Profile</a></li>
-            <li class="list-group-item"><a href="#">Emails and Password</a></li>
-            <li class="list-group-item"><a href="#">Notifications</a></li>
+            <li class="list-group-item"><a href="/user/setting/email_password">Emails and Password</a></li>
+            <li class="list-group-item"><a href="/user/setting/notification">Notifications</a></li>
             <li class="list-group-item list-group-item-success"><a href="/user/setting/ssh/">SSH Keys</a></li>
-            <li class="list-group-item"><a href="#">Security</a></li>
+            <li class="list-group-item"><a href="/user/setting/security">Security</a></li>
             <li class="list-group-item"><a href="/user/delete">Delete Account</a></li>
         </ul>
     </div>
diff --git a/templates/user/publickey_add.tmpl b/templates/user/publickey_add.tmpl
deleted file mode 100644
index 634b859ddd..0000000000
--- a/templates/user/publickey_add.tmpl
+++ /dev/null
@@ -1,26 +0,0 @@
-{{template "base/head" .}}
-{{template "base/navbar" .}}
-<div class="container" id="gogs-body">
-	<form action="/user/publickey/add" method="post" class="form-horizontal">
-		<div class="form-group">
-			<label class="col-md-4 control-label">Name of this public key: </label>
-			<div class="col-md-3">
-				<input name="keyname" class="form-control" placeholder="Type your preferred name" value="{{.KeyName}}">
-			</div>
-		</div>
-
-		<div class="form-group">
-			<label class="col-md-4 control-label">Paste your key here: </label>
-			<div class="col-md-3">
-				<textarea name="key_content" cols="30" rows="10" class="form-control">{{.KeyContent}}</textarea>
-			</div>
-		</div>
-
-		<div class="form-group">
-		    <div class="col-md-offset-4 col-md-3">
-		    	<button type="submit" class="btn btn-info">Add public key</button>
-		    </div>
-		</div>
-	</form>
-</div>
-{{template "base/footer" .}}
\ No newline at end of file
diff --git a/templates/user/publickey_added.tmpl b/templates/user/publickey_added.tmpl
deleted file mode 100644
index f67da9ed85..0000000000
--- a/templates/user/publickey_added.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-{{template "base/head" .}}
-{{template "base/navbar" .}}
-<div class="container">
-		<div class="form-group">
-			publickey added
-		</div>
-</div>
-{{template "base/footer" .}}
\ No newline at end of file
diff --git a/templates/user/publickey_list.tmpl b/templates/user/publickey_list.tmpl
deleted file mode 100644
index fbd640b4bf..0000000000
--- a/templates/user/publickey_list.tmpl
+++ /dev/null
@@ -1,12 +0,0 @@
-{{template "base/head" .}}
-{{template "base/navbar" .}}
-<div class="container" id="gogs-body">
-<div><a href="/user/publickey/add">Add publick key</a></div>
-	<ul>
-	{{range .Keys}}
-		<li>{{.Name}}</li>
-		<li>{{.Content}}</li>
-	{{end}}
-	</ul>
-</div>
-{{template "base/footer" .}}
\ No newline at end of file
diff --git a/templates/user/setting.tmpl b/templates/user/setting.tmpl
index 79de58fe75..380ac88a62 100644
--- a/templates/user/setting.tmpl
+++ b/templates/user/setting.tmpl
@@ -5,10 +5,10 @@
         <h4>Account Setting</h4>
         <ul class="list-group">
             <li class="list-group-item list-group-item-success"><a href="/user/setting">Account Profile</a></li>
-            <li class="list-group-item"><a href="#">Emails and Password</a></li>
-            <li class="list-group-item"><a href="#">Notifications</a></li>
-            <li class="list-group-item"><a href="/user/setting/ssh">SSH Keys</a></li>
-            <li class="list-group-item"><a href="#">Security</a></li>
+            <li class="list-group-item"><a href="/user/setting/email_password">Emails and Password</a></li>
+            <li class="list-group-item"><a href="/user/setting/notification">Notifications</a></li>
+            <li class="list-group-item"><a href="/user/setting/ssh/">SSH Keys</a></li>
+            <li class="list-group-item"><a href="/user/setting/security">Security</a></li>
             <li class="list-group-item"><a href="/user/delete">Delete Account</a></li>
         </ul>
     </div>
diff --git a/web.go b/web.go
index a80c4924b9..4712861763 100644
--- a/web.go
+++ b/web.go
@@ -64,6 +64,7 @@ func runWeb(*cli.Context) {
 	m.Get("/user/feeds", binding.Bind(auth.FeedsForm{}), user.Feeds)
 
 	m.Any("/user/setting", auth.SignInRequire(true), binding.BindIgnErr(auth.UpdateProfileForm{}), user.Setting)
+	m.Get("/user/setting/email_password",auth.SignInRequire(true),user.SettingEmailPassword)
 	m.Post("/user/setting/update_passwd", auth.SignInRequire(true), binding.BindIgnErr(auth.UpdatePasswdForm{}), user.UpdatePasswd)
 	m.Any("/user/setting/ssh", auth.SignInRequire(true), binding.BindIgnErr(auth.AddSSHKeyForm{}), user.SettingSSHKeys)