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`
This commit is contained in:
parent
90e0a402c1
commit
d4c789dfc1
12 changed files with 100 additions and 82 deletions
|
@ -43,26 +43,56 @@ export function initRepoArchiveLinks() {
|
|||
});
|
||||
}
|
||||
|
||||
export function initRepoClone() {
|
||||
// Quick start and repository home
|
||||
$('#repo-clone-ssh').on('click', function () {
|
||||
$('.clone-url').text($(this).data('link'));
|
||||
$('#repo-clone-url').val($(this).data('link'));
|
||||
$(this).addClass('primary');
|
||||
$('#repo-clone-https').removeClass('primary');
|
||||
localStorage.setItem('repo-clone-protocol', 'ssh');
|
||||
});
|
||||
$('#repo-clone-https').on('click', function () {
|
||||
$('.clone-url').text($(this).data('link'));
|
||||
$('#repo-clone-url').val($(this).data('link'));
|
||||
$(this).addClass('primary');
|
||||
if ($('#repo-clone-ssh').length > 0) {
|
||||
$('#repo-clone-ssh').removeClass('primary');
|
||||
localStorage.setItem('repo-clone-protocol', 'https');
|
||||
export function initRepoCloneLink() {
|
||||
const defaultGitProtocol = 'https'; // ssh or https
|
||||
|
||||
const $repoCloneSsh = $('#repo-clone-ssh');
|
||||
const $repoCloneHttps = $('#repo-clone-https');
|
||||
const $inputLink = $('#repo-clone-url');
|
||||
|
||||
if ((!$repoCloneSsh.length && !$repoCloneHttps.length) || !$inputLink.length) {
|
||||
return;
|
||||
}
|
||||
|
||||
const updateUi = () => {
|
||||
let isSSH = (localStorage.getItem('repo-clone-protocol') || defaultGitProtocol) === 'ssh';
|
||||
// there must be at least one clone button (by context/repo.go). if no ssh, then there must be https.
|
||||
if (isSSH && $repoCloneSsh.length === 0) {
|
||||
isSSH = false;
|
||||
} else if (!isSSH && $repoCloneHttps.length === 0) {
|
||||
isSSH = true;
|
||||
}
|
||||
const cloneLink = (isSSH ? $repoCloneSsh : $repoCloneHttps).attr('data-link');
|
||||
$inputLink.val(cloneLink);
|
||||
if (isSSH) {
|
||||
$repoCloneSsh.addClass('primary');
|
||||
$repoCloneHttps.removeClass('primary');
|
||||
} else {
|
||||
$repoCloneSsh.removeClass('primary');
|
||||
$repoCloneHttps.addClass('primary');
|
||||
}
|
||||
// the empty repo guide
|
||||
$('.quickstart .empty-repo-guide .clone-url').text(cloneLink);
|
||||
};
|
||||
updateUi();
|
||||
|
||||
setTimeout(() => {
|
||||
// restore animation after first init
|
||||
$repoCloneSsh.removeClass('no-transition');
|
||||
$repoCloneHttps.removeClass('no-transition');
|
||||
}, 100);
|
||||
|
||||
$repoCloneSsh.on('click', () => {
|
||||
localStorage.setItem('repo-clone-protocol', 'ssh');
|
||||
updateUi();
|
||||
});
|
||||
$('#repo-clone-url').on('click', function () {
|
||||
$(this).select();
|
||||
$repoCloneHttps.on('click', () => {
|
||||
localStorage.setItem('repo-clone-protocol', 'https');
|
||||
updateUi();
|
||||
});
|
||||
|
||||
$inputLink.on('click', () => {
|
||||
$inputLink.select();
|
||||
});
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue