Verbesserungswunsch für das phpBB3 Import-Skript

In phpBB ist es möglich, hochgeladenen Anhängen Kommentare hinzuzufügen:

Diese erscheinen dann unter dem Bild im Beitrag:

Es wäre nützlich, wenn das phpBB3-Importskript diese Kommentare übernehmen und ihnen als Alternativtext (alt text) für das Bild zuweisen könnte, mit dem sie verknüpft sind, welcher dann in Discourse beim Überfahren des Bildes mit der Maus angezeigt wird.

Danke
Dan

1 „Gefällt mir“

Ah! Da ich nichts über Ruby on Rails weiß – und eine Verbesserung des phpBB-Importskripts beantrage – möchte ich eine zusätzliche Verbesserung beantragen, wie hier beschrieben. Es wäre nützlich, wenn das Skript bei der Meldung eines Datums-/Zeitfehlers bei einem Beitrag auch die phpBB-Beitrags-ID zur Fehlersuche melden würde.

Danke
Dan

1 „Gefällt mir“

Es ist nicht sofort ersichtlich, wie man das umsetzen soll, was Sie verlangen, aber ich habe ein paar Minuten damit verbracht, und es gibt keine sehr zufriedenstellende Lösung, die machbar erscheint.

Im Upload-Datensatz gibt es keinen Platz für die Bildunterschrift, und ich sehe keinen offensichtlichen Weg, vom Upload zurückzugehen. . . eine Möglichkeit wäre, den Kommentar als Dateinamen einzutragen und ihn dann später irgendwie wieder als Bildunterschrift herauszuziehen. Ja. Das ist ungefähr das Beste, was man tun könnte: diese Bildunterschrift als Dateinamen kodieren, wodurch sie bei Mouseover usw. angezeigt wird. Wenn Sie möchten, könnten Sie dann etwas anderes tun, wie z. B. Dateinamen abrufen, die eine Bildunterschrift enthalten, und diese dann irgendwie in den HTML-Code einfügen.

1 „Gefällt mir“

Zugegebenermaßen weiß ich nichts über RoR oder sogar über Postgres. Aber wenn Sie ein Bild mit Alternativtext markieren, wird dieser in der Postgres-Datenbank in Verbindung mit diesem Bild gespeichert. Was ist es an dem Import-Skript, das diese Zuordnung verhindert? Sicherlich ist der Kommentar in MySQL zugänglich.

1 „Gefällt mir“

Sieht knifflig aus, aber Sie könnten Erfolg haben, indem Sie diese Methode hier ändern:

Anstelle von diesem:

text.gsub!(attachment_regexp) do
        index = $1.to_i
        real_filename = $2
        unreferenced_attachments[index] = nil
        attachments.fetch(index, real_filename)
end

Sie möchten etwas wie das hier:

text.gsub!(attachment_regexp) do
        index = $1.to_i
        description = $2.strip
        unreferenced_attachments[index] = nil

        url = attachments.fetch(index, description)

        "![#{description}](#{url})"
end

Dies ist ein ungetestetes Beispiel, nur um Ihnen zu zeigen, wo es geändert werden muss. Ich kann mich irren.

Wenn ich morgen Zeit habe, werde ich vielleicht einen PR mit einer echten Lösung öffnen. :grinning_face_with_smiling_eyes:

5 „Gefällt mir“

Danke! Möchten Sie die Zuweisung nach MIME-Typ qualifizieren? (Ich konnte keinen phpBB-Kommentar an eine .mp4 anhängen; während ich es bei einer .gif konnte, erschien sie beim Darüberfahren nicht.)

1 „Gefällt mir“

Das könnte nützlich sein, aber ich habe eine neue Methode entwickelt, den Kommentar direkt zum Rohformat des Beitrags hinzuzufügen. Ich denke, es ist sicherer, auf diese Weise alle Dateitypen zu behandeln.

Wärst du in der Lage, diese Änderungen mit deinem Datensatz zu testen? Ich habe sie lokal getestet, würde mich aber über dein Feedback freuen, bevor ich mit einem PR fortfahre.

3 „Gefällt mir“

