안녕하세요, 다른 포럼 소프트웨어에서 가져온 게시물 중 제목에 줄바꿈이 있는 경우들이 있습니다. 이 줄바꿈은 게시물 미리보기에서는 정상적으로 표시되지만, 최종 생성된 게시물에서는 제목으로 렌더링되지 않습니다. 이 문제는 어제 업데이트된 제 포럼과 Discourse Meta에서도 확인되고 있습니다:
줄바꿈이 있는 제목 테스트
일반 문단입니다.
줄바꿈이 없는 제목
<h2> 태그가 비어 있고, 그 뒤의 텍스트가 <p> 태그로 감싸져 있습니다:
<h2 dir="ltr">
</h2><p dir="ltr">줄바꿈이 있는 제목 테스트</p>
마이그레이션 과정에서 같은 사용자의 가져온 게시물 제목을 특별히 확인해 보았으며, 저와 해당 사용자 모두 당시에는 정상적으로 렌더링되었던 것을 기억하고 있으므로, 이것이 최근 발생한 회귀(regression) 문제일 것이라고 99% 확신합니다.
2개의 좋아요
sam
(Sam Saffron)
4월 11, 2023, 1:16오전
3
음, LTR 관련 사항이 있으므로 @Osama , 최근에 추가한 CSS 플리퍼와 관련이 있을 수 있나요?
2개의 좋아요
Osama
4월 12, 2023, 1:56오전
4
아니라고 생각합니다. 게시물의 최종/렌더링된 HTML이 잘못되었고, CSS 플리퍼(구버전이나 신버전 모두)는 게시물 렌더링 과정에 전혀 관여하지 않기 때문입니다.
^ <p> 내부의 텍스트는 <h2> 안에 있어야 하고, <p> 태그 자체가 존재하지 않아야 합니다(제 생각에는).
6개의 좋아요
selase
(Selase Krakani)
5월 8, 2023, 6:15오후
5
이 문제는 조리(cooking) 단계, 구체적으로는 마크다운 파싱 중에 발생하는 것 같습니다.
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 태그로 감싸져 반환됩니다.
그리고 스크러빙(scrubbing) 단계에서 해당 단락이 헤더 태그에서 추출되어 다음과 같은 결과가 생성됩니다:
헤더 태그 내부의 단락이 스펙에 부합하지 않기 때문에 이런 현상이 발생하는 것으로 추정됩니다.
아직 마크다운 파서 코드를 검토 중이며, 왜 내용이 처음부터 p 태그로 감싸지는지 파악하고 있습니다.
2개의 좋아요
sam
(Sam Saffron)
5월 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가 릴리스될 때까지 몇 주 더 기다리는 것은 괜찮습니다.
Mike에게 이 문제가 발생했음을 언급하는 트윗을 보내겠습니다.
2개의 좋아요
안녕하세요, 확인해 주셔서 감사합니다. HTML은 줄바꿈을 무시하므로, 기술적으로 다음과 같은 코드는 올바른 것입니다:
<h2>
줄바꿈이 포함된 헤딩 테스트
</h2>
이것은 단순히 HTML 파서 이후 또는 내부에서 실행되는 마크다운 파서가 줄바꿈에 대해 <p> 태그를 생성하기 때문에 발생하는 문제인 것 같습니다.
1개의 좋아요
nat
(Natalie T)
6월 20, 2023, 12:40오후
11
안녕하세요, 다음을 통해 이 문제를 수정했습니다:
main ← loofah
merged 01:49AM - 20 Jun 23 UTC
https://meta.discourse.org/t/markdown-preview-and-result-differ/263878
The re… sult of this markdown had different results in the composer preview and the post. This is solved by updating Loofah to the latest version and using html5 fragments like our user had reported. While the change was only needed in [cooked_post_processor.rb](https://github.com/discourse/discourse/pull/21500/files#diff-67de7f44aa04f02ceba9770e5d83b4465add3bd4297be871f94a2233cd4831a7), I've updated the other areas of our codebase to also use the html5 fragment.
> <strike>
>
> Additionally, how come
>
> ```qml
> import QtQuick
> import QtQuick.Controls 2.15 as QQC2
> import QtQuick.Layouts
> import QtPositioning
> ```
>
> and prepension of `QQC2` before `Action`, `Button`, `ApplicationWindow`, and `Frame` doesn't work, whereas
>
> ```qml
> import QtQuick
> import QtQuick.Controls
> import QtQuick.Layouts
> import QtPositioning
> import QtQuick.Controls 2.15 as QQC2
> ```
>
> and addition of `QQC2.Button` (per https://discuss.kde.org/t/qml-pyqt6-cant-get-native-control-appearance/1240/2?u=rokejulianlockhart) does?
>
> </strike>
<img width="643" alt="Screenshot 2023-05-11 at 3 15 36 PM" src="https://github.com/discourse/discourse/assets/1555215/e7087502-b0a1-4219-be0b-ad3904cc6a6f">
Related:
- ~~https://github.com/discourse/discourse/pull/21500~~
- https://github.com/discourse/discourse-footnote/pull/62
- https://github.com/discourse/discourse-bbcode/pull/50
여기서 확인하실 수 있습니다:
줄바꿈이 포함된 제목 테스트
일반 문단.
줄바꿈이 없는 제목
8개의 좋아요
좋네요, @nat 감사합니다! 이 작업을 위해 게시물을 다시 생성해야 하나요?
2개의 좋아요
nat
(Natalie T)
6월 20, 2023, 1:21오후
13
네, 재베이크가 필요합니다. 이 수정으로 자동으로 처리할 수 없으며, 비용이 많이 드는 작업이기 때문입니다.
3개의 좋아요
nat
(Natalie T)
에 닫힘
6월 22, 2023, 12:40오후
14
이 주제는 2일 후 자동으로 닫혔습니다. 더 이상 답변을 할 수 없습니다.