1
0
Преглед на файлове

Web editor: temporarily disable upload and quick fix for edit and new

Try to merge into develop branch ASAP, then continue minor fixes afterwards.
Unknwon преди 10 години
родител
ревизия
4a19fd6441
променени са 9 файла, в които са добавени 292 реда и са изтрити 306 реда
  1. 2 2
      cmd/web.go
  2. 1 1
      public/config.codekit
  3. 144 224
      public/css/gogs.css
  4. 1 1
      public/js/gogs.js
  5. 107 0
      public/less/_repository.less
  6. 0 1
      routers/repo/view.go
  7. 0 43
      templates/repo/branch_dropdown.tmpl
  8. 31 28
      templates/repo/editor/edit.tmpl
  9. 6 6
      templates/repo/home.tmpl

+ 2 - 2
cmd/web.go

@@ -508,8 +508,8 @@ func runWeb(ctx *cli.Context) error {
 				Post(bindIgnErr(auth.UploadRepoFileForm{}), repo.UploadFilePost)
 			m.Post("/_delete/*", bindIgnErr(auth.DeleteRepoFileForm{}), repo.DeleteFilePost)
 			m.Post("/branches", bindIgnErr(auth.NewBranchForm{}), repo.NewBranchPost)
-			m.Post("/upload-file", repo.UploadFileToServer)
-			m.Post("/upload-remove", bindIgnErr(auth.RemoveUploadFileForm{}), repo.RemoveUploadFileFromServer)
+			// m.Post("/upload-file", repo.UploadFileToServer)
+			// m.Post("/upload-remove", bindIgnErr(auth.RemoveUploadFileForm{}), repo.RemoveUploadFileFromServer)
 		}, reqRepoWriter, context.RepoRef(), func(ctx *context.Context) {
 			if ctx.Repo.IsViewCommit {
 				ctx.Handle(404, "", nil)

+ 1 - 1
public/config.codekit

@@ -137,7 +137,7 @@
 		"outputPathIsOutsideProject": 0,
 		"outputPathIsSetByUser": 0,
 		"outputStyle": 1,
-		"syntaxCheckerStyle": 0
+		"syntaxCheckerStyle": 1
 		},
 	"\/js\/jquery-1.11.3.min.js": {
 		"fileType": 64,

+ 144 - 224
public/css/gogs.css

@@ -255,9 +255,6 @@ code.wrap {
 .ui.status.buttons .octicon {
   margin-right: 4px;
 }
-.ui.menu .item .octicon {
-  margin-right: 4px;
-}
 .ui.inline.delete-button {
   padding: 8px 15px;
   font-weight: normal;
@@ -1227,6 +1224,14 @@ footer .ui.language .menu {
 .repository.file.list .choose.reference .header .icon {
   font-size: 1.4em;
 }
+.repository.file.list #file-buttons {
+  font-weight: normal;
+  margin-top: -3px;
+  padding-right: 20px;
+}
+.repository.file.list #file-buttons .ui.button {
+  padding: 8px 10px;
+}
 .repository.file.list #repo-files-table thead th {
   padding-top: 8px;
   padding-bottom: 5px;
@@ -1263,63 +1268,93 @@ footer .ui.language .menu {
   font-size: 1em;
   margin-top: -2px;
 }
+.repository.file.list #file-content .header .file-actions {
+  padding-left: 20px;
+}
+.repository.file.list #file-content .header .file-actions .btn-octicon {
+  display: inline-block;
+  padding: 5px;
+  margin-left: 5px;
+  line-height: 1;
+  color: #767676;
+  vertical-align: middle;
+  background: transparent;
+  border: 0;
+  outline: none;
+}
+.repository.file.list #file-content .header .file-actions .btn-octicon:hover {
+  color: #4078c0;
+}
+.repository.file.list #file-content .header .file-actions .btn-octicon-danger:hover {
+  color: #bd2c00;
+}
+.repository.file.list #file-content .header .file-actions .btn-octicon.disabled {
+  color: #bbb;
+  cursor: default;
+}
+.repository.file.list #file-content .header .file-actions #delete-file-form {
+  display: inline-block;
+}
+.repository.file.list #file-content .view-raw {
+  padding: 5px;
+}
 .repository.file.list #file-content .view-raw * {
   max-width: 100%;
 }
 .repository.file.list #file-content .view-raw img {
   padding: 5px 5px 0 5px;
 }
