جعل ملفات PDF تفتح مباشرة (وليس عبر التنزيل) بشكل افتراضي

حاليًا، يتم التعامل الأساسي مع ملفات PDF من خلال التنزيل:

allaboutcats.pdf|مرفق (42.2 كيلوبايت)

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

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

يتعامل Inline PDF Previews TC مع هذا عن طريق عرض ملف PDF داخليًا على سطح المكتب — ويقوم بذلك ببراعة. ومع ذلك، فإنه يغفل هذه الحالات الشائعة:

  1. ملفات PDF على الأجهزة المحمولة
  2. ملفات PDF متعددة (بسبب الفوضى البصرية)
  3. عرض ملفات PDF في علامة تبويب متصفح كاملة

يُذكر أن هناك مسارات أخرى لتنزيل ملف PDF. يمكن تنزيلها مباشرةً من رابط (عبر النقر الأيمن / قائمة السياق)، أو من داخل عارض PDF المستند على المتصفح الذي يقدمه هذا TC.

الاقتراح: فتح ملفات PDF في المتصفح افتراضيًا

هذا التعديل الصغير يحل هاتين الحالتين بشكل لطيف وببساطة، ويتماشى مع السلوك الافتراضي للروابط الأخرى في Discourse. لذا مع التغيير المقترح:

  1. روابط PDF على الأجهزة المحمولة تفتح عادةً في نفس نافذة المتصفح
    • يتيح عرضًا بنقرة واحدة
  2. روابط PDF على سطح المكتب (أي فوق ملف PDF الداخلي) تفتح في علامة تبويب جديدة
    • يسمح بعرض علامة التبويب الكاملة بنقرة واحدة
  3. عندما يتم كبح السلوك الداخلي عن قصد (بإضافة مسافة في نص الرابط)
    • يسمح بعرض بنقرة واحدة

لقد جمعت هذه النقاط في هذا PR:

3 إعجابات

هل يمكن لأحد أفراد فريقك أن يلقي نظرة على هذا الطلب المُقدَّم @david؟

لقد تركت بعض التعليقات حول الكود نفسه في طلب السحب (PR)

عند النقر على هذا الرابط، يُفتح ملف PDF في المتصفح. لا يتم التنزيل. هل ترى شيئًا مختلفًا؟

أنا أستخدم كروم على نظام macOS. نحن لا نستخدم مكون الموضوع d-pdf-previews على ميتا.

إعجابَين (2)

هنا في meta.discourse.org، يفتح الرابط الخاص بي أعلاه في نفس علامة التبويب مثل هذه الصفحة (تمامًا كما تصف). هذا لم يتغير في safe-mode.

ومع ذلك، على ثلاثة من مواقعي التي تم تحديثها مؤخرًا (مع تعطيل TC)، فإنه يحاول التنزيل. هذا هو الحال أيضًا مع safe-mode. لست متأكدًا من سبب ذلك. لا يمكنني رؤية أي إعدادات موقع تحكم هذا على الإطلاق.

مهما كان السبب، فإن النسخة الخاصة بي تصلح ذلك لمواقعي بشكل جيد!

هذا لا معنى له بالنسبة لي!!

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

سأرى ما إذا كان بإمكاننا إصلاح هذا التناقض في النواة. سأقوم بالتحديث هنا بخصوص التقدم المحرز.

إعجابَين (2)

هل هناك أي تقدم في هذا حتى الآن؟

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

لدينا عمل قيد التقدم. نأمل أن نتمكن من إتمامه في الأسبوعين المقبلين. إنه أمر صعب بعض الشيء لأنه يتطلب التحقق من العديد من المواقف المختلفة (التحميلات المحلية، s3، المتوافقة مع s3، مع شبكة توصيل المحتوى، بدون شبكة توصيل المحتوى، إلخ).

4 إعجابات

