فتح نافذة الرد عبر الرابط

أستخدم مكون سمة بسيطًا لهذا الغرض في نسختي. فيما يلي نسخة معدلة من نسختي – والتي تقبل أيضًا #upload (إجابة جديدة تفتح نافذة التحميل على سطح المكتب) و #edit (لأصحاب المنشورات في الويكي) بالإضافة إلى #reply.

تحتاج إلى بعض التحسينات، مثل تجنب استخدام setTimeout وإدارة draftSequence بشكل صحيح (لا أعتقد أن topic.draft_sequence هو الخيار الصحيح)، ولا أعرف ما هي أفضل ممارسة هنا. ومع ذلك، فهي تعمل بشكل جيد بالنسبة لي.

عند التنقل إلى أي موضوع مثل /t/[slug]/[id]#reply، سيفتح المصنف بإجابة جديدة فارغة.

إذا كنت بحاجة إلى نص مُعبأ مسبقًا، فيمكن تحقيق ذلك عن طريق تعيين السمة reply في الكائن الممرر إلى composer.open. بالإضافة إلى ذلك، إذا كان هناك مسودة موجودة بالفعل لهذا الموضوع، فسيُطلب منك حفظها أو تجاهلها قبل إنشاء هذه الإجابة الجديدة – يجب أن تكون draftSequence صحيحة إذا كان السلوك المطلوب هو استئناف تلك المسودة.

<script type="text/discourse-plugin" version="0.4">
  if (/.*#reply$/g.test(document.URL)) {
    const { REPLY } = require('discourse/models/composer').default;
    
    const composer = Discourse.__container__.lookup('controller:composer');
    
    setTimeout(function() {
      const topic = Discourse.__container__.lookup("controller:topic").get("model");
      if (topic) {
        composer.open({
            action: REPLY,
            draftKey: topic.draft_key,
            draftSequence: topic.draft_sequence,
            topic,
        });
      }
    }, 0)
  }
</script>

آمل أن يكون هذا مفيدًا.

13 إعجابًا