浏览代码

Merge branch 'master' of github.com:gogits/gogs

Conflicts:
	conf/app.ini
Unknown 11 年之前
父节点
当前提交
e95be2cb3e
共有 52 个文件被更改,包括 422 次插入261 次删除
  1. 26 1
      .gitignore
  2. 24 16
      LICENSE
  3. 2 2
      conf/app.ini
  4. 2 2
      modules/avatar/avatar.go
  5. 1 1
      modules/base/conf.go
  6. 111 98
      public/css/gogs.css
  7. 5 5
      public/js/app.js
  8. 13 0
      routers/install.go
  9. 1 0
      routers/repo/issue.go
  10. 53 34
      serve.go
  11. 2 2
      templates/admin/config.tmpl
  12. 2 2
      templates/admin/dashboard.tmpl
  13. 1 1
      templates/admin/nav.tmpl
  14. 2 2
      templates/admin/repos.tmpl
  15. 2 2
      templates/admin/users.tmpl
  16. 2 2
      templates/admin/users/edit.tmpl
  17. 2 2
      templates/admin/users/new.tmpl
  18. 13 13
      templates/base/navbar.tmpl
  19. 2 2
      templates/help.tmpl
  20. 1 1
      templates/home.tmpl
  21. 70 0
      templates/install.tmpl
  22. 10 0
      templates/issue/create.tmpl
  23. 2 2
      templates/repo/branches.tmpl
  24. 2 2
      templates/repo/commits.tmpl
  25. 2 2
      templates/repo/create.tmpl
  26. 2 2
      templates/repo/diff.tmpl
  27. 3 2
      templates/repo/issues.tmpl
  28. 1 1
      templates/repo/list.tmpl
  29. 4 4
      templates/repo/nav.tmpl
  30. 2 2
      templates/repo/pulls.tmpl
  31. 3 3
      templates/repo/setting.tmpl
  32. 2 2
      templates/repo/single.tmpl
  33. 1 1
      templates/repo/toolbar.tmpl
  34. 1 1
      templates/status/200.tmpl
  35. 1 1
      templates/status/404.tmpl
  36. 1 1
      templates/status/500.tmpl
  37. 2 2
      templates/user/active.tmpl
  38. 4 4
      templates/user/dashboard.tmpl
  39. 5 5
      templates/user/delete.tmpl
  40. 2 2
      templates/user/issues.tmpl
  41. 2 2
      templates/user/notification.tmpl
  42. 4 4
      templates/user/password.tmpl
  43. 6 6
      templates/user/profile.tmpl
  44. 6 6
      templates/user/publickey.tmpl
  45. 2 2
      templates/user/pulls.tmpl
  46. 2 2
      templates/user/security.tmpl
  47. 4 4
      templates/user/setting.tmpl
  48. 1 1
      templates/user/setting_nav.tmpl
  49. 3 3
      templates/user/signin.tmpl
  50. 2 2
      templates/user/signup.tmpl
  51. 2 2
      templates/user/stars.tmpl
  52. 1 0
      web.go

+ 26 - 1
.gitignore

@@ -1,3 +1,5 @@
+
+
 gogs
 *.exe
 *.exe~
@@ -9,4 +11,27 @@ data/
 .vendor/
 .idea/
 *.iml
-public/img/avatar/
+public/img/avatar/
+
+# Compiled Object files, Static and Dynamic libs (Shared Objects)
+*.o
+*.a
+*.so
+
+# Folders
+_obj
+_test
+
+# Architecture specific extensions/prefixes
+*.[568vq]
+[568vq].out
+
+*.cgo1.go
+*.cgo2.c
+_cgo_defun.c
+_cgo_gotypes.go
+_cgo_export.*
+
+_testmain.go
+
+*.exe

+ 24 - 16
LICENSE

@@ -1,19 +1,27 @@
-Copyright (c) 2011 Dmitriy Zaporozhets
+Copyright (c) 2014
+All rights reserved.
 
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
 
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
 
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
+* Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+* Neither the name of the {organization} nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+ 2 - 2
conf/app.ini

@@ -1,7 +1,7 @@
 ; App name that shows on every page title
 APP_NAME = Gogs: Go Git Service
 APP_LOGO = img/favicon.png
-; Check it if you run locally
+; Change it if you run locally
 RUN_USER = git
 ; Either "dev", "prod" or "test", default is "dev"
 RUN_MODE = dev
@@ -164,4 +164,4 @@ RECEIVERS =
 [log.database]
 LEVEL = 
 Driver = 
-CONN = 
+CONN = 

+ 2 - 2
modules/avatar/avatar.go

@@ -251,8 +251,8 @@ var client = &http.Client{}
 
 func (this *thunderTask) fetch() error {
 	req, _ := http.NewRequest("GET", this.Url, nil)
-	req.Header.Set("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8")
-	req.Header.Set("Accept-Encoding", "gzip,deflate,sdch")
+	req.Header.Set("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/jpeg,image/png,*/*;q=0.8")
+	req.Header.Set("Accept-Encoding", "deflate,sdch")
 	req.Header.Set("Accept-Language", "zh-CN,zh;q=0.8")
 	req.Header.Set("Cache-Control", "no-cache")
 	req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36")

+ 1 - 1
modules/base/conf.go

@@ -243,7 +243,7 @@ func newNotifyMailService() {
 }
 
 func NewConfigContext() {
-	var err error
+	//var err error
 	workDir, err := exeDir()
 	if err != nil {
 		fmt.Printf("Fail to get work directory: %s\n", err)

+ 111 - 98
public/css/gogs.css

@@ -52,14 +52,14 @@ html, body {
 }
 
 /* gogits nav header */
-.gogs-masthead {
+.masthead {
     background-color: #428bca;
     box-shadow: inset 0 -2px 5px rgba(0, 0, 0, .1);
     margin: 0;
 }
 
 /* gogits nav item link */
-.gogs-nav-item {
+.nav-item {
     position: relative;
     display: inline-block;
     padding: 10px;
@@ -69,39 +69,39 @@ html, body {
     height: 46px;
 }
 
-#gogs-nav-logo {
+#nav-logo {
     padding-left: 0;
     padding-right: 0;
     margin-right: 10px;
 }
 
-.gogs-nav-item:hover,
-.gogs-nav-item:focus {
+.nav-item:hover,
+.nav-item:focus {
     color: #fff;
     text-decoration: none;
 }
 
-.gogs-nav-item.navbar-right {
+.nav-item.navbar-right {
     margin-top: 3px;
 }
 
-.gogs-nav-item.navbar-btn {
+.nav-item.navbar-btn {
     cursor: pointer;
     margin-top: 8px;
     padding: 5px 15px;
     height: 30px;
 }
 
-.gogs-nav-item.navbar-right .fa {
+.nav-item.navbar-right .fa {
     margin: 0;
 }
 
 /* gogits nav item active status */
-.gogs-nav .active {
+.nav .active {
     color: #fff;
 }
 
-.gogs-nav .active:after {
+.nav .active:after {
     position: absolute;
     bottom: -1px;
     left: 50%;
@@ -115,29 +115,29 @@ html, body {
     border-left: 5px solid transparent;
 }
 
-#gogs-nav-logo:after {
+#nav-logo:after {
     bottom: -4px !important;
 }
 
-#gogs-nav-avatar:after {
+#nav-avatar:after {
     bottom: -4px !important;
 }
 
-.gogs-nav .tooltip {
+.nav .tooltip {
     border: none;
 }
 
 /* gogits logo */
-#gogs-nav-avatar {
+#nav-avatar {
     margin-top: 0;
 }
 
-#gogs-logo, #gogs-nav-avatar img {
+#logo, #nav-avatar img {
     width: 28px;
     height: 28px;
 }
 
-#gogs-nav-out {
+#nav-out {
     margin-top: 10px;
     padding: 5px 0;
     margin-left: 10px;
@@ -145,56 +145,56 @@ html, body {
     float: right;
 }
 
-#gogs-nav-signin, #gogs-nav-signup {
+#nav-signin, #nav-signup {
     float: right;
     margin-left: 1em;
 }
 
-#gogs-nav-out .fa {
+#nav-out .fa {
     vertical-align: -10%;
     margin: 0 .5em;
 }
 
 /* gogits body */
-#gogs-body {
+#body {
     padding-bottom: 60px;
     margin-top: 30px;
 }
 
-#gogs-body .btn-default {
+#body .btn-default {
     background-color: #FFF;
     background-image: linear-gradient(to bottom, #FFF 0, #FAFAFA 100%);
 }
 
-#gogs-body-nav {
+#body-nav {
     background-color: #FFF;
     border-bottom: 1px solid #DDD;
     height: 66px
 }
 
-#gogs-body-nav .nav {
+#body-nav .nav {
     font-size: 14px;
     margin-top: 12px;
 }
 
-#gogs-body-nav .nav-pills li a {
+#body-nav .nav-pills li a {
     color: #444;
 }
 
-#gogs-body-nav .nav-pills li.active a {
+#body-nav .nav-pills li.active a {
     font-weight: bold;
     border-bottom: 2px solid #d26911;
     background-color: transparent;
     color: #444;
 }
 
-#gogs-body-nav .nav-pills li:hover a {
+#body-nav .nav-pills li:hover a {
     background-color: transparent;
     text-decoration: underline;
 }
 
 /* gogits login card */
-.gogs-card {
+.card {
     margin: auto;
     padding: 30px;
     background: #fff;
@@ -203,78 +203,87 @@ html, body {
     box-sizing: border-box;
 }
 
-.gogs-card h3 {
+.card h3 {
     margin-top: 0;
     margin-bottom: 30px;
     padding-bottom: 20px;
     border-bottom: 1px solid #ccc;
 }
 
-#gogs-login-card {
+#login-card {
     width: 600px;
 }
 
-#gogs-login-card .form-control {
+#login-card .form-control {
     padding: 6px 12px;
     box-sizing: content-box;
 }
 
-#gogs-login-card .control-label {
+#login-card .control-label {
     height: 44px;
     line-height: 30px;
 }
 
-.gogs-card .btn {
+#install-card {
+    width: 800px;
+}
+
+#install-card .form-group {
+    margin-left: 0;
+    margin-right: 0;
+}
+
+.card .btn {
     cursor: pointer;
     margin-right: 1.2em;
 }
 
