Discourse Docs에서 제목 정렬만 허용하도록 수정

Discourse Docs가 다른 포럼 소프트웨어 대신 Discourse를 선택하게 된 주요 이유입니다. 하지만 저에게는 치명적인 단점이 하나 있습니다. 기본적으로 활동(activity) 기준으로 정렬되는데, 이 활동 기준 정렬 기능을 완전히 제거하고 싶지만 방법을 모르겠습니다.

이 코드 섹션을 찾아서 활동 정렬을 위한 elsif 문장을 제거해 보았지만, 문제가 해결되지 않았습니다.

      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

이 파일에서도 동일한 작업을 수행해 보았지만, 여전히 동일한 정렬 기능이 제공됩니다.

   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

서버의 파일에 직접 수정을 가하기도 했고, Discourse Docs의 포크(fork)를 만들어 설치한 후에도 동일한 작업을 수행했습니다.

혹시 조언을 주실 분이 계신가요? 3분이면 끝날 거라고 생각했는데, 이미 몇 시간째 이 문제에 매달리고 있습니다…

감사합니다!

1개의 좋아요

아니에요, 제가 해결했어요. VS Code에서 어떤 이유로든 필터가 켜져 있어서 JavaScript 파일이 숨겨져 있었습니다. 그래서 Order, Sort, Activity 같은 키워드로 검색할 때 js 파일(정렬 같은 인터랙티브 기능을 처리하는 파일이죠…)에 대한 검색 결과가 나오지 않았던 거예요.

저는 리포지토리를 포크해서 수정을 했습니다. 누구나 자유롭게 사용하셔도 됩니다. 이 수정은 활동별로 정렬하는 기능을 제거하고, 주제 목록을 제목 오름차순으로 정렬하도록 기본값을 설정하며, 카테고리 필터를 알파벳 오름차순으로 정렬하도록 기본값을 설정합니다.

사용자가 직접 설정을 변경할 수 있도록 하는 방법을 모르기 때문에, 이 기능이 공식 플러그인에 반영될 때까지는 이 정도면 만족해야 할 것 같습니다.

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

4개의 좋아요

공식 버전으로 병합되면 좋겠네요. PR은 어떻게 생각하시나요? :slight_smile: 그러면 Discourse Docs Card Filter 의 순서도 그에 맞게 조정되겠죠?

1개의 좋아요

정말 어떻게 해야 할지 모르겠습니다. 자유롭게 진행해 주세요! 알파벳순, 활동량, 그리고/또는 개수 중 하나를 선택할 수 있는 관리자 설정이 이상적이겠습니다.

1개의 좋아요

이 내용을 공유해 주셔서 감사합니다. 이걸 어떻게 올바르게 설정해야 하는지 아는 분 계신가요? 저는 아직 플러그인 설정 초보입니다.

제 이해로는, 이 추가 기능(알파벳 순서 정렬)은 @Nick_Chomey가 원본 플러그인의 포크(Fork)로 추가한 것 같습니다.

제가 이걸 사용하는 가장 좋은 방법은 무엇일까요?

원본 Docs 플러그인의 코드를 일부 수정해서 사용해도 될까요, 아니면 원본 플러그인을 삭제하고 이 포크를 다시 설치해야 할까요?

감사합니다!

1개의 좋아요

네, Discourse Docs를 삭제하고 다른 플러그인을 설치하듯이 이 플러그인을 설치하시면 됩니다. 저는 문서 업데이트를 정기적으로 모니터링하거나 유지보수하지는 않지만, 누군가 요청해 주시면 기꺼이 진행하겠습니다. 아니면 포크를 하셔서 변경 사항을 직접 관리하시거나요.

물론 가장 좋은 옵션은 Discourse가 이 기능을 공식 플러그인의 설정/기능으로 포함해 주는 것입니다.

1개의 좋아요

안녕하세요, Docs에 변경 사항을 적용해 주셔서 감사합니다(로컬에서만 적용한 경우에도)!\n\n향후 이 문제를 더 잘 추적할 수 있도록 #contribute:feature로 이동하고 docs 태그를 달아 두었습니다.

3개의 좋아요

좋아요, 감사합니다!

보실 수 있듯이, 저는 알파벳 순 정렬 기능을 추가하고 활동 순 정렬은 주석 처리했습니다. 따라서 모든 사람에게 적용 가능한 해결책은 아닙니다. 하지만 제 추가 기능을 쉽게 통합하고, 어떤 유형의 정렬을 사용할지 선택/토글할 수 있도록 설정을 추가하실 수 있을 거라 생각합니다. 저는 그 방법을 전혀 몰랐거든요.

3개의 좋아요