Lunny Xiao 11 years ago
parent
commit
fea660f1d7

+ 49 - 20
public/css/gogs.css

@@ -10,17 +10,17 @@ body {
 
 /* override bs3 */
 
-.tooltip-inner{
+.tooltip-inner {
     border-radius: 3px;
     background: #333;
     border: none;
 }
 
-.tooltip-arrow{
+.tooltip-arrow {
     border-bottom-color: #333 !important;
 }
 
-.fa{
+.fa {
     margin: 0 .5em;
 }
 
@@ -28,8 +28,7 @@ body {
 .gogs-masthead {
     background-color: #428bca;
     box-shadow: inset 0 -2px 5px rgba(0, 0, 0, .1);
-    min-height: 45px;
-    padding: 2px 16px;
+    padding: 0 16px;
 }
 
 /* gogits nav item link */
@@ -54,6 +53,14 @@ body {
     padding: 5px 15px;
 }
 
+.gogs-nav-item.navbar-right {
+    margin-top: 3px;
+}
+
+.gogs-nav-item.navbar-right .fa{
+    margin: 0;
+}
+
 /* gogits nav item active status */
 .gogs-nav .active {
     color: #fff;
@@ -73,19 +80,41 @@ body {
     border-left: 5px solid transparent;
 }
 
+.gogs-nav .tooltip{
+    border: none;
+}
+
 /* gogits logo */
-#gogs-logo {
+#gogs-nav-avatar {
+    margin-top: 0;
+}
+
+#gogs-logo, #gogs-nav-avatar img {
     width: 28px;
+    height: 28px;
+}
+
+#gogs-nav-out {
+    margin-top: 10px;
+    padding: 5px 0;
+    margin-left: 10px;
+    height: 28px;
+}
+
+#gogs-nav-out .fa {
+    vertical-align: -10%;
+    margin: 0 .5em;
 }
 
 /* gogits body */
 #gogs-body {
     padding-top: 30px;
     padding-bottom: 60px;
+    margin-top: 50px;
 }
 
 /* gogits login card */
-.gogs-card{
+.gogs-card {
     margin: auto;
     padding: 30px;
     background: #fff;
@@ -101,7 +130,7 @@ body {
     border-bottom: 1px solid #ccc;
 }
 
-#gogs-login-card{
+#gogs-login-card {
     width: 600px;
 }
 
@@ -115,51 +144,51 @@ body {
     line-height: 30px;
 }
 
-.gogs-card .btn{
+.gogs-card .btn {
     cursor: pointer;
     margin-right: 1.2em;
 }
 
-#gogs-social-login{
+#gogs-social-login {
     margin-top: 30px;
     padding-top: 20px;
     border-top: 1px solid #ccc;
 }
 
-#gogs-social-login .btn{
+#gogs-social-login .btn {
     float: none;
     margin: auto;
 }
 
 /* gogs-user-profile */
 
-#gogs-user-avatar{
+#gogs-user-avatar {
     width: 200px;
     height: 200px;
     border-radius: 6px;
 }
 
-#gogs-user-name{
+#gogs-user-name {
     margin-top: 20px;
     font-size: 1.6em;
     font-weight: bold;
     margin-bottom: 20px;
 }
 
-#gogs-user-profile .profile-info .list-group-item{
+#gogs-user-profile .profile-info .list-group-item {
     background-color: transparent;
     padding-top: 18px;
     color: #666;
 }
 
-#gogs-user-profile .profile-info .list-group-item a{
+#gogs-user-profile .profile-info .list-group-item a {
     margin: 0;
     padding: 0;
     display: inline;
     color: #0093c4;
 }
 
-#gogs-user-profile .profile-info .list-group{
+#gogs-user-profile .profile-info .list-group {
     border-top: 1px solid #ccc;
     padding-bottom: 18px;
     border-bottom: 1px solid #ccc;
@@ -167,20 +196,20 @@ body {
     padding-right: 18px;
 }
 
-#gogs-user-activity .tab-pane{
+#gogs-user-activity .tab-pane {
     padding: 20px;
 }
 
-#gogs-user-act-tabs li.active a{
+#gogs-user-act-tabs li.active a {
     border-bottom-color: #ddd;
 }
 
 /* gogits repo create */
 
-#gogs-repo-create{
+#gogs-repo-create {
     width: 800px;
 }
 
-#gogs-repo-create textarea[name=desc]{
+#gogs-repo-create textarea[name=desc] {
     height: 8em;
 }

+ 6 - 1
public/js/app.js

@@ -14,4 +14,9 @@ var Gogits = {};
         $(selector).tab("show");
         $(selector).find("li:eq(" + index + ") a").tab("show");
     }
-})(jQuery);
+})(jQuery);
+
+
+function initCore(){
+    Gogits.showTooltips();
+}

+ 21 - 17
routers/user/user.go

