Backport #24123 Close #24077 Manually backported and tested. <img width="330" alt="image" src="https://user-images.githubusercontent.com/2114189/232283645-92cc85dd-ba16-44a9-a7ef-5712b9d285e9.png">
This commit is contained in:
parent
94fbd44bac
commit
2b32f8b95f
3 changed files with 7 additions and 10 deletions
|
@ -194,14 +194,16 @@ func (opts *FindTopicOptions) toConds() builder.Cond {
|
||||||
// FindTopics retrieves the topics via FindTopicOptions
|
// FindTopics retrieves the topics via FindTopicOptions
|
||||||
func FindTopics(opts *FindTopicOptions) ([]*Topic, int64, error) {
|
func FindTopics(opts *FindTopicOptions) ([]*Topic, int64, error) {
|
||||||
sess := db.GetEngine(db.DefaultContext).Select("topic.*").Where(opts.toConds())
|
sess := db.GetEngine(db.DefaultContext).Select("topic.*").Where(opts.toConds())
|
||||||
|
orderBy := "topic.repo_count DESC"
|
||||||
if opts.RepoID > 0 {
|
if opts.RepoID > 0 {
|
||||||
sess.Join("INNER", "repo_topic", "repo_topic.topic_id = topic.id")
|
sess.Join("INNER", "repo_topic", "repo_topic.topic_id = topic.id")
|
||||||
|
orderBy = "topic.name" // when render topics for a repo, it's better to sort them by name, to get consistent result
|
||||||
}
|
}
|
||||||
if opts.PageSize != 0 && opts.Page != 0 {
|
if opts.PageSize != 0 && opts.Page != 0 {
|
||||||
sess = db.SetSessionPagination(sess, opts)
|
sess = db.SetSessionPagination(sess, opts)
|
||||||
}
|
}
|
||||||
topics := make([]*Topic, 0, 10)
|
topics := make([]*Topic, 0, 10)
|
||||||
total, err := sess.Desc("topic.repo_count").FindAndCount(&topics)
|
total, err := sess.OrderBy(orderBy).FindAndCount(&topics)
|
||||||
return topics, total, err
|
return topics, total, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,6 @@ import (
|
||||||
|
|
||||||
repo_model "code.gitea.io/gitea/models/repo"
|
repo_model "code.gitea.io/gitea/models/repo"
|
||||||
user_model "code.gitea.io/gitea/models/user"
|
user_model "code.gitea.io/gitea/models/user"
|
||||||
"code.gitea.io/gitea/modules/base"
|
|
||||||
"code.gitea.io/gitea/modules/charset"
|
"code.gitea.io/gitea/modules/charset"
|
||||||
"code.gitea.io/gitea/modules/context"
|
"code.gitea.io/gitea/modules/context"
|
||||||
"code.gitea.io/gitea/modules/git"
|
"code.gitea.io/gitea/modules/git"
|
||||||
|
@ -23,10 +22,6 @@ import (
|
||||||
"code.gitea.io/gitea/modules/util"
|
"code.gitea.io/gitea/modules/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
|
||||||
tplBlame base.TplName = "repo/home"
|
|
||||||
)
|
|
||||||
|
|
||||||
type blameRow struct {
|
type blameRow struct {
|
||||||
RowNumber int
|
RowNumber int
|
||||||
Avatar gotemplate.HTML
|
Avatar gotemplate.HTML
|
||||||
|
@ -140,7 +135,7 @@ func RefBlame(ctx *context.Context) {
|
||||||
|
|
||||||
renderBlame(ctx, blameParts, commitNames, previousCommits)
|
renderBlame(ctx, blameParts, commitNames, previousCommits)
|
||||||
|
|
||||||
ctx.HTML(http.StatusOK, tplBlame)
|
ctx.HTML(http.StatusOK, tplRepoHome)
|
||||||
}
|
}
|
||||||
|
|
||||||
func processBlameParts(ctx *context.Context, blameParts []git.BlamePart) (map[string]*user_model.UserCommit, map[string]string) {
|
func processBlameParts(ctx *context.Context, blameParts []git.BlamePart) (map[string]*user_model.UserCommit, map[string]string) {
|
||||||
|
|
|
@ -39,7 +39,7 @@ export function initRepoTopicBar() {
|
||||||
viewDiv.children('.topic').remove();
|
viewDiv.children('.topic').remove();
|
||||||
if (topics.length) {
|
if (topics.length) {
|
||||||
const topicArray = topics.split(',');
|
const topicArray = topics.split(',');
|
||||||
|
topicArray.sort();
|
||||||
const last = viewDiv.children('a').last();
|
const last = viewDiv.children('a').last();
|
||||||
for (let i = 0; i < topicArray.length; i++) {
|
for (let i = 0; i < topicArray.length; i++) {
|
||||||
const link = $('<a class="ui repo-topic large label topic"></a>');
|
const link = $('<a class="ui repo-topic large label topic"></a>');
|
||||||
|
@ -57,12 +57,12 @@ export function initRepoTopicBar() {
|
||||||
topicPrompts.formatPrompt = xhr.responseJSON.message;
|
topicPrompts.formatPrompt = xhr.responseJSON.message;
|
||||||
|
|
||||||
const {invalidTopics} = xhr.responseJSON;
|
const {invalidTopics} = xhr.responseJSON;
|
||||||
const topicLables = topicDropdown.children('a.ui.label');
|
const topicLabels = topicDropdown.children('a.ui.label');
|
||||||
|
|
||||||
for (const [index, value] of topics.split(',').entries()) {
|
for (const [index, value] of topics.split(',').entries()) {
|
||||||
for (let i = 0; i < invalidTopics.length; i++) {
|
for (let i = 0; i < invalidTopics.length; i++) {
|
||||||
if (invalidTopics[i] === value) {
|
if (invalidTopics[i] === value) {
|
||||||
topicLables.eq(index).removeClass('green').addClass('red');
|
topicLabels.eq(index).removeClass('green').addClass('red');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue