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`tokarchuk/v1.17
parent
90e0a402c1
commit
d4c789dfc1
@ -1,42 +1,24 @@ |
|||||||
{{if not $.DisableHTTP}} |
<!-- there is always at least one button (by context/repo.go) --> |
||||||
<button class="ui basic clone button no-transition" id="repo-clone-https" data-link="{{if $.PageIsWiki}}{{$.WikiCloneLink.HTTPS}}{{else}}{{$.CloneLink.HTTPS}}{{end}}"> |
{{if $.CloneButtonShowHTTPS}} |
||||||
|
<button class="ui basic clone button no-transition" id="repo-clone-https" data-link="{{$.CloneButtonOriginLink.HTTPS}}"> |
||||||
{{if UseHTTPS}}HTTPS{{else}}HTTP{{end}} |
{{if UseHTTPS}}HTTPS{{else}}HTTP{{end}} |
||||||
</button> |
</button> |
||||||
{{end}} |
{{end}} |
||||||
{{if and (not $.DisableSSH) (or $.IsSigned $.ExposeAnonSSH)}} |
{{if $.CloneButtonShowSSH}} |
||||||
<button class="ui basic clone button no-transition" id="repo-clone-ssh" data-link="{{if $.PageIsWiki}}{{$.WikiCloneLink.SSH}}{{else}}{{$.CloneLink.SSH}}{{end}}"> |
<button class="ui basic clone button no-transition" id="repo-clone-ssh" data-link="{{$.CloneButtonOriginLink.SSH}}"> |
||||||
SSH |
SSH |
||||||
</button> |
</button> |
||||||
{{end}} |
{{end}} |
||||||
{{if not $.DisableHTTP}} |
<!-- the value will be updated by initRepoCloneLink, the code below is used to avoid UI flicking --> |
||||||
<input id="repo-clone-url" value="{{if $.PageIsWiki}}{{$.WikiCloneLink.HTTPS}}{{else}}{{$.CloneLink.HTTPS}}{{end}}" readonly> |
<input id="repo-clone-url" value="" readonly> |
||||||
{{else if and (not .DisableSSH) (or $.IsSigned $.ExposeAnonSSH)}} |
<script> |
||||||
<input id="repo-clone-url" value="{{if $.PageIsWiki}}{{$.WikiCloneLink.SSH}}{{else}}{{$.CloneLink.SSH}}{{end}}" readonly> |
(() => { |
||||||
{{end}} |
const proto = localStorage.getItem('repo-clone-protocol') || 'https'; |
||||||
{{if or (not $.DisableHTTP) (and (not $.DisableSSH) (or $.IsSigned $.ExposeAnonSSH))}} |
const btn = document.getElementById(`repo-clone-${proto}`); |
||||||
<button class="ui basic icon button tooltip" id="clipboard-btn" data-content="{{.i18n.Tr "copy_url"}}" data-clipboard-target="#repo-clone-url"> |
// it's ok if we don't find the btn here, initRepoCloneLink will take care of it |
||||||
{{svg "octicon-paste"}} |
document.getElementById('repo-clone-url').value = btn ? btn.getAttribute('data-link') : ''; |
||||||
</button> |
})(); |
||||||
{{end}} |
</script> |
||||||
{{if not (and $.DisableHTTP $.DisableSSH)}} |
<button class="ui basic icon button tooltip" id="clipboard-btn" data-content="{{.i18n.Tr "copy_url"}}" data-clipboard-target="#repo-clone-url"> |
||||||
<script> |
{{svg "octicon-paste"}} |
||||||
<!-- /* eslint-disable */ --> |
</button> |
||||||
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}} |
|
||||||
|
Loading…
Reference in new issue