phpBB 3.0.7 からの移行で役立つ可能性のある別の問題が修正されました。
phpBB フォーラムの投稿内容の先頭に、行ごとに複数のスペースが含まれる場合がありました。ユーザーがメッセージを作成する際に注意せずにスペースキーを連打するのを好むためだと推測されますが、レンダリングされた ページではこれらの複数のスペースは無視されるため、問題ありませんでした。
生の phpBB テキストコンテンツ:
Salut tous :)😊:evil:😈:);)
Alors voilà, le combi n'a pas roulé beaucoup ces derniers temps cause CT pas OK 😈:evil: mais il a fait ces 2000 kms sans broncher 😉:wink:
Maintenant le CT est OK . Merci L'Atelier Du Raz 8-')
Je dois donc changer le joint-spi au bout de 40 000 kms en 10 ans 🙄:roll:
C'est un silicone et j'ai vu qu'il y avait des "doubles lèvres " !?
What's About ?
Je trouve ça un peu limte 😈:evil:
Merci tous, fred
ブラウザでのレンダリングページ:
しかし、phpBB から Discourse へのインポート中に、これらの既存のスペースがコードブロックに変換されてしまいました。
このように表示されるべきです。
各行の先頭のスペースを削除する正規表現を追加することで修正しました。
text.gsub!(/^[^\\S\\r\\n]+/, "\\n")
このファイル内の process_smilies(text) の直前にこれを追加しました。
add_unreferenced_attachments(text, unreferenced_attachments)
else
text = raw.dup
text = CGI.unescapeHTML(text)
clean_bbcodes(text)
if @settings.use_bbcode_to_md
text = bbcode_to_md(text)
end
process_smilies(text)
process_links(text)
process_lists(text)
process_code(text)
fix_markdown(text)
process_attachments(text, attachments) if attachments.present?
text
end
end
もう一つ問題が発生しました。
このコード(まだ text_processor.rb にあります)で:
def clean_bbcodes(text)
# Many phpbb bbcode tags have a hash attached to them. Examples:
# [url=https://google.com:1qh1i7ky]click here[/url:1qh1i7ky]
# [quote="cybereality":b0wtlzex]Some text.[/quote:b0wtlzex]
text.gsub!(/:(?:\\w{8})\\]/, ']')
私のデータベースでは、これらのハッシュの長さは 5 文字から 8 文字の間ですが、正規表現は 8 文字のハッシュのみを削除します。そのため、インポートでは短いハッシュが削除されずに残ってしまいました。
正規表現を次のように変更して修正しました。
text.gsub!(/:(?:\\w{5,8})\\]/, ']')
同じファイルで、もう一つ小さな問題があります。[color] BBCode タグを削除する正規表現は、必須の # で始まる16進数値を想定しています。しかし、[color] は「red」、「blue」などの文字列も値として受け入れます。そのため、元の正規表現を変更しました。
# remove color tags
text.gsub!(/\\[\\/?color(=#[a-z0-9]*)?\\]/i, "")
# の後に ? を追加して、# をオプションにしました。
修正されたコード:
# remove color tags
text.gsub!(/\\[\\/?color(=#?[a-z0-9]*)?\\]/i, "")
これらの問題が phpBB のインポートで一般的かどうか、それとも私のケースに非常に特有なものなのかはわかりません。後者の場合、ここで説明したことが歓迎されない、または余分なものでないことを願っています。もしそうであれば、お知らせください。そうすれば気まずくならずに済みます。: grinning_face_with_smiling_eyes:
編集:移行後、すべての既存のトピックをすべての既存ユーザーにとって「既読」として設定することは可能ですか?
目標は、移行後、既存のユーザーが既存の(時には古い)トピックをクリックしても、移行前に既に読んだトピックの最初のメッセージに誘導されないようにすることです。
理想的には、既存のユーザーが既存のトピックをクリックすると、最初のメッセージではなく、最後の メッセージ(移行終了以降のもの)が開かれるはずです。
ただし、これは小さなユーザビリティの問題です(ユーザーがフォーラムを使用し、トピックを読むにつれて数週間で自然に解消されます)。しかし、この提案について質問されました。