mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-29 10:57:44 +09:00 
			
		
		
		
	Fix incorrect URL for "Reference in New Issue" (#28716)
Gitea prefers to use relative URLs in code (to make multiple domain work for some users) So it needs to use `toAbsoluteUrl` to generate a full URL when click "Reference in New Issues" And add some comments in the test code
This commit is contained in:
		| @@ -607,3 +607,22 @@ func TestUpdateIssueDeadline(t *testing.T) { | |||||||
|  |  | ||||||
| 	assert.EqualValues(t, "2022-04-06", apiIssue.Deadline.Format("2006-01-02")) | 	assert.EqualValues(t, "2022-04-06", apiIssue.Deadline.Format("2006-01-02")) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | func TestIssueReferenceURL(t *testing.T) { | ||||||
|  | 	defer tests.PrepareTestEnv(t)() | ||||||
|  | 	session := loginUser(t, "user2") | ||||||
|  |  | ||||||
|  | 	issue := unittest.AssertExistsAndLoadBean(t, &issues_model.Issue{ID: 1}) | ||||||
|  | 	repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: issue.RepoID}) | ||||||
|  |  | ||||||
|  | 	req := NewRequest(t, "GET", fmt.Sprintf("%s/issues/%d", repo.FullName(), issue.Index)) | ||||||
|  | 	resp := session.MakeRequest(t, req, http.StatusOK) | ||||||
|  | 	htmlDoc := NewHTMLParser(t, resp.Body) | ||||||
|  |  | ||||||
|  | 	// the "reference" uses relative URLs, then JS code will convert them to absolute URLs for current origin, in case users are using multiple domains | ||||||
|  | 	ref, _ := htmlDoc.Find(`.timeline-item.comment.first .reference-issue`).Attr("data-reference") | ||||||
|  | 	assert.EqualValues(t, "/user2/repo1/issues/1#issue-1", ref) | ||||||
|  |  | ||||||
|  | 	ref, _ = htmlDoc.Find(`.timeline-item.comment:not(.first) .reference-issue`).Attr("data-reference") | ||||||
|  | 	assert.EqualValues(t, "/user2/repo1/issues/1#issuecomment-2", ref) | ||||||
|  | } | ||||||
|   | |||||||
| @@ -4,6 +4,7 @@ import {showTemporaryTooltip, createTippy} from '../modules/tippy.js'; | |||||||
| import {hideElem, showElem, toggleElem} from '../utils/dom.js'; | import {hideElem, showElem, toggleElem} from '../utils/dom.js'; | ||||||
| import {setFileFolding} from './file-fold.js'; | import {setFileFolding} from './file-fold.js'; | ||||||
| import {getComboMarkdownEditor, initComboMarkdownEditor} from './comp/ComboMarkdownEditor.js'; | import {getComboMarkdownEditor, initComboMarkdownEditor} from './comp/ComboMarkdownEditor.js'; | ||||||
|  | import {toAbsoluteUrl} from '../utils.js'; | ||||||
|  |  | ||||||
| const {appSubUrl, csrfToken} = window.config; | const {appSubUrl, csrfToken} = window.config; | ||||||
|  |  | ||||||
| @@ -526,7 +527,7 @@ export function initRepoIssueReferenceIssue() { | |||||||
|     const $this = $(this); |     const $this = $(this); | ||||||
|     const content = $(`#${$this.data('target')}`).text(); |     const content = $(`#${$this.data('target')}`).text(); | ||||||
|     const poster = $this.data('poster-username'); |     const poster = $this.data('poster-username'); | ||||||
|     const reference = $this.data('reference'); |     const reference = toAbsoluteUrl($this.data('reference')); | ||||||
|     const $modal = $($this.data('modal')); |     const $modal = $($this.data('modal')); | ||||||
|     $modal.find('textarea[name="content"]').val(`${content}\n\n_Originally posted by @${poster} in ${reference}_`); |     $modal.find('textarea[name="content"]').val(`${content}\n\n_Originally posted by @${poster} in ${reference}_`); | ||||||
|     $modal.modal('show'); |     $modal.modal('show'); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user