Wie behebt man Formatierungsprobleme? - Markdown schlecht nach HTML migriert

Wir haben die Migration von flarum.amybo.org zu discourse forum.amybo.org erfolgreich abgeschlossen, aber das Forum ist nun von Formatierungsproblemen durchzogen. Zum Beispiel:

@\"Gerrit\"#p174 Ich mag die Idee einer wasserbasierten Flüssigkeit (genau wie Rabaeys), also habe ich mir die Inhaltsstoffe von [Nutrisorb Trace Minerals](https://www.biocare.co.uk/nutrisorbr-liquid-trace-minerals-15ml) angesehen:
1. Gereinigtes Wasser, 
2. Natriumborat, 
3. Konservierungsmittel (Zitronensäure), 

Wird zu:

<r>
<p>
<POSTMENTION discussionid="25" displayname="Gerrit" id="174" number="8">@\"Gerrit\"#p174</POSTMENTION> Ich mag die Idee einer wasserbasierten Flüssigkeit (genau wie Rabaeys), also habe ich mir die <URL url="https://www.biocare.co.uk/nutrisorbr-liquid-trace-minerals-15ml"><s>[</s>Nutrisorb Trace Minerals](https://www.biocare.co.uk/nutrisorbr-liquid-trace-minerals-15ml)<s></s></URL> Inhaltsstoffe angesehen:</p>
<LIST type="decimal">
<LI><s>1. </s>Gereinigtes Wasser, </LI>
<LI><s>2. </s>Natriumborat, </LI>
<LI><s>3. </s>Konservierungsmittel (Zitronensäure), </LI>
</LIST>

Gibt es eine empfohlene Methode, diese zu beheben?

Es wäre großartig, wenn dies forumweit automatisiert werden könnte (ohne jeden Beitrag als bearbeitet anzuzeigen), aber wenn nicht, wäre eine halbautomatische Korrektur, die wir Beitrag für Beitrag anwenden könnten, besser, als jeden HTML-Tag manuell entfernen zu müssen, um zu Markdown zurückzukehren.

Die Zeit, das zu beheben, war, als Sie den Import durchgeführt haben. Als jemand, der viele Migrationen durchführt, ist es eine meiner größten Sorgen, dass Leute ein Forum mit fehlerhafter Formatierung wie dieser starten. Es wäre ziemlich einfach gewesen, das Importskript zu korrigieren, und viel schwieriger, es nachträglich zu beheben, nachdem Sie gestartet sind. Damals hätte es vielleicht ein oder zwei Stunden gedauert, und jetzt ist es 2-5 Mal so viel Arbeit.

Ja, man könnte ein Skript schreiben, das die Dinge im Live-Forum bereinigt und entweder (beängstigend) die Bearbeitungen nicht beibehält (sodass es keine Bearbeitung und keine Benachrichtigungen gäbe) oder die Bearbeitung durchführt und ihm sagt, es soll nicht stoßen/benachrichtigen. Ich bin ziemlich sicher, dass ich das schon einmal gemacht habe. Sie würden so etwas tun:

fixes = Post.where("raw like '%something broken%'")
fixes.each do |p|
   new_raw = p.raw.gsub!(some stuff)
   PostRevisor.new(p).revise!(script_user, {raw: new_raw, edit_reason: 'post fixer!'}, {bypass_bump: true)
end

Enthält raw all diese HTML-Elemente?

2 „Gefällt mir“

Ich glaube, Sie können den posts:remap Rake-Befehl verwenden (siehe Replace a string in all posts, um dies zu erreichen); Sie sollten keine Bearbeitung mit diesem Befehl haben.

1 „Gefällt mir“

Diese Rake-Aufgabe ist für einfache Ersetzungen in Ordnung, wird aber schnell unhandlich.

Was meinst du? So, wenn du komplexe reguläre Ausdrücke verwalten willst, ist das nicht praktikabel?

Okay. Sie rufen die Aufgabe in einer Shell auf, daher ist es schwierig oder unmöglich, schnell herauszufinden, ob Sie Bash, Ruby oder den regulären Ausdruck escapen. Außerdem scheinen die Korrekturen keine einfachen Ersetzungen zu sein.

2 „Gefällt mir“

Ich bin neu bei Discourse, habe aber jetzt herausgefunden, wie man auf das Rohformat zugreift, und ja, es enthält das gesamte HTML:
https://forum.amybo.org/raw/56/9

Hast du das vorhandene Skript flarum_import.rb verwendet? Ich kann mir kaum vorstellen, dass HTML im p.content-Feld von Flarum vorhanden ist (was in das raw-Feld im Importskript gelangt). Ich bin mir ziemlich sicher, dass Flarum Markdown verwendet, daher weiß ich nicht, warum du HTML in raw haben solltest. Oder vielleicht ist das Skript einfach so kaputt.

Aber Durchstreichen ist das, was im HTML steht. Vielleicht kannst du das einfach mit CSS beheben.

Das Beheben von \u003cPOSTMENTION\u003e ist etwas kniffliger, da Discourse Zitate, aber keine Erwähnungen hat. Die einfache Lösung wäre, diese einfach in ein einfaches @${displayname} zu ändern (und hoffen, dass der Benutzername derselbe ist wie vor dem Import, oder eine Suche in den user_custom_fields durchführen, um den aktualisierten Benutzernamen zu finden. Eine andere Möglichkeit wäre, einen Link einzufügen, wie z. B. @mention sagte [hier](/t/-/\u003cdiscourse ID für Thema 25\u003e/\u003c8\u003e).

Eine verrückte Lösung wäre, ein Skript zu schreiben, das das Markdown aus der Flarum-Datenbank zieht und das raw-Feld aktualisiert, um dieses einzuschließen. Es müsste immer noch ein wenig bereinigt werden (wegen Erwähnungen und POSTMENTIONS), aber es würde vieles beheben.

Eine andere Idee wäre, deine Seite einzufrieren, alle importierten Daten massenhaft zu löschen, das Importskript zu reparieren und es erneut auszuführen.

Aber du hast nicht viele neue Beiträge, seit du umgezogen bist, also könntest du sie irgendwie sichern, einen frischen Import in eine leere Datenbank durchführen und sie dann wieder hinzufügen. Der Umgang mit neuen Benutzern wäre etwas schwieriger.

Wenn du ein Budget hast, kannst du mich kontaktieren oder im Marketplace posten.

2 „Gefällt mir“

Danke Jay, ich habe die Migration nicht selbst durchgeführt, daher weiß ich nicht, welches Skript verwendet wurde. Das Mitglied, das es getan hat, ist krank, aber ich werde es auf Ihren ausgezeichneten Rat hier hinweisen, wenn es zurückkehrt.

1 „Gefällt mir“