mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-10-31 06:21:11 +00:00 
			
		
		
		
	# Summary The repo information such as description, stats and topics are getting displayed in the top-bar when viewing a file. This has been fixed to display the repo information only while navigating the repo and not while viewing or blaming a file from the repo ## Before fix Screenshot from the issue  ## After the fix - **Repo homepage** The repo description, topics and summary will be displayed  - **When opening a file** The repo description, topic and summary has been conditionally hidden from the view <img width="1311" alt="image" src="https://user-images.githubusercontent.com/47709856/195278964-9479231c-62ad-4c0e-b438-2018f22289db.png"> - **When running blame on a file** > This was originally not part of the issue #21406. However the fix seems relevant for the blame view as well. <img width="1312" alt="image" src="https://user-images.githubusercontent.com/47709856/195279619-02010775-aec3-4c8d-a184-d2d838c797e8.png"> - **From within a directory** The repo description, topics and summary will not be displayed  Supporting integration tests have also been added.
This commit is contained in:
		
					parent
					
						
							
								cda2c38f4a
							
						
					
				
			
			
				commit
				
					
						c35531dd11
					
				
			
		
					 4 changed files with 83 additions and 2 deletions
				
			
		|  | @ -119,6 +119,7 @@ func renderDirectory(ctx *context.Context, treeLink string) { | |||
| 	} | ||||
| 
 | ||||
| 	if ctx.Repo.TreePath != "" { | ||||
| 		ctx.Data["HideRepoInfo"] = true | ||||
| 		ctx.Data["Title"] = ctx.Tr("repo.file.title", ctx.Repo.Repository.Name+"/"+path.Base(ctx.Repo.TreePath), ctx.Repo.RefName) | ||||
| 	} | ||||
| 
 | ||||
|  | @ -360,6 +361,7 @@ func renderReadmeFile(ctx *context.Context, readmeFile *namedBlob, readmeTreelin | |||
| 
 | ||||
| func renderFile(ctx *context.Context, entry *git.TreeEntry, treeLink, rawLink string) { | ||||
| 	ctx.Data["IsViewFile"] = true | ||||
| 	ctx.Data["HideRepoInfo"] = true | ||||
| 	blob := entry.Blob() | ||||
| 	dataRc, err := blob.DataAsync() | ||||
| 	if err != nil { | ||||
|  |  | |||
|  | @ -3,6 +3,7 @@ | |||
| 	{{template "repo/header" .}} | ||||
| 	<div class="ui container {{if .IsBlame}}fluid padded{{end}}"> | ||||
| 		{{template "base/alert" .}} | ||||
| 		{{if and (not .HideRepoInfo) (not .IsBlame)}} | ||||
| 		<div class="ui repo-description"> | ||||
| 			<div id="repo-desc"> | ||||
| 				{{$description := .Repository.DescriptionHTML $.Context}} | ||||
|  | @ -31,6 +32,7 @@ | |||
| 		{{range .Topics}}<a class="ui repo-topic large label topic" href="{{AppSubUrl}}/explore/repos?q={{.Name}}&topic=1">{{.Name}}</a>{{end}} | ||||
| 		{{if and .Permission.IsAdmin (not .Repository.IsArchived)}}<a id="manage_topic" class="muted">{{.locale.Tr "repo.topic.manage_topics"}}</a>{{end}} | ||||
| 		</div> | ||||
| 		{{end}} | ||||
| 		{{if and .Permission.IsAdmin (not .Repository.IsArchived)}} | ||||
| 		<div class="ui repo-topic-edit grid form" id="topic_edit" style="display:none"> | ||||
| 			<div class="fourteen wide column"> | ||||
|  |  | |||
|  | @ -1,3 +1,4 @@ | |||
| {{if and (not .HideRepoInfo) (not .IsBlame)}} | ||||
| <div class="ui segments repository-summary{{if and (.Permission.CanRead $.UnitTypeCode) (not .IsEmptyRepo) .LanguageStats}} repository-summary-language-stats{{end}} mt-2 mb-0"> | ||||
| 	<div class="ui segment sub-menu repository-menu"> | ||||
| 		<div class="ui two horizontal center link list"> | ||||
|  | @ -44,3 +45,4 @@ | |||
| 	</a> | ||||
| 	{{end}} | ||||
| </div> | ||||
| {{end}} | ||||
|  |  | |||
|  | @ -22,13 +22,24 @@ import ( | |||
| func TestViewRepo(t *testing.T) { | ||||
| 	defer tests.PrepareTestEnv(t)() | ||||
| 
 | ||||
| 	session := loginUser(t, "user2") | ||||
| 
 | ||||
| 	req := NewRequest(t, "GET", "/user2/repo1") | ||||
| 	MakeRequest(t, req, http.StatusOK) | ||||
| 	resp := session.MakeRequest(t, req, http.StatusOK) | ||||
| 
 | ||||
| 	htmlDoc := NewHTMLParser(t, resp.Body) | ||||
| 	noDescription := htmlDoc.doc.Find("#repo-desc").Children() | ||||
| 	repoTopics := htmlDoc.doc.Find("#repo-topics").Children() | ||||
| 	repoSummary := htmlDoc.doc.Find(".repository-summary").Children() | ||||
| 
 | ||||
| 	assert.True(t, noDescription.HasClass("no-description")) | ||||
| 	assert.True(t, repoTopics.HasClass("repo-topic")) | ||||
| 	assert.True(t, repoSummary.HasClass("repository-menu")) | ||||
| 
 | ||||
| 	req = NewRequest(t, "GET", "/user3/repo3") | ||||
| 	MakeRequest(t, req, http.StatusNotFound) | ||||
| 
 | ||||
| 	session := loginUser(t, "user1") | ||||
| 	session = loginUser(t, "user1") | ||||
| 	session.MakeRequest(t, req, http.StatusNotFound) | ||||
| } | ||||
| 
 | ||||
|  | @ -178,7 +189,71 @@ func TestViewAsRepoAdmin(t *testing.T) { | |||
| 
 | ||||
| 		htmlDoc := NewHTMLParser(t, resp.Body) | ||||
| 		noDescription := htmlDoc.doc.Find("#repo-desc").Children() | ||||
| 		repoTopics := htmlDoc.doc.Find("#repo-topics").Children() | ||||
| 		repoSummary := htmlDoc.doc.Find(".repository-summary").Children() | ||||
| 
 | ||||
| 		assert.Equal(t, expectedNoDescription, noDescription.HasClass("no-description")) | ||||
| 		assert.True(t, repoTopics.HasClass("repo-topic")) | ||||
| 		assert.True(t, repoSummary.HasClass("repository-menu")) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| // TestViewFileInRepo repo description, topics and summary should not be displayed when viewing a file | ||||
| func TestViewFileInRepo(t *testing.T) { | ||||
| 	defer tests.PrepareTestEnv(t)() | ||||
| 
 | ||||
| 	session := loginUser(t, "user2") | ||||
| 
 | ||||
| 	req := NewRequest(t, "GET", "/user2/repo1/src/branch/master/README.md") | ||||
| 	resp := session.MakeRequest(t, req, http.StatusOK) | ||||
| 
 | ||||
| 	htmlDoc := NewHTMLParser(t, resp.Body) | ||||
| 	description := htmlDoc.doc.Find("#repo-desc") | ||||
| 	repoTopics := htmlDoc.doc.Find("#repo-topics") | ||||
| 	repoSummary := htmlDoc.doc.Find(".repository-summary") | ||||
| 
 | ||||
| 	assert.EqualValues(t, 0, description.Length()) | ||||
| 	assert.EqualValues(t, 0, repoTopics.Length()) | ||||
| 	assert.EqualValues(t, 0, repoSummary.Length()) | ||||
| } | ||||
| 
 | ||||
| // TestBlameFileInRepo repo description, topics and summary should not be displayed when running blame on a file | ||||
| func TestBlameFileInRepo(t *testing.T) { | ||||
| 	defer tests.PrepareTestEnv(t)() | ||||
| 
 | ||||
| 	session := loginUser(t, "user2") | ||||
| 
 | ||||
| 	req := NewRequest(t, "GET", "/user2/repo1/blame/branch/master/README.md") | ||||
| 	resp := session.MakeRequest(t, req, http.StatusOK) | ||||
| 
 | ||||
| 	htmlDoc := NewHTMLParser(t, resp.Body) | ||||
| 	description := htmlDoc.doc.Find("#repo-desc") | ||||
| 	repoTopics := htmlDoc.doc.Find("#repo-topics") | ||||
| 	repoSummary := htmlDoc.doc.Find(".repository-summary") | ||||
| 
 | ||||
| 	assert.EqualValues(t, 0, description.Length()) | ||||
| 	assert.EqualValues(t, 0, repoTopics.Length()) | ||||
| 	assert.EqualValues(t, 0, repoSummary.Length()) | ||||
| } | ||||
| 
 | ||||
| // TestViewRepoDirectory repo description, topics and summary should not be displayed when within a directory | ||||
| func TestViewRepoDirectory(t *testing.T) { | ||||
| 	defer tests.PrepareTestEnv(t)() | ||||
| 
 | ||||
| 	session := loginUser(t, "user2") | ||||
| 
 | ||||
| 	req := NewRequest(t, "GET", "/user2/repo20/src/branch/master/a") | ||||
| 	resp := session.MakeRequest(t, req, http.StatusOK) | ||||
| 
 | ||||
| 	htmlDoc := NewHTMLParser(t, resp.Body) | ||||
| 	description := htmlDoc.doc.Find("#repo-desc") | ||||
| 	repoTopics := htmlDoc.doc.Find("#repo-topics") | ||||
| 	repoSummary := htmlDoc.doc.Find(".repository-summary") | ||||
| 
 | ||||
| 	repoFilesTable := htmlDoc.doc.Find("#repo-files-table") | ||||
| 	assert.NotZero(t, len(repoFilesTable.Nodes)) | ||||
| 
 | ||||
| 	assert.Zero(t, description.Length()) | ||||
| 	assert.Zero(t, repoTopics.Length()) | ||||
| 	assert.Zero(t, repoSummary.Length()) | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue