Demande d'amélioration pour le script d'importation phpBB3

Dans phpBB, il est possible d’ajouter des commentaires aux pièces jointes téléchargées :

Ceux-ci apparaissent ensuite sous l’image dans la publication :

Il serait utile que le script d’importation phpBB3 puisse prendre ces commentaires et les attribuer comme texte alternatif à l’image avec laquelle ils sont associés, ce qui apparaîtrait alors lorsque vous survolez l’image dans Discourse.

Merci
Dan

2 « J'aime »

Ah ! Comme je ne connais rien à Ruby on Rails - et que je demande une amélioration au script d’importation phpBB - j’aimerais demander une amélioration supplémentaire comme décrit ici. Il serait utile que lorsque le script signale une erreur de date/heure avec une publication, il signale également le post_id phpBB à des fins de débogage.

Merci
Dan

1 « J'aime »

Il n’est pas immédiatement clair comment procéder à ce que vous demandez, mais j’ai passé quelques minutes et il n’y a pas de solution très satisfaisante qui semble réalisable.

Il n’y a nulle part dans l’enregistrement de téléchargement pour la légende, et je ne vois aucun moyen évident de remonter à partir du téléchargement. . . une possibilité pourrait être d’insérer le commentaire comme nom de fichier, puis de le récupérer plus tard comme légende. Oui. C’est à peu près ce que vous pourriez faire de mieux, encoder cette légende comme nom de fichier, ce qui la ferait apparaître au survol de la souris et autres. Si vous le souhaitiez, vous pourriez ensuite faire autre chose, comme obtenir des noms de fichiers qui incluent une légende et l’insérer ensuite dans le html d’une manière ou d’une autre.

1 « J'aime »

Certes, je ne connais rien à RoR, ni même à postgres. Mais, lorsque vous balisez une image avec un texte alternatif, celui-ci est stocké dans la base de données postgres en association avec cette image. Qu’est-ce qui, dans le script d’importation, empêche cette affectation ? Le commentaire est certainement accessible dans MySQL.

1 « J'aime »

Cela semble délicat, mais vous pourriez réussir en modifiant cette méthode ici :

Au lieu de ceci :

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

Vous voudriez quelque chose comme ceci :

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

        url = attachments.fetch(index, description)

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

Ceci est un exemple non testé juste pour vous montrer où cela doit être modifié. Je peux me tromper.

Si j’ai le temps demain, j’ouvrirai peut-être une Pull Request (PR) avec une vraie solution. :grinning_face_with_smiling_eyes:

5 « J'aime »

Merci ! Voulez-vous qualifier l’affectation en fonction du type MIME ? (Je n’ai pas pu joindre un commentaire phpBB à un .mp4 ; alors que j’ai pu le faire à un .gif, il n’est pas apparu au survol.)

1 « J'aime »

Cela pourrait être utile, mais j’ai travaillé sur une nouvelle façon d’ajouter le commentaire directement dans le brut du message. Je pense que c’est plus sûr de cette façon pour gérer tous les types de fichiers.

Pourriez-vous tester ces changements avec votre jeu de données ? J’ai testé localement mais j’aimerais avoir vos commentaires avant de passer à une PR.

3 « J'aime »

Je serais ravi de tester, mais… Dois-je purger mon environnement de test et recommencer ? Claude.ai m’a guidé à travers le processus d’installation, je suis un nouveau venu sur Docker - et même ainsi, il y a eu beaucoup d’erreurs en cours de route.

Si vous pouvez me décrire une manière simple de tester, je serais heureux d’essayer.

1 « J'aime »

Bon travail ! J’ai examiné le code et je n’ai pas trouvé cela.

Oui. Vous devrez effacer la base de données et relancer. L’importateur ignore les données déjà importées, vous devrez donc tout réimporter pour l’essayer. Il semble que cela devrait fonctionner, cependant !

OK - eh bien, les pièces jointes sont toujours en place, tout comme la base de données MySQL. Il a fallu plusieurs heures pour s’exécuter, mais je vais demander à Claude de me guider et de vous faire un rapport.

Bien sûr, je peux vous aider. Pas besoin de modifier votre installation. La méthode simple :

  1. Faites une sauvegarde de votre site et conservez-la en lieu sûr. Cela vous protégera de la perte de votre travail.
  2. Réinitialisez votre site :
# Entrez dans le conteneur du site
cd /var/discourse
./launcher enter <votre-nom-de-conteneur>

# Réinitialiser la base de données
bundle exec rake db:drop
bundle exec rake db:create
bundle exec rake db:migrate
bundle exec rake db:seed

# Quittez le conteneur
exit

# Reconstruisez le conteneur juste pour être sûr que tout est en place
./launcher rebuild <votre-nom-de-conteneur>
  1. Modifiez les fichiers avec le nouveau code. Vous pouvez utiliser un éditeur de texte en ligne de commande (cli) ou ouvrir votre conteneur via ssh dans votre éditeur de texte préféré.
  2. Configurez le fichier settings.yml et exécutez à nouveau l’importateur.

Pour revenir à votre état précédent, il vous suffit de restaurer la sauvegarde que vous avez effectuée au début :

./launcher enter <votre-nom-de-conteneur>
discourse enable restore
discourse restore <nom-de-votre-sauvegarde>
4 « J'aime »

Ah oui ! Pendant qu’on y est, est-il assez facile de modifier le script pour qu’il signale l’ID de publication phpBB qui est en cours de traitement, lorsque le problème de date/heure est signalé ?

2 « J'aime »

Cela semble assez simple ! Je vais essayer dès que Rosie :dog: m’emmènera me promener.

2 « J'aime »

Je l’ajoute ici en utilisant le gsub existant :

Mais merci d’avoir jeté un œil, cela m’a fait réaliser que je n’avais pas pris en compte les pièces jointes non référencées que phpbb possède également :

2 « J'aime »

OK, la sauvegarde est en cours. Je m’attends à ce que cela prenne un certain temps…

Dois-je éditer ? Ne puis-je pas simplement faire un docker cp dans les chemins de script des fichiers de votre dépôt git ?

1 « J'aime »

Cela fonctionne aussi. Alternativement, vous pouvez configurer le container.yml pour utiliser mon dépôt et ma branche, puis reconstruire.

2 « J'aime »

Eh bien, ça ne s’est pas bien passé.

reset_log.txt (16,6 Ko)

1 « J'aime »

Je pense que vous devez exécuter les commandes en tant qu’utilisateur discourse :

su discourse

ou

su discourse -c “bundle exec rake db:drop”
1 « J'aime »

Oups. Erreur de débutant, je ne voulais pas fermer le fil de discussion - juste pour accuser réception, cela semble avoir résolu ce problème particulier.

« Semble que oui. » J’attends toujours que db:drop se termine. En avant…

1 « J'aime »

Toujours rien.

reset_log2.txt (1,7 Ko)