]> source.dussan.org Git - gitea.git/commitdiff
Make Clone in VSCode link get updated correctly (#21225) (#21226)
authorwxiaoguang <wxiaoguang@gmail.com>
Fri, 23 Sep 2022 04:10:26 +0000 (12:10 +0800)
committerGitHub <noreply@github.com>
Fri, 23 Sep 2022 04:10:26 +0000 (12:10 +0800)
Backport #21225, fix for #21128 (also in 1.17.3), close #21224

The indent was incorrect before, so this PR did some formatting work.

Bypass Golang's template bug for JS string interpolation. And since
there are JS lint rules for templates, so the string interpolation is
also a must.

templates/repo/clone_script.tmpl
templates/repo/home.tmpl

index 5c9a545caddf9e7da5083046b216ac60e7b43582..97fd61d83dbcd73b4160627bc264aa3b334bd7c4 100644 (file)
@@ -1,3 +1,6 @@
+{{/*Golang's template has a bug with string interpolation containing slashes,
+the double slash will be treated as a comment there.
+But there are also JS lint rules for template that require to use string interpolation in 1.17*/}}
 <script>
        // synchronously set clone button states and urls here to avoid flickering
        // on page load. initRepoCloneLink calls this when proto changes.
@@ -21,8 +24,9 @@
                for (const el of document.getElementsByClassName('js-clone-url')) {
                        el[el.nodeName === 'INPUT' ? 'value' : 'textContent'] = link;
                }
+               const sep = '//';
                for (const el of document.getElementsByClassName('js-clone-url-vsc')) {
-                       el['href'] = `vscode://vscode.git/clone?url=${encodeURIComponent(link)}`;
+                       el.href = `vscode:${sep}vscode.git/clone?url=${encodeURIComponent(link)}`;
                }
        })();
 </script>
index 2f9b1f25b734effa1635fca85e8bc021c9981ab2..18c02aa9ecac58cce364482b8a62b8243a928d23 100644 (file)
                                <!-- Only show clone panel in repository home page -->
                                {{if eq $n 0}}
                                        <div class="ui action tiny input" id="clone-panel">
-                                       {{template "repo/clone_buttons" .}}
-                                       {{template "repo/clone_script" .}}
-                                       <button id="download-btn" class="ui basic small compact jump dropdown icon button tooltip" data-content="{{.i18n.Tr "repo.download_archive"}}" data-position="top right">
-                                               {{svg "octicon-download"}}
-                                               <div class="menu">
-                                                       {{if not $.DisableDownloadSourceArchives}}
-                                                               <a class="item archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments $.RefName}}.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 $.RefName}}.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 $.RefName}}.bundle" rel="nofollow">{{svg "octicon-package" 16 "mr-3"}}{{.i18n.Tr "repo.download_bundle"}}</a>
-                                                       {{end}}
-                                                       <a class="item js-clone-url-vsc" href="vscode://vscode.git/clone?url={{.CloneButtonOriginLink.HTTPS}}">{{svg "gitea-vscode" 16 "mr-3"}}{{.i18n.Tr "repo.clone_in_vsc"}}</a>
-                                               </div>
-                                       </button>
+                                               {{template "repo/clone_buttons" .}}
+                                               <button id="download-btn" class="ui basic small compact jump dropdown icon button tooltip" data-content="{{.i18n.Tr "repo.download_archive"}}" data-position="top right">
+                                                       {{svg "octicon-download"}}
+                                                       <div class="menu">
+                                                               {{if not $.DisableDownloadSourceArchives}}
+                                                                       <a class="item archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments $.RefName}}.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 $.RefName}}.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 $.RefName}}.bundle" rel="nofollow">{{svg "octicon-package" 16 "mr-3"}}{{.i18n.Tr "repo.download_bundle"}}</a>
+                                                               {{end}}
+                                                               <a class="item js-clone-url-vsc" href="vscode://vscode.git/clone?url={{.CloneButtonOriginLink.HTTPS}}">{{svg "gitea-vscode" 16 "mr-3"}}{{.i18n.Tr "repo.clone_in_vsc"}}</a>
+                                                       </div>
+                                               </button>
+                                               {{template "repo/clone_script" .}}{{/* the script will update `.js-clone-url` and related elements */}}
                                        </div>
                                {{end}}
                                {{if and (ne $n 0) (not .IsViewFile) (not .IsBlame) }}