]> source.dussan.org Git - gitea.git/commitdiff
finish ssh key pages ui
authorFuXiaoHei <fuxiaohei@hexiaz.com>
Mon, 10 Mar 2014 13:12:49 +0000 (21:12 +0800)
committerFuXiaoHei <fuxiaohei@hexiaz.com>
Mon, 10 Mar 2014 13:12:49 +0000 (21:12 +0800)
public/css/gogs.css
public/js/app.js
routers/user/setting.go
templates/base/footer.tmpl
templates/base/navbar.tmpl
templates/user/publickey.tmpl

index 9205178f4d93008aa4ea747c1d9aea96138552cc..4a4144babde47d8a379132be165db63582f67950 100755 (executable)
@@ -32,6 +32,10 @@ body {
     background-color: transparent;
 }
 
+.btn{
+    cursor: pointer;
+}
+
 /* gogits nav header */
 .gogs-masthead {
     background-color: #428bca;
index 59d521090c1d6064fe5000ae05658c87e02f38c4..f6e14712040c9dab8c84d415844a7ace5ffb29e3 100644 (file)
@@ -30,7 +30,8 @@ var Gogits = {
             return;
         }
         $.each(modals, function (i, item) {
-            $(item).modal("hide");
+            var hide = $(item).data('modal');
+            $(item).modal(hide ? hide : "hide");
         });
     };
     Gogits.initTooltips = function () {
@@ -39,6 +40,30 @@ var Gogits = {
             //container: "body"
         });
     };
+    Gogits.initTabs = function () {
+        var $tabs = $('[data-toggle=tab]');
+        $tabs.tab("show");
+        $tabs.find("li:eq(" + index + ") a").tab("show");
+    }
+})(jQuery);
+
+// ajax utils
+(function ($) {
+    Gogits.ajaxDelete = function (url, data, success) {
+        data = data || {};
+        data._method = "DELETE";
+        $.ajax({
+            url: url,
+            data: data,
+            method: "POST",
+            dataType: "json",
+            success: function (json) {
+                if (success) {
+                    success(json);
+                }
+            }
+        })
+    }
 })(jQuery);
 
 
@@ -72,4 +97,18 @@ function initRegister() {
             }
         });
     });
+}
+
+function initUserSetting(){
+    $('#gogs-ssh-keys').on("click",".delete",function(){
+        var $this = $(this);
+        Gogits.ajaxDelete("",{"id":$this.data("del")},function(json){
+            if(json.ok){
+                $this.parent().remove();
+            }else{
+                alert(json.err);
+            }
+        });
+        return false;
+    });
 }
\ No newline at end of file
index 84be1381708c80fd986c688645e065662f932268..aabbc212932693699932121e88c290d341a2f740 100644 (file)
@@ -12,6 +12,7 @@ import (
        "github.com/martini-contrib/render"
        "github.com/martini-contrib/sessions"
        "net/http"
+       "strconv"
 )
 
 func Setting(r render.Render, data base.TmplData, session sessions.Session) {
@@ -21,6 +22,37 @@ func Setting(r render.Render, data base.TmplData, session sessions.Session) {
 }
 
 func SettingSSHKeys(r render.Render, data base.TmplData, req *http.Request, session sessions.Session) {
+       // del ssh ky
+       if req.Method == "DELETE" || req.FormValue("_method") == "DELETE" {
+               id, err := strconv.ParseInt(req.FormValue("id"), 10, 64)
+               if err != nil {
+                       data["ErrorMsg"] = err
+                       log.Error("ssh.DelPublicKey: %v", err)
+                       r.JSON(200, map[string]interface{}{
+                               "ok":  false,
+                               "err": err.Error(),
+                       })
+                       return
+               }
+               k := &models.PublicKey{
+                       Id:      id,
+                       OwnerId: auth.SignedInId(session),
+               }
+               err = models.DeletePublicKey(k)
+               if err != nil {
+                       data["ErrorMsg"] = err
+                       log.Error("ssh.DelPublicKey: %v", err)
+                       r.JSON(200, map[string]interface{}{
+                               "ok":  false,
+                               "err": err.Error(),
+                       })
+               } else {
+                       r.JSON(200, map[string]interface{}{
+                               "ok": true,
+                       })
+               }
+               return
+       }
        // add ssh key
        if req.Method == "POST" {
                k := &models.PublicKey{OwnerId: auth.SignedInId(session),
index 4ae4a95fa0f3f521d2299e710a51414b0cffcb39..a2131a9532d239d8e0527d024b783ebad1b96dbc 100644 (file)
@@ -1,7 +1,8 @@
 <script>
     $(function(){
-        initCore();
-        {{if .PageIsSignUp}}initRegister();{{end}}
+        initCore();{{if .PageIsSignUp}}
+        initRegister();{{end}}{{if .PageIsUserSetting}}
+        initUserSetting();{{end}}
     });
 </script>
 </body>
index e78f6bb221981d5bed90264d5cf45471810847fd..38fc0a39927d1f8f80f2126a7f46f01f93c9d31c 100644 (file)
@@ -2,7 +2,7 @@
     <div class="container">
         <nav class="gogs-nav">
             <a id="gogs-nav-logo" class="gogs-nav-item{{if .PageIsHome}} active{{end}}" href="/"><img src="/img/favicon.png" alt="Gogs Logo" id="gogs-logo"></a>
-            <a class="gogs-nav-item{{if .PageIsUserDashboard}} active{{end}}" href="#">Dashboard</a>
+            <a class="gogs-nav-item{{if .PageIsUserDashboard}} active{{end}}" href="/">Dashboard</a>
             <a class="gogs-nav-item" href="#">Explore</a>
             <a class="gogs-nav-item" href="#">Help</a>{{if .IsSigned}}
             <a id="gogs-nav-out" class="gogs-nav-item navbar-right navbar-btn btn btn-danger" href="/user/logout/"><i class="fa fa-power-off fa-lg"></i></a>
index fbd12adbd0e756f83cfaee03849507577d2b3f7a..0c8b527db95a2f080f9bc006e3194cb63d63ae48 100644 (file)
@@ -49,8 +49,8 @@
                             </div>
                         </div>
                         <div class="modal-footer">
-                            <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
-                            <button type="submit" class="btn btn-primary">Save changes</button>
+                            <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+                            <button type="submit" class="btn btn-primary">Save SSH Key</button>
                         </div>
                     </form>
                 </div>