تعديل مستندات Discourse للسماح بالفرز حسب العنوان فقط

تعد Discourse Docs هي السبب الرئيسي لاختياري استخدام Discourse بدلاً من برامج المنتديات الأخرى. ومع ذلك، فإن بها عيبًا رئيسيًا واحدًا بالنسبة لي - افتراضيًا، يتم الفرز حسب النشاط. أود إزالة القدرة على الفرز حسب النشاط تمامًا، ولكن لا يمكنني معرفة كيفية القيام بذلك.

لقد وجدت هذا الجزء من الكود، وقمت بإزالة عبارة 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 التي قمت بتثبيتها.

هل لدى أي شخص أي نصائح؟ لقد اعتقدت حقًا أنها ستكون مهمة تستغرق 3 دقائق ولكنني قضيت ساعات عديدة في هذا الآن…

شكرا!

إعجاب واحد (1)

لا بأس، لقد اكتشفت الأمر. لسبب ما كان هناك مرشح قيد التشغيل في VS Code الخاص بي يخفي ملفات JavaScript. لذلك عندما بحثت عن أشياء مثل Order، Sort، Activity وما إلى ذلك، لم أحصل على نتائج لملفات js (والتي تعالج بالطبع وظيفة تفاعلية مثل الفرز…).

لقد قمت بعمل fork للمستودع وأجريت تغييرات. نرحب بأي شخص لاستخدامه. إنه يزيل القدرة على الفرز حسب النشاط، ويضبط قائمة الموضوعات افتراضيًا للفرز حسب العنوان تصاعديًا، ويضبط عوامل تصفية الفئات افتراضيًا للفرز حسب الأبجدية تصاعديًا.

لا أعرف كيفية إضافة إعدادات للتخصيص من قبل المستخدم، لذا سيتعين الاكتفاء بهذا حتى يتم جلب هذه الوظيفة إلى المكون الإضافي الرسمي.

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

4 إعجابات

سيكون رائعًا لو تم دمج هذا في الإصدار الرسمي، ماذا عن طلب سحب (PR)؟ :slight_smile: بهذه الطريقة سيتم تعديل الترتيب وفقًا لذلك في https://meta.discourse.org/t/discourse-docs-card-filter-component/187947/، صحيح؟

إعجاب واحد (1)

لا أعرف حقًا كيف أفعل ذلك. لا تتردد في القيام بذلك! سيكون نوع من إعدادات المسؤول لتحديد الاختيار بين الأبجدية والنشاط و/أو العد مثاليًا.

إعجاب واحد (1)

شكراً لك، هل يعرف أحد كيفية إعداد هذا بشكل صحيح، ما زلت مبتدئاً في تكوين الإضافات.

على حد فهمي، تمت إضافة هذه الميزة (الفرز الأبجدي) بواسطة @Nick_Chomey كـ Fork للإضافة الأصلية.

ما هي أفضل طريقة لاستخدام هذا؟

هل يمكنني ببساطة تعديل بعض التعليمات البرمجية في الإضافة الأصلية Docs؟ أم سأحتاج إلى إلغاء تثبيت الإضافة الأصلية وإعادة تثبيت هذا الـ Fork؟

شكراً!

إعجاب واحد (1)

نعم، قم بإلغاء تثبيت Discourse Docs وقم بتثبيت هذا كأي إضافة. أنا لا أراقب/أحافظ عليه بانتظام للتحديثات الخاصة بالمستندات، ولكن يسعدني القيام بذلك كلما قام شخص ما بتنبيهي. أو يمكنك نسخه ومراقبة التغييرات بنفسك.

بالطبع، الخيار الأفضل هو إذا قامت Discourse بتضمين هذا كإعداد/ميزة ضمن الإضافة الرسمية.

إعجاب واحد (1)

مرحباً، شكراً لك على إجراء تغييرات على المستندات (حتى لو كان ذلك محلياً)!

لقد نقلت هذا إلى Feature ووضع علامة docs عليه حتى نتمكن من تتبعه بشكل أفضل في المستقبل.

3 إعجابات

عظيم، شكرًا لك!

كما سترى، لقد أضفت للتو بعض وظائف الفرز الأبجدي وعطّلت الفرز حسب النشاط. لذا فهي ليست حلاً للجميع. لكنني متأكد من أنه يمكنك دمج إضافتي بسهولة وإضافة إعداد للسماح لنا بالاختيار/التبديل بين أنواع الفرز المتاحة - لم يكن لدي أي فكرة عن كيفية القيام بذلك.

3 إعجابات