@@ -25,24 +25,28 @@ func Profile(r render.Render) {
 }
 
 func SignIn(req *http.Request, r render.Render, session sessions.Session) {
-	if req.Method == "GET" {
-		r.HTML(200, "user/signin", map[string]interface{}{
-			"Title": "Log In",
-		})
-		return
-	}
-
-	// TODO: LDAP sign in
-	user, err := models.LoginUserPlain(req.FormValue("account"), req.FormValue("passwd"))
-	if err != nil {
-		r.HTML(200, "base/error", map[string]interface{}{
-			"Error": fmt.Sprintf("%v", err),
-		})
-		return
+	var (
+		errString string
+		account   string
+	)
+	if req.Method == "POST" {
+		account = req.FormValue("account")
+		user, err := models.LoginUserPlain(account, req.FormValue("passwd"))
+		if err == nil {
+			// login success
+			session.Set("userId", user.Id)
+			session.Set("userName", user.Name)
+			r.Redirect("/")
+			return
+		}
+		// login fail
+		errString = fmt.Sprintf("%v", err)
 	}
-	session.Set("userId", user.Id)
-	session.Set("userName", user.Name)
-	r.Redirect("/")
+	r.HTML(200, "user/signin", map[string]interface{}{
+		"Title":   "Log In",
+		"Error":   errString,
+		"Account": account,
+	})
 }
 
 func SignUp(req *http.Request, r render.Render) {

+ 6 - 1
templates/base/footer.tmpl

@@ -1,2 +1,7 @@
-	</body>
+<script>
+    $(function(){
+       initCore();
+    });
+</script>
+</body>
 </html>

+ 9 - 4
templates/base/navbar.tmpl

@@ -1,13 +1,18 @@
-<div class="gogs-masthead" id="masthead">
+<div class="gogs-masthead navbar navbar-fixed-top" id="masthead">
     <div class="container">
         <nav class="gogs-nav">
             <a class="gogs-nav-item active" href="/"><img src="/img/favicon.png" alt="Gogs Logo" id="gogs-logo"></a>
             <a class="gogs-nav-item" href="#">Dashboard</a>
             <a class="gogs-nav-item" href="#">Explore</a>
             <a class="gogs-nav-item" href="#">Help</a>
-            <a class="gogs-nav-item navbar-right navbar-btn btn btn-danger" href="/repo/create">Create a repository</a>
-            <a class="gogs-nav-item navbar-right navbar-btn btn btn-danger" href="/login/">Sign in</a>
-            <!--<a class="gogs-nav-item navbar-right" href="#">Profile</a>-->
+
+            <!--<a class="gogs-nav-item navbar-right navbar-btn btn btn-danger" href="/login/">Sign in</a>-->
+            <a id="gogs-nav-out" class="gogs-nav-item navbar-right navbar-btn btn btn-danger" href="/login/"><i class="fa fa-power-off fa-lg"></i></a>
+            <a id="gogs-nav-avatar" class="gogs-nav-item navbar-right" href="/user/profile" data-toggle="tooltip" data-placement="bottom" title="Username">
+                <img src="http://1.gravatar.com/avatar/x?s=28" alt="user-avatar" title="username"/>
+            </a>
+            <a class="navbar-right gogs-nav-item" href="/repo/create" data-toggle="tooltip" data-placement="bottom" title="New Repository"><i class="fa fa-plus fa-lg"></i></a>
+            <a class="navbar-right gogs-nav-item" href="#"  data-toggle="tooltip" data-placement="bottom" title="Setting"><i class="fa fa-cogs fa-lg"></i></a>
         </nav>
     </div>
 </div>

+ 0 - 1
templates/user/profile.tmpl

@@ -30,7 +30,6 @@
 </div>
 <script>
     $(function () {
-        Gogits.showTooltips();
         Gogits.showTab("#gogs-user-act-tabs");
     });
 </script>

+ 6 - 3
templates/user/signin.tmpl

@@ -2,17 +2,20 @@
 {{template "base/navbar" .}}
 <div class="container" id="gogs-body">
     <form action="/user/signin" method="post" class="form-horizontal gogs-card" id="gogs-login-card">
-        <h3>Log in</h3>
+        <h3>Log in</h3>{{if .Error}}
+        <div class="form-group">
+            <div class="col-md-6 col-md-offset-3 alert alert-danger text-center"><strong>{{.Error}}</strong></div>
+        </div>{{end}}
         <div class="form-group">
             <label class="col-md-4 control-label">Username or Email: </label>
             <div class="col-md-6">
-                <input name="account" class="form-control" placeholder="Type your username or e-mail address">
+                <input name="account" class="form-control" placeholder="Type your username or e-mail address" value="{{.Account}}" required="required">
             </div>
         </div>
         <div class="form-group">
             <label class="col-md-4 control-label">Password: </label>
             <div class="col-md-6">
-                <input name="passwd" type="password" class="form-control" placeholder="Type your password">
+                <input name="passwd" type="password" class="form-control" placeholder="Type your password" required="required">
             </div>
         </div>
         <div class="form-group">