2015-11-14 17:34:01 +08:00
|
|
|
{{template "base/head" .}}
|
2023-02-02 06:56:10 +08:00
|
|
|
<div role="main" aria-label="{{.Title}}" class="page-content repository file list {{if .IsBlame}}blame{{end}}">
|
2015-12-08 06:30:52 +08:00
|
|
|
{{template "repo/header" .}}
|
2020-06-26 02:58:12 +08:00
|
|
|
<div class="ui container {{if .IsBlame}}fluid padded{{end}}">
|
2016-08-25 12:35:03 +08:00
|
|
|
{{template "base/alert" .}}
|
2023-07-08 11:19:00 +08:00
|
|
|
{{template "repo/code/recently_pushed_new_branches" .}}
|
2022-10-13 16:31:10 +08:00
|
|
|
{{if and (not .HideRepoInfo) (not .IsBlame)}}
|
2024-03-25 00:05:00 +08:00
|
|
|
<div class="repo-description">
|
|
|
|
<div id="repo-desc" class="gt-word-break tw-text-16">
|
2022-08-26 05:55:52 +08:00
|
|
|
{{$description := .Repository.DescriptionHTML $.Context}}
|
2023-09-25 16:56:50 +08:00
|
|
|
{{if $description}}<span class="description">{{$description | RenderCodeBlock}}</span>{{else if .IsRepositoryAdmin}}<span class="no-description text-italic">{{ctx.Locale.Tr "repo.no_desc"}}</span>{{end}}
|
2017-10-27 14:10:54 +08:00
|
|
|
<a class="link" href="{{.Repository.Website}}">{{.Repository.Website}}</a>
|
|
|
|
</div>
|
2024-03-25 00:05:00 +08:00
|
|
|
<form class="ignore-dirty" action="{{.RepoLink}}/search" method="get">
|
|
|
|
<div class="ui small action input">
|
|
|
|
<input name="q" value="{{.Keyword}}" placeholder="{{ctx.Locale.Tr "search.code_kind"}}">
|
|
|
|
{{template "shared/search/button"}}
|
2017-10-27 14:10:54 +08:00
|
|
|
</div>
|
2024-03-25 00:05:00 +08:00
|
|
|
</form>
|
2017-10-27 14:10:54 +08:00
|
|
|
</div>
|
2024-03-24 22:31:35 +08:00
|
|
|
<div class="tw-flex tw-items-center tw-flex-wrap tw-gap-1" id="repo-topics">
|
2023-07-09 02:12:30 +08:00
|
|
|
{{range .Topics}}<a class="ui repo-topic large label topic gt-m-0" href="{{AppSubUrl}}/explore/repos?q={{.Name}}&topic=1">{{.Name}}</a>{{end}}
|
2024-03-24 05:22:15 +08:00
|
|
|
{{if and .Permission.IsAdmin (not .Repository.IsArchived)}}<button id="manage_topic" class="btn interact-fg tw-text-12">{{ctx.Locale.Tr "repo.topic.manage_topics"}}</button>{{end}}
|
2018-04-11 10:51:44 +08:00
|
|
|
</div>
|
2022-10-13 16:31:10 +08:00
|
|
|
{{end}}
|
2019-01-24 18:22:27 +08:00
|
|
|
{{if and .Permission.IsAdmin (not .Repository.IsArchived)}}
|
2024-03-22 21:45:10 +08:00
|
|
|
<div class="ui form gt-hidden tw-flex tw-flex-col gt-mt-4" id="topic_edit">
|
|
|
|
<div class="field tw-flex-1 gt-mb-2">
|
|
|
|
<div class="ui fluid multiple search selection dropdown tw-flex-wrap" data-text-count-prompt="{{ctx.Locale.Tr "repo.topic.count_prompt"}}" data-text-format-prompt="{{ctx.Locale.Tr "repo.topic.format_prompt"}}">
|
Use a general Eval function for expressions in templates. (#23927)
One of the proposals in #23328
This PR introduces a simple expression calculator
(templates/eval/eval.go), it can do basic expression calculations.
Many untested template helper functions like `Mul` `Add` can be replaced
by this new approach.
Then these `Add` / `Mul` / `percentage` / `Subtract` / `DiffStatsWidth`
could all use this `Eval`.
And it provides enhancements for Golang templates, and improves
readability.
Some examples:
----
* Before: `{{Add (Mul $glyph.Row 12) 12}}`
* After: `{{Eval $glyph.Row "*" 12 "+" 12}}`
----
* Before: `{{if lt (Add $i 1) (len $.Topics)}}`
* After: `{{if Eval $i "+" 1 "<" (len $.Topics)}}`
## FAQ
### Why not use an existing expression package?
We need a highly customized expression engine:
* do the calculation on the fly, without pre-compiling
* deal with int/int64/float64 types, to make the result could be used in
Golang template.
* make the syntax could be used in the Golang template directly
* do not introduce too much complex or strange syntax, we just need a
simple calculator.
* it needs to strictly follow Golang template's behavior, for example,
Golang template treats all non-zero values as truth, but many 3rd
packages don't do so.
### What's the benefit?
* Developers don't need to add more `Add`/`Mul`/`Sub`-like functions,
they were getting more and more.
Now, only one `Eval` is enough for all cases.
* The new code reads better than old `{{Add (Mul $glyph.Row 12) 12}}`,
the old one isn't familiar to most procedural programming developers
(eg, the Golang expression syntax).
* The `Eval` is fully covered by tests, many old `Add`/`Mul`-like
functions were never tested.
### The performance?
It doesn't use `reflect`, it doesn't need to parse or compile when used
in Golang template, the performance is as fast as native Go template.
### Is it too complex? Could it be unstable?
The expression calculator program is a common homework for computer
science students, and it's widely used as a teaching and practicing
purpose for developers. The algorithm is pretty well-known.
The behavior can be clearly defined, it is stable.
2023-04-07 21:25:49 +08:00
|
|
|
<input type="hidden" name="topics" value="{{range $i, $v := .Topics}}{{.Name}}{{if Eval $i "+" 1 "<" (len $.Topics)}},{{end}}{{end}}">
|
Fine tune more downdrop settings, use SVG for labels, improve Repo Topic Edit form (#23626)
Although it seems that some different purposes are mixed in this PR,
however, they are all related, and can be tested together, so I put them
together to save everyone's time.
Diff: `+79 −84`, everything becomes much better.
### Improve the dropdown settings.
Move all fomantic-init related code into our `fomantic.js`
Fine-tune some dropdown global settings, see the comments.
Also help to fix the first problem in #23625 , cc: @yp05327
The "language" menu has been simplified, and it works with small-height
window better.
### Use SVG instead of `<i class="delete icon">`
It's also done by `$.fn.dropdown.settings.templates.label` , cc:
@silverwind
### Remove incorrect `tabable` CSS class
It doesn't have CSS styles, and it was only in Vue. So it's totally
unnecessary, remove it by the way.
### Improve the Repo Topic Edit form
* Simplify the code
* Add a "Cancel" button
* Align elements
Before:
<details>
![image](https://user-images.githubusercontent.com/2114189/223325782-f09532de-0c38-4742-ba86-ed35cc9a858d.png)
</details>
After:
![image](https://user-images.githubusercontent.com/2114189/226796347-207feb0a-b3cd-4820-8a3e-01930bab1069.png)
2023-03-26 19:31:26 +08:00
|
|
|
{{range .Topics}}
|
|
|
|
{{/* keey the same layout as Fomantic UI generated labels */}}
|
2024-03-22 21:45:10 +08:00
|
|
|
<a class="ui label transition visible tw-cursor-default tw-inline-block" data-value="{{.Name}}">{{.Name}}{{svg "octicon-x" 16 "delete icon"}}</a>
|
Fine tune more downdrop settings, use SVG for labels, improve Repo Topic Edit form (#23626)
Although it seems that some different purposes are mixed in this PR,
however, they are all related, and can be tested together, so I put them
together to save everyone's time.
Diff: `+79 −84`, everything becomes much better.
### Improve the dropdown settings.
Move all fomantic-init related code into our `fomantic.js`
Fine-tune some dropdown global settings, see the comments.
Also help to fix the first problem in #23625 , cc: @yp05327
The "language" menu has been simplified, and it works with small-height
window better.
### Use SVG instead of `<i class="delete icon">`
It's also done by `$.fn.dropdown.settings.templates.label` , cc:
@silverwind
### Remove incorrect `tabable` CSS class
It doesn't have CSS styles, and it was only in Vue. So it's totally
unnecessary, remove it by the way.
### Improve the Repo Topic Edit form
* Simplify the code
* Add a "Cancel" button
* Align elements
Before:
<details>
![image](https://user-images.githubusercontent.com/2114189/223325782-f09532de-0c38-4742-ba86-ed35cc9a858d.png)
</details>
After:
![image](https://user-images.githubusercontent.com/2114189/226796347-207feb0a-b3cd-4820-8a3e-01930bab1069.png)
2023-03-26 19:31:26 +08:00
|
|
|
{{end}}
|
|
|
|
<div class="text"></div>
|
2018-04-11 10:51:44 +08:00
|
|
|
</div>
|
|
|
|
</div>
|
Fine tune more downdrop settings, use SVG for labels, improve Repo Topic Edit form (#23626)
Although it seems that some different purposes are mixed in this PR,
however, they are all related, and can be tested together, so I put them
together to save everyone's time.
Diff: `+79 −84`, everything becomes much better.
### Improve the dropdown settings.
Move all fomantic-init related code into our `fomantic.js`
Fine-tune some dropdown global settings, see the comments.
Also help to fix the first problem in #23625 , cc: @yp05327
The "language" menu has been simplified, and it works with small-height
window better.
### Use SVG instead of `<i class="delete icon">`
It's also done by `$.fn.dropdown.settings.templates.label` , cc:
@silverwind
### Remove incorrect `tabable` CSS class
It doesn't have CSS styles, and it was only in Vue. So it's totally
unnecessary, remove it by the way.
### Improve the Repo Topic Edit form
* Simplify the code
* Add a "Cancel" button
* Align elements
Before:
<details>
![image](https://user-images.githubusercontent.com/2114189/223325782-f09532de-0c38-4742-ba86-ed35cc9a858d.png)
</details>
After:
![image](https://user-images.githubusercontent.com/2114189/226796347-207feb0a-b3cd-4820-8a3e-01930bab1069.png)
2023-03-26 19:31:26 +08:00
|
|
|
<div>
|
2023-09-25 16:56:50 +08:00
|
|
|
<button class="ui basic button" id="cancel_topic_edit">{{ctx.Locale.Tr "cancel"}}</button>
|
|
|
|
<button class="ui primary button" id="save_topic" data-link="{{.RepoLink}}/topics">{{ctx.Locale.Tr "save"}}</button>
|
2018-04-11 10:51:44 +08:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
{{end}}
|
2019-01-24 02:58:38 +08:00
|
|
|
{{if .Repository.IsArchived}}
|
2024-03-04 11:33:20 +08:00
|
|
|
<div class="ui warning message tw-text-center">
|
2023-04-26 22:46:26 +08:00
|
|
|
{{if .Repository.ArchivedUnix.IsZero}}
|
2023-09-25 16:56:50 +08:00
|
|
|
{{ctx.Locale.Tr "repo.archive.title"}}
|
2023-04-26 22:46:26 +08:00
|
|
|
{{else}}
|
2024-02-23 01:02:33 +08:00
|
|
|
{{ctx.Locale.Tr "repo.archive.title_date" (DateTime "long" .Repository.ArchivedUnix)}}
|
2023-04-26 22:46:26 +08:00
|
|
|
{{end}}
|
2019-01-24 02:58:38 +08:00
|
|
|
</div>
|
|
|
|
{{end}}
|
2017-10-26 08:49:16 +08:00
|
|
|
{{template "repo/sub_menu" .}}
|
2023-06-15 23:12:08 +08:00
|
|
|
<div class="repo-button-row">
|
2024-03-24 22:31:35 +08:00
|
|
|
<div class="tw-flex tw-items-center tw-flex-wrap tw-gap-y-2">
|
2023-05-04 05:58:59 +08:00
|
|
|
{{template "repo/branch_dropdown" dict "root" . "ContainerClasses" "gt-mr-2"}}
|
2023-05-22 15:57:00 +08:00
|
|
|
{{if and .CanCompareOrPull .IsViewBranch (not .Repository.IsArchived)}}
|
2023-04-29 20:02:29 +08:00
|
|
|
{{$cmpBranch := ""}}
|
|
|
|
{{if ne .Repository.ID .BaseRepo.ID}}
|
|
|
|
{{$cmpBranch = printf "%s/%s:" (.Repository.OwnerName|PathEscape) (.Repository.Name|PathEscape)}}
|
|
|
|
{{end}}
|
2023-09-16 11:51:54 +08:00
|
|
|
{{$cmpBranch = print $cmpBranch (.BranchName|PathEscapeSegments)}}
|
2023-04-29 20:02:29 +08:00
|
|
|
{{$compareLink := printf "%s/compare/%s...%s" .BaseRepo.Link (.BaseRepo.DefaultBranch|PathEscapeSegments) $cmpBranch}}
|
|
|
|
<a id="new-pull-request" role="button" class="ui compact basic button" href="{{$compareLink}}"
|
2023-09-25 20:42:40 +08:00
|
|
|
data-tooltip-content="{{if .PullRequestCtx.Allowed}}{{ctx.Locale.Tr "repo.pulls.compare_changes"}}{{else}}{{ctx.Locale.Tr "action.compare_branch"}}{{end}}">
|
2023-04-26 10:53:44 +08:00
|
|
|
{{svg "octicon-git-pull-request"}}
|
2023-04-25 22:08:29 +08:00
|
|
|
</a>
|
|
|
|
{{end}}
|
2023-05-22 15:57:00 +08:00
|
|
|
<!-- Show go to file and breadcrumbs if not on home page -->
|
|
|
|
{{$n := len .TreeNames}}
|
|
|
|
{{$l := Eval $n "-" 1}}
|
2022-08-08 07:15:11 +08:00
|
|
|
{{if eq $n 0}}
|
2023-09-25 16:56:50 +08:00
|
|
|
<a href="{{.Repository.Link}}/find/{{.BranchNameSubURL}}" class="ui compact basic button">{{ctx.Locale.Tr "repo.find_file.go_to_file"}}</a>
|
2022-09-06 15:01:58 +08:00
|
|
|
{{end}}
|
2023-04-19 21:40:42 +08:00
|
|
|
|
2023-07-07 21:36:14 +08:00
|
|
|
{{if and .CanWriteCode .IsViewBranch (not .Repository.IsMirror) (not .Repository.IsArchived) (not .IsViewFile)}}
|
2023-06-15 23:12:08 +08:00
|
|
|
<button class="ui dropdown basic compact jump button gt-mr-2"{{if not .Repository.CanEnableEditor}} disabled{{end}}>
|
2023-09-25 16:56:50 +08:00
|
|
|
{{ctx.Locale.Tr "repo.editor.add_file"}}
|
2023-06-15 23:12:08 +08:00
|
|
|
{{svg "octicon-triangle-down" 14 "dropdown icon"}}
|
2022-09-06 15:01:58 +08:00
|
|
|
<div class="menu">
|
2023-04-19 21:40:42 +08:00
|
|
|
<a class="item" href="{{.RepoLink}}/_new/{{.BranchName | PathEscapeSegments}}/{{.TreePath | PathEscapeSegments}}">
|
2023-09-25 16:56:50 +08:00
|
|
|
{{ctx.Locale.Tr "repo.editor.new_file"}}
|
2023-04-19 21:40:42 +08:00
|
|
|
</a>
|
|
|
|
{{if .RepositoryUploadEnabled}}
|
|
|
|
<a class="item" href="{{.RepoLink}}/_upload/{{.BranchName | PathEscapeSegments}}/{{.TreePath | PathEscapeSegments}}">
|
2023-09-25 16:56:50 +08:00
|
|
|
{{ctx.Locale.Tr "repo.editor.upload_file"}}
|
2023-04-19 21:40:42 +08:00
|
|
|
</a>
|
2022-09-06 15:01:58 +08:00
|
|
|
{{end}}
|
2023-04-19 21:40:42 +08:00
|
|
|
<a class="item" href="{{.RepoLink}}/_diffpatch/{{.BranchName | PathEscapeSegments}}/{{.TreePath | PathEscapeSegments}}">
|
2023-09-25 16:56:50 +08:00
|
|
|
{{ctx.Locale.Tr "repo.editor.patch"}}
|
2023-04-19 21:40:42 +08:00
|
|
|
</a>
|
2022-09-06 15:01:58 +08:00
|
|
|
</div>
|
|
|
|
</button>
|
|
|
|
{{end}}
|
2023-04-19 21:40:42 +08:00
|
|
|
|
2023-03-10 11:14:45 +08:00
|
|
|
{{if and (eq $n 0) (.Repository.IsTemplate)}}
|
|
|
|
<a role="button" class="ui primary compact button" href="{{AppSubUrl}}/repo/create?template_id={{.Repository.ID}}">
|
2023-09-25 16:56:50 +08:00
|
|
|
{{ctx.Locale.Tr "repo.use_template"}}
|
2023-03-10 11:14:45 +08:00
|
|
|
</a>
|
|
|
|
{{end}}
|
2022-09-06 15:01:58 +08:00
|
|
|
{{if ne $n 0}}
|
2023-05-01 23:40:02 +08:00
|
|
|
<span class="breadcrumb repo-path gt-ml-2">
|
2023-04-29 20:02:29 +08:00
|
|
|
<a class="section" href="{{.RepoLink}}/src/{{.BranchNameSubURL}}" title="{{.Repository.Name}}">{{StringUtils.EllipsisString .Repository.Name 30}}</a>
|
|
|
|
{{- range $i, $v := .TreeNames -}}
|
2023-08-16 08:08:23 +08:00
|
|
|
<span class="breadcrumb-divider">/</span>
|
2023-04-29 20:02:29 +08:00
|
|
|
{{- if eq $i $l -}}
|
|
|
|
<span class="active section" title="{{$v}}">{{StringUtils.EllipsisString $v 30}}</span>
|
|
|
|
{{- else -}}
|
|
|
|
{{$p := index $.Paths $i}}<span class="section"><a href="{{$.BranchLink}}/{{PathEscapeSegments $p}}" title="{{$v}}">{{StringUtils.EllipsisString $v 30}}</a></span>
|
|
|
|
{{- end -}}
|
|
|
|
{{- end -}}
|
|
|
|
</span>
|
2022-08-08 07:15:11 +08:00
|
|
|
{{end}}
|
2017-12-31 08:47:52 +08:00
|
|
|
</div>
|
2024-03-23 03:51:29 +08:00
|
|
|
<div class="tw-flex tw-items-center">
|
2017-08-14 06:49:38 +08:00
|
|
|
<!-- Only show clone panel in repository home page -->
|
2016-08-11 20:48:08 +08:00
|
|
|
{{if eq $n 0}}
|
2024-03-17 20:40:42 +08:00
|
|
|
<div class="clone-panel ui action tiny input">
|
2022-08-12 13:16:05 +08:00
|
|
|
{{template "repo/clone_buttons" .}}
|
2024-03-17 20:40:42 +08:00
|
|
|
<button class="ui small jump dropdown icon button" data-tooltip-content="{{ctx.Locale.Tr "repo.more_operations"}}">
|
2022-11-12 01:02:50 +08:00
|
|
|
{{svg "octicon-kebab-horizontal"}}
|
2015-12-08 06:30:52 +08:00
|
|
|
<div class="menu">
|
2022-08-12 13:16:05 +08:00
|
|
|
{{if not $.DisableDownloadSourceArchives}}
|
2023-09-25 16:56:50 +08:00
|
|
|
<a class="item archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments $.RefName}}.zip" rel="nofollow">{{svg "octicon-file-zip" 16 "gt-mr-3"}}{{ctx.Locale.Tr "repo.download_zip"}}</a>
|
|
|
|
<a class="item archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments $.RefName}}.tar.gz" rel="nofollow">{{svg "octicon-file-zip" 16 "gt-mr-3"}}{{ctx.Locale.Tr "repo.download_tar"}}</a>
|
|
|
|
<a class="item archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments $.RefName}}.bundle" rel="nofollow">{{svg "octicon-package" 16 "gt-mr-3"}}{{ctx.Locale.Tr "repo.download_bundle"}}</a>
|
2024-02-25 08:13:04 +08:00
|
|
|
{{end}}
|
|
|
|
{{if .CitiationExist}}
|
|
|
|
<a class="item" id="cite-repo-button">{{svg "octicon-cross-reference" 16 "gt-mr-3"}}{{ctx.Locale.Tr "repo.cite_this_repo"}}</a>
|
2022-08-12 13:16:05 +08:00
|
|
|
{{end}}
|
2024-02-24 21:12:17 +08:00
|
|
|
{{range .OpenWithEditorApps}}
|
|
|
|
<a class="item js-clone-url-editor" data-href-template="{{.OpenURL}}">{{.IconHTML}}{{ctx.Locale.Tr "repo.open_with_editor" .DisplayName}}</a>
|
|
|
|
{{end}}
|
2015-12-08 06:30:52 +08:00
|
|
|
</div>
|
2021-04-13 08:10:57 +08:00
|
|
|
</button>
|
2022-09-21 19:51:10 +08:00
|
|
|
{{template "repo/clone_script" .}}{{/* the script will update `.js-clone-url` and related elements */}}
|
2015-12-08 06:30:52 +08:00
|
|
|
</div>
|
2022-11-12 01:02:50 +08:00
|
|
|
{{template "repo/cite/cite_modal" .}}
|
2016-08-11 20:48:08 +08:00
|
|
|
{{end}}
|
2022-08-26 05:55:52 +08:00
|
|
|
{{if and (ne $n 0) (not .IsViewFile) (not .IsBlame)}}
|
2022-08-09 18:32:41 +08:00
|
|
|
<a class="ui button" href="{{.RepoLink}}/commits/{{.BranchNameSubURL}}/{{.TreePath | PathEscapeSegments}}">
|
2023-09-25 16:56:50 +08:00
|
|
|
{{svg "octicon-history" 16 "gt-mr-3"}}{{ctx.Locale.Tr "repo.file_history"}}
|
2022-08-09 18:32:41 +08:00
|
|
|
</a>
|
|
|
|
{{end}}
|
2016-08-11 20:48:08 +08:00
|
|
|
</div>
|
2015-12-08 06:30:52 +08:00
|
|
|
</div>
|
2016-08-30 17:08:38 +08:00
|
|
|
{{if .IsViewFile}}
|
2015-12-08 06:30:52 +08:00
|
|
|
{{template "repo/view_file" .}}
|
2019-04-20 10:47:00 +08:00
|
|
|
{{else if .IsBlame}}
|
|
|
|
{{template "repo/blame" .}}
|
2015-12-08 06:30:52 +08:00
|
|
|
{{else}}
|
|
|
|
{{template "repo/view_list" .}}
|
|
|
|
{{end}}
|
|
|
|
</div>
|
2014-07-26 12:24:27 +08:00
|
|
|
</div>
|
2015-12-08 06:30:52 +08:00
|
|
|
{{template "base/footer" .}}
|