Discourse Docs est la principale raison pour laquelle j’ai choisi d’utiliser Discourse plutôt que d’autres logiciels de forum. Cependant, il présente un inconvénient majeur pour moi : par défaut, il trie par activité. J’aimerais supprimer complètement la possibilité de trier par activité, mais je n’arrive pas à trouver comment faire.
J’ai trouvé cette section de code, et j’ai supprimé l’instruction elsif pour le tri par activité, mais cela n’aide pas.
if @filters[:order] == "title"
if @filters[:ascending].present?
results = results.reorder('topics.title')
else
results = results.reorder('topics.title DESC')
end
elsif @filters[:order] == "activity"
if @filters[:ascending].present?
results = results.reorder('topics.last_posted_at')
else
results = results.reorder('topics.last_posted_at DESC')
end
end
J’ai également fait la même chose dans ce fichier et cela offre toujours les mêmes capacités de tri.
context 'when ordering results' do
context 'by title' do
it 'should return the list ordered descending' do
get "/docs.json?order=title"
expect(response.status).to eq(200)
json = response.parsed_body
topics = json['topics']['topic_list']['topics']
expect(topics[0]['id']).to eq(topic2.id)
expect(topics[1]['id']).to eq(topic.id)
end
it 'should return the list ordered ascending with an additional parameter' do
get "/docs.json?order=title&ascending=true"
expect(response.status).to eq(200)
json = response.parsed_body
topics = json['topics']['topic_list']['topics']
expect(topics[0]['id']).to eq(topic.id)
expect(topics[1]['id']).to eq(topic2.id)
end
end
context 'by date' do
before do
topic2.update(last_posted_at: Time.zone.now + 100)
end
it 'should return the list ordered descending' do
get "/docs.json?order=activity"
expect(response.status).to eq(200)
json = response.parsed_body
topics = json['topics']['topic_list']['topics']
expect(topics[0]['id']).to eq(topic.id)
expect(topics[1]['id']).to eq(topic2.id)
end
it 'should return the list ordered ascending with an additional parameter' do
get "/docs.json?order=activity&ascending=true"
expect(response.status).to eq(200)
json = response.parsed_body
topics = json['topics']['topic_list']['topics']
expect(topics[0]['id']).to eq(topic2.id)
expect(topics[1]['id']).to eq(topic.id)
end
end
end
J’ai effectué les modifications à la fois directement dans le fichier sur le serveur, ainsi que dans une fork de Discourse Docs que j’ai ensuite installée.
Quelqu’un a-t-il des conseils ? Je pensais vraiment que ce serait un travail de 3 minutes, mais j’y ai passé de nombreuses heures maintenant…
Merci !