مرحباً، لدي بعض المشاركات التي تم استيرادها من برنامج منتديات آخر مع فواصل أسطر في العناوين. يتم عرض هذه بشكل صحيح في معاينة المشاركة، ولكنها لا تُعرض كعناوين في المشاركة النهائية. أرى هذه المشكلة في منتداي الذي تم تحديثه بالأمس وأيضًا هنا في Discourse Meta:
اختبار عنوان مع فواصل أسطر
فقرة عادية.
عنوان بدون فواصل أسطر
يترك <h2> فارغًا ويلف النص الذي يليه في <p>:
<h2 dir="ltr">
</h2><p dir="ltr">اختبار عنوان مع فواصل أسطر</p>
أنا متأكد بنسبة 99٪ أن هذا تراجع حديث، حيث قمت بالتحقق تحديدًا من العناوين في المشاركات المستوردة من نفس المستخدم أثناء عملية الترحيل، ونتذكر أنا والمستخدم أنهما كانا يُعرضان بشكل صحيح.
إعجابَين (2)
sam
(Sam Saffron)
11 أبريل 2023، 1:16ص
3
همم، بالنظر إلى أشياء ltr هناك @Osama ، هل يمكن أن يكون هذا متعلقًا بـ CSS flipper الذي أضفناه مؤخرًا؟
إعجابَين (2)
Osama
12 أبريل 2023، 1:56ص
4
لا أعتقد ذلك لأن HTML النهائي/المطهو للمنشور خاطئ، و CSS flipper (سواء القديم أو الجديد) لا يشارك على الإطلاق في عملية طهي المنشور.
^ النص الموجود داخل <p> يجب أن يكون داخل <h2> ولا يجب أن يكون هناك <p> على الإطلاق (أعتقد).
6 إعجابات
selase
(Selase Krakani)
8 مايو 2023، 6:15م
5
يبدو أن هذا يحدث أثناء الطهي، وتحديداً عند تحليل علامة Markdown.
sanitized = markdown(working_text, options)
doc = Nokogiri::HTML5.fragment(sanitized)
add_nofollow = !options[:omit_nofollow] && SiteSetting.add_rel_nofollow_to_user_content
add_rel_attributes_to_user_content(doc, add_nofollow)
strip_hidden_unicode_bidirectional_characters(doc)
sanitize_hotlinked_media(doc)
add_mentions(doc, user_id: opts[:user_id]) if SiteSetting.enable_mentions
scrubber = Loofah::Scrubber.new { |node| node.remove if node.name == "script" }
loofah_fragment = Loofah.fragment(doc.to_html)
loofah_fragment.scrub!(scrubber).to_html
تمرير رأس يحتوي على فواصل أسطر إلى PrettyText.markdown يعود بمحتوى الرأس مغلفًا بعلامة p.
ثم أثناء التنظيف، يتم استخراج الفقرة من علامة الرأس مما ينتج عنه ما يلي:
أفترض أن هذا يحدث لأن الفقرة الموجودة في علامة رأس ليست متوافقة مع المواصفات؟
ما زلت أراجع كود محلل علامة Markdown لمعرفة سبب تغليف المحتوى بعلامة p في المقام الأول.
إعجابَين (2)
sam
(Sam Saffron)
9 مايو 2023، 12:02ص
7
هذا مرتبط جدًا بـ:
Took a quick look out of curiosity. It looks like an issue with the Nokogiri library.
[image]
From what uses Discourse here:
Loofah.fragment uses Nokogiri’s HTML4 parser.
This could be fixed using Loofah.html5_fragment as long as Nokogiri >= 1.14.0 and Loofah >= 2.21.0. Discourse already uses Nokogiri::HTML5.fragment; that would make sense.
Note: Loofah 2.21.0 is not yet released; currently in RC1.
أنا على ما يرام بالانتظار لبضعة أسابيع أخرى حتى يتم إصدار Loofah
سأرسل تغريدة إلى مايك لذكر أن هذا ظهر.
إعجابَين (2)
مرحباً، شكراً لك على التحقق من هذا. لا يهتم HTML بفواصل الأسطر، لذا فهذا صحيح من الناحية الفنية:
<h2>
اختبار العنوان مع فواصل الأسطر
</h2>
يبدو ببساطة أنه مشكلة في محلل Markdown الذي يعمل بعد/داخل محلل HTML، والذي يقوم بإنشاء علامات <p> لفواصل الأسطر.
إعجاب واحد (1)
nat
(Natalie T)
20 يونيو 2023، 12:40م
11
\n\nمرحباً، لقد قمنا بإصلاح هذا باستخدام \n\nhttps://github.com/discourse/discourse/pull/21522\n\nكما هو موضح هنا:\n\n\u003ch2\u003e\n\nاختبار العنوان مع فواصل أسطر\n\n\u003c/h2\u003e\n\nفقرة عادية.\n\n\u003ch2\u003eعنوان بدون فواصل أسطر\u003c/h2\u003e\n\n____
8 إعجابات
يسعدني سماع ذلك، شكرًا @nat ! هل يتطلب هذا إعادة خبز المنشورات؟
إعجابَين (2)
nat
(Natalie T)
20 يونيو 2023، 1:21م
13
نعم، يتطلب ذلك إعادة خبز — لا يمكننا القيام بذلك تلقائيًا لك بهذا الإصلاح لأنه عملية مكلفة.
3 إعجابات
nat
(Natalie T)
تم إغلاقه في
22 يونيو 2023، 12:40م
14
تم إغلاق هذا الموضوع تلقائيًا بعد يومين. لم يعد يُسمح بالردود الجديدة.