### File path before/after <img width="522" alt="Screenshot 2023-05-01 at 13 23 33" src="https://user-images.githubusercontent.com/115237/235445636-57776038-c98e-4cab-8abe-045138a76958.png"> <img width="522" alt="Screenshot 2023-05-01 at 13 24 08" src="https://user-images.githubusercontent.com/115237/235445638-70bef62a-1b70-41f8-ba51-728db4d54402.png"> ### File edit before/after <img width="499" alt="Screenshot 2023-05-01 at 13 24 46" src="https://user-images.githubusercontent.com/115237/235445676-7b3cc23e-289b-40a6-8d4f-0d7fb2efb55e.png"> <img width="497" alt="Screenshot 2023-05-01 at 13 24 52" src="https://user-images.githubusercontent.com/115237/235445677-db9f3974-8456-46de-a32b-9198110c0540.png"> ### Cherry-pick before/after <img width="590" alt="Screenshot 2023-05-01 at 13 25 30" src="https://user-images.githubusercontent.com/115237/235445717-99445024-1bb2-46d4-9bd8-8086bad57d34.png"> <img width="582" alt="Screenshot 2023-05-01 at 13 25 37" src="https://user-images.githubusercontent.com/115237/235445720-9c1dc497-eb23-4e10-a727-27f4d6df69e6.png">tags/v1.20.0-rc0
<input type="hidden" name="last_commit" value="{{.last_commit}}"> | <input type="hidden" name="last_commit" value="{{.last_commit}}"> | ||||
<input type="hidden" name="page_has_posted" value="true"> | <input type="hidden" name="page_has_posted" value="true"> | ||||
<input type="hidden" name="revert" value="{{if eq .CherryPickType "revert"}}true{{else}}false{{end}}"> | <input type="hidden" name="revert" value="{{if eq .CherryPickType "revert"}}true{{else}}false{{end}}"> | ||||
<div class="ui secondary menu"> | |||||
<div class="fitted item treepath"> | |||||
<div class="ui breadcrumb field {{if .Err_TreePath}}error{{end}}"> | |||||
{{$shaurl := printf "%s/commit/%s" $.RepoLink (PathEscape .SHA)}} | |||||
{{$shalink := printf "<a class=\"ui primary sha label\" href=\"%s\">%s</a>" (Escape $shaurl) (ShortSha .SHA)}} | |||||
{{if eq .CherryPickType "revert"}} | |||||
{{.locale.Tr "repo.editor.revert" $shalink | Str2html}} | |||||
{{else}} | |||||
{{.locale.Tr "repo.editor.cherry_pick" $shalink | Str2html}} | |||||
{{end}} | |||||
<a class="section" href="{{$.RepoLink}}">{{.Repository.FullName}}</a> | |||||
<div class="divider">:</div> | |||||
<a class="section" href="{{$.BranchLink}}">{{.BranchName}}</a> | |||||
<span>{{.locale.Tr "repo.editor.or"}} <a href="{{$shaurl}}">{{.locale.Tr "repo.editor.cancel_lower"}}</a></span> | |||||
</div> | |||||
<div class="repo-editor-header"> | |||||
<div class="ui breadcrumb field {{if .Err_TreePath}}error{{end}}"> | |||||
{{$shaurl := printf "%s/commit/%s" $.RepoLink (PathEscape .SHA)}} | |||||
{{$shalink := printf "<a class=\"ui primary sha label\" href=\"%s\">%s</a>" (Escape $shaurl) (ShortSha .SHA)}} | |||||
{{if eq .CherryPickType "revert"}} | |||||
{{.locale.Tr "repo.editor.revert" $shalink | Str2html}} | |||||
{{else}} | |||||
{{.locale.Tr "repo.editor.cherry_pick" $shalink | Str2html}} | |||||
{{end}} | |||||
<a class="section" href="{{$.RepoLink}}">{{.Repository.FullName}}</a> | |||||
<div class="divider">:</div> | |||||
<a class="section" href="{{$.BranchLink}}">{{.BranchName}}</a> | |||||
<span>{{.locale.Tr "repo.editor.or"}} <a href="{{$shaurl}}">{{.locale.Tr "repo.editor.cancel_lower"}}</a></span> | |||||
</div> | </div> | ||||
</div> | </div> | ||||
{{template "repo/editor/commit_form" .}} | {{template "repo/editor/commit_form" .}} |
{{.CsrfTokenHtml}} | {{.CsrfTokenHtml}} | ||||
<input type="hidden" name="last_commit" value="{{.last_commit}}"> | <input type="hidden" name="last_commit" value="{{.last_commit}}"> | ||||
<input type="hidden" name="page_has_posted" value="{{.PageHasPosted}}"> | <input type="hidden" name="page_has_posted" value="{{.PageHasPosted}}"> | ||||
<div class="ui secondary menu"> | |||||
<div class="fitted item treepath"> | |||||
<div class="ui breadcrumb field {{if .Err_TreePath}}error{{end}}"> | |||||
<a class="section" href="{{$.BranchLink}}">{{.Repository.Name}}</a> | |||||
{{$n := len .TreeNames}} | |||||
{{$l := Eval $n "-" 1}} | |||||
{{range $i, $v := .TreeNames}} | |||||
<div class="divider"> / </div> | |||||
{{if eq $i $l}} | |||||
<input id="file-name" value="{{$v}}" placeholder="{{$.locale.Tr "repo.editor.name_your_file"}}" data-editorconfig="{{$.Editorconfig}}" required autofocus> | |||||
<span data-tooltip-content="{{$.locale.Tr "repo.editor.filename_help"}}">{{svg "octicon-info"}}</span> | |||||
{{else}} | |||||
<span class="section"><a href="{{$.BranchLink}}/{{index $.TreePaths $i | PathEscapeSegments}}">{{$v}}</a></span> | |||||
{{end}} | |||||
<div class="repo-editor-header"> | |||||
<div class="ui breadcrumb field{{if .Err_TreePath}} error{{end}}"> | |||||
<a class="section" href="{{$.BranchLink}}">{{.Repository.Name}}</a> | |||||
{{$n := len .TreeNames}} | |||||
{{$l := Eval $n "-" 1}} | |||||
{{range $i, $v := .TreeNames}} | |||||
<div class="divider"> / </div> | |||||
{{if eq $i $l}} | |||||
<input id="file-name" value="{{$v}}" placeholder="{{$.locale.Tr "repo.editor.name_your_file"}}" data-editorconfig="{{$.Editorconfig}}" required autofocus> | |||||
<span data-tooltip-content="{{$.locale.Tr "repo.editor.filename_help"}}">{{svg "octicon-info"}}</span> | |||||
{{else}} | |||||
<span class="section"><a href="{{$.BranchLink}}/{{index $.TreePaths $i | PathEscapeSegments}}">{{$v}}</a></span> | |||||
{{end}} | {{end}} | ||||
<span>{{.locale.Tr "repo.editor.or"}} <a href="{{$.BranchLink}}{{if not .IsNewFile}}/{{PathEscapeSegments .TreePath}}{{end}}">{{.locale.Tr "repo.editor.cancel_lower"}}</a></span> | |||||
<input type="hidden" id="tree_path" name="tree_path" value="{{.TreePath}}" required> | |||||
</div> | |||||
{{end}} | |||||
<span>{{.locale.Tr "repo.editor.or"}} <a href="{{$.BranchLink}}{{if not .IsNewFile}}/{{PathEscapeSegments .TreePath}}{{end}}">{{.locale.Tr "repo.editor.cancel_lower"}}</a></span> | |||||
<input type="hidden" id="tree_path" name="tree_path" value="{{.TreePath}}" required> | |||||
</div> | </div> | ||||
</div> | </div> | ||||
<div class="field"> | <div class="field"> |
{{.CsrfTokenHtml}} | {{.CsrfTokenHtml}} | ||||
<input type="hidden" name="last_commit" value="{{.last_commit}}"> | <input type="hidden" name="last_commit" value="{{.last_commit}}"> | ||||
<input type="hidden" name="page_has_posted" value="{{.PageHasPosted}}"> | <input type="hidden" name="page_has_posted" value="{{.PageHasPosted}}"> | ||||
<div class="ui secondary menu"> | |||||
<div class="fitted item treepath"> | |||||
<div class="ui breadcrumb field {{if .Err_TreePath}}error{{end}}"> | |||||
{{.locale.Tr "repo.editor.patching"}} | |||||
<a class="section" href="{{$.RepoLink}}">{{.Repository.FullName}}</a> | |||||
<div class="divider">:</div> | |||||
<a class="section" href="{{$.BranchLink}}">{{.BranchName}}</a> | |||||
<span>{{.locale.Tr "repo.editor.or"}} <a href="{{$.BranchLink}}">{{.locale.Tr "repo.editor.cancel_lower"}}</a></span> | |||||
<input type="hidden" id="tree_path" name="tree_path" value="" required> | |||||
<input id="file-name" type="hidden" value="diff.patch"> | |||||
</div> | |||||
<div class="repo-editor-header"> | |||||
<div class="ui breadcrumb field {{if .Err_TreePath}}error{{end}}"> | |||||
{{.locale.Tr "repo.editor.patching"}} | |||||
<a class="section" href="{{$.RepoLink}}">{{.Repository.FullName}}</a> | |||||
<div class="divider">:</div> | |||||
<a class="section" href="{{$.BranchLink}}">{{.BranchName}}</a> | |||||
<span>{{.locale.Tr "repo.editor.or"}} <a href="{{$.BranchLink}}">{{.locale.Tr "repo.editor.cancel_lower"}}</a></span> | |||||
<input type="hidden" id="tree_path" name="tree_path" value="" required> | |||||
<input id="file-name" type="hidden" value="diff.patch"> | |||||
</div> | </div> | ||||
</div> | </div> | ||||
<div class="field"> | <div class="field"> |
{{template "base/alert" .}} | {{template "base/alert" .}} | ||||
<form class="ui comment form" method="post"> | <form class="ui comment form" method="post"> | ||||
{{.CsrfTokenHtml}} | {{.CsrfTokenHtml}} | ||||
<div class="ui secondary menu"> | |||||
<div class="item fitted treepath"> | |||||
<div class="ui breadcrumb field {{if .Err_TreePath}}error{{end}}"> | |||||
<a class="section" href="{{$.BranchLink}}">{{.Repository.Name}}</a> | |||||
{{$n := len .TreeNames}} | |||||
{{$l := Eval $n "-" 1}} | |||||
{{range $i, $v := .TreeNames}} | |||||
<div class="divider"> / </div> | |||||
{{if eq $i $l}} | |||||
<input type="text" id="file-name" value="{{$v}}" placeholder="{{$.locale.Tr "repo.editor.add_subdir"}}" autofocus> | |||||
<span data-tooltip-content="{{$.locale.Tr "repo.editor.filename_help"}}">{{svg "octicon-info"}}</span> | |||||
{{else}} | |||||
<span class="section"><a href="{{$.BranchLink}}/{{index $.TreePaths $i | PathEscapeSegments}}">{{$v}}</a></span> | |||||
{{end}} | |||||
<div class="repo-editor-header"> | |||||
<div class="ui breadcrumb field {{if .Err_TreePath}}error{{end}}"> | |||||
<a class="section" href="{{$.BranchLink}}">{{.Repository.Name}}</a> | |||||
{{$n := len .TreeNames}} | |||||
{{$l := Eval $n "-" 1}} | |||||
{{range $i, $v := .TreeNames}} | |||||
<div class="divider"> / </div> | |||||
{{if eq $i $l}} | |||||
<input type="text" id="file-name" value="{{$v}}" placeholder="{{$.locale.Tr "repo.editor.add_subdir"}}" autofocus> | |||||
<span data-tooltip-content="{{$.locale.Tr "repo.editor.filename_help"}}">{{svg "octicon-info"}}</span> | |||||
{{else}} | |||||
<span class="section"><a href="{{$.BranchLink}}/{{index $.TreePaths $i | PathEscapeSegments}}">{{$v}}</a></span> | |||||
{{end}} | {{end}} | ||||
<span>{{.locale.Tr "repo.editor.or"}} <a href="{{$.BranchLink}}{{if not .IsNewFile}}/{{.TreePath | PathEscapeSegments}}{{end}}">{{.locale.Tr "repo.editor.cancel_lower"}}</a></span> | |||||
<input type="hidden" id="tree_path" name="tree_path" value="{{.TreePath}}" required> | |||||
</div> | |||||
{{end}} | |||||
<span>{{.locale.Tr "repo.editor.or"}} <a href="{{$.BranchLink}}{{if not .IsNewFile}}/{{.TreePath | PathEscapeSegments}}{{end}}">{{.locale.Tr "repo.editor.cancel_lower"}}</a></span> | |||||
<input type="hidden" id="tree_path" name="tree_path" value="{{.TreePath}}" required> | |||||
</div> | </div> | ||||
</div> | </div> | ||||
<div class="field"> | <div class="field"> |
</a> | </a> | ||||
{{end}} | {{end}} | ||||
{{if ne $n 0}} | {{if ne $n 0}} | ||||
<span class="ui breadcrumb repo-path gt-ml-2"> | |||||
<span class="breadcrumb repo-path gt-ml-2"> | |||||
<a class="section" href="{{.RepoLink}}/src/{{.BranchNameSubURL}}" title="{{.Repository.Name}}">{{StringUtils.EllipsisString .Repository.Name 30}}</a> | <a class="section" href="{{.RepoLink}}/src/{{.BranchNameSubURL}}" title="{{.Repository.Name}}">{{StringUtils.EllipsisString .Repository.Name 30}}</a> | ||||
{{- range $i, $v := .TreeNames -}} | {{- range $i, $v := .TreeNames -}} | ||||
<span class="divider">/</span> | <span class="divider">/</span> |
user-select: none; | user-select: none; | ||||
} | } | ||||
a, | |||||
.ui.breadcrumb a { | |||||
a { | |||||
color: var(--color-primary); | color: var(--color-primary); | ||||
cursor: pointer; | cursor: pointer; | ||||
text-decoration-skip-ink: all; | text-decoration-skip-ink: all; | ||||
a:hover, | a:hover, | ||||
a.muted:hover, | a.muted:hover, | ||||
a.muted:hover [class*="color-text"], | a.muted:hover [class*="color-text"], | ||||
.muted-links a:hover, | |||||
.ui.breadcrumb a:hover { | |||||
.muted-links a:hover { | |||||
color: var(--color-primary); | color: var(--color-primary); | ||||
} | } | ||||
padding-bottom: 7.42px !important; | padding-bottom: 7.42px !important; | ||||
} | } | ||||
.ui.breadcrumb a:hover { | |||||
text-decoration: underline !important; | |||||
} | |||||
.ui.breadcrumb .divider { | |||||
color: var(--color-text-light-2); | |||||
} | |||||
.ui.divider:not(.vertical,.horizontal) { | .ui.divider:not(.vertical,.horizontal) { | ||||
border-top-color: var(--color-secondary) !important; | border-top-color: var(--color-secondary) !important; | ||||
border-bottom: none !important; | border-bottom: none !important; |
border-bottom: 0; | border-bottom: 0; | ||||
} | } | ||||
.repo-editor-header { | |||||
display: flex; | |||||
margin: 1rem 0; | |||||
padding: 3px 0; | |||||
} | |||||
.editor-toolbar { | .editor-toolbar { | ||||
border-color: var(--color-secondary); | border-color: var(--color-secondary); | ||||
} | } |
@import "./features/projects.css"; | @import "./features/projects.css"; | ||||
@import "./modules/tippy.css"; | @import "./modules/tippy.css"; | ||||
@import "./modules/modal.css"; | @import "./modules/modal.css"; | ||||
@import "./modules/breadcrumb.css"; | |||||
@import "./code/linebutton.css"; | @import "./code/linebutton.css"; | ||||
@import "./markup/content.css"; | @import "./markup/content.css"; | ||||
@import "./markup/codecopy.css"; | @import "./markup/codecopy.css"; |
.breadcrumb .divider { | |||||
color: var(--color-text-light-2); | |||||
margin-left: 3px; | |||||
margin-right: 3px; | |||||
} | |||||
.breadcrumb > * { | |||||
display: inline; | |||||
} |
word-break: break-word; | word-break: break-word; | ||||
} | } | ||||
.repository.file.list .repo-path .section, | |||||
.repository.file.list .repo-path .divider { | |||||
display: inline; | |||||
} | |||||
.repository.file.list #repo-files-table { | .repository.file.list #repo-files-table { | ||||
table-layout: fixed; | table-layout: fixed; | ||||
} | } | ||||
width: 16px; | width: 16px; | ||||
} | } | ||||
.repository.file.editor .treepath { | |||||
.repo-editor-header { | |||||
width: 100%; | width: 100%; | ||||
} | } | ||||
.repository.file.editor .treepath input { | |||||
vertical-align: middle; | |||||
box-shadow: rgba(0, 0, 0, 0.0745098) 0 1px 2px inset; | |||||
width: inherit; | |||||
padding: 7px 8px; | |||||
margin-right: 5px; | |||||
.repo-editor-header input { | |||||
vertical-align: middle !important; | |||||
width: auto !important; | |||||
padding: 7px 8px !important; | |||||
margin-right: 5px !important; | |||||
} | } | ||||
.repository.file.editor .tabular.menu .svg { | .repository.file.editor .tabular.menu .svg { |
* http://opensource.org/licenses/MIT | * http://opensource.org/licenses/MIT | ||||
* | * | ||||
*/ | */ | ||||
/*! | |||||
* # Fomantic-UI - Breadcrumb | |||||
* http://github.com/fomantic/Fomantic-UI/ | |||||
* | |||||
* | |||||
* Released under the MIT license | |||||
* http://opensource.org/licenses/MIT | |||||
* | |||||
*/ | |||||
/******************************* | |||||
Breadcrumb | |||||
*******************************/ | |||||
.ui.breadcrumb { | |||||
line-height: 1.4285em; | |||||
display: inline-block; | |||||
margin: 0 0; | |||||
vertical-align: middle; | |||||
} | |||||
.ui.breadcrumb:first-child { | |||||
margin-top: 0; | |||||
} | |||||
.ui.breadcrumb:last-child { | |||||
margin-bottom: 0; | |||||
} | |||||
/******************************* | |||||
Content | |||||
*******************************/ | |||||
/* Divider */ | |||||
.ui.breadcrumb .divider { | |||||
display: inline-block; | |||||
opacity: 0.7; | |||||
margin: 0 0.21428571rem 0; | |||||
font-size: 0.92857143em; | |||||
color: rgba(0, 0, 0, 0.4); | |||||
vertical-align: baseline; | |||||
} | |||||
/* Link */ | |||||
.ui.breadcrumb a { | |||||
color: #4183C4; | |||||
} | |||||
.ui.breadcrumb a:hover { | |||||
color: #1e70bf; | |||||
} | |||||
/* Icon Divider */ | |||||
.ui.breadcrumb .icon.divider { | |||||
font-size: 0.85714286em; | |||||
vertical-align: baseline; | |||||
} | |||||
/* Section */ | |||||
.ui.breadcrumb a.section { | |||||
cursor: pointer; | |||||
} | |||||
.ui.breadcrumb .section { | |||||
display: inline-block; | |||||
margin: 0; | |||||
padding: 0; | |||||
} | |||||
/* Loose Coupling */ | |||||
.ui.breadcrumb.segment { | |||||
display: inline-block; | |||||
padding: 0.78571429em 1em; | |||||
} | |||||
/* Inverted */ | |||||
.ui.inverted.breadcrumb { | |||||
color: #DCDDDE; | |||||
} | |||||
.ui.inverted.breadcrumb > .active.section { | |||||
color: #FFFFFF; | |||||
} | |||||
.ui.inverted.breadcrumb > .divider { | |||||
color: rgba(255, 255, 255, 0.7); | |||||
} | |||||
/******************************* | |||||
States | |||||
*******************************/ | |||||
.ui.breadcrumb .active.section { | |||||
font-weight: 500; | |||||
} | |||||
/******************************* | |||||
Variations | |||||
*******************************/ | |||||
.ui.breadcrumb { | |||||
font-size: 1rem; | |||||
} | |||||
.ui.mini.breadcrumb { | |||||
font-size: 0.78571429rem; | |||||
} | |||||
.ui.tiny.breadcrumb { | |||||
font-size: 0.85714286rem; | |||||
} | |||||
.ui.small.breadcrumb { | |||||
font-size: 0.92857143rem; | |||||
} | |||||
.ui.large.breadcrumb { | |||||
font-size: 1.14285714rem; | |||||
} | |||||
.ui.big.breadcrumb { | |||||
font-size: 1.28571429rem; | |||||
} | |||||
.ui.huge.breadcrumb { | |||||
font-size: 1.42857143rem; | |||||
} | |||||
.ui.massive.breadcrumb { | |||||
font-size: 1.71428571rem; | |||||
} | |||||
/******************************* | |||||
Theme Overrides | |||||
*******************************/ | |||||
/******************************* | |||||
Site Overrides | |||||
*******************************/ | |||||
/*! | /*! | ||||
* # Fomantic-UI - Button | * # Fomantic-UI - Button | ||||
* http://github.com/fomantic/Fomantic-UI/ | * http://github.com/fomantic/Fomantic-UI/ |
"admin": false, | "admin": false, | ||||
"components": [ | "components": [ | ||||
"api", | "api", | ||||
"breadcrumb", | |||||
"button", | "button", | ||||
"card", | "card", | ||||
"checkbox", | "checkbox", |