Ich würde gerne testen, aber… Muss ich meine Testumgebung löschen und von vorne beginnen? Claude.ai hat mich durch den Installationsprozess geführt, ich bin ein Docker-Neuling – und selbst dann gab es auf dem Weg viele Fehler.

Wenn Sie mir einen Weg aufzeigen können, wie ich problemlos testen kann, probiere ich es gerne aus.

1 „Gefällt mir“

Tolle Arbeit! Ich habe mir den Code angesehen und konnte das nicht finden.

Ja. Du musst die Datenbank löschen und erneut ausführen. Der Importer überspringt bereits importierte Daten, daher musst du alles neu importieren, um es auszuprobieren. Sieht aber so aus, als sollte es funktionieren!

OK – nun, die Anhänge sind noch vorhanden, ebenso wie die MySQL-Datenbank. Es dauerte mehrere Stunden, sie auszuführen, aber ich werde Claude bitten, mich durchzuführen und dann berichten.

Sicher, ich kann Ihnen helfen. Sie müssen Ihre Installation nicht ändern. Der einfache Weg:

  1. Erstellen Sie ein Backup Ihrer Seite und bewahren Sie es sicher auf. Dies schützt Sie davor, Ihre Arbeit zu verlieren.
  2. Setzen Sie Ihre Seite zurück:
# Betreten Sie den Container der Seite
cd /var/discourse
./launcher enter <your-container-name>

# Datenbank zurücksetzen
bundle exec rake db:drop
bundle exec rake db:create
bundle exec rake db:migrate
bundle exec rake db:seed

# Den Container verlassen
exit

# Den Container neu erstellen, um sicherzustellen, dass alles vorhanden ist
./launcher rebuild <your-container-name>
  1. Ändern Sie die Dateien mit dem neuen Code. Sie können einen CLI-Texteditor verwenden oder Ihren Container per SSH öffnen, um Ihren bevorzugten Texteditor zu verwenden.
  2. Konfigurieren Sie die settings.yml und führen Sie den Importer erneut aus.

Um zu Ihrem vorherigen Zustand zurückzukehren, stellen Sie einfach das Backup wieder her, das Sie zu Beginn erstellt haben:

./launcher enter <your-container-name>
discourse enable restore
discourse restore <your-backup-filename>
4 „Gefällt mir“

Oh ja! Könnten wir das Skript während wir dabei sind, so ändern, dass die verarbeitete phpBB post_id gemeldet wird, wenn das Datums-/Zeitproblem gemeldet wird?

2 „Gefällt mir“

Scheint einfach genug! Ich werde es versuchen, sobald Rosie :dog: mich zu meinem Spaziergang mitnimmt.

2 „Gefällt mir“

Ich füge es hier mit dem bestehenden gsub hinzu:

Aber danke, dass du einen Blick darauf geworfen hast. Das hat mich darauf aufmerksam gemacht, dass ich die nicht referenzierten Anhänge, die phpBB auch hat, nicht berücksichtigt habe:

2 „Gefällt mir“

OK, das Backup läuft. Ich erwarte, dass das eine Weile dauern könnte…

Muss ich bearbeiten? Kann ich nicht einfach eine docker cp in die Skriptpfade der Dateien in Ihrem Git-Repository durchführen?

1 „Gefällt mir“

Das funktioniert auch. Alternativ können Sie die container.yml so einstellen, dass sie mein Repo und meinen Branch verwendet, und dann neu erstellen.

1 „Gefällt mir“

Nun, das lief nicht gut.

reset_log.txt (16,6 KB)

1 „Gefällt mir“

Ich denke, Sie müssen die Befehle als der discourse-Benutzer ausführen:

su discourse

oder

su discourse -c “bundle exec rake db:drop”

Hoppla. Anfängerfehler, ich wollte den Thread nicht schließen – nur bestätigen, dass das dieses spezielle Problem gelöst zu haben scheint.

„Scheint so.“ Warte immer noch darauf, dass db:drop abgeschlossen wird. Weiter geht’s…

1 „Gefällt mir“

Immer noch keine Besserung.

reset_log2.txt (1,7 KB)