mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-11-04 01:10:49 +01:00
Hide target selector if tag exists when creating new release (#23171)
Close #22649. |status|screenshot| |-|-| |empty tag name|<img src="https://user-images.githubusercontent.com/15528715/221490165-fd3abd2e-6dc5-4562-bece-d1d6a305479e.png" width="300px"/>| |new tag|<img src="https://user-images.githubusercontent.com/15528715/221490450-49b2a48e-b206-49f4-bd79-34b1ea64156f.png" width="300px"/>| |existing tag|<img src="https://user-images.githubusercontent.com/15528715/221490301-4d1879dd-4947-4abc-9b9a-e77be1806981.png" width="300px"/>|
This commit is contained in:
parent
5155ec35c5
commit
3de9e63fd0
4 changed files with 60 additions and 18 deletions
|
@ -2290,6 +2290,8 @@ release.edit_subheader = Releases organize project versions.
|
||||||
release.tag_name = Tag name
|
release.tag_name = Tag name
|
||||||
release.target = Target
|
release.target = Target
|
||||||
release.tag_helper = Choose an existing tag or create a new tag.
|
release.tag_helper = Choose an existing tag or create a new tag.
|
||||||
|
release.tag_helper_new = New tag. This tag will be created from the target.
|
||||||
|
release.tag_helper_existing = Existing tag.
|
||||||
release.title = Title
|
release.title = Title
|
||||||
release.content = Content
|
release.content = Content
|
||||||
release.prerelease_desc = Mark as Pre-Release
|
release.prerelease_desc = Mark as Pre-Release
|
||||||
|
|
|
@ -20,6 +20,8 @@
|
||||||
<b>{{.tag_name}}</b><span class="at">@</span><strong>{{.tag_target}}</strong>
|
<b>{{.tag_name}}</b><span class="at">@</span><strong>{{.tag_target}}</strong>
|
||||||
{{else}}
|
{{else}}
|
||||||
<input id="tag-name" name="tag_name" value="{{.tag_name}}" placeholder="{{.locale.Tr "repo.release.tag_name"}}" autofocus required maxlength="255">
|
<input id="tag-name" name="tag_name" value="{{.tag_name}}" placeholder="{{.locale.Tr "repo.release.tag_name"}}" autofocus required maxlength="255">
|
||||||
|
<input id="tag-name-editor" type="hidden" data-existing-tags={{Json .Tags}} data-tag-helper={{.locale.Tr "repo.release.tag_helper"}} data-tag-helper-new={{.locale.Tr "repo.release.tag_helper_new"}} data-tag-helper-existing={{.locale.Tr "repo.release.tag_helper_existing"}} />
|
||||||
|
<div id="tag-target-selector" class="gt-dib">
|
||||||
<span class="at">@</span>
|
<span class="at">@</span>
|
||||||
<div class="ui selection dropdown">
|
<div class="ui selection dropdown">
|
||||||
<input type="hidden" name="tag_target" value="{{.tag_target}}"/>
|
<input type="hidden" name="tag_target" value="{{.tag_target}}"/>
|
||||||
|
@ -35,7 +37,10 @@
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<span class="help">{{.locale.Tr "repo.release.tag_helper"}}</span>
|
</div>
|
||||||
|
<div>
|
||||||
|
<span id="tag-helper" class="help gt-mt-2">{{.locale.Tr "repo.release.tag_helper"}}</span>
|
||||||
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -3,7 +3,7 @@ import {attachTribute} from './tribute.js';
|
||||||
import {initCompMarkupContentPreviewTab} from './comp/MarkupContentPreview.js';
|
import {initCompMarkupContentPreviewTab} from './comp/MarkupContentPreview.js';
|
||||||
import {initEasyMDEImagePaste} from './comp/ImagePaste.js';
|
import {initEasyMDEImagePaste} from './comp/ImagePaste.js';
|
||||||
import {createCommentEasyMDE} from './comp/EasyMDE.js';
|
import {createCommentEasyMDE} from './comp/EasyMDE.js';
|
||||||
import {hideElem} from '../utils/dom.js';
|
import {hideElem, showElem} from '../utils/dom.js';
|
||||||
|
|
||||||
export function initRepoRelease() {
|
export function initRepoRelease() {
|
||||||
$(document).on('click', '.remove-rel-attach', function() {
|
$(document).on('click', '.remove-rel-attach', function() {
|
||||||
|
@ -14,8 +14,43 @@ export function initRepoRelease() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function initRepoReleaseNew() {
|
||||||
|
const $repoReleaseNew = $('.repository.new.release');
|
||||||
|
if (!$repoReleaseNew.length) return;
|
||||||
|
|
||||||
export function initRepoReleaseEditor() {
|
initTagNameEditor();
|
||||||
|
initRepoReleaseEditor();
|
||||||
|
}
|
||||||
|
|
||||||
|
function initTagNameEditor() {
|
||||||
|
const el = document.getElementById('tag-name-editor');
|
||||||
|
if (!el) return;
|
||||||
|
|
||||||
|
const existingTags = JSON.parse(el.getAttribute('data-existing-tags'));
|
||||||
|
if (!Array.isArray(existingTags)) return;
|
||||||
|
|
||||||
|
const defaultTagHelperText = el.getAttribute('data-tag-helper');
|
||||||
|
const newTagHelperText = el.getAttribute('data-tag-helper-new');
|
||||||
|
const existingTagHelperText = el.getAttribute('data-tag-helper-existing');
|
||||||
|
|
||||||
|
document.getElementById('tag-name').addEventListener('keyup', (e) => {
|
||||||
|
const value = e.target.value;
|
||||||
|
if (existingTags.includes(value)) {
|
||||||
|
// If the tag already exists, hide the target branch selector.
|
||||||
|
hideElem('#tag-target-selector');
|
||||||
|
document.getElementById('tag-helper').innerText = existingTagHelperText;
|
||||||
|
} else {
|
||||||
|
showElem('#tag-target-selector');
|
||||||
|
if (value) {
|
||||||
|
document.getElementById('tag-helper').innerText = newTagHelperText;
|
||||||
|
} else {
|
||||||
|
document.getElementById('tag-helper').innerText = defaultTagHelperText;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function initRepoReleaseEditor() {
|
||||||
const $editor = $('.repository.new.release .content-editor');
|
const $editor = $('.repository.new.release .content-editor');
|
||||||
if ($editor.length === 0) {
|
if ($editor.length === 0) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -76,7 +76,7 @@ import {
|
||||||
import {initViewedCheckboxListenerFor} from './features/pull-view-file.js';
|
import {initViewedCheckboxListenerFor} from './features/pull-view-file.js';
|
||||||
import {initOrgTeamSearchRepoBox, initOrgTeamSettings} from './features/org-team.js';
|
import {initOrgTeamSearchRepoBox, initOrgTeamSettings} from './features/org-team.js';
|
||||||
import {initUserAuthWebAuthn, initUserAuthWebAuthnRegister} from './features/user-auth-webauthn.js';
|
import {initUserAuthWebAuthn, initUserAuthWebAuthnRegister} from './features/user-auth-webauthn.js';
|
||||||
import {initRepoRelease, initRepoReleaseEditor} from './features/repo-release.js';
|
import {initRepoRelease, initRepoReleaseNew} from './features/repo-release.js';
|
||||||
import {initRepoEditor} from './features/repo-editor.js';
|
import {initRepoEditor} from './features/repo-editor.js';
|
||||||
import {initCompSearchUserBox} from './features/comp/SearchUserBox.js';
|
import {initCompSearchUserBox} from './features/comp/SearchUserBox.js';
|
||||||
import {initInstall} from './features/install.js';
|
import {initInstall} from './features/install.js';
|
||||||
|
@ -179,7 +179,7 @@ $(document).ready(() => {
|
||||||
initRepoPullRequestAllowMaintainerEdit();
|
initRepoPullRequestAllowMaintainerEdit();
|
||||||
initRepoPullRequestReview();
|
initRepoPullRequestReview();
|
||||||
initRepoRelease();
|
initRepoRelease();
|
||||||
initRepoReleaseEditor();
|
initRepoReleaseNew();
|
||||||
initRepoSettingGitHook();
|
initRepoSettingGitHook();
|
||||||
initRepoSettingSearchTeamBox();
|
initRepoSettingSearchTeamBox();
|
||||||
initRepoSettingsCollaboration();
|
initRepoSettingsCollaboration();
|
||||||
|
|
Loading…
Reference in a new issue