-#file-content .code-view * {
+.repository.file.list #file-content .code-view * {
   font-size: 12px;
   font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
   line-height: 20px;
 }
-#file-content .code-view table {
+.repository.file.list #file-content .code-view table {
   width: 100%;
 }
-#file-content .code-view .lines-num {
+.repository.file.list #file-content .code-view .lines-num {
   vertical-align: top;
   text-align: right;
   color: #999;
   background: #f5f5f5;
   width: 1%;
 }
-#file-content .code-view .lines-num span {
+.repository.file.list #file-content .code-view .lines-num span {
   line-height: 20px;
   padding: 0 10px;
   cursor: pointer;
   display: block;
 }
-#file-content .code-view .lines-num,
-#file-content .code-view .lines-code {
+.repository.file.list #file-content .code-view .lines-num,
+.repository.file.list #file-content .code-view .lines-code {
   padding: 0;
 }
-#file-content .code-view .lines-num pre,
-#file-content .code-view .lines-code pre,
-#file-content .code-view .lines-num ol,
-#file-content .code-view .lines-code ol,
-#file-content .code-view .lines-num .hljs,
-#file-content .code-view .lines-code .hljs {
+.repository.file.list #file-content .code-view .lines-num pre,
+.repository.file.list #file-content .code-view .lines-code pre,
+.repository.file.list #file-content .code-view .lines-num ol,
+.repository.file.list #file-content .code-view .lines-code ol,
+.repository.file.list #file-content .code-view .lines-num .hljs,
+.repository.file.list #file-content .code-view .lines-code .hljs {
   background-color: white;
   margin: 0;
   padding: 0 !important;
 }
-#file-content .code-view .lines-num pre li,
-#file-content .code-view .lines-code pre li,
-#file-content .code-view .lines-num ol li,
-#file-content .code-view .lines-code ol li,
-#file-content .code-view .lines-num .hljs li,
-#file-content .code-view .lines-code .hljs li {
+.repository.file.list #file-content .code-view .lines-num pre li,
+.repository.file.list #file-content .code-view .lines-code pre li,
+.repository.file.list #file-content .code-view .lines-num ol li,
+.repository.file.list #file-content .code-view .lines-code ol li,
+.repository.file.list #file-content .code-view .lines-num .hljs li,
+.repository.file.list #file-content .code-view .lines-code .hljs li {
   padding-left: 5px;
   display: inline-block;
   width: 100%;
 }
-#file-content .code-view .lines-num pre li.active,
-#file-content .code-view .lines-code pre li.active,
-#file-content .code-view .lines-num ol li.active,
-#file-content .code-view .lines-code ol li.active,
-#file-content .code-view .lines-num .hljs li.active,
-#file-content .code-view .lines-code .hljs li.active {
+.repository.file.list #file-content .code-view .lines-num pre li.active,
+.repository.file.list #file-content .code-view .lines-code pre li.active,
+.repository.file.list #file-content .code-view .lines-num ol li.active,
+.repository.file.list #file-content .code-view .lines-code ol li.active,
+.repository.file.list #file-content .code-view .lines-num .hljs li.active,
+.repository.file.list #file-content .code-view .lines-code .hljs li.active {
   background: #ffffdd;
 }
 .repository.file.list .sidebar {
@@ -1328,6 +1363,85 @@ footer .ui.language .menu {
 .repository.file.list .sidebar .octicon {
   width: 16px;
 }
+.repository.file.editor .treepath {
+  width: 100%;
+}
+.repository.file.editor .treepath input {
+  vertical-align: middle;
+  box-shadow: rgba(0, 0, 0, 0.0745098) 0px 1px 2px inset;
+  width: inherit;
+  padding: 7px 8px;
+  margin-right: 5px;
+}
+.repository.file.editor .tabular.menu .octicon {
+  margin-right: 5px;
+}
+.repository.file.editor .CodeMirror.cm-s-default {
+  border-radius: 3px;
+  padding: 0 !important;
+}
+.repository.file.editor .commit-form-wrapper {
+  padding-left: 64px;
+}
+.repository.file.editor .commit-form-wrapper .commit-avatar {
+  float: left;
+  margin-left: -64px;
+  width: 3em;
+  height: auto;
+}
+.repository.file.editor .commit-form-wrapper .commit-form {
+  position: relative;
+  padding: 15px;
+  margin-bottom: 10px;
+  border: 1px solid #ddd;
+  border-radius: 3px;
+}
+.repository.file.editor .commit-form-wrapper .commit-form:before,
+.repository.file.editor .commit-form-wrapper .commit-form:after {
+  right: 100%;
+  top: 20px;
+  border: solid transparent;
+  content: " ";
+  height: 0;
+  width: 0;
+  position: absolute;
+  pointer-events: none;
+}
+.repository.file.editor .commit-form-wrapper .commit-form:before {
+  border-right-color: #D4D4D5;
+  border-width: 9px;
+  margin-top: -9px;
+}
+.repository.file.editor .commit-form-wrapper .commit-form:after {
+  border-right-color: #f7f7f7;
+  border-width: 8px;
+  margin-top: -8px;
+}
+.repository.file.editor .commit-form-wrapper .commit-form:after {
+  border-right-color: #fff;
+}
+.repository.file.editor .commit-form-wrapper .commit-form .quick-pull-choice .branch-name {
+  display: inline-block;
+  padding: 3px 6px;
+  font: 12px Consolas, "Liberation Mono", Menlo, Courier, monospace;
+  color: rgba(0, 0, 0, 0.65);
+  background-color: rgba(209, 227, 237, 0.45);
+  border-radius: 3px;
+}
+.repository.file.editor .commit-form-wrapper .commit-form .quick-pull-choice .new-branch-name-input {
+  position: relative;
+  margin-left: 25px;
+}
+.repository.file.editor .commit-form-wrapper .commit-form .quick-pull-choice .new-branch-name-input input {
+  width: 240px !important;
+  padding-left: 26px !important;
+}
+.repository.file.editor .commit-form-wrapper .commit-form .quick-pull-choice .octicon-git-branch {
+  position: absolute;
+  top: 9px;
+  left: 10px;
+  color: #b0c4ce;
+}
 .repository.options #interval {
   width: 100px!important;
   min-width: 100px;
@@ -1898,7 +2012,7 @@ footer .ui.language .menu {
   max-width: 100%;
   padding: 5px 5px 0 5px;
 }
-#file-content .code-view {
+.repository .code-view {
   overflow: auto;
   overflow-x: auto;
   overflow-y: hidden;
@@ -2160,13 +2274,13 @@ footer .ui.language .menu {
 .page.buttons {
   padding-top: 15px;
 }
-.ui.comments .dropzone, .ui.upload .dropzone {
+.ui.comments .dropzone {
   width: 100%;
   margin-bottom: 10px;
   border: 2px dashed #0087F7;
   box-shadow: none!important;
 }
-.ui.comments .dropzone .dz-error-message, .ui.upload .dropzone .dz-error-message {
+.ui.comments .dropzone .dz-error-message {
   top: 140px;
 }
 .settings .content {
@@ -2800,197 +2914,3 @@ footer .ui.language .menu {
 .ui.user.list .item .description a:hover {
   text-decoration: underline;
 }
-.btn-octicon {
-  display: inline-block;
-  padding: 5px;
-  margin-left: 5px;
-  line-height: 1;
-  color: #767676;
-  vertical-align: middle;
-  background: transparent;
-  border: 0;
-  outline: none;
-}
-.btn-octicon:hover {
-  color: #4078c0;
-}
-.btn-octicon-danger:hover {
-  color: #bd2c00;
-}
-.btn-octicon.disabled {
-    color: #bbb;
-    cursor: default;
-}
-.inline-form {
-  display: inline-block;
-}
-.ui.form .breadcrumb input {
-  min-height: 34px;
-  padding: 7px 8px;
-  color: #333;
-  vertical-align: middle;
-  background-color: #fff;
-  background-repeat: no-repeat;
-  background-position: right 8px center;
-  border: 1px solid #ddd;
-  border-radius: 3px;
-  outline: none;
-  box-shadow: inset 0 1px 2px rgba(0,0,0,0.075);
-  width: inherit;
-}
-#file-actions {
-  padding-left: 20px;
-}
-.CodeMirror.cm-s-default {
-  margin-top: 20px;
-  margin-bottom: 15px;
-  border: 1px solid #ddd;
-  border-radius: 3px;
-  height: 600px;
-  padding: 0 !important;
-}
-.commit-form-wrapper {
-  padding-left: 64px;
-}
-.commit-form {
-  position: relative;
-  padding: 15px;
-  margin-bottom: 10px;
-  border: 1px solid #ddd;
-  border-radius: 3px;
-}
-.commit-form-wrapper .commit-form-avatar {
-  float: left;
-  margin-left: -64px;
-  border-radius: 4px;
-}
-.commit-form::before {
-  border-width: 8px;
-  border-color: transparent;
-  border-right-color: #ddd;
-  position: absolute;
-  top: 11px;
-  right: 100%;
-  left: -16px;
-  display: block;
-  width: 0;
-  height: 0;
-  pointer-events: none;
-  content: " ";
-  border-style: solid solid outset;
-}
-.form-checkbox input[type=checkbox], .form-checkbox input[type=radio] {
-  float: left;
-  margin: 2px 0 0 -20px;
-  vertical-align: middle;
-  box-sizing: border-box;
-  padding: 0;
-}
-.branch-name {
-  display: inline-block;
-  padding: 2px 6px;
-  font: 12px Consolas, "Liberation Mono", Menlo, Courier, monospace;
-  color: rgba(0,0,0,0.5);
-  background-color: rgba(209,227,237,0.5);
-  border-radius: 3px;
-}
-.form-control, .form-select {
-  min-height: 34px;
-  padding: 7px 8px;
-  font-size: 13px;
-  color: #333;
-  vertical-align: middle;
-  background-color: #fff;
-  background-repeat: no-repeat;
-  background-position: right 8px center;
-  border: 1px solid #ddd;
-  border-radius: 3px;
-  outline: none;
-  box-shadow: inset 0 1px 2px rgba(0,0,0,0.075);
-}
-.form-control.input-contrast {
-  background-color: #fafafa;
-}
-.form-control.mr-2 {
-  margin-right: 6px !important;
-}
-.quick-pull-choice .new-branch-name-input input {
-  width: 240px !important;
-  padding-left: 26px !important;
-  font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
-}
-.quick-pull-choice .new-branch-name-input .quick-pull-new-branch-icon {
-  position: absolute;
-  top: 9px;
-  left: 10px;
-  color: #b0c4ce;
-}
-.text-muted, .text-gray {
-  color: #767676 !important;
-}
-.quick-pull-choice .new-branch-name-input {
-  position: relative;
-  margin-top: 5px;
-}
-.quick-pull-choice .quick-pull-branch-name {
-  display: none;
-  padding-left: 48px;
-  margin-top: 5px;
-}
-.quick-pull-choice.will-create-branch .quick-pull-branch-name {
-  display: inline-block;
-}
-.nowrap {
-  white-space: nowrap;
-}
-#file-buttons {
-  padding-right: 15px;
-}
-.repository .ui.container .ui.breadcrumb {
-  font-size: 1.5em;
-  color: #767676;
-  max-width: 600px;
-}
-.repository .ui.container .item:first-child .ui.breadcrumb {
-  max-width: none;
-}
-.repository .ui.container .ui.breadcrumb.field {
-  margin-bottom: 10px !important;
-}
-.repo-edit-file-cancel {
-  padding-left: 10px;
-}
-#new-branch-item {
-  display:none;
-  margin: 0;
-  text-align: left;
-  padding: .71428571em 1.14285714em!important;
-  background: 0 0!important;
-  color: rgba(0,0,0,.87)!important;
-  text-transform: none!important;
-  box-shadow: none!important;
-  -webkit-transition: none!important;
-  transition: none!important;
-  border-top: none;
-  padding-right: calc(1.14285714rem + 17px)!important;
-  font-size: 14px;
-  font-weight: bold;
-  line-height: 1.1;
-}
-#new-branch-item:hover {
-  background: rgba(0,0,0,.05)!important;
-  color: rgba(0,0,0,.95)!important;
-}
-#new-branch-item .icon {
-  float: left;
-  margin-left: -15px;
-}
-#new-branch-item .description {
-  margin-top: 3px;
-  font-size: 12px;
-}
-.repository .ui.container .ui.breadcrumb {
-  font-size: 1.5em;
-  color: #767676;
-  max-width: 600px;
-}

+ 1 - 1
public/js/gogs.js

@@ -735,7 +735,7 @@ function initEditor() {
         $('#tree-name').val(parts.join('/'));
     }).trigger('keyup');
 
-    editArea = $('.repository.edit textarea#edit_area');
+    editArea = $('.repository.editor textarea#edit_area');
 
     if (!editArea.length)
         return;

+ 107 - 0
public/less/_repository.less

@@ -158,6 +158,14 @@
 				font-size: 1.4em;
 			}
 		}
