طلب تحسين لسكربت استيراد phpBB3

في phpBB، من الممكن إضافة تعليقات إلى المرفقات التي تم تحميلها:

تظهر هذه التعليقات بعد ذلك أسفل الصورة في المشاركة:

سيكون من المفيد أن يتمكن برنامج استيراد phpBB3 من أخذ هذه التعليقات وتعيينها كنص بديل (alt text) للصورة المقترنة بها، والذي سيظهر عند تمرير مؤشر الماوس فوق الصورة في Discourse.

شكرًا
دان

إعجابَين (2)

آه! بما أنني لا أعرف شيئًا عن Ruby on Rails - وأنا أطلب تحسينًا لبرنامج استيراد phpBB - أود أن أطلب تحسينًا إضافيًا كما هو موصوف هنا. سيكون من المفيد إذا قام البرنامج، عند الإبلاغ عن خطأ في التاريخ/الوقت مع مشاركة ما، بالإبلاغ أيضًا عن post_id الخاص بـ phpBB لأغراض تصحيح الأخطاء.

شكرًا
دان

إعجاب واحد (1)

ليس من الواضح على الفور كيفية المتابعة للقيام بما تطلبه، ولكني قضيت بضع دقائق ولا يوجد حل مُرضٍ للغاية يبدو قابلاً للتطبيق.

لا يوجد مكان في سجل التحميل للتسمية التوضيحية، ولا أرى طريقة واضحة للرجوع إلى الوراء من التحميل. . . قد يكون أحد الاحتمالات هو وضع التعليق كاسم ملف ثم استخراجه لاحقًا كنص وصفي. نعم. هذا هو أفضل ما يمكنك فعله، ترميز هذا النص الوصفي كاسم ملف، مما سيجعله يظهر عند تمرير الماوس وما إلى ذلك. إذا أردت، يمكنك بعد ذلك فعل شيء آخر، مثل الحصول على أسماء الملفات التي تتضمن تسمية توضيحية ثم وضعها في html بطريقة ما.

إعجاب واحد (1)

بصراحة، أنا لا أعرف شيئًا عن RoR، ولا حتى عن postgres. ولكن، عندما تضع نصًا بديلاً (alt text) لصورة ما، يتم تخزينه في قاعدة بيانات postgres بالارتباط مع تلك الصورة. ما الذي يمنع هذا التعيين في سكربت الاستيراد؟ بالتأكيد، يمكن الوصول إلى التعليق في MySQL.

إعجاب واحد (1)

يبدو الأمر صعبًا، ولكن قد تنجح عن طريق تعديل هذه الدالة هنا:

بدلاً من هذا:

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

قد ترغب في شيء كهذا:

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

        url = attachments.fetch(index, description)

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

هذا مثال غير مُختبَر فقط ليوضح لك أين يجب إجراء التعديل. قد أكون مخطئًا.

إذا كان لدي وقت غدًا، فقد أفتح طلب سحب (PR) بحل حقيقي. :grinning_face_with_smiling_eyes:

5 إعجابات

شكرًا لك! هل تريد تأهيل المهمة بناءً على نوع MIME؟ (لم أتمكن من إرفاق تعليق phpBB بملف .mp4؛ بينما تمكنت من إرفاقه بملف .gif، إلا أنه لم يظهر عند التمرير فوقه.)

إعجاب واحد (1)

قد يكون هذا مفيدًا، لكنني عملت على طريقة جديدة لإضافة التعليق مباشرة إلى النص الأصلي للمنشور. أعتقد أنها أكثر أمانًا للتعامل مع جميع أنواع الملفات.

هل يمكنك اختبار هذه التغييرات باستخدام مجموعة البيانات الخاصة بك؟ لقد اختبرت محليًا ولكنني أود الحصول على ملاحظاتك قبل المتابعة بطلب سحب (PR).

3 إعجابات

يسعدني أن أختبر، ولكن… هل يجب عليّ مسح بيئة الاختبار الخاصة بي والتكرار؟ لقد أرشدني Claude.ai خلال عملية التثبيت، وأنا مبتدئ في استخدام Docker - وحتى مع ذلك، كان هناك الكثير من الأخطاء في الطريق.

إذا كان بإمكانك تحديد طريقة تسمح لي بالاختبار بسهولة، فسأكون سعيدًا بتجربتها.

إعجاب واحد (1)

عمل رائع! لقد تصفحت الكود ولم أتمكن من العثور عليه.

نعم. ستحتاج إلى مسح قاعدة البيانات وتشغيلها مرة أخرى. يقوم المستورد بتخطي البيانات التي تم استيرادها بالفعل، لذلك ستحتاج إلى إعادة استيراد كل شيء لتجربتها. يبدو أنها ستنجح، على الرغم من ذلك!

حسنًا - حسنًا، المرفقات لا تزال في مكانها، وكذلك قاعدة بيانات MySQL. استغرق تشغيله عدة ساعات، ولكن سأجعل كلود يرشدني خلاله وأعود إليك بالتقرير.

بالتأكيد، يمكنني مساعدتك. لا حاجة لتغيير التثبيت الخاص بك. الطريقة السهلة:

  1. قم بأخذ نسخة احتياطية من موقعك وقم بتخزينها بأمان. هذا سيحميك من فقدان عملك.
  2. أعد تعيين موقعك:
# ادخل إلى حاوية الموقع
cd /var/discourse
./launcher enter <your-container-name>

# أعد تعيين قاعدة البيانات
bundle exec rake db:drop
bundle exec rake db:create
bundle exec rake db:migrate
bundle exec rake db:seed

# اخرج من الحاوية
exit

# أعد بناء الحاوية للتأكد من أن كل شيء في مكانه
./launcher rebuild <your-container-name>
  1. عدّل الملفات باستخدام الكود الجديد. يمكنك استخدام محرر نصوص سطر الأوامر (cli) أو فتح الحاوية الخاصة بك باستخدام ssh في محرر النصوص المفضل لديك.
  2. قم بإعداد ملف settings.yml وقم بتشغيل أداة الاستيراد مرة أخرى.

للعودة إلى حالتك السابقة، ما عليك سوى استعادة النسخة الاحتياطية التي أخذتها في البداية:

./launcher enter <your-container-name>
discourse enable restore
discourse restore <your-backup-filename>
4 إعجابات

أجل! وبينما نحن في ذلك، هل من السهل تعديل البرنامج النصي للإبلاغ عن post_id الخاص بـ phpBB الذي تتم معالجته، عند الإبلاغ عن مشكلة التاريخ/الوقت؟

إعجابَين (2)

يبدو الأمر بسيطًا بما فيه الكفاية! سأجرب ذلك بمجرد أن تأخذني روزي :dog: في نزهتي.

إعجابَين (2)

سأضيفه هنا باستخدام الدالة gsub الحالية:

ولكن شكراً لك على إلقاء نظرة، هذا جعلني أدرك أنني لم آخذ في الحسبان المرفقات غير المشار إليها التي يمتلكها phpbb أيضاً:

إعجابَين (2)

حسنًا، النسخ الاحتياطي جارٍ. أتوقع أن يستغرق ذلك بعض الوقت…

هل أحتاج إلى التعديل؟ ألا يمكنني فقط استخدام docker cp في مسارات السكربتات للملفات الموجودة في مستودع git الخاص بك؟

إعجاب واحد (1)

هذا يعمل أيضًا. بدلاً من ذلك، يمكنك تعيين container.yml لاستخدام المستودع والفرع الخاص بي وإعادة البناء.

إعجابَين (2)

حسنًا، لم يسر الأمر على ما يرام.

reset_log.txt (16.6 كيلوبايت)

إعجاب واحد (1)

أعتقد أنك قد تحتاج إلى تشغيل الأوامر كمستخدم discourse:

su discourse

أو

su discourse -c “bundle exec rake db:drop”
إعجاب واحد (1)

عفوًا. خطأ مبتدئ، لم أقصد إغلاق الموضوع - فقط للإقرار بأن هذا قد حل تلك المشكلة تحديدًا.

“يبدو أن ذلك قد حلها.” ما زلت أنتظر اكتمال db:drop. للمضي قدمًا…

إعجاب واحد (1)

لا يزال لا يوجد تفاعل.

reset_log2.txt (1.7 كيلوبايت)