لقد تحققت للتو من ملف PDF قمت بتحميله إلى موضوع اليوم على موقع تم تحديثه مؤخرًا، ويؤدي النقر على رابط ملف PDF إلى فتح عنوان URL الخاص بملف PDF على شبكة توصيل المحتوى (CDN) في متصفحي، للعلم.

إعجابَين (2)

يجب حل هذا منذ SECURITY: Download allowlist for uploaded files · discourse/discourse@9c0642a · GitHub

لدينا الآن منطق مركزي لتحديد الملفات التي يجب عرضها “مضمنة”. هذا يعني أنه يتم عرض ملفات PDF باستمرار كملفات مضمنة، ويتم تقديم بعض أنواع الملفات الأقل أمانًا باستمرار كتنزيلات. يجب أن تعمل هذه التغييرات على جميع أنواع تخزين التحميل (المحلي و S3، مع أو بدون شبكات توصيل المحتوى).

5 إعجابات

تم إغلاق هذا الموضوع تلقائيًا بعد 9 أيام. لم يعد الردود الجديدة مسموحًا بها.

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

عندما أنقر على رابط PDF في الهاتف المحمول، أحصل على تنزيل (وهو ما لا أريده). أريده أن يفتح في المتصفح مباشرة (أي نفس سلوك سطح المكتب)، بغض النظر عما إذا كان TC مثبتًا أم لا.

هل يمكنك التوسع في الإعداد الخاص بك (S3؟ CDN؟)، ونظام تشغيل جهازك المحمول؟

النقر على ملف PDF في المنشور الأصلي هنا على جهاز iPhone الخاص بي يفتحه بشكل صحيح ضمني.

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

ماذا عن ملفات mp4؟ على معظم مواقع الويب، يتم تشغيل الروابط إلى mp4 بشكل طبيعي في المتصفح، ولكن ليس في ديسكورس، وهو أمر مزعج إلى حد ما :slight_smile:

مثال: https://unicyclist.com/uploads/default/original/3X/4/f/4fb882b8ca5a0b0e3d75ff932506d57325f5582c.mp4

السلوك المتوقع: https://d.canapin.dev/uploads/default/original/2X/4/4fb882b8ca5a0b0e3d75ff932506d57325f5582c.mp4

نظريًا، يجب تقديم ملفات mp4 بشكل مضمّن:

والذي يستخدم:

كيف حققت ذلك؟ أي ما هو الفرق عن unicyclist.com؟

عذرًا، كان يجب أن أذكر التمييز. يستخدم الأخير إضافة (plugin): Discourse Video Inline

على ميتا (meta)، يجبر ديسكورس (Discourse) على تنزيل ملفات mp4 أيضًا: https://d11a6trkgmumsb.cloudfront.net/original/4X/3/f/0/3f09f895d21cf0ae897d90c947abb816830b00a2.mp4

إعجابَين (2)

لقد تغير!!! لقد قمت بالتحديث مرة أخرى اليوم، وهي تفتح الآن بشكل مضمن على الهاتف المحمول بشكل جيد.

هل قمت بتعديل شيء ما لأجلنا “المستضيفين الذاتيين البسيطين (بدون CDN/S3)”؟ أم كان هذا شيئًا يتعلق بالتخزين المؤقت الغبي؟

لم يتم إجراء أي تعديلات منذ إصلاح الأمان المذكور أعلاه. ربما كان الأمر يتعلق بالتخزين المؤقت، خاصة إذا قمت بالترقية عبر واجهة المستخدم في المرة الأولى. إذا قمت الآن بإعادة بناء كاملة، فمن المحتمل أن يكون ذلك قد أعاد تعيين ذاكرة التخزين المؤقت لـ NGINX. ويسرني أن أسمع أنه يعمل الآن!

لقد فتحت موضوعًا جديدًا لمشكلة ملفات mp4

3 إعجابات

تم إغلاق هذا الموضوع تلقائيًا بعد 3 أيام. لم يعد الردود الجديدة مسموحًا بها.