+		#file-buttons {
+			font-weight: normal;
+			margin-top: -3px;
+			padding-right: 20px;
+			.ui.button {
+				padding: 8px 10px;
+			}
+		}
 
 		#repo-files-table {
 			thead {
@@ -204,8 +212,36 @@
 					font-size: 1em;
 					margin-top: -2px;
 				}
+				.file-actions {
+					padding-left: 20px;
+					.btn-octicon {
+					  display: inline-block;
+					  padding: 5px;
+					  margin-left: 5px;
+					  line-height: 1;
+					  color: #767676;
+					  vertical-align: middle;
+					  background: transparent;
+					  border: 0;
+					  outline: none;
+					 }
+					.btn-octicon:hover {
+					  color: #4078c0;
+					}
+					.btn-octicon-danger:hover {
+					  color: #bd2c00;
+					}
+					.btn-octicon.disabled {
+					  color: #bbb;
+					  cursor: default;
+					}
+					#delete-file-form {
+						display: inline-block;
+					}
+				}
 			}
 			.view-raw {
+				padding: 5px;
 				* {
 					max-width: 100%;
 				}
@@ -271,6 +307,77 @@
 		}
 	}
 
+	&.file.editor {
+		.treepath {
+			width: 100%;
+
+			input {
+				vertical-align: middle;
+				box-shadow: rgba(0, 0, 0, 0.0745098) 0px 1px 2px inset;
+				width: inherit;
+				padding: 7px 8px;
+				margin-right: 5px;
+			}
+		}
+
+		.tabular.menu {
+			.octicon {
+				margin-right: 5px;
+			}
+		}
+
+		.CodeMirror.cm-s-default {
+		  border-radius: 3px;
+		  padding: 0 !important;
+		}
+
+		.commit-form-wrapper {
+			padding-left: 64px;
+			.commit-avatar {
+				float: left;
+				margin-left: -64px;
+				width: 3em;
+		    height: auto;
+			}
+			.commit-form {
+			  position: relative;
+			  padding: 15px;
+			  margin-bottom: 10px;
+			  border: 1px solid #ddd;
+			  border-radius: 3px;
+			  #avatar-arrow;
+				&:after {
+					border-right-color: #fff;
+				}
+
+				.quick-pull-choice {
+					.branch-name {
+						display: inline-block;
+				    padding: 3px 6px;
+				    font: 12px Consolas, "Liberation Mono", Menlo, Courier, monospace;
+				    color: rgba(0,0,0,0.65);
+				    background-color: rgba(209,227,237,0.45);
+				    border-radius: 3px;
+					}
+					.new-branch-name-input {
+				    position: relative;
+				    margin-left: 25px;
+				    input {
+				    	width: 240px !important;
+		    	    padding-left: 26px !important;
+				    }
+					}
+					.octicon-git-branch {
+						position: absolute;
+				    top: 9px;
+				    left: 10px;
+				    color: #b0c4ce;
+					}
+				}
+			}
+		}
+	}
+
 	&.options {
 		#interval {
 			width: 100px!important;

+ 0 - 1
routers/repo/view.go

@@ -41,7 +41,6 @@ func Home(ctx *context.Context) {
 	ctx.Data["Title"] = title
 	ctx.Data["PageIsViewCode"] = true
 	ctx.Data["RequireHighlightJS"] = true
-	ctx.Data["IsWriter"] = ctx.Repo.IsWriter()
 
 	branchName := ctx.Repo.BranchName
 	userName := ctx.Repo.Owner.Name

+ 0 - 43
templates/repo/branch_dropdown.tmpl

@@ -33,19 +33,6 @@
 				{{range .Branches}}
 					<div class="item {{if eq $.BranchName .}}selected{{end}}" data-url="{{$.RepoLink}}/{{if $.PageIsCommits}}commits{{else}}src{{end}}/{{EscapePound .}}{{if $.TreeName}}/{{EscapePound $.TreeName}}{{end}}">{{.}}</div>
 				{{end}}
-				{{if .IsWriter}}
-				<a href="javascript:void(0)" id="new-branch-item">
-					<i class="octicon octicon-git-branch"></i>
-					{{.i18n.Tr "repo.create_branch"}}: <span id="branch-name-text"></span>
-					<br/>
-					<span class="description">{{.i18n.Tr "repo.from"}} ‘{{.BranchName}}’</span>
-					<form accept-charset="UTF-8" action="{{.RepoLink}}/branches" method="post">
-						{{.CsrfTokenHtml}}
-						<input type="hidden" name="old_branch_name" value="{{.BranchName}}">
-						<input type="hidden" name="branch_name" id="branch-name" value="">
-					</form>
-				</a>
-				{{end}}
 			</div>
 			<div id="tag-list" class="scrolling menu" {{if not .IsViewTag}}style="display: none"{{end}}>
 				{{range .Tags}}
@@ -55,33 +42,3 @@
 		</div>
 	</div>
 </div>
-
-{{if .IsWriter}}
-<script type="text/javascript">
-	$(document).ready(function(){
-		$('#branch-dropdown #new-branch-item').on('click', function(){
-			$(this).find('form').submit();
-			return true;
-		});
-		$('#branch-dropdown input[name=search]').on('keyup', function(){
-			var query = $(this).val().toLowerCase();
-			if(query.length){
-				var unique = true;
-				$('#branch-dropdown #branch-list .item').each(function(i, item){
-					if($(item).text().toLowerCase() == query){
-						unique = false;
-					}
-				});
-				if(unique){
-					$('#new-branch-item #branch-name-text').text(query);
-					$('#new-branch-item #branch-name').val(query);
-					$('#new-branch-item').css('display', 'block');
-					return;
-				}
-			}
-			$('#new-branch-item').hide();
-		});
-	});
-</script>
-{{end}}
-

+ 31 - 28
templates/repo/editor/edit.tmpl

@@ -1,5 +1,5 @@
 {{template "base/head" .}}
-<div class="repository file edit">
+<div class="repository file editor">
 	{{template "repo/header" .}}
 	<div class="ui container">
 		{{template "base/alert" .}}
@@ -7,30 +7,33 @@
 			{{.CsrfTokenHtml}}
 			<input type="hidden" name="last_commit" value="{{.last_commit}}">
 			<div class="ui secondary menu">
-				<div class="item fitted" style="width:100%;">
-					<div class="ui breadcrumb field{{if .Err_Filename}} error{{end}}">
+				<div class="fitted item treepath">
+					<div class="ui breadcrumb field {{if .Err_Filename}}error{{end}}">
 						<a class="section" href="{{EscapePound $.BranchLink}}">{{.Repository.Name}}</a>
 						{{ $n := len .TreeNames}}
 						{{ $l := Subtract $n 1}}
 						{{range $i, $v := .TreeNames}}
 							<div class="divider"> / </div>
 							{{if eq $i $l}}
-								<input type="text" id="file-name" value="{{$v}}" placeholder="{{$.i18n.Tr "repo.name_your_file"}}" required> <span class="octicon octicon-info poping up" data-content="{{$.i18n.Tr "repo.filename_help"}}" data-position="bottom center" data-variation="tiny"></span>
+								<input id="file-name" value="{{$v}}" placeholder="{{$.i18n.Tr "repo.name_your_file"}}" required autofocus> 
+								<span class="octicon octicon-info poping up" data-content="{{$.i18n.Tr "repo.filename_help"}}" data-position="bottom center" data-variation="tiny"></span>
 							{{else}}
 								<span class="section"><a href="{{EscapePound $.BranchLink}}/{{EscapePound $v}}">{{$v}}</a></span>
 							{{end}}
 						{{end}}
-						<button class="clipboard-tree-name octicon octicon-clippy poping up" type="button" data-content="{{.i18n.Tr "repo.copy_file_path_to_clipboard"}}" data-position="bottom center" data-variation="tiny inverted"></button>
-						<span class="repo-edit-file-cancel">{{.i18n.Tr "repo.or"}} <a href="{{EscapePound $.BranchLink}}/{{EscapePound $.TreeName}}">{{.i18n.Tr "repo.cancel_lower"}}</a></span>
+						<!-- <button class="clipboard-tree-name octicon octicon-clippy poping up" type="button" data-content="{{.i18n.Tr "repo.copy_file_path_to_clipboard"}}" data-position="bottom center" data-variation="tiny inverted"></button> -->
+						<span class="repo-edit-file-cancel">{{.i18n.Tr "repo.or"}} <a href="{{EscapePound $.BranchLink}}{{if not .IsNewFile}}/{{EscapePound $.TreeName}}{{end}}">{{.i18n.Tr "repo.cancel_lower"}}</a></span>
 						<input type="hidden" id="tree-name" name="tree_name" value="{{.TreeName}}" required>
 					</div>
 				</div>
 			</div>
 			<div class="field">
 				<div class="ui top attached tabular menu" data-write="write" data-preview="preview" data-diff="diff">
-					<a class="active item" data-tab="write"><i class="octicon octicon-code"></i> {{.i18n.Tr "repo.edit_file"}}</a>
+					<a class="active item" data-tab="write"><i class="octicon octicon-code"></i> {{if .IsNewFile}}{{.i18n.Tr "repo.new_file"}}{{else}}{{.i18n.Tr "repo.edit_file"}}{{end}}</a>
+					{{if not .IsNewFile}}
 					<a class="item" data-tab="preview" data-url="{{AppSubUrl}}/api/v1/markdown" data-context="{{.RepoLink}}" data-preview-file-modes="{{.PreviewableFileModes}}"><i class="octicon octicon-eye"></i> {{.i18n.Tr "repo.release.preview"}}</a>
 					<a class="item" data-tab="diff" data-url="{{.RepoLink}}/_preview/{{.BranchName}}/{{.TreeName}}" data-context="{{.BranchLink}}"><i class="octicon octicon-diff"></i> {{.i18n.Tr "repo.preview_changes"}}</a>
+					{{end}}
 				</div>
 				<div class="ui bottom attached active tab segment" data-tab="write">
 					<textarea id="edit_area" name="content" data-id="repo-{{.Repository.Name}}-{{.TreeName}}"
@@ -48,37 +51,37 @@
 				</div>
 			</div>
 			<div class="commit-form-wrapper">
-				<img width="48" height="48" class="ui rounded image commit-form-avatar" src="{{.SignedUser.AvatarLink}}">
+				<img width="48" height="48" class="ui image commit-avatar" src="{{.SignedUser.AvatarLink}}">
 				<div class="commit-form">
 					<h3>{{.i18n.Tr "repo.commit_changes"}}</h3>
 					<div class="field">
 						<input name="commit_summary" placeholder="{{if .IsNewFile}}{{.i18n.Tr "repo.add"}} '{{.TreeName}}/<filename>'{{else}}{{.i18n.Tr "repo.update"}} '{{.TreeName}}'{{end}}" value="{{.commit_summary}}">
 					</div>
 					<div class="field">
-						<textarea name="commit_message" placeholder="{{.i18n.Tr "repo.default_commit_message"}}">{{.commit_message}}</textarea>
+						<textarea name="commit_message" placeholder="{{.i18n.Tr "repo.default_commit_message"}}" rows="5">{{.commit_message}}</textarea>
 					</div>
 					<div class="quick-pull-choice js-quick-pull-choice">
-						<dl class="form-group">
-							<dd>
-						 		<div class="form-checkbox">
-									<label>
-										<input type="radio" class="js-quick-pull-choice-option" name="commit_choice" value="direct"{{if eq .commit_choice "direct"}} checked="checked"{{end}}>
-										<i class="octicon octicon-git-commit" height="16" width="14"></i>
-										{{.i18n.Tr "repo.editor.commit_directly_to_this_branch" .BranchName | Safe}}
-									</label>
-								</div>
-								<div class="form-checkbox">
-									<label>
-										<input type="radio" class="js-quick-pull-choice-option" name="commit_choice" value="commit-to-new-branch"{{if eq .commit_choice "commit-to-new-branch"}} checked="checked"{{end}}>
-										<i class="octicon octicon-git-pull-request" height="16" width="12"></i>
-										{{.i18n.Tr "repo.editor.create_new_branch" | Safe}}
-									</label>
-								</div>
-							</dd>
-						</dl>
+						<div class="field">
+					 		<div class="ui radio checkbox">
+								<input type="radio" class="js-quick-pull-choice-option" name="commit_choice" value="direct" {{if eq .commit_choice "direct"}}checked{{end}}>
+								<label>
+									<i class="octicon octicon-git-commit" height="16" width="14"></i>
+									{{.i18n.Tr "repo.editor.commit_directly_to_this_branch" .BranchName | Safe}}
+								</label>
+							</div>
+						</div>
+						<div class="field">
+							<div class="ui radio checkbox">
+								<input type="radio" class="js-quick-pull-choice-option" name="commit_choice" value="commit-to-new-branch" {{if eq .commit_choice "commit-to-new-branch"}}checked{{end}}>
+								<label>
+									<i class="octicon octicon-git-pull-request" height="16" width="12"></i>
+									{{.i18n.Tr "repo.editor.create_new_branch" | Safe}}
+								</label>
+							</div>
+						</div>
 						<div class="quick-pull-branch-name">
 							<div class="new-branch-name-input{{if .Err_Branchname}} error{{end}}">
-								<i class="octicon octicon-git-branch quick-pull-new-branch-icon" height="16" width="10"></i>
+								<i class="octicon octicon-git-branch" height="16" width="10"></i>
 								<input type="text" name="new_branch_name" value="{{.new_branch_name}}" class="form-control input-contrast mr-2 js-quick-pull-new-branch-name" placeholder="New branch name…">
 								<span class="text-muted js-quick-pull-normalization-info"></span>
 							</div>

+ 6 - 6
templates/repo/home.tmpl

@@ -15,7 +15,7 @@
 				</div>
 			{{end}}
 			{{template "repo/branch_dropdown" .}}
-			<div class="item fitted">
+			<div class="fitted item">
 				<div class="ui breadcrumb">
 					<a class="section" href="{{.RepoLink}}/src/{{EscapePound .BranchName}}">{{.Repository.Name}}</a>
 					{{ $n := len .Treenames}}
@@ -32,16 +32,16 @@
 				</div>
 			</div>
 			<div class="right fitted item">
-				<div id="file-buttons" class="ui buttons nowrap">
+				<div id="file-buttons" class="ui tiny buttons">
 					{{if .NewFileLink}}
-						<a href="{{EscapePound .NewFileLink}}" class="ui button nowrap">
-							<i class="plus square outline icon"></i> {{.i18n.Tr "repo.new_file"}}
+						<a href="{{EscapePound .NewFileLink}}" class="ui button">
+							{{.i18n.Tr "repo.new_file"}}
 						</a>
 					{{end}}
 					{{if .UploadFileLink}}
-						<a href="{{EscapePound .UploadFileLink}}" class="ui button nowrap">
+						<!-- <a href="{{EscapePound .UploadFileLink}}" class="ui button nowrap">
 							<i class="upload icon"></i> {{.i18n.Tr "repo.upload_file"}}
-						</a>
+						</a> -->
 					{{end}}
 				</div>
 				{{if eq $n 0}}