]> source.dussan.org Git - gitea.git/commitdiff
Fix incorrect issue form (#30881) (#30904)
authorGiteabot <teabot@gitea.io>
Wed, 8 May 2024 23:26:53 +0000 (07:26 +0800)
committerGitHub <noreply@github.com>
Wed, 8 May 2024 23:26:53 +0000 (23:26 +0000)
Backport #30881 by wxiaoguang

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
templates/repo/issue/branch_selector_field.tmpl
web_src/js/features/repo-legacy.js

index cbf7929fdb31951edb62a073f4ff7188776b2bde..5793a8bfda8881b5d64ceb839730afe81cc37bbd 100644 (file)
@@ -1,12 +1,8 @@
 {{if and (not .Issue.IsPull) (not .PageIsComparePull)}}
 <input id="ref_selector" name="ref" type="hidden" value="{{.Reference}}">
-<input id="editing_mode" name="edit_mode" type="hidden" value="{{(or .IsIssueWriter .HasIssuesOrPullsWritePermission)}}">
-<form method="post" action="{{$.RepoLink}}/issues/{{.Issue.Index}}/ref" id="update_issueref_form">
-       {{$.CsrfTokenHtml}}
-</form>
 <div class="ui dropdown select-branch branch-selector-dropdown ellipsis-items-nowrap {{if not .HasIssuesOrPullsWritePermission}}disabled{{end}}"
        data-no-results="{{ctx.Locale.Tr "no_results_found"}}"
-       {{if not .Issue}}data-for-new-issue="true"{{end}}
+       {{if and .Issue (or .IsIssueWriter .HasIssuesOrPullsWritePermission)}}data-url-update-issueref="{{$.RepoLink}}/issues/{{.Issue.Index}}/ref"{{end}}
 >
        <div class="ui button branch-dropdown-button">
                <span class="text-branch-name gt-ellipsis">{{if .Reference}}{{$.RefEndName}}{{else}}{{ctx.Locale.Tr "repo.issues.no_ref"}}{{end}}</span>
index b65938b045ac605b551c44de5b857f31fce56d44..2323d818c2e33d4bf9f621cd159ca30e0f41996d 100644 (file)
@@ -58,32 +58,27 @@ export function initRepoCommentForm() {
   function initBranchSelector() {
     const elSelectBranch = document.querySelector('.ui.dropdown.select-branch');
     if (!elSelectBranch) return;
-    const isForNewIssue = elSelectBranch.getAttribute('data-for-new-issue') === 'true';
 
+    const urlUpdateIssueRef = elSelectBranch.getAttribute('data-url-update-issueref');
     const $selectBranch = $(elSelectBranch);
     const $branchMenu = $selectBranch.find('.reference-list-menu');
     $branchMenu.find('.item:not(.no-select)').on('click', async function (e) {
       e.preventDefault();
-      const selectedValue = $(this).data('id'); // eg: "refs/heads/my-branch"
-      const editMode = $('#editing_mode').val();
-      $($(this).data('id-selector')).val(selectedValue);
-      if (isForNewIssue) {
-        elSelectBranch.querySelector('.text-branch-name').textContent = this.getAttribute('data-name');
-        return; // only update UI&form, do not send request/reload
-      }
-
-      if (editMode === 'true') {
-        const form = document.getElementById('update_issueref_form');
-        const params = new URLSearchParams();
-        params.append('ref', selectedValue);
+      const selectedValue = this.getAttribute('data-id'); // eg: "refs/heads/my-branch"
+      const selectedText = this.getAttribute('data-name'); // eg: "my-branch"
+      if (urlUpdateIssueRef) {
+        // for existing issue, send request to update issue ref, and reload page
         try {
-          await POST(form.getAttribute('action'), {data: params});
+          await POST(urlUpdateIssueRef, {data: new URLSearchParams({ref: selectedValue})});
           window.location.reload();
         } catch (error) {
           console.error(error);
         }
-      } else if (editMode === '') {
-        $selectBranch.find('.ui .branch-name').text(selectedValue);
+      } else {
+        // for new issue, only update UI&form, do not send request/reload
+        const selectedHiddenSelector = this.getAttribute('data-id-selector');
+        document.querySelector(selectedHiddenSelector).value = selectedValue;
+        elSelectBranch.querySelector('.text-branch-name').textContent = selectedText;
       }
     });
     $selectBranch.find('.reference.column').on('click', function () {