Modifica dei documenti di Discourse per consentire l'ordinamento solo per titolo

Discourse Docs è il motivo principale per cui ho scelto di usare Discourse rispetto ad altri software per forum. Tuttavia, ha una grave pecca per me: per impostazione predefinita, ordina per attività. Vorrei rimuovere del tutto la possibilità di ordinare per attività, ma non riesco a capire come fare.

Ho trovato questa sezione di codice e ho rimosso l’istruzione elsif per l’ordinamento per attività, ma non ha aiutato.

      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

Ho fatto lo stesso anche in questo file e ha comunque fornito le stesse capacità di ordinamento.

   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

Ho apportato le modifiche sia direttamente nel file sul server, sia in un fork di Discourse Docs che ho poi installato.

Qualcuno ha qualche suggerimento? Pensavo davvero che sarebbe stato un lavoro di 3 minuti, ma ci ho passato molte ore…

Grazie!

1 Mi Piace

Non importa, ho risolto. Per qualche motivo c’era un filtro attivo nel mio vs code che nascondeva i file javascript. Quindi, quando cercavo cose come Order, Sort, Activity ecc…, non ottenevo risultati per i file js (che ovviamente gestiscono una funzione interattiva come il sorting…).

Ho forkato il repo e apportato delle modifiche. Chiunque è libero di usarlo. Rimuove la possibilità di ordinare per attività, imposta l’elenco degli argomenti per impostazione predefinita in ordine alfabetico ascendente per titolo e imposta i filtri delle categorie per ordinare in ordine alfabetico ascendente.

Non so come aggiungere impostazioni per la personalizzazione da parte dell’utente, quindi questo dovrà bastare finché questa funzionalità non verrà introdotta nel plugin ufficiale.

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

4 Mi Piace

Sarebbe fantastico se questo venisse integrato nella versione ufficiale, che ne dici di una PR? :slight_smile: In questo modo l’ordine verrebbe adeguato di conseguenza in Discourse Docs Card Filter, corretto?

1 Mi Piace

Non so davvero come fare. Sentiti libero di farlo! Sarebbe ideale una sorta di impostazione amministrativa per scegliere tra alfabetico e attività e/o conteggio.

1 Mi Piace

Grazie per questo, qualcuno sa come configurarlo correttamente, sono ancora un principiante nella configurazione dei plugin.

Per quanto ne so, questa aggiunta (ordinamento alfabetico) è stata aggiunta da @Nick_Chomey come fork del plugin originale.

Quale sarebbe il modo migliore per utilizzarlo?

Posso semplicemente modificare del codice nel plugin Docs originale? o dovrei disinstallare il plugin originale e reinstallare questo fork?

Grazie!

1 Mi Piace

Sì, disinstalla Discourse Docs e installa questo come faresti per qualsiasi plugin. Non lo monitoro/mantengo regolarmente per aggiornamenti alla documentazione, ma sarei felice di farlo ogni volta che qualcuno me lo segnala. Oppure potresti fare un fork e monitorare tu stesso le modifiche.

Naturalmente, l’opzione migliore è se Discourse lo includesse come impostazione/funzionalità all’interno del plugin ufficiale.

1 Mi Piace

Ciao, grazie per aver apportato modifiche alla documentazione (anche se solo localmente)!

Ho spostato questo in Feature e l’ho taggato docs in modo da poterlo monitorare meglio in futuro.

3 Mi Piace

Ottimo, grazie!

Come vedrai, ho appena aggiunto una funzionalità di ordinamento alfabetico e ho commentato l’ordinamento per attività. Quindi non è una soluzione per tutti. Ma sono sicuro che puoi integrare facilmente la mia aggiunta e aggiungere un’impostazione per permetterci di scegliere/attivare quali tipi di ordinamento sono disponibili: non avevo idea di come fare.

3 Mi Piace