From 8962b39648a7ac8895b4281b428a1091c410f8f0 Mon Sep 17 00:00:00 2001
From: Unknown <joe2010xtmf@163.com>
Date: Wed, 19 Feb 2014 21:45:43 -0500
Subject: [PATCH] Add routers for create and delete repo

---
 routers/repo/repo.go       | 44 ++++++++++++++++++++++++++++++++++++++
 routers/user/user.go       |  9 +++++++-
 templates/repo/create.tmpl | 12 +++++++++++
 templates/repo/delete.tmpl | 12 +++++++++++
 templates/user/delete.tmpl | 12 +++++++++++
 web.go                     |  3 +++
 6 files changed, 91 insertions(+), 1 deletion(-)
 create mode 100644 routers/repo/repo.go
 create mode 100644 templates/repo/create.tmpl
 create mode 100644 templates/repo/delete.tmpl
 create mode 100644 templates/user/delete.tmpl

diff --git a/routers/repo/repo.go b/routers/repo/repo.go
new file mode 100644
index 0000000000..cf79d539b6
--- /dev/null
+++ b/routers/repo/repo.go
@@ -0,0 +1,44 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package repo
+
+import (
+	"fmt"
+	"net/http"
+
+	"github.com/martini-contrib/render"
+
+	"github.com/gogits/gogs/models"
+)
+
+func Create(req *http.Request, r render.Render) {
+	if req.Method == "GET" {
+		r.HTML(200, "repo/create", map[string]interface{}{
+			"Title": "Create repository",
+		})
+		return
+	}
+
+	u := &models.User{}
+	_, err := models.CreateRepository(u, "")
+	r.HTML(403, "status/403", map[string]interface{}{
+		"Title": fmt.Sprintf("%v", err),
+	})
+}
+
+func Delete(req *http.Request, r render.Render) {
+	if req.Method == "GET" {
+		r.HTML(200, "repo/delete", map[string]interface{}{
+			"Title": "Delete repository",
+		})
+		return
+	}
+
+	u := &models.User{}
+	err := models.DeleteRepository(u, "")
+	r.HTML(403, "status/403", map[string]interface{}{
+		"Title": fmt.Sprintf("%v", err),
+	})
+}
diff --git a/routers/user/user.go b/routers/user/user.go
index 3566601200..6fafcc47d8 100644
--- a/routers/user/user.go
+++ b/routers/user/user.go
@@ -52,7 +52,14 @@ func SignUp(req *http.Request, r render.Render) {
 	})
 }
 
-func Delete(r render.Render) {
+func Delete(req *http.Request, r render.Render) {
+	if req.Method == "GET" {
+		r.HTML(200, "user/delete", map[string]interface{}{
+			"Title": "Delete user",
+		})
+		return
+	}
+
 	u := &models.User{}
 	err := models.DeleteUser(u)
 	r.HTML(403, "status/403", map[string]interface{}{
diff --git a/templates/repo/create.tmpl b/templates/repo/create.tmpl
new file mode 100644
index 0000000000..4ec4f6f1e8
--- /dev/null
+++ b/templates/repo/create.tmpl
@@ -0,0 +1,12 @@
+{{template "base/head" .}}
+{{template "base/navbar" .}}
+<div class="container">
+	<form action="/repo/create" method="post" class="form-horizontal">
+		<div class="form-group">
+		    <div class="col-md-offset-4 col-md-3">
+		    	<button type="submit" class="btn btn-info">Create repository</button>
+		    </div>
+		</div>
+	</form>
+</div>
+{{template "base/footer" .}}
\ No newline at end of file
diff --git a/templates/repo/delete.tmpl b/templates/repo/delete.tmpl
new file mode 100644
index 0000000000..0b95c3fb18
--- /dev/null
+++ b/templates/repo/delete.tmpl
@@ -0,0 +1,12 @@
+{{template "base/head" .}}
+{{template "base/navbar" .}}
+<div class="container">
+	<form action="/repo/delete" method="post" class="form-horizontal">
+		<div class="form-group">
+		    <div class="col-md-offset-4 col-md-3">
+		    	<button type="submit" class="btn btn-danger">Delete repository</button>
+		    </div>
+		</div>
+	</form>
+</div>
+{{template "base/footer" .}}
\ No newline at end of file
diff --git a/templates/user/delete.tmpl b/templates/user/delete.tmpl
new file mode 100644
index 0000000000..55993633db
--- /dev/null
+++ b/templates/user/delete.tmpl
@@ -0,0 +1,12 @@
+{{template "base/head" .}}
+{{template "base/navbar" .}}
+<div class="container">
+	<form action="/user/delete" method="post" class="form-horizontal">
+		<div class="form-group">
+		    <div class="col-md-offset-4 col-md-3">
+		    	<button type="submit" class="btn btn-danger">Delete user</button>
+		    </div>
+		</div>
+	</form>
+</div>
+{{template "base/footer" .}}
\ No newline at end of file
diff --git a/web.go b/web.go
index 17e7cbfea1..1d36e8a178 100644
--- a/web.go
+++ b/web.go
@@ -14,6 +14,7 @@ import (
 	"github.com/martini-contrib/render"
 
 	"github.com/gogits/gogs/routers"
+	"github.com/gogits/gogs/routers/repo"
 	"github.com/gogits/gogs/routers/user"
 	"github.com/gogits/gogs/utils"
 	"github.com/gogits/gogs/utils/log"
@@ -50,6 +51,8 @@ func runWeb(*cli.Context) {
 	m.Get("/user/signin", user.SignIn)
 	m.Any("/user/signup", user.SignUp)
 	m.Any("/user/delete", user.Delete)
+	m.Any("/repo/create", repo.Create)
+	m.Any("/repo/delete", repo.Delete)
 
 	listenAddr := fmt.Sprintf("%s:%s",
 		utils.Cfg.MustValue("server", "HTTP_ADDR"),