mirror of
https://codeberg.org/forgejo/forgejo
synced 2024-11-30 22:06:11 +01:00
be5411d6b5
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.
33 lines
1.5 KiB
Handlebars
33 lines
1.5 KiB
Handlebars
{{/*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.
|
|
// this applies the protocol-dependant clone url to all elements with the
|
|
// `js-clone-url` and `js-clone-url-vsc` classes.
|
|
// TODO: This localStorage setting should be moved to backend user config
|
|
// so it's available during rendering, then this inline script can be removed.
|
|
(window.updateCloneStates = function() {
|
|
const httpsBtn = document.getElementById('repo-clone-https');
|
|
const sshBtn = document.getElementById('repo-clone-ssh');
|
|
const value = localStorage.getItem('repo-clone-protocol') || 'https';
|
|
const isSSH = value === 'ssh' && sshBtn || value !== 'ssh' && !httpsBtn;
|
|
|
|
if (httpsBtn) httpsBtn.classList[!isSSH ? 'add' : 'remove']('primary');
|
|
if (sshBtn) sshBtn.classList[isSSH ? 'add' : 'remove']('primary');
|
|
|
|
const btn = isSSH ? sshBtn : httpsBtn;
|
|
if (!btn) return;
|
|
|
|
const link = btn.getAttribute('data-link');
|
|
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:${sep}vscode.git/clone?url=${encodeURIComponent(link)}`;
|
|
}
|
|
})();
|
|
</script>
|