Modification des documents Discourse pour permettre uniquement le tri par titre

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 !

1 « J'aime »

Laissez tomber, j’ai trouvé. Pour une raison quelconque, il y avait un filtre activé dans mon VS Code qui masquait les fichiers JavaScript. Donc, lorsque je recherchais des choses comme Order, Sort, Activity, etc., je n’obtenais pas de résultats pour les fichiers JS (qui gèrent évidemment une fonction interactive comme le tri…).

J’ai forké le dépôt et apporté des modifications. Tout le monde est invité à l’utiliser. Il supprime la possibilité de trier par activité, définit par défaut la liste des sujets à trier par titre ascendant et définit par défaut les filtres de catégorie à trier par ordre alphabétique ascendant.

Je ne sais pas comment ajouter des paramètres pour la personnalisation par l’utilisateur, donc cela devra suffire jusqu’à ce que cette fonctionnalité soit intégrée au plugin officiel.

https://github.com/nickchomey/discourse-docs

4 « J'aime »

Ce serait génial que cela soit fusionné dans la version officielle, que diriez-vous d’une PR ? :slight_smile: De cette façon, l’ordre serait ajusté en conséquence dans le Discourse Docs Card Filter, n’est-ce pas ?

1 « J'aime »

Je ne sais vraiment pas comment faire ça. N’hésitez pas à le faire ! Une sorte de paramètre d’administration pour choisir entre alphabétique et activité et/ou comptage serait idéal.

1 « J'aime »

Merci pour cela, quelqu’un sait comment configurer cela correctement, je suis encore débutant en configuration de plugins.

D’après ce que j’ai compris, cet ajout (tri alphabétique) a été ajouté par @Nick_Chomey sous forme de Fork du plugin original.

Quelle serait la meilleure façon pour moi de l’utiliser.

Puis-je simplement modifier du code dans le plugin Docs original ? ou devrais-je désinstaller le plugin original et réinstaller ce fork ?

Merci !

1 « J'aime »

Oui, désinstallez Discourse Docs et installez celui-ci comme vous le feriez pour n’importe quel plugin. Je ne le surveille/maintiens pas régulièrement pour les mises à jour de la documentation, mais je serais heureux de le faire chaque fois que quelqu’un me le demandera. Ou vous pourriez le forker et surveiller les changements vous-même.

Bien sûr, la meilleure option est que Discourse l’inclue comme paramètre/fonctionnalité dans le plugin officiel.

1 « J'aime »

Salut, merci d’avoir apporté des modifications à Docs (même si c’est localement) !

J’ai déplacé ceci vers Feature et ajouté la balise docs afin que nous puissions mieux suivre cela à l’avenir.

3 « J'aime »

Super, merci !

Comme vous le verrez, je viens d’ajouter une fonctionnalité de tri alphabétique et j’ai mis en commentaire le tri par activité. Ce n’est donc pas une solution pour tout le monde. Mais je suis sûr que vous pourrez facilement intégrer mon ajout et ajouter un paramètre pour nous permettre de choisir/basculer entre les types de tri disponibles - je n’avais aucune idée de comment faire.

3 « J'aime »