-#gogs-social-login {
+#social-login {
     margin-top: 30px;
     padding-top: 20px;
     border-top: 1px solid #ccc;
 }
 
-#gogs-social-login .btn {
+#social-login .btn {
     float: none;
     margin: auto;
 }
 
 /* gogs-user-profile */
 
-#gogs-user-avatar {
+#user-avatar {
     width: 200px;
     height: 200px;
     border-radius: 6px;
 }
 
-#gogs-user-avatar-commit {
+#user-avatar-commit {
     width: 16px;
     height: 16px;
     border-radius: 2px;
 }
 
-#gogs-user-name {
+#user-name {
     margin-top: 20px;
     font-size: 1.6em;
     font-weight: bold;
     margin-bottom: 20px;
 }
 
-#gogs-user-profile .profile-info .list-group-item {
+#user-profile .profile-info .list-group-item {
     background-color: transparent;
     padding-top: 18px;
     color: #666;
 }
 
-#gogs-user-profile .profile-info .list-group-item a {
+#user-profile .profile-info .list-group-item a {
     margin: 0;
     padding: 0;
     display: inline;
     color: #0093c4;
 }
 
-#gogs-user-profile .profile-info .list-group {
+#user-profile .profile-info .list-group {
     border-top: 1px solid #ccc;
     padding-bottom: 18px;
     border-bottom: 1px solid #ccc;
@@ -282,50 +291,50 @@ html, body {
     padding-right: 18px;
 }
 
-#gogs-user-activity .tab-pane {
+#user-activity .tab-pane {
     padding: 20px;
 }
 
-#gogs-user-act-tabs li.active a {
+#user-act-tabs li.active a {
     border-bottom-color: #ddd;
 }
 
 /* gogits repo create */
 
-#gogs-repo-create {
+#repo-create {
     width: 800px;
 }
 
-#gogs-repo-create textarea[name=desc] {
+#repo-create textarea[name=desc] {
     height: 8em;
 }
 
 /* gogits user setting */
 
-#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 {
+#user-setting-nav > h4, #user-setting-container > h4, #user-setting-container > div > h4,
+#ssh-keys > h4, #user-delete > h4, #repo-setting-container .tab-pane > h4 {
     padding-bottom: 18px;
     margin-bottom: 18px;
     border-bottom: 1px solid #CCC;
 }
 
-#gogs-user-setting-nav .list-group .list-group-item a {
+#user-setting-nav .list-group .list-group-item a {
     margin-left: 0;
     padding: .6em;
     font-size: 14px;
     color: #3B73AF;
 }
 
-#gogs-user-setting-nav .list-group .list-group-item {
+#user-setting-nav .list-group .list-group-item {
     background-color: transparent;
 }
 
-#gogs-user-setting-nav .list-group .list-group-item-success a {
+#user-setting-nav .list-group .list-group-item-success a {
     font-weight: bold;
     color: #444;
 }
 
-.gogs-admin-nav {
+.admin-nav {
     background-color: #FFF;
     padding-top: 10px;
     padding-left: 0;
@@ -333,49 +342,49 @@ html, body {
     border: 1px solid #D8D8D8;
 }
 
-.gogs-admin-nav li {
+.admin-nav li {
     margin-bottom: 8px;
     border-left: 4px solid transparent;
 }
 
-.gogs-admin-nav li:hover {
+.admin-nav li:hover {
     border-left-color: #EEE;
 }
 
-.gogs-admin-nav li.active:hover {
+.admin-nav li.active:hover {
     border-left: 4px solid #DD4B39;
 }
 
-#gogs-repo-setting-container .form-horizontal label {
+#repo-setting-container .form-horizontal label {
     line-height: 30px;
 }
 
 /* gogits user ssh keys */
 
-#gogs-ssh-keys .list-group-item {
+#ssh-keys .list-group-item {
     padding: 15px 0;
     border-bottom: 1px solid #DDD;
 }
 
-#gogs-ssh-keys .list-group-item .delete {
+#ssh-keys .list-group-item .delete {
     margin: -5px 50px 0;
 }
 
-#gogs-ssh-keys .list-group-item:after {
+#ssh-keys .list-group-item:after {
     clear: both;
 }
 
-#gogs-ssh-keys .name {
+#ssh-keys .name {
     font-size: 14px;
     font-weight: bold;
 }
 
-#gogs-ssh-keys .print {
+#ssh-keys .print {
     padding-left: 1em;
     color: #888;
 }
 
-#gogs-ssh-add {
+#ssh-add {
     display: inline-block;
     color: white;
     cursor: pointer;
@@ -383,25 +392,25 @@ html, body {
     border-radius: 3px;
 }
 
-#gogs-ssh-form textarea {
+#ssh-form textarea {
     height: 16em;
 }
 
-/* #gogs-feed */
+/* #feed */
 
-#gogs-feed-right .repo-panel .panel-heading .btn {
+#feed-right .repo-panel .panel-heading .btn {
     margin-top: -4px;
 }
 
-#gogs-feed-right .repo-panel .panel-body {
+#feed-right .repo-panel .panel-body {
     padding: 0;
 }
 
-#gogs-feed-right .repo-panel .list-group {
+#feed-right .repo-panel .list-group {
     margin-bottom: 0;
 }
 
-#gogs-feed-right .repo-panel .list-group-item a {
+#feed-right .repo-panel .list-group-item a {
     display: block;
     margin-left: 0;
     background-color: transparent;
@@ -409,11 +418,11 @@ html, body {
     font-weight: bold;
 }
 
-#gogs-feed-right .repo-panel .list-group-item .fa {
+#feed-right .repo-panel .list-group-item .fa {
     color: #666;
 }
 
-#gogs-feed-right .repo-panel .list-group-item {
+#feed-right .repo-panel .list-group-item {
     font-size: 14px;
     line-height: 32px;
     border-bottom: 1px solid #DDD;
@@ -421,97 +430,101 @@ html, body {
     clear: both;
 }
 
-#gogs-feed-right .repo-panel .list-group-item:last-child {
+#feed-right .repo-panel .list-group-item:last-child {
     border-bottom: none;
 }
 
-#gogs-feed-right .repo-panel .list-group-item:hover {
+#feed-right .repo-panel .list-group-item:hover {
     background-color: #eafffd;
     background-color: rgba(65, 131, 196, 0.1);
 }
 
-#gogs-feed-right .repo-panel span.stars {
+#feed-right .repo-panel span.stars {
     color: #666;
     margin-right: 1em;
 }
 
 /* gogits repo single page */
 
-#gogs-body-nav.gogs-repo-nav {
+#body-nav.repo-nav {
     padding-top: 16px;
     padding-bottom: 30px;
     height: auto;
 }
 
-.gogs-repo-nav .name {
+.repo-nav .name {
     margin-top: 15px;
 }
 
-.gogs-repo-nav .desc {
+.repo-nav .desc {
     color: #888;
     margin-bottom: 0;
 }
 
-.gogs-repo-nav h3 .fa {
+.repo-nav h3 .fa {
     color: #BBB;
     margin-left: 0;
 }
 
-.gogs-repo-nav .actions {
+.repo-nav .actions {
     padding-top: 20px;
 }
 
-.gogs-repo-nav .btn-default {
+.repo-nav .btn-default {
     font-family: Tahoma, Arial, sans-serif;
 }
 
-#gogs-repo-watching .dropdown-menu {
+#repo-watching .dropdown-menu {
     width: 280px;
     padding: 0;
 }
 
-#gogs-repo-watching .dropdown-menu .dropdown-item:hover .dropdown-header, #gogs-repo-watching .dropdown-item .dropdown-header.text-primary {
+#repo-watching .dropdown-menu .dropdown-item:hover .dropdown-header, #repo-watching .dropdown-item .dropdown-header.text-primary {
     color: rgb(65, 131, 196);
     cursor: pointer;
 }
 
-#gogs-repo-watching .dropdown-menu .description {
+#repo-watching .dropdown-menu .description {
     padding: 0 20px;
     color: #888;
 }
 
-#gogs-repo-watching .dropdown-menu .dropdown-header {
+#repo-watching .dropdown-menu .dropdown-header {
     color: #444;
     font-weight: bold;
     font-size: 14px;
     margin-bottom: 4px;
 }
 
-#gogs-repo-toolbar {
+#repo-toolbar {
     border-bottom: 1px solid #DDD;
     background-color: #FFF;
     height: 40px;
     font-size: 14px;
 }
 
-#gogs-repo-toolbar .navbar-default {
+#repo-toolbar .navbar-default {
     border: none;
     height: 39px;
 }
 
-#gogs-repo-toolbar .nav > li > a {
+#repo-toolbar .nav > li > a {
     height: 39px;
 }
 
-#gogs-repo-toolbar .navbar-toolbar.navbar-default .navbar-nav > .active > a:after {
+#repo-toolbar .nav .active {
+    color: #F6F6F6;
+}
+
+#repo-toolbar .nav > .active > a:after {
     border-bottom-color: #999;
 }
 
-#gogs-repo-toolbar .navbar.nav-toolbar {
+#repo-toolbar .navbar.nav-toolbar {
     margin-bottom: 0;
 }
 
-#gogs-repo-toolbar .navbar-collapse {
+#repo-toolbar .navbar-collapse {
     padding: 0;
 }
 
@@ -579,29 +592,29 @@ html, body {
     min-width: 200px;
 }
 
-#gogs-repo-clone .dropdown-menu {
+#repo-clone .dropdown-menu {
     width: 400px;
     padding: 20px;
 }
 
-#gogs-repo-clone .input-group {
+#repo-clone .input-group {
     margin-bottom: 15px;
 }
 
-/* #gogs-source */
-#gogs-source {
+/* #source */
+#source {
     margin-top: -20px;
 }
 
-#gogs-source .source-toolbar:after {
+#source .source-toolbar:after {
     clear: both;
 }
 
-#gogs-source .source-toolbar .branch-switch {
+#source .source-toolbar .branch-switch {
     display: inline-block;
 }
 
-#gogs-source .source-toolbar .breadcrumb {
+#source .source-toolbar .breadcrumb {
     margin: 0 .5em;
     padding: 6px 15px;
     font-size: 16px;
@@ -610,9 +623,9 @@ html, body {
     background-color: transparent;
 }
 
-#gogs-source .source-toolbar,
-#gogs-source .info-box,
-#gogs-source .file-content {
+#source .source-toolbar,
+#source .info-box,
+#source .file-content {
     margin: 0 0 10px;
 }
 
@@ -676,7 +689,7 @@ html, body {
     margin: 0 .5em 0 0;
 }
 
-.file-content .file-head .file-size{
+.file-content .file-head .file-size {
     font-size: 13px;
     color: #888;
     margin-left: 1em;
@@ -932,7 +945,7 @@ html, body {
     color: #888;
 }
 
-#gogs-source .file-content.diff-file-box {
+#source .file-content.diff-file-box {
     margin-bottom: 20px;
 }
 

+ 5 - 5
public/js/app.js

@@ -243,7 +243,7 @@ function initCore() {
 
 function initRegister() {
     $.getScript("/js/jquery.validate.min.js", function () {
-        Gogits.validateForm("#gogs-login-card", {
+        Gogits.validateForm("#login-card", {
             rules: {
                 "username": {
                     required: true,
@@ -268,7 +268,7 @@ function initRegister() {
 }
 
 function initUserSetting() {
-    $('#gogs-ssh-keys .delete').confirmation({
+    $('#ssh-keys .delete').confirmation({
         singleton: true,
         onConfirm: function (e, $this) {
             Gogits.ajaxDelete("", {"id": $this.data("del")}, function (json) {
@@ -303,7 +303,7 @@ function initRepository() {
 
     // watching script
     (function () {
-        var $watch = $('#gogs-repo-watching'),
+        var $watch = $('#repo-watching'),
             watchLink = $watch.data("watch"),
             unwatchLink = $watch.data("unwatch");
         $watch.on('click', '.to-watch',function () {
@@ -354,14 +354,14 @@ function initRepository() {
 (function ($) {
     $(function () {
         initCore();
-        var body = $("#gogs-body");
+        var body = $("#body");
         if (body.data("page") == "user-signup") {
             initRegister();
         }
         if (body.data("page") == "user") {
             initUserSetting();
         }
-        if ($('.gogs-repo-nav').length) {
+        if ($('.repo-nav').length) {
             initRepository();
         }
     });

+ 13 - 0
routers/install.go

@@ -0,0 +1,13 @@
+// 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 routers
+
+import "github.com/gogits/gogs/modules/middleware"
+
+func Install(ctx *middleware.Context){
+	ctx.Data["PageIsInstall"] = true
+	ctx.Data["Title"] = "Install"
+	ctx.HTML(200,"install")
+}

+ 1 - 0
routers/repo/issue.go

@@ -45,6 +45,7 @@ func CreateIssue(ctx *middleware.Context, params martini.Params, form auth.Creat
 	}
 
 	ctx.Data["Title"] = "Create issue"
+	ctx.Data["IsRepoToolbarIssues"] = true
 
 	if ctx.Req.Method == "GET" {
 		ctx.HTML(200, "issue/create")

+ 53 - 34
serve.go

@@ -13,6 +13,7 @@ import (
 	"os/exec"
 	"strconv"
 	"strings"
+	"time"
 
 	"github.com/codegangsta/cli"
 	"github.com/gogits/gogs/modules/log"
@@ -45,8 +46,10 @@ gogs serv provide access auth for repositories`,
 }
 
 func init() {
+	level := "0"
 	os.MkdirAll("log", os.ModePerm)
-	log.NewLogger(10000, "file", fmt.Sprintf(`{"filename":"%s"}`, "log/serv.log"))
+	log.NewLogger(10000, "file", fmt.Sprintf(`{"level":%s,"filename":"%s"}`, level, "log/serv.log"))
+	log.Info("start logging...")
 }
 
 func parseCmd(cmd string) (string, string) {
@@ -109,25 +112,32 @@ func runServ(k *cli.Context) {
 		repoName = repoName[:len(repoName)-4]
 	}
 
+	isWrite := In(verb, COMMANDS_WRITE)
+	isRead := In(verb, COMMANDS_READONLY)
+
 	repo, err := models.GetRepositoryByName(user.Id, repoName)
 	var isExist bool = true
 	if err != nil {
 		if err == models.ErrRepoNotExist {
 			isExist = false
+			if isRead {
+				println("Repository", user.Name+"/"+repoName, "is not exist")
+				return
+			}
 		} else {
-			println("Unavilable repository", err)
+			println("Get repository error:", err)
+			log.Error(err.Error())
 			return
 		}
 	}
 
-	isWrite := In(verb, COMMANDS_WRITE)
-	isRead := In(verb, COMMANDS_READONLY)
-
+	// access check
 	switch {
 	case isWrite:
 		has, err := models.HasAccess(user.Name, repoName, models.AU_WRITABLE)
 		if err != nil {
 			println("Inernel error:", err)
+			log.Error(err.Error())
 			return
 		}
 		if !has {
@@ -138,12 +148,14 @@ func runServ(k *cli.Context) {
 		has, err := models.HasAccess(user.Name, repoName, models.AU_READABLE)
 		if err != nil {
 			println("Inernel error")
+			log.Error(err.Error())
 			return
 		}
 		if !has {
 			has, err = models.HasAccess(user.Name, repoName, models.AU_WRITABLE)
 			if err != nil {
 				println("Inernel error")
+				log.Error(err.Error())
 				return
 			}
 		}
@@ -156,28 +168,30 @@ func runServ(k *cli.Context) {
 		return
 	}
 
+	var rep *git.Repository
+	repoPath := models.RepoPath(user.Name, repoName)
 	if !isExist {
-		if isRead {
-			println("Repository", user.Name+"/"+repoName, "is not exist")
-			return
-		} else if isWrite {
-			_, err := models.CreateRepository(user, repoName, "", "", "", false, true)
+		if isWrite {
+			_, err = models.CreateRepository(user, repoName, "", "", "", false, true)
 			if err != nil {
 				println("Create repository failed")
+				log.Error(err.Error())
 				return
 			}
 		}
 	}
 
-	rep, err := git.OpenRepository(models.RepoPath(user.Name, repoName))
-	if err != nil {
-		println(err.Error())
-		return
-	}
+		rep, err = git.OpenRepository(repoPath)
+		if err != nil {
+			println("OpenRepository failed:", err.Error())
+			log.Error(err.Error())
+			return
+		}
 
 	refs, err := rep.AllReferencesMap()
 	if err != nil {
-		println(err.Error())
+		println("Get All References failed:", err.Error())
+		log.Error(err.Error())
 		return
 	}
 
@@ -194,17 +208,17 @@ func runServ(k *cli.Context) {
 
 	if err = gitcmd.Run(); err != nil {
 		println("execute command error:", err.Error())
+		log.Error(err.Error())
+		return
 	}
 
-	if !strings.HasPrefix(cmd, "git-receive-pack") {
+	if isRead {
 		return
 	}
 
-	// update
-	//w, _ := os.Create("serve.log")
-	//defer w.Close()
-	//log.SetOutput(w)
+	time.Sleep(time.Second)
 
+	// find push reference name
 	var t = "ok refs/heads/"
 	var i int
 	var refname string
@@ -220,24 +234,31 @@ func runServ(k *cli.Context) {
 			refname = l[idx+len(t):]
 		}
 	}
+	if refname == "" {
+		println("No find any reference name:", b.String())
+		return
+	}
+
 	var ref *git.Reference
 	var ok bool
-
 	var l *list.List
 	//log.Info("----", refname, "-----")
 	if ref, ok = refs[refname]; !ok {
+		// for new branch
 		refs, err = rep.AllReferencesMap()
 		if err != nil {
-			println(err.Error())
+			println("Get All References failed:", err.Error())
+			log.Error(err.Error())
 			return
 		}
 		if ref, ok = refs[refname]; !ok {
-			log.Trace("unknow reference name -", refname, "-", b.String())
+			log.Error("unknow reference name -", refname, "-", b.String())
 			return
 		}
 		l, err = ref.AllCommits()
 		if err != nil {
-			println(err.Error())
+			println("Get All Commits failed:", err.Error())
+			log.Error(err.Error())
 			return
 		}
 	} else {
@@ -246,20 +267,23 @@ func runServ(k *cli.Context) {
 		//log.Info("00000", ref.Oid.String())
 		last, err = ref.LastCommit()
 		if err != nil {
-			println(err.Error())
+			println("Get last commit failed:", err.Error())
+			log.Error(err.Error())
 			return
 		}
 
 		ref2, err := rep.LookupReference(ref.Name)
 		if err != nil {
-			println(err.Error())
+			println("look up reference failed:", err.Error())
+			log.Error(err.Error())
 			return
 		}
 
 		//log.Info("11111", ref2.Oid.String())
 		before, err := ref2.LastCommit()
 		if err != nil {
-			println(err.Error())
+			println("Get last commit failed:", err.Error())
+			log.Error(err.Error())
 			return
 		}
 		//log.Info("----", before.Id(), "-----", last.Id())
@@ -280,13 +304,8 @@ func runServ(k *cli.Context) {
 		repo.Id, repoName, refname, &base.PushCommits{l.Len(), commits}); err != nil {
 		log.Error("runUpdate.models.CommitRepoAction: %v", err, commits)
 	} else {
-		//log.Info("refname", refname)
-		//log.Info("Listen: %v", cmd)
-		//fmt.Println("...", cmd)
-
-		//runUpdate(k)
 		c := exec.Command("git", "update-server-info")
-		c.Dir = models.RepoPath(user.Name, repoName)
+		c.Dir = repoPath
 		err := c.Run()
 		if err != nil {
 			log.Error("update-server-info: %v", err)

+ 2 - 2
templates/admin/config.tmpl

@@ -1,8 +1,8 @@
 {{template "base/head" .}}
 {{template "base/navbar" .}}
-<div id="gogs-body" class="container" data-page="admin">
+<div id="body" class="container" data-page="admin">
     {{template "admin/nav" .}}
-    <div id="gogs-admin-container" class="col-md-9">
+    <div id="admin-container" class="col-md-9">
         <div class="panel panel-default">
             <div class="panel-heading">
                 Server Configuration

+ 2 - 2
templates/admin/dashboard.tmpl

@@ -1,8 +1,8 @@
 {{template "base/head" .}}
 {{template "base/navbar" .}}
-<div id="gogs-body" class="container" data-page="admin">
+<div id="body" class="container" data-page="admin">
     {{template "admin/nav" .}}
-    <div id="gogs-admin-container" class="col-md-9">
+    <div id="admin-container" class="col-md-9">
         <div class="panel panel-default">
             <div class="panel-heading">
                 Statistic

+ 1 - 1
templates/admin/nav.tmpl

@@ -1,4 +1,4 @@
-<div id="gogs-user-setting-nav" class="col-md-3 gogs-admin-nav">
+<div id="user-setting-nav" class="col-md-3 admin-nav">
     <ul class="list-group" data-init="tabs">
         <li class="list-group-item{{if .PageIsDashboard}} active{{end}}"><a href="/admin"><i class="fa fa-tachometer fa-lg"></i> Dashboard</a></li>
         <li class="list-group-item{{if .PageIsUsers}} active{{end}}"><a href="/admin/users"><i class="fa fa-users fa-lg"></i> Users</a></li>

+ 2 - 2
templates/admin/repos.tmpl

@@ -1,8 +1,8 @@
 {{template "base/head" .}}
 {{template "base/navbar" .}}
-<div id="gogs-body" class="container" data-page="admin">
+<div id="body" class="container" data-page="admin">
     {{template "admin/nav" .}}
-    <div id="gogs-admin-container" class="col-md-9">
+    <div id="admin-container" class="col-md-9">
         <div class="panel panel-default">
             <div class="panel-heading">
                 Repository Management

+ 2 - 2
templates/admin/users.tmpl

@@ -1,8 +1,8 @@
 {{template "base/head" .}}
 {{template "base/navbar" .}}
-<div id="gogs-body" class="container" data-page="admin">
+<div id="body" class="container" data-page="admin">
     {{template "admin/nav" .}}
-    <div id="gogs-admin-container" class="col-md-9">
+    <div id="admin-container" class="col-md-9">
         <div class="panel panel-default">
             <div class="panel-heading">
                 User Management

+ 2 - 2
templates/admin/users/edit.tmpl

@@ -1,8 +1,8 @@
 {{template "base/head" .}}
 {{template "base/navbar" .}}
-<div id="gogs-body" class="container" data-page="admin">
+<div id="body" class="container" data-page="admin">
     {{template "admin/nav" .}}
-    <div id="gogs-admin-container" class="col-md-9">
+    <div id="admin-container" class="col-md-9">
         <div class="panel panel-default">
             <div class="panel-heading">
                 Edit Account

+ 2 - 2
templates/admin/users/new.tmpl

@@ -1,8 +1,8 @@
 {{template "base/head" .}}
 {{template "base/navbar" .}}
-<div id="gogs-body" class="container" data-page="admin">
+<div id="body" class="container" data-page="admin">
     {{template "admin/nav" .}}
-    <div id="gogs-admin-container" class="col-md-9">
+    <div id="admin-container" class="col-md-9">
         <div class="panel panel-default">
             <div class="panel-heading">
                 New Account

+ 13 - 13
templates/base/navbar.tmpl

@@ -1,25 +1,25 @@
-<div class="gogs-masthead navbar" id="masthead">
+<div class="masthead navbar" id="masthead">
     <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 .PageIsHelp}} active{{end}}" href="/help">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>
-            <a id="gogs-nav-avatar" class="gogs-nav-item navbar-right{{if .PageIsUserProfile}} active{{end}}" href="{{.SignedUser.HomeLink}}" data-toggle="tooltip" data-placement="bottom" title="{{.SignedUserName}}">
+        <nav class="nav">
+            <a id="nav-logo" class="nav-item{{if .PageIsHome}} active{{end}}" href="/"><img src="/img/favicon.png" alt="Gogs Logo" id="logo"></a>
+            <a class="nav-item{{if .PageIsUserDashboard}} active{{end}}" href="/">Dashboard</a>
+            <a class="nav-item{{if .PageIsHelp}} active{{end}}" href="/help">Help</a>{{if .IsSigned}}
+            <a id="nav-out" class="nav-item navbar-right navbar-btn btn btn-danger" href="/user/logout/"><i class="fa fa-power-off fa-lg"></i></a>
+            <a id="nav-avatar" class="nav-item navbar-right{{if .PageIsUserProfile}} active{{end}}" href="{{.SignedUser.HomeLink}}" data-toggle="tooltip" data-placement="bottom" title="{{.SignedUserName}}">
                 <img src="{{.SignedUser.AvatarLink}}?s=28" alt="user-avatar" title="username"/>
             </a>
-            <a class="navbar-right gogs-nav-item{{if .PageIsNewRepo}} active{{end}}" 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{{if .PageIsUserSetting}} active{{end}}" href="/user/setting"  data-toggle="tooltip" data-placement="bottom" title="Setting"><i class="fa fa-cogs fa-lg"></i></a>
-            {{if .IsAdmin}}<a class="navbar-right gogs-nav-item{{if .PageIsAdmin}} active{{end}}" href="/admin"  data-toggle="tooltip" data-placement="bottom" title="Admin"><i class="fa fa-gear fa-lg"></i></a>{{end}}
-            {{else}}<a id="gogs-nav-signin" class="gogs-nav-item navbar-right navbar-btn btn btn-danger" href="/user/login/">Sign In</a>
-            <a id="gogs-nav-signup" class="gogs-nav-item navbar-right" href="/user/sign_up/">Sign Up</a>{{end}}
+            <a class="navbar-right nav-item{{if .PageIsNewRepo}} active{{end}}" 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 nav-item{{if .PageIsUserSetting}} active{{end}}" href="/user/setting"  data-toggle="tooltip" data-placement="bottom" title="Setting"><i class="fa fa-cogs fa-lg"></i></a>
+            {{if .IsAdmin}}<a class="navbar-right nav-item{{if .PageIsAdmin}} active{{end}}" href="/admin"  data-toggle="tooltip" data-placement="bottom" title="Admin"><i class="fa fa-gear fa-lg"></i></a>{{end}}
+            {{else}}<a id="nav-signin" class="nav-item navbar-right navbar-btn btn btn-danger" href="/user/login/">Sign In</a>
+            <a id="nav-signup" class="nav-item navbar-right" href="/user/sign_up/">Sign Up</a>{{end}}
         </nav>
     </div>
 </div>
 <!--<nav class="navbar navbar-inverse navbar-fixed-top">
 	<div class="container">
 		<div class="navbar-header">
-			<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#gogs-navbar-collapse">
+			<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapse">
 				<i class="fa fa-bars"></i>
 			</button>
 			<a class="navbar-brand" href="/"><img src="/img/favicon.png" alt="Gogs Logo"></a>

+ 2 - 2
templates/help.tmpl

@@ -1,11 +1,11 @@
 {{template "base/head" .}}
 {{template "base/navbar" .}}
-<div id="gogs-body-nav">
+<div id="body-nav">
     <div class="container">
         <h3>Help</h3>
     </div>
 </div>
-<div id="gogs-body" class="container" data-page="user">
+<div id="body" class="container" data-page="user">
     {{if .HasInfo}}<div class="alert alert-info">{{.InfoMsg}}</div>{{end}}
 </div>
 {{template "base/footer" .}}

+ 1 - 1
templates/home.tmpl

@@ -1,6 +1,6 @@
 {{template "base/head" .}}
 {{template "base/navbar" .}}
-<div id="gogs-body" class="container">
+<div id="body" class="container">
 	Welcome to the land of Gogs! There will be some indroduction!
 </div>
 {{template "base/footer" .}}

+ 70 - 0
templates/install.tmpl

@@ -0,0 +1,70 @@
+{{template "base/head" .}}
+<div id="body" class="container">
+    <form action="/install" method="post" class="form-horizontal card" id="install-card">
+        {{.CsrfTokenHtml}}
+        <h3>Install Steps</h3>
+        <div class="alert alert-danger form-error{{if .HasError}}{{else}} hidden{{end}}">{{.ErrorMsg}}</div>
+        <p class="help-block text-center">GoGits need MySQL or PostgreSQL server</p>
+        <div class="form-group {{if .Err_User}}has-error has-feedback{{end}}">
+            <label class="col-md-3 control-label"><strong>MySQL </strong>Host: </label>
+            <div class="col-md-8">
+                <input name="host" class="form-control" placeholder="Type mysql server ip or domain" value="localhost" required="required">
+            </div>
+        </div>
+        <div class="form-group {{if .Err_User}}has-error has-feedback{{end}}">
+            <label class="col-md-3 control-label">Port: </label>
+            <div class="col-md-8">
+                <input name="port" class="form-control" placeholder="Type mysql server port" value="3306" required="required">
+            </div>
+        </div>
+        <div class="form-group {{if .Err_User}}has-error has-feedback{{end}}">
+            <label class="col-md-3 control-label">User: </label>
+            <div class="col-md-8">
+                <input name="user" class="form-control" placeholder="Type mysql username" required="required">
+            </div>
+        </div>
+        <div class="form-group {{if .Err_Password}}has-error has-feedback{{end}}">
+            <label class="col-md-3 control-label">Password: </label>
+            <div class="col-md-8">
+                <input name="passwd" type="password" class="form-control" placeholder="Type mysql password" required="required">
+            </div>
+        </div>
+        <div class="form-group {{if .Err_Password}}has-error has-feedback{{end}}">
+            <label class="col-md-3 control-label">Database: </label>
+            <div class="col-md-8">
+                <input name="database" type="text" class="form-control" placeholder="Type mysql database name" value="gogs" required="required">
+                <p class="help-block">Recommend use INNODB engine with utf8_general_ci charset.</p>
+            </div>
+        </div>
+
+        <div class="form-group">
+            <div class="col-md-8 col-md-offset-3">
+                   <button class="btn btn-sm btn-info">Test Connection</button>
+            </div>
+        </div>
+
+        <hr/>
+
+        <p class="help-block text-center">General settings for GoGits</p>
+
+        <div class="form-group {{if .Err_Password}}has-error has-feedback{{end}}">
+            <label class="col-md-3 control-label">Repository Path: </label>
+            <div class="col-md-8">
+                <input name="repo-path" type="text" class="form-control" placeholder="Type your repository directory" value="/var/gogs/repostiory" required="required">
+                <p class="help-block">The git copy of each repository is saved in this directory.</p>
+            </div>
+        </div>
+        <div class="form-group {{if .Err_Password}}has-error has-feedback{{end}}">
+            <label class="col-md-3 control-label">System User: </label>
+            <div class="col-md-8">
+                <input name="system-user" type="text" class="form-control" placeholder="Type mysql password" value="root" required="required">
+                <p class="help-block">The user has access to visit and run GoGits.</p>
+            </div>
+        </div>
+        <hr/>
+        <div class="form-group text-center">
+            <a class="btn btn-danger btn-lg">Install GoGits</a>
+        </div>
+    </form>
+</div>
+{{template "base/footer" .}}

+ 10 - 0
templates/issue/create.tmpl

@@ -0,0 +1,10 @@
+{{template "base/head" .}}
+{{template "base/navbar" .}}
+{{template "repo/nav" .}}
+{{template "repo/toolbar" .}}
+<div id="body" class="container">
+    <div id="source">
+        new-issues
+    </div>
+</div>
+{{template "base/footer" .}}

+ 2 - 2
templates/repo/branches.tmpl

@@ -2,8 +2,8 @@
 {{template "base/navbar" .}}
 {{template "repo/nav" .}}
 {{template "repo/toolbar" .}}
-<div id="gogs-body" class="container">
-    <div id="gogs-source">
+<div id="body" class="container">
+    <div id="source">
         <div class="panel panel-default branch-box info-box">
             <div class="panel-heading info-head">
                 <h4>Branches</h4>

+ 2 - 2
templates/repo/commits.tmpl

@@ -2,8 +2,8 @@
 {{template "base/navbar" .}}
 {{template "repo/nav" .}}
 {{template "repo/toolbar" .}}
-<div id="gogs-body" class="container">
-    <div id="gogs-commits">
+<div id="body" class="container">
+    <div id="commits">
         <div class="panel panel-default commit-box info-box">
             <div class="panel-heading info-head">
                 <div class="search pull-right form">

+ 2 - 2
templates/repo/create.tmpl

@@ -1,7 +1,7 @@
 {{template "base/head" .}}
 {{template "base/navbar" .}}
-<div class="container" id="gogs-body">
-    <form action="/repo/create" method="post" class="form-horizontal gogs-card" id="gogs-repo-create">
+<div class="container" id="body">
+    <form action="/repo/create" method="post" class="form-horizontal card" id="repo-create">
         {{.CsrfTokenHtml}}
         <h3>Create New Repository</h3>
         <div class="alert alert-danger form-error{{if .HasError}}{{else}} hidden{{end}}">{{.ErrorMsg}}</div>

+ 2 - 2
templates/repo/diff.tmpl

@@ -2,8 +2,8 @@
 {{template "base/navbar" .}}
 {{template "repo/nav" .}}
 {{template "repo/toolbar" .}}
-<div id="gogs-body" class="container" data-page="repo">
-    <div id="gogs-source">
+<div id="body" class="container" data-page="repo">
+    <div id="source">
         <div class="panel panel-info diff-box diff-head-box">
             <div class="panel-heading">
                 <a class="pull-right btn btn-primary btn-sm" href="#commit-source">Browse Source</a>

+ 3 - 2
templates/repo/issues.tmpl

@@ -2,8 +2,9 @@
 {{template "base/navbar" .}}
 {{template "repo/nav" .}}
 {{template "repo/toolbar" .}}
-<div id="gogs-body" class="container">
-    <div id="gogs-source">
+<div id="body" class="container">
+    <div id="source">
+        issues
     </div>
 </div>
 {{template "base/footer" .}}

+ 1 - 1
templates/repo/list.tmpl

@@ -1,6 +1,6 @@
 {{template "base/head" .}}
 {{template "base/navbar" .}}
-<div class="container" id="gogs-body">
+<div class="container" id="body">
 	<ul>
 	{{range .Repos}}
 		<li>{{.Name}} stars: {{.NumStars}} forks: {{.NumForks}} watches:{{.NumWatchs}}</li>

+ 4 - 4
templates/repo/nav.tmpl

@@ -1,4 +1,4 @@
-<div id="gogs-body-nav" class="gogs-repo-nav">
+<div id="body-nav" class="repo-nav">
     <div class="container">
         <div class="row">
             <div class="col-md-7">
@@ -7,13 +7,13 @@
             </div>
             <div class="col-md-5 actions text-right clone-group-btn">
                 {{if not .IsBareRepo}}
-                <!--<div class="btn-group" id="gogs-repo-clone">
+                <!--<div class="btn-group" id="repo-clone">
                     <button type="button" class="btn btn-default"><i class="fa fa-download fa-lg fa-m"></i></button>
                     <button type="button" class="btn btn-default dropdown-toggle" data-container="body" data-toggle="popover" data-placement="bottom" data-content="<label>SSH:</label><div class='input-group'><input type='text' class='form-control' value='{{.CloneLink.SSH}}'></div>" data-html="1">
                         <span class="caret"></span>
                     </button>
                 </div>-->
-                <div class="btn-group" id="gogs-repo-clone">
+                <div class="btn-group" id="repo-clone">
                     <button type="button" class="btn btn-default"><i class="fa fa-download fa-lg fa-m"></i></button>
                     <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
                         <span class="caret"></span>
@@ -36,7 +36,7 @@
                         </div>
                     </div>
                 </div>
-                <div class="btn-group {{if .IsRepositoryWatching}}watching{{else}}no-watching{{end}}" id="gogs-repo-watching" data-watch="/{{.Owner.Name}}/{{.Repository.Name}}/action/watch" data-unwatch="/{{.Owner.Name}}/{{.Repository.Name}}/action/unwatch">
+                <div class="btn-group {{if .IsRepositoryWatching}}watching{{else}}no-watching{{end}}" id="repo-watching" data-watch="/{{.Owner.Name}}/{{.Repository.Name}}/action/watch" data-unwatch="/{{.Owner.Name}}/{{.Repository.Name}}/action/unwatch">
                     {{if .IsRepositoryWatching}}
                     <button type="button" class="btn btn-default"><i class="fa fa-eye fa-lg fa-m"></i></button>
                     {{else}}

+ 2 - 2
templates/repo/pulls.tmpl

@@ -2,8 +2,8 @@
 {{template "base/navbar" .}}
 {{template "repo/nav" .}}
 {{template "repo/toolbar" .}}
-<div id="gogs-body" class="container">
-    <div id="gogs-source">
+<div id="body" class="container">
+    <div id="source">
     </div>
 </div>
 {{template "base/footer" .}}

+ 3 - 3
templates/repo/setting.tmpl

@@ -2,8 +2,8 @@
 {{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">
+<div id="body" class="container">
+    <div id="user-setting-nav" class="col-md-3">
         <ul class="list-group" data-init="tabs">
             <li class="list-group-item active"><a href="/{{.Owner.Name}}/{{.Repository.Name}}/settings">Options</a></li>
             <!--<li class="list-group-item"><a href="#">Collaborators</a></li>
@@ -11,7 +11,7 @@
         </ul>
     </div>
 
-    <div id="gogs-repo-setting-container" class="col-md-9">
+    <div id="repo-setting-container" class="col-md-9">
         {{if .IsSuccess}}<p class="alert alert-success">Repository option has been successfully updated.</p>{{else if .HasError}}<p class="alert alert-danger form-error">{{.ErrorMsg}}</p>{{end}}
         <div class="panel panel-default">
             <div class="panel-heading">

+ 2 - 2
templates/repo/single.tmpl

@@ -2,8 +2,8 @@
 {{template "base/navbar" .}}
 {{template "repo/nav" .}}
 {{template "repo/toolbar" .}}
-<div id="gogs-body" class="container">
-    <div id="gogs-source">
+<div id="body" class="container">
+    <div id="source">
         {{if .IsBareRepo}}
         {{template "repo/single_bare" .}}
         {{else}}

+ 1 - 1
templates/repo/toolbar.tmpl

@@ -1,4 +1,4 @@
-<div id="gogs-repo-toolbar">
+<div id="repo-toolbar">
     <div class="container">
         <nav class="navbar navbar-toolbar navbar-default" role="navigation">
             <div class="collapse navbar-collapse">

+ 1 - 1
templates/status/200.tmpl

@@ -1,6 +1,6 @@
 {{template "base/head" .}}
 {{template "base/navbar" .}}
-<div id="gogs-body" class="container">
+<div id="body" class="container">
 	<p>An error is occurred : {{.ErrorMsg}}</p>
 	<p>Application Version: {{AppVer}}</p>
 </div>

+ 1 - 1
templates/status/404.tmpl

@@ -1,6 +1,6 @@
 {{template "base/head" .}}
 {{template "base/navbar" .}}
-<div id="gogs-body" class="container text-center">
+<div id="body" class="container text-center">
     <p style="margin-top: 80px"><img src="/img/404.png" alt="404"/></p>
     <hr/>
     <p>Application Version: {{AppVer}}</p>

+ 1 - 1
templates/status/500.tmpl

@@ -1,6 +1,6 @@
 {{template "base/head" .}}
 {{template "base/navbar" .}}
-<div id="gogs-body" class="container text-center">
+<div id="body" class="container text-center">
     <p style="margin-top: 80px"><img src="/img/500.png" alt="404"/></p>
     <hr/>
     <p>An error is occurred : {{.ErrorMsg}}</p>

+ 2 - 2
templates/user/active.tmpl

@@ -1,7 +1,7 @@
 {{template "base/head" .}}
 {{template "base/navbar" .}}
-<div id="gogs-body" class="container">
-    <form action="/user/activate" method="post" class="form-horizontal gogs-card" id="gogs-login-card">
+<div id="body" class="container">
+    <form action="/user/activate" method="post" class="form-horizontal card" id="login-card">
         {{.CsrfTokenHtml}}
         <h3>Activate Your Account</h3>
         {{if .IsActivatePage}}

+ 4 - 4
templates/user/dashboard.tmpl

@@ -1,6 +1,6 @@
 {{template "base/head" .}}
 {{template "base/navbar" .}}
-<div id="gogs-body-nav">
+<div id="body-nav">
     <div class="container">
         <ul class="nav nav-pills pull-right">
             <li class="active"><a href="/">Feed</a></li>
@@ -11,9 +11,9 @@
         <h3>News Feed</h3>
     </div>
 </div>
-<div id="gogs-body" class="container" data-page="user">
+<div id="body" class="container" data-page="user">
     {{if .HasInfo}}<div class="alert alert-info">{{.InfoMsg}}</div>{{end}}
-    <div id="gogs-feed-left" class="col-md-8">
+    <div id="feed-left" class="col-md-8">
         <ul class="list-unstyled activity-list">
         {{range .Feeds}}
             <li>
@@ -26,7 +26,7 @@
         {{end}}
         </ul>
     </div>
-    <div id="gogs-feed-right" class="col-md-4">
+    <div id="feed-right" class="col-md-4">
         <div class="panel panel-default repo-panel">
             <div class="panel-heading">Your Repositories
                 <a class="btn btn-success pull-right btn-sm" href="/repo/create"><i class="fa fa-plus-square"></i>New Repo</a>

+ 5 - 5
templates/user/delete.tmpl

@@ -1,7 +1,7 @@
 {{template "base/head" .}}
 {{template "base/navbar" .}}
-<div id="gogs-body" class="container" data-page="user">
-    <div id="gogs-user-setting-nav" class="col-md-3">
+<div id="body" class="container" data-page="user">
+    <div id="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>
@@ -12,16 +12,16 @@
             <li class="list-group-item list-group-item-success"><a href="/user/delete">Delete Account</a></li>
         </ul>
     </div>
-    <div id="gogs-user-setting-container" class="col-md-9">
+    <div id="user-setting-container" class="col-md-9">
         <h4>Delete Account</h4>
         <p class="alert alert-danger">{{if not .HasError}}The operation will delete your account permanently. Sorry to see you go, but we know you'll back soon.{{else}}{{.ErrorMsg}}{{end}}</p>
         <div class="form-group">
-            <button type="submit" class="btn btn-danger btn-lg" href="#delete-account-modal" id="gogs-delete-account" data-toggle="modal">Delete Account</button>
+            <button type="submit" class="btn btn-danger btn-lg" href="#delete-account-modal" id="delete-account" data-toggle="modal">Delete Account</button>
         </div>
     </div>
     <div class="modal fade" id="delete-account-modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
         <div class="modal-dialog">
-            <form action="/user/delete" method="post" class="modal-content" id="gogs-user-delete">
+            <form action="/user/delete" method="post" class="modal-content" id="user-delete">
                 {{.CsrfTokenHtml}}
                 <div class="modal-header">
                     <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>

+ 2 - 2
templates/user/issues.tmpl

@@ -1,6 +1,6 @@
 {{template "base/head" .}}
 {{template "base/navbar" .}}
-<div id="gogs-body-nav">
+<div id="body-nav">
     <div class="container">
         <ul class="nav nav-pills pull-right">
             <li><a href="/">Feed</a></li>
@@ -11,7 +11,7 @@
         <h3>Issues</h3>
     </div>
 </div>
-<div id="gogs-body" class="container" data-page="user">
+<div id="body" class="container" data-page="user">
     {{if .HasInfo}}<div class="alert alert-info">{{.InfoMsg}}</div>{{end}}
 </div>
 {{template "base/footer" .}}

+ 2 - 2
templates/user/notification.tmpl

@@ -1,8 +1,8 @@
 {{template "base/head" .}}
 {{template "base/navbar" .}}
-<div id="gogs-body" class="container" data-page="user">
+<div id="body" class="container" data-page="user">
     {{template "user/setting_nav" .}}
-    <div id="gogs-user-setting-container" class="col-md-9">
+    <div id="user-setting-container" class="col-md-9">
         <h4>Notification</h4>
     </div>
 </div>

+ 4 - 4
templates/user/password.tmpl

@@ -1,11 +1,11 @@
 {{template "base/head" .}}
 {{template "base/navbar" .}}
-<div id="gogs-body" class="container" data-page="user">
+<div id="body" class="container" data-page="user">
     {{template "user/setting_nav" .}}
-    <div id="gogs-user-setting-container" class="col-md-9">
-        <div id="gogs-setting-pwd">
+    <div id="user-setting-container" class="col-md-9">
+        <div id="setting-pwd">
             <h4>Password</h4>
-            <form class="form-horizontal" id="gogs-password-form" method="post" action="/user/setting/password">
+            <form class="form-horizontal" id="password-form" method="post" action="/user/setting/password">
             {{.CsrfTokenHtml}}
             {{if .IsSuccess}}
                 <p class="alert alert-success">Password is changed successfully. You can now sign in via new password.</p>{{else if .HasError}}<p class="alert alert-danger form-error">{{.ErrorMsg}}</p>{{end}}

+ 6 - 6
templates/user/profile.tmpl

@@ -1,12 +1,12 @@
 {{template "base/head" .}}
 {{template "base/navbar" .}}
-<div id="gogs-body" class="container" data-page="user">
-    <div id="gogs-user-profile" class="col-md-3">
+<div id="body" class="container" data-page="user">
+    <div id="user-profile" class="col-md-3">
         <div class="profile-avatar text-center">
             <a href="http://gravatar.com/emails/" class="center-block" data-toggle="tooltip" data-placement="bottom" title="Change your avatar at gravatar.com">
-                <img id="gogs-user-avatar" src="{{.Owner.AvatarLink}}?s=200" alt="user-avatar" title="{{.Owner.Name}}"/>
+                <img id="user-avatar" src="{{.Owner.AvatarLink}}?s=200" alt="user-avatar" title="{{.Owner.Name}}"/>
             </a>
-            <span id="gogs-user-name" class="center-block">{{.Owner.Name}}</span>
+            <span id="user-name" class="center-block">{{.Owner.Name}}</span>
         </div>
         <div class="profile-info">
             <ul class="list-group">
@@ -23,8 +23,8 @@
             </ul>
         </div>
     </div>
-    <div id="gogs-user-activity" class="col-md-9">
-        <ul class="nav nav-tabs" id="gogs-user-act-tabs" data-init="tabs">
+    <div id="user-activity" class="col-md-9">
+        <ul class="nav nav-tabs" id="user-act-tabs" data-init="tabs">
             <li{{if not .TabName}} class="active"{{end}}><a href="{{.Owner.HomeLink}}"><i class="fa fa-gittip"></i>Repositories</a></li>
             <li{{if eq .TabName "activity"}} class="active"{{end}}><a href="{{.Owner.HomeLink}}?tab=activity"><i class="fa fa-rss"></i>Public Activity</a></li>
         </ul>

+ 6 - 6
templates/user/publickey.tmpl

@@ -1,12 +1,12 @@
 {{template "base/head" .}}
 {{template "base/navbar" .}}
-<div id="gogs-body" class="container" data-page="user">
+<div id="body" class="container" data-page="user">
     {{template "user/setting_nav" .}}
-    <div id="gogs-user-setting-container" class="col-md-9">
-        <div id="gogs-ssh-keys">
+    <div id="user-setting-container" class="col-md-9">
+        <div id="ssh-keys">
             <h4>SSH Keys</h4>{{if .AddSSHKeySuccess}}
             <p class="alert alert-success">New SSH Key has been added !</p>{{else if .HasError}}<p class="alert alert-danger">{{.ErrorMsg}}</p>{{end}}
-            <ul id="gogs-ssh-keys-list" class="list-group">
+            <ul id="ssh-keys-list" class="list-group">
                 <li class="list-group-item"><span class="name">SSH Key's name</span></li>
                 {{range .Keys}}
                 <li class="list-group-item">
@@ -16,12 +16,12 @@
                 </li>
                 {{end}}
                 <li class="list-group-item">
-                    <a class="btn btn-link btn-primary" href="#ssh-add-modal" id="gogs-ssh-add" data-toggle="modal">Add SSH Key</a>
+                    <a class="btn btn-link btn-primary" href="#ssh-add-modal" id="ssh-add" data-toggle="modal">Add SSH Key</a>
                 </li>
             </ul>
             <div class="modal fade" id="ssh-add-modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
                 <div class="modal-dialog">
-                    <form class="modal-content form-horizontal" id="gogs-ssh-form" method="post" action="/user/setting/ssh/">
+                    <form class="modal-content form-horizontal" id="ssh-form" method="post" action="/user/setting/ssh/">
                         {{.CsrfTokenHtml}}
                         <div class="modal-header">
                             <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>

+ 2 - 2
templates/user/pulls.tmpl

@@ -1,6 +1,6 @@
 {{template "base/head" .}}
 {{template "base/navbar" .}}
-<div id="gogs-body-nav">
+<div id="body-nav">
     <div class="container">
         <ul class="nav nav-pills pull-right">
             <li><a href="/">Feed</a></li>
@@ -11,7 +11,7 @@
         <h3>Pull Requests</h3>
     </div>
 </div>
-<div id="gogs-body" class="container" data-page="user">
+<div id="body" class="container" data-page="user">
     {{if .HasInfo}}<div class="alert alert-info">{{.InfoMsg}}</div>{{end}}
 </div>
 {{template "base/footer" .}}

+ 2 - 2
templates/user/security.tmpl

@@ -1,8 +1,8 @@
 {{template "base/head" .}}
 {{template "base/navbar" .}}
-<div id="gogs-body" class="container" data-page="user">
+<div id="body" class="container" data-page="user">
     {{template "user/setting_nav" .}}
-    <div id="gogs-user-setting-container" class="col-md-9">
+    <div id="user-setting-container" class="col-md-9">
         <h4>Security</h4>
     </div>
 </div>

+ 4 - 4
templates/user/setting.tmpl

@@ -1,11 +1,11 @@
 {{template "base/head" .}}
 {{template "base/navbar" .}}
-<div id="gogs-body" class="container" data-page="user">
+<div id="body" class="container" data-page="user">
     {{template "user/setting_nav" .}}
-    <div id="gogs-user-setting-container" class="col-md-9">
-        <div id="gogs-setting-pwd">
+    <div id="user-setting-container" class="col-md-9">
+        <div id="setting-pwd">
             <h4>Account Profile</h4>
-            <form class="form-horizontal" id="gogs-password-form" method="post" action="/user/setting">
+            <form class="form-horizontal" id="password-form" method="post" action="/user/setting">
                 {{.CsrfTokenHtml}}
                 {{if .IsSuccess}}<p class="alert alert-success">Your profile has been successfully updated.</p>{{else if .HasError}}<p class="alert alert-danger form-error">{{.ErrorMsg}}</p>{{end}}
                 <p>Your Email will be public and used for Account related notifications and any web based operations made via the web.</p>

+ 1 - 1
templates/user/setting_nav.tmpl

@@ -1,4 +1,4 @@
-<div id="gogs-user-setting-nav" class="col-md-3">
+<div id="user-setting-nav" class="col-md-3">
     <h4>Account Setting</h4>
     <ul class="list-group">
         <li class="list-group-item{{if .IsUserPageSetting}} list-group-item-success{{end}}"><a href="/user/setting">Account Profile</a></li>

+ 3 - 3
templates/user/signin.tmpl

@@ -1,7 +1,7 @@
 {{template "base/head" .}}
 {{template "base/navbar" .}}
-<div class="container" id="gogs-body" data-page="user-signin">
-    <form action="/user/login" method="post" class="form-horizontal gogs-card" id="gogs-login-card">
+<div class="container" id="body" data-page="user-signin">
+    <form action="/user/login" method="post" class="form-horizontal card" id="login-card">
         {{.CsrfTokenHtml}}
         <h3>Log in</h3>
         <div class="alert alert-danger form-error{{if .HasError}}{{else}} hidden{{end}}">{{.ErrorMsg}}</div>
@@ -43,7 +43,7 @@
             </div>
         </div>
 
-        <div class="form-group text-center" id="gogs-social-login">
+        <div class="form-group text-center" id="social-login">
             <a class="btn btn-danger btn-lg">Register new account</a>
         </div>
     </form>

+ 2 - 2
templates/user/signup.tmpl

@@ -1,7 +1,7 @@
 {{template "base/head" .}}
 {{template "base/navbar" .}}
-<div class="container" id="gogs-body" data-page="user-signup">
-	<form action="/user/sign_up" method="post" class="form-horizontal gogs-card" id="gogs-login-card">
+<div class="container" id="body" data-page="user-signup">
+	<form action="/user/sign_up" method="post" class="form-horizontal card" id="login-card">
 		{{.CsrfTokenHtml}}
 		{{if .DisenableRegisteration}}
 		Sorry, registeration has been disenabled, you can only get account from administrator.

+ 2 - 2
templates/user/stars.tmpl

@@ -1,6 +1,6 @@
 {{template "base/head" .}}
 {{template "base/navbar" .}}
-<div id="gogs-body-nav">
+<div id="body-nav">
     <div class="container">
         <ul class="nav nav-pills pull-right">
             <li><a href="/">Feed</a></li>
@@ -11,7 +11,7 @@
         <h3>Stars</h3>
     </div>
 </div>
-<div id="gogs-body" class="container" data-page="user">
+<div id="body" class="container" data-page="user">
     {{if .HasInfo}}<div class="alert alert-info">{{.InfoMsg}}</div>{{end}}
 </div>
 {{template "base/footer" .}}

+ 1 - 0
web.go

@@ -90,6 +90,7 @@ func runWeb(*cli.Context) {
 
 	// Routers.
 	m.Get("/", ignSignIn, routers.Home)
+	m.Get("/install",routers.Install)
 	m.Get("/issues", reqSignIn, user.Issues)
 	m.Get("/pulls", reqSignIn, user.Pulls)
 	m.Get("/stars", reqSignIn, user.Stars)