زر "موضوع جديد" يعمل بشكل غير صحيح

عندما أضغط على زر “موضوع جديد” لا يظهر نموذج الموضوع الجديد على الفور. بدلاً من ذلك، يتم عرض النموذج بعد تحديد أحد المواضيع في المنتدى. لا يزال يبدو أنه ينشئ موضوعًا جديدًا، ولكن في الخلفية. بمجرد فتح أي موضوع موجود، يظهر الموضوع الجديد الذي كنت تحاول إنشاؤه (بشكل صحيح تمامًا؛ أي للمنتدى الذي كنت تنوي النشر فيه، حتى لو كان الموضوع الذي أدخلته في منتدى مختلف).

يحدث هذا فقط في موقع واحد (https://discussions.scouting.org/)، لذا أفترض أن هناك شيئًا ما تم تكوينه بشكل غير صحيح. لقد طرحت هذه المشكلة هناك، دون جدوى.

هل يحدث هذا في الوضع الآمن؟

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

هذا لا يمكن تكراره في الوضع الآمن. هناك سمة مخصصة / CSS تسبب هذه المشكلة.

4 إعجابات

أضاف المسؤولون تخصيص CSS يبدو كالتالي:

body:not([class*="category-council-"]):not(.staff).closed-topic .reply, 
body:not([class*="category-council-"]):not(.staff).closed-topic #topic-footer-buttons .create, 
body:not([class*="category-council-"]):not(.staff).closed-topic .timeline-container .create, 
body:not([class*="category-council-"]):not(.staff).closed-topic #reply-control {
  display: none !important;
}

يبدو هذا جيدًا للوهلة الأولى، ولكن بعد ذلك أرى أن body.closed-topic يتم تطبيقه على قائمة المواضيع… وهذا غير منطقي على الإطلاق.

هذه الفئة ليست موجودة في Discourse افتراضيًا، لذا يجب تتبع تخصيص آخر يضيفها…

<script type="text/discourse-plugin" version="0.8">
const container = Discourse.__container__;
const controller = container.lookup("controller:topic");
const currentUser = api.getCurrentUser();

api.onPageChange(() => {

  if (!currentUser || currentUser.admin || currentUser.moderator || currentUser.trust_level != 4 ) {
    return;
  } else {
    let model = controller.get("model");
    
    document.querySelector("body").classList.add("closed-topic");
    
    if (model) {
      if (!model.closed) {
        document.querySelector("body").classList.remove("closed-topic");
      }
    }
  }

});
</script>

إذًا هنا، إذا كنت مسجلاً للدخول، ولست مسؤولاً، ولست مشرفًا، ولديك مستوى ثقة 4… فإنه يضيف الفئة closed-topic إلى جسم الصفحة.

تتم إزالة هذه الفئة فقط إذا كان model.closed خاطئًا، مما يعني… إذا لم يكن موضوعًا مغلقًا (أو حتى إذا لم يكن موضوعًا على الإطلاق) فسيتم تطبيق الفئة closed-topic.

هذا السطر:

document.querySelector("body").classList.add("closed-topic");

ربما يجب أن يكون داخل if (model) لأنه بخلاف ذلك يتم تطبيقه حتى عندما لا يكون هناك نموذج موجود (على سبيل المثال، عندما لا تكون داخل موضوع)…

يبدو أن القصد كان منع المستخدمين ذوي مستوى الثقة 4 من الرد على المواضيع المغلقة، ولكن تم تطبيقه بشكل أوسع من اللازم.

5 إعجابات

شكرا جزيلا، هذا ما كنت أبحث عنه.

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

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.