aboutsummaryrefslogtreecommitdiffstats
path: root/templates/repo/clone_buttons.tmpl
diff options
context:
space:
mode:
authorwxiaoguang <wxiaoguang@gmail.com>2022-03-29 11:21:30 +0800
committerGitHub <noreply@github.com>2022-03-29 05:21:30 +0200
commitd4c789dfc1c341413b77a2f21fe7339982102bed (patch)
tree1ab6fddbe6cbd1f14b939b54c5fd7f2ca7255bd6 /templates/repo/clone_buttons.tmpl
parent90e0a402c1185827fd3d5352ca915c531ce1e7b1 (diff)
downloadgitea-d4c789dfc1c341413b77a2f21fe7339982102bed.tar.gz
gitea-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/repo/clone_buttons.tmpl')
-rw-r--r--templates/repo/clone_buttons.tmpl54
1 files changed, 18 insertions, 36 deletions
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>