diff options
author | wxiaoguang <wxiaoguang@gmail.com> | 2022-03-29 05:21:30 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-29 05:21:30 +0200 |
commit | d4c789dfc1c341413b77a2f21fe7339982102bed (patch) | |
tree | 1ab6fddbe6cbd1f14b939b54c5fd7f2ca7255bd6 /templates | |
parent | Show last cron messages on monitor page (#19223) (diff) | |
download | forgejo-d4c789dfc1c341413b77a2f21fe7339982102bed.tar.xz forgejo-d4c789dfc1c341413b77a2f21fe7339982102bed.zip |
Refactor repo clone button and repo clone links, fix JS error on empty repo page (#19208)
The last PR about clone buttons introduced an JS error when visiting an empty repo page:
* https://github.com/go-gitea/gitea/pull/19028
* `Uncaught ReferenceError: isSSH is not defined`, because the variables are scoped and doesn't share between sub templates.
This:
1. Simplify `templates/repo/clone_buttons.tmpl` and make code clear
2. Move most JS code into `initRepoCloneLink`
3. Remove unused `CloneLink.Git`
4. Remove `ctx.Data["DisableSSH"] / ctx.Data["ExposeAnonSSH"] / ctx.Data["DisableHTTP"]`, and only set them when is is needed (eg: deploy keys / ssh keys)
5. Introduce `Data["CloneButton*"]` to provide data for clone buttons and links
6. Introduce `Data["RepoCloneLink"]` for the repo clone link (not the wiki)
7. Remove most `ctx.Data["PageIsWiki"]` because it has been set in the `/wiki` middleware
8. Remove incorrect `quickstart` class in `migrating.tmpl`
Diffstat (limited to 'templates')
-rw-r--r-- | templates/base/head.tmpl | 2 | ||||
-rw-r--r-- | templates/repo/clone_buttons.tmpl | 54 | ||||
-rw-r--r-- | templates/repo/empty.tmpl | 25 | ||||
-rw-r--r-- | templates/repo/home.tmpl | 2 | ||||
-rw-r--r-- | templates/repo/migrate/migrating.tmpl | 2 |
5 files changed, 36 insertions, 49 deletions
diff --git a/templates/base/head.tmpl b/templates/base/head.tmpl index 68d14af51d..2a9c24255d 100644 --- a/templates/base/head.tmpl +++ b/templates/base/head.tmpl @@ -12,7 +12,7 @@ <meta name="keywords" content="{{MetaKeywords}}"> <meta name="referrer" content="no-referrer" /> {{if .GoGetImport}} - <meta name="go-import" content="{{.GoGetImport}} git {{.CloneLink.HTTPS}}"> + <meta name="go-import" content="{{.GoGetImport}} git {{.RepoCloneLink.HTTPS}}"> <meta name="go-source" content="{{.GoGetImport}} _ {{.GoDocDirectory}} {{.GoDocFile}}"> {{end}} {{if .FeedURL}} diff --git a/templates/repo/clone_buttons.tmpl b/templates/repo/clone_buttons.tmpl index d4b822521c..cee7e31965 100644 --- a/templates/repo/clone_buttons.tmpl +++ b/templates/repo/clone_buttons.tmpl @@ -1,42 +1,24 @@ -{{if not $.DisableHTTP}} - <button class="ui basic clone button no-transition" id="repo-clone-https" data-link="{{if $.PageIsWiki}}{{$.WikiCloneLink.HTTPS}}{{else}}{{$.CloneLink.HTTPS}}{{end}}"> +<!-- there is always at least one button (by context/repo.go) --> +{{if $.CloneButtonShowHTTPS}} + <button class="ui basic clone button no-transition" id="repo-clone-https" data-link="{{$.CloneButtonOriginLink.HTTPS}}"> {{if UseHTTPS}}HTTPS{{else}}HTTP{{end}} </button> {{end}} -{{if and (not $.DisableSSH) (or $.IsSigned $.ExposeAnonSSH)}} - <button class="ui basic clone button no-transition" id="repo-clone-ssh" data-link="{{if $.PageIsWiki}}{{$.WikiCloneLink.SSH}}{{else}}{{$.CloneLink.SSH}}{{end}}"> +{{if $.CloneButtonShowSSH}} + <button class="ui basic clone button no-transition" id="repo-clone-ssh" data-link="{{$.CloneButtonOriginLink.SSH}}"> SSH </button> {{end}} -{{if not $.DisableHTTP}} - <input id="repo-clone-url" value="{{if $.PageIsWiki}}{{$.WikiCloneLink.HTTPS}}{{else}}{{$.CloneLink.HTTPS}}{{end}}" readonly> -{{else if and (not .DisableSSH) (or $.IsSigned $.ExposeAnonSSH)}} - <input id="repo-clone-url" value="{{if $.PageIsWiki}}{{$.WikiCloneLink.SSH}}{{else}}{{$.CloneLink.SSH}}{{end}}" readonly> -{{end}} -{{if or (not $.DisableHTTP) (and (not $.DisableSSH) (or $.IsSigned $.ExposeAnonSSH))}} - <button class="ui basic icon button tooltip" id="clipboard-btn" data-content="{{.i18n.Tr "copy_url"}}" data-clipboard-target="#repo-clone-url"> - {{svg "octicon-paste"}} - </button> -{{end}} -{{if not (and $.DisableHTTP $.DisableSSH)}} - <script> - <!-- /* eslint-disable */ --> - window.config.pageData['repoCloneButtons']= {httpsDisabled: {{$.DisableHTTP}}}; - </script> - <script> - (() => { - const tmplData = window.config.pageData.repoCloneButtons; - const isSSH = tmplData.httpsDisabled || localStorage.getItem('repo-clone-protocol') === 'ssh'; - const sshButton = document.getElementById('repo-clone-ssh'); - const httpsButton = document.getElementById('repo-clone-https'); - const input = document.getElementById('repo-clone-url'); - if (input) input.value = (isSSH ? sshButton : httpsButton).getAttribute('data-link'); - if (sshButton) sshButton.classList[isSSH ? 'add' : 'remove']('primary'); - if (httpsButton) httpsButton.classList[isSSH ? 'remove' : 'add']('primary'); - setTimeout(() => { - if (sshButton) sshButton.classList.remove('no-transition'); - if (httpsButton) httpsButton.classList.remove('no-transition'); - }, 100); - })(); - </script> -{{end}} +<!-- the value will be updated by initRepoCloneLink, the code below is used to avoid UI flicking --> +<input id="repo-clone-url" value="" readonly> +<script> + (() => { + const proto = localStorage.getItem('repo-clone-protocol') || 'https'; + const btn = document.getElementById(`repo-clone-${proto}`); + // it's ok if we don't find the btn here, initRepoCloneLink will take care of it + document.getElementById('repo-clone-url').value = btn ? btn.getAttribute('data-link') : ''; + })(); +</script> +<button class="ui basic icon button tooltip" id="clipboard-btn" data-content="{{.i18n.Tr "copy_url"}}" data-clipboard-target="#repo-clone-url"> + {{svg "octicon-paste"}} +</button> diff --git a/templates/repo/empty.tmpl b/templates/repo/empty.tmpl index 6da9e28e16..eee607ecaf 100644 --- a/templates/repo/empty.tmpl +++ b/templates/repo/empty.tmpl @@ -18,7 +18,7 @@ <h4 class="ui top attached header"> {{.i18n.Tr "repo.quick_guide"}} </h4> - <div class="ui attached guide table segment"> + <div class="ui attached guide table segment empty-repo-guide"> <div class="item"> <h3>{{.i18n.Tr "repo.clone_this_repo"}} <small>{{.i18n.Tr "repo.clone_helper" "http://git-scm.com/book/en/Git-Basics-Getting-a-Git-Repository" | Str2html}}</small></h3> <div class="ui action small input"> @@ -37,7 +37,7 @@ git init {{if ne .Repository.DefaultBranch "master"}}git checkout -b {{.Repository.DefaultBranch}}{{end}} git add README.md git commit -m "first commit" -git remote add origin <span class="clone-url">{{$.CloneLink.HTTPS}}</span> +git remote add origin <span class="clone-url"></span> git push -u origin {{.Repository.DefaultBranch}}</code></pre> </div> </div> @@ -46,18 +46,23 @@ git push -u origin {{.Repository.DefaultBranch}}</code></pre> <div class="item"> <h3>{{.i18n.Tr "repo.push_exist_repo"}}</h3> <div class="markup"> - <pre><code>git remote add origin <span class="clone-url">{{$.CloneLink.HTTPS}}</span> + <pre><code>git remote add origin <span class="clone-url"></span> git push -u origin {{.Repository.DefaultBranch}}</code></pre> </div> </div> - <script defer> - /* eslint-disable no-undef */ - const cloneUrls = document.getElementsByClassName('clone-url'); - if (cloneUrls) { - for (let i = 0; i < cloneUrls.length; i++) { - cloneUrls[i].textContent = (isSSH ? sshButton : httpsButton).getAttribute('data-link'); + <!-- the clone-url content will be updated by initRepoCloneLink, the code below is used to avoid UI flicking --> + <script> + (() => { + const proto = localStorage.getItem('repo-clone-protocol') || 'https'; + const btn = document.getElementById(`repo-clone-${proto}`); + const cloneUrls = document.getElementsByClassName('clone-url'); + // it's ok if we didn't find the btn here, initRepoCloneLink will take all the work + if (btn) { + for (let i = 0; i < cloneUrls.length; i++) { + cloneUrls[i].textContent = btn.getAttribute('data-link'); + } } - } + })(); </script> {{end}} {{else}} diff --git a/templates/repo/home.tmpl b/templates/repo/home.tmpl index 30f1471c16..c146f474ee 100644 --- a/templates/repo/home.tmpl +++ b/templates/repo/home.tmpl @@ -125,7 +125,7 @@ <a class="item archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments $.BranchName}}.zip" rel="nofollow">{{svg "octicon-file-zip" 16 "mr-3"}}{{.i18n.Tr "repo.download_zip"}}</a> <a class="item archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments $.BranchName}}.tar.gz" rel="nofollow">{{svg "octicon-file-zip" 16 "mr-3"}}{{.i18n.Tr "repo.download_tar"}}</a> <a class="item archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments $.BranchName}}.bundle" rel="nofollow">{{svg "octicon-package" 16 "mr-3"}}{{.i18n.Tr "repo.download_bundle"}}</a> - <a class="item" href="vscode://vscode.git/clone?url={{if $.PageIsWiki}}{{$.WikiCloneLink.HTTPS}}{{else}}{{$.CloneLink.HTTPS}}{{end}}">{{svg "gitea-vscode" 16 "mr-3"}}{{.i18n.Tr "repo.clone_in_vsc"}}</a> + <a class="item" href="vscode://vscode.git/clone?url={{$.RepoCloneLink.HTTPS}}">{{svg "gitea-vscode" 16 "mr-3"}}{{.i18n.Tr "repo.clone_in_vsc"}}</a> </div> </button> </div> diff --git a/templates/repo/migrate/migrating.tmpl b/templates/repo/migrate/migrating.tmpl index 6df7f0a65d..8858e88dad 100644 --- a/templates/repo/migrate/migrating.tmpl +++ b/templates/repo/migrate/migrating.tmpl @@ -1,5 +1,5 @@ {{template "base/head" .}} -<div class="page-content repository quickstart"> +<div class="page-content repository"> {{template "repo/header" .}} <div class="ui container"> <div class="ui grid"> |