Modificando Documentos do Discourse para permitir apenas a ordenação por Título

Discourse Docs é o principal motivo pelo qual escolhi usar o Discourse em vez de outro software de fórum. No entanto, ele tem uma grande deficiência para mim - por padrão, ele ordena por atividade. Gostaria de remover completamente a capacidade de ordenar por atividade, mas não consigo descobrir como fazer isso.

Encontrei esta seção de código e removi a instrução elsif para ordenação por atividade, e isso não ajuda.

      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

Também fiz o mesmo em este arquivo e ele ainda oferece as mesmas capacidades de ordenação.

   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

Fiz as edições diretamente no arquivo no servidor, bem como em um fork do Discourse Docs que instalei.

Alguém tem alguma dica? Eu realmente pensei que seria um trabalho de 3 minutos, mas já gastei muitas horas nisso…

Obrigado!

1 curtida

Não se preocupe, eu descobri. Por algum motivo, havia um filtro ativado no meu vs code que estava ocultando arquivos javascript. Então, quando eu procurava por coisas como Order, Sort, Activity etc…, eu não recebia resultados para os arquivos js (que obviamente lidam com uma função interativa como a classificação…).

Eu fiz um fork do repositório e fiz alterações. Qualquer um pode usá-lo. Ele remove a capacidade de classificar por atividade, define a lista de tópicos para classificar por título ascendente e define os filtros de categoria para classificar por ordem alfabética ascendente.

Eu não sei como adicionar configurações para personalização pelo usuário, então isso terá que servir até que essa funcionalidade seja incorporada ao plugin oficial.

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

4 curtidas

Seria ótimo se isso fosse mesclado à versão oficial, que tal um PR? :slight_smile: Dessa forma, a ordem seria ajustada de acordo em Discourse Docs Card Filter, correto?

1 curtida

Eu realmente não sei como fazer isso. Sinta-se à vontade para fazê-lo! Algum tipo de configuração de administrador para selecionar entre alfabético e atividade e/ou contagem seria ideal.

1 curtida

Obrigado por isso, alguém sabe como configurar isso corretamente? Ainda sou iniciante na configuração de plugins.

Pelo que entendi, esta adição (ordenação alfabética) foi adicionada por @Nick_Chomey como um Fork do plugin original.

Qual seria a melhor maneira para eu usar isso?

Posso simplesmente modificar algum código no plugin original Docs? ou eu precisaria desinstalar o plugin original e reinstalar este fork?

Obrigado!

1 curtida

Sim, desinstale o Discourse Docs e instale este como faria com qualquer plugin. Eu não monitoro/manutenção regularmente para atualizações de documentação, mas ficaria feliz em fazê-lo sempre que alguém me solicitar. Ou você poderia fazer um fork e monitorar as alterações você mesmo.

Claro, a melhor opção é se o Discourse incluir isso como uma configuração/recurso dentro do plugin oficial.

1 curtida

Olá, obrigado por fazer alterações na documentação (mesmo que localmente)!

Movi isso para Feature e marquei como docs para que possamos acompanhar melhor isso no futuro.

3 curtidas

Ótimo, obrigado!

Como você verá, acabei de adicionar alguma funcionalidade de ordenação alfabética e comentei a ordenação por atividade. Portanto, não é uma solução para todos. Mas tenho certeza de que você pode integrar facilmente minha adição e adicionar uma configuração para nos permitir escolher/alternar quais tipos de ordenação estão disponíveis - eu não tinha ideia de como fazer isso.

3 curtidas