Modificando Documentos de Discourse para permitir solo ordenar por Título

Discourse Docs es la razón principal por la que elegí usar Discourse en lugar de otro software de foros. Sin embargo, tiene una gran deficiencia para mí: por defecto, ordena por actividad. Me gustaría eliminar por completo la capacidad de ordenar por actividad, pero no puedo averiguar cómo hacerlo.

He encontrado esta sección de código, y eliminé la declaración elsif para la ordenación por actividad y no ayuda.

      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

También he hecho lo mismo en este archivo y también sigue proporcionando las mismas capacidades de ordenación.

   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

Hice las ediciones tanto directamente en el archivo del servidor como en una bifurcación de Discourse Docs que luego instalé.

¿Alguien tiene algún consejo? Realmente pensé que sería un trabajo de 3 minutos, pero he pasado muchas horas en esto…

¡Gracias!

1 me gusta

No importa, ya lo resolví. Por alguna razón, había un filtro activado en mi vs code que ocultaba los archivos de javascript. Así que, cuando buscaba cosas como Order, Sort, Activity, etc., no obtenía resultados para los archivos js (que obviamente manejan una función interactiva como la clasificación…).

Hice un fork del repositorio e hice cambios. Cualquiera es bienvenido a usarlo. Elimina la capacidad de ordenar por actividad, establece la lista de temas por defecto para ordenar por título ascendente y establece los filtros de categoría para ordenar por orden alfabético ascendente.

No sé cómo añadir configuraciones para la personalización del usuario, así que esto tendrá que ser suficiente hasta que esta funcionalidad se incorpore al plugin oficial.

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

4 Me gusta

Sería genial que esto se fusionara en la versión oficial, ¿qué tal una PR? :slight_smile: De esa manera, el orden se ajustaría en consecuencia en el Discourse Docs Card Filter, ¿correcto?

1 me gusta

Realmente no sé cómo hacer eso. ¡Siéntete libre de hacerlo! Sería ideal algún tipo de configuración de administrador para seleccionar entre alfabético y actividad y/o recuento.

1 me gusta

Gracias por esto, ¿alguien sabe cómo configurar esto correctamente? Todavía soy un principiante configurando plugins.

Por lo que entiendo, esta adición (orden alfabético) fue agregada por @Nick_Chomey como una bifurcación (Fork) del plugin original.

¿Cuál sería la mejor manera para que yo use esto?

¿Puedo simplemente modificar algo de código en el plugin original de Docs? ¿O necesitaría desinstalar el plugin original y reinstalar esta bifurcación?

¡Gracias!

1 me gusta

Sí, desinstala Discourse Docs e instala este como lo harías con cualquier plugin. No lo superviso/mantengo regularmente para actualizar la documentación, pero estaría feliz de hacerlo siempre que alguien me lo indique. O podrías bifurcarlo y monitorear los cambios tú mismo.

Por supuesto, la mejor opción es que Discourse lo incluya como una configuración/característica dentro del plugin oficial.

1 me gusta

¡Hola, gracias por hacer cambios en Docs (¡incluso localmente!)!

He movido esto a Feature y lo he etiquetado como docs para que podamos hacer un mejor seguimiento de esto en el futuro.

3 Me gusta

¡Genial, gracias!

Como verás, acabo de añadir una funcionalidad de ordenación alfabética y he comentado la ordenación por actividad. Así que no es una solución para todos. Pero estoy seguro de que puedes integrar fácilmente mi adición y añadir una configuración para permitirnos elegir/activar/desactivar los tipos de ordenación disponibles; no tenía ni idea de cómo hacerlo.

3 Me gusta