Discourse Docs ändern, um nur nach Titel sortieren zu können

Discourse Docs ist der Hauptgrund, warum ich mich für Discourse und nicht für andere Forensoftware entschieden habe. Es hat jedoch einen großen Nachteil für mich – standardmäßig wird nach Aktivität sortiert. Ich möchte die Möglichkeit, nach Aktivität zu sortieren, komplett entfernen, kann aber nicht herausfinden, wie das geht.

Ich habe diesen Codeabschnitt gefunden und die elsif-Anweisung für die Aktivitätssortierung entfernt, aber das hat nicht geholfen.

      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

Ich habe das Gleiche auch in dieser Datei gemacht, und es bietet immer noch die gleichen Sortierungsmöglichkeiten.

   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

Ich habe die Änderungen sowohl direkt in der Datei auf dem Server als auch in einer Fork von Discourse Docs vorgenommen, die ich dann installiert habe.

Hat jemand Tipps? Ich dachte wirklich, es wäre eine 3-Minuten-Aufgabe, aber ich habe jetzt viele Stunden damit verbracht…

Danke!

1 „Gefällt mir“

Schon gut, ich habe es herausgefunden. Aus irgendeinem Grund war in meinem VS Code ein Filter aktiviert, der JavaScript-Dateien ausgeblendet hat. Als ich also nach Dingen wie Order, Sort, Activity usw. gesucht habe, erhielt ich keine Ergebnisse für die JS-Dateien (die offensichtlich interaktive Funktionen wie das Sortieren behandeln…).

Ich habe das Repository geforkt und Änderungen vorgenommen. Jeder kann es gerne nutzen. Es entfernt die Möglichkeit, nach Aktivität zu sortieren, setzt die Themenliste standardmäßig auf Sortierung nach Titel aufsteigend und die Kategorie-Filter auf Sortierung nach Alpha aufsteigend.

Ich weiß nicht, wie man Einstellungen für die Anpassbarkeit durch den Benutzer hinzufügt, daher muss dies ausreichen, bis diese Funktionalität in das offizielle Plugin integriert wird.

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

4 „Gefällt mir“

Das wäre großartig, wenn dies in die offizielle Version integriert würde, wie wäre es mit einem PR? :slight_smile: Auf diese Weise würde die Reihenfolge in Discourse Docs Card Filter entsprechend angepasst, richtig?

1 „Gefällt mir“

Ich weiß wirklich nicht, wie das geht. Machen Sie ruhig! Eine Art Admin-Einstellung, um zwischen alphabetisch und Aktivität und/oder Anzahl zu wählen, wäre ideal.

1 „Gefällt mir“

Vielen Dank dafür. Weiß jemand, wie man das richtig einrichtet? Ich bin noch Anfänger bei der Konfiguration von Plugins.

Soweit ich weiß, wurde diese Ergänzung (alphabetische Sortierung) von @Nick_Chomey als Fork des ursprünglichen Plugins hinzugefügt.

Was wäre der beste Weg für mich, dies zu nutzen?

Kann ich einfach etwas Code in den ursprünglichen Docs-Plugin ändern? Oder müsste ich das ursprüngliche Plugin deinstallieren und diesen Fork neu installieren?

Danke!

1 „Gefällt mir“

Ja, deinstallieren Sie Discourse Docs und installieren Sie dieses, wie Sie es für jedes Plugin tun würden. Ich überwache/pflege es nicht regelmäßig auf Aktualisierungen der Dokumentation, würde dies aber gerne tun, wann immer mich jemand dazu auffordert. Oder Sie könnten es forken und die Änderungen selbst überwachen.

Natürlich wäre die beste Option, wenn Discourse dies einfach als Einstellung/Funktion in das offizielle Plugin aufnehmen würde.

1 „Gefällt mir“

Hallo, danke für die Änderungen an Docs (auch wenn sie nur lokal sind)!

Ich habe dies nach Feature verschoben und mit docs markiert, damit wir dies in Zukunft besser verfolgen können.

3 „Gefällt mir“

Großartig, danke!

Wie Sie sehen werden, habe ich gerade eine alphabetische Sortierfunktion hinzugefügt und die Aktivitätssortierung auskommentiert. Es ist also keine Lösung für jedermann. Aber ich bin sicher, Sie können meine Ergänzung leicht integrieren und eine Einstellung hinzufügen, die es uns ermöglicht, auszuwählen/umzuschalten, welche Arten von Sortierungen verfügbar sind – ich hatte keine Ahnung, wie das geht.

3 „Gefällt mir“