نسخ مكون سمة Codeblocks

:warning: تم إهمال مكون السمة هذا الآن لصالح نسخ محتويات كتلة الكود إلى الحافظة، وهي ميزة أساسية في Discourse.

:sun_with_face: معاينة في منشئ السمات
:computer: مستودع Git: https://github.com/discourse/discourse-copy-codeblocks
:bulb: كيف أقوم بتثبيت سمة أو مكون سمة؟

يضيف مكون السمة هذا زر نسخ إلى كتل الكود داخل منشورات Discourse — مثالي للمجتمعات التي تشارك أمثلة على الكود أو مقالات قاعدة المعرفة التي تتطلب نسخ النص.

على سطح المكتب، يظهر زر النسخ عند تمرير الماوس فوق الكتلة.

على الجوال، يُظهر زر الكود دائمًا لكنه يدفع الكود داخل الكتلة للأسفل لتجنب إخفاء السطر الأول من الكود إذا كان طويلاً جدًا.

يرجى ملاحظة أن هذا يعمل فقط مع كتل الكود المُنشأة بواسطة ``` ```, وليس مع كتل الكود المضمنة.

هذه كتلة كود.
انسخ هذا النص.

هذا كود مضمن. لا يعمل النسخ هنا.

شكرًا جزيلاً إلى @j.jaffeux الذي قام بجزء كبير من التطوير الأولي لهذا المكون.

24 إعجابًا

ما الفرق بين هذا و https://meta.discourse.org/t/copy-option-for-code-blocks-in-discourse/60961?u=falco؟

7 إعجابات

عدة أشياء:

  • لا يبيع مكتبة كاملة للحافظة
  • لا يعتمد على jQuery
  • لا يتسرب مستمعو الأحداث
  • لا يعتمد على أحداث متعددة
  • يستخدم معايير برمجة حديثة
  • لا يحتوي على خطأ الاقتباس

غير متأكد مما إذا كان هذا يعمل بشكل صحيح على الهواتف المحمولة أيضًا.

15 إعجابًا

رائع!!

هل نحن منفتحين على استبدال النص المُوَلَّد “نسخ”/“تم النسخ” بأيقونات؟ ربما نستخدم أيقونة النسخ لـ “نسخ”، وأيقونة علامة الصح لـ “تم النسخ”؟

3 إعجابات

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

7 إعجابات

يبدو أننا يجب أن نزيل أو نوقف أحدهما ونوحد الجهود؟ :thinking:

7 إعجابات

ملاحظة: التأخير المنسوخ سريع جدًا على هاتفي الآيفون. يجب أن تظهر كلمة ‘تم النسخ’ لمدة 3 ثوانٍ تقريبًا قبل العودة.

يبدو الأمر جيدًا :+1:

8 إعجابات

تم التعديل هنا:

https://github.com/discourse/discourse-copy-codeblocks/commit/d1af36a4a5197dab4ca1dd62a05930088882de45

كما تم إصلاح عدد من الأخطاء في إصدارات Discourse الأقدم التي لا تتوفر فيها @ember/runloop و Promise من مكتبة rsvp. (شكرًا لـ @jomaxro على التقارير المتعلقة بذلك)

7 إعجابات

عذراً، لكن :heart: وحده لا يكفي هذه المرة.

رائع! هذا مذهل. هذا مع Placeholder Forms أمر رائع حقًا.

ما فعلته للتو معه

sfdisk -d /dev/=gooddev= | sfdisk /dev/=newdev=
mdadm --manage /dev/md1 --add /dev/=newdev=
mdadm --detail /dev/md1

شاهد كيف يعمل!

while true; do mdadm --detail /dev/md1|grep "Rebuild Status" ; sleep 10;done

احصل على وقت التشغيل لجميع الأقراص

for x in a b c d ; do smartctl -a /dev/sd$x|grep Power_On; done
12 إعجابًا

أعجبني هذا كثيرًا! :heart_eyes: لكن هل يمكن أن يكون زر النسخ ظاهرًا فقط عند النقر على الهواتف المحمولة؟ أشعر بخيبة أمل قليلاً بسبب فقدان مساحة الشاشة باستمرار على الأجهزة المحمولة، حيث يظهر سطر إضافي لكل كتلة كود:

لكنني أدرك بعد ذلك أن

  • كتل الكود ليست شائعة جدًا
  • بما أن الميزة اختيارية، فستقوم بتفعيلها فقط على المواقع التي يكون فيها نسخ كتل الكود نشاطًا شائعًا أيضًا

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

ليس أمرًا عاجلًا.

3 إعجابات

نعم، طلب منطقي تماماً :+1: أنا أشاركك هذا القلق أيضاً، وسنجد حلاً.

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

حتى هذا سيكون مفضلاً على الجوال، أعتقد. المحاذاة غير دقيقة لكنك تفهم الفكرة:

(حتى لو تداخل مع النص وما إلى ذلك، لست متأكدًا مما إذا كان ذلك يجعله أصعب أم أسهل من العرض عند النقر؟ :thinking:)

كان لدينا ذلك في الأصل، لكنه كان يتداخل مع النص دون أن يكون من الممكن رؤيته. أحب فكرة أن يصبح مرئياً عند اللمس. سأبحث في ذلك.

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

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

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

مرحباً،

أود جداً استخدام هذه الميزة، لكن بمجرد تفعيلها لثيم Grey Amber الخاص بي، أصبح موقعي بطيئاً وغير مستجيب في بعض الأوقات حتى قمت بإيقافه.

هل واجه أي شخص هذا السلوك؟ أم أن هذا قد يكون بسبب الضغط على الخادم الافتراضي (VPS) عند تفعيل هذه الميزة؟

الموقع يتكون بنسبة 99.9% من أسطر كود فردية، وكنت آمل التحول إلى كتل الكود لهذا الغرض، لذا لا يبدو أنه يحاول جلب أي كود موجود مسبقاً لتحويله. أم أنني مخطئ؟

هل يجب أن أعطيها بعض الوقت لتستقر؟ لقد استمر في إسقاط الموقع مؤقتاً، وفي بعض الأحيان عند تحميل صفحة ما، تظهر رسالة خطأ ورسالة “حاول مرة أخرى” من منصة ديسكورش.

شكراً مقدماً.

إعجابَين (2)

واو، يبدو أن هذا خطأ جاد بالفعل!

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

خطأ بسيط: قد يظهر نص “نسخ” داخل اقتباس. (أقل أهمية بكثير من المنشور السابق.)

يجب استبعاد عنصر button.copy-cmd من الاقتباس. تطبيق user-select: none في CSS يُصلح أمر Ctrl-C لكنه لا يُصلح وظيفة الاقتباس.

3 إعجابات

هل لديك رابط لموقعك؟ يبدو غريبًا جدًا أن يسبب قالب هذه المشكلة. كم عدد كتل الكود الموجودة في الصفحة؟

لذا قمت بإجراء تغييرات متعددة هنا. بالنظر إلى أن مشكلاتنا كانت:

  • مساحة الشاشة على الجوال
  • خطأ في نسخ النص عند الاقتباس
  • بالإضافة إلى طلبات استبدال النص بأيقونة

الحل الواضح الذي يعالج كل ذلك… كان استخدام أيقونة.

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

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

أما على سطح المكتب، فستعمل كما كانت من قبل دون وجود خطأ الاقتباس:

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

جرب كتلة الكود الجديدة هنا:

rsync -a file.txt file_backup.txt
rsync -a /var/www/public_html/ /var/www/public_html_backup/
7 إعجابات

هذه الميزة موجودة الآن في نواة Discourse :tada:

ونتيجة لذلك، أصبح مكون هذا الموضوع مُعطَّلاً. سيعمل لا يزال مع نسخ Discourse الأقدم، لكنه لن يتلقى أي تحديثات بعد الآن.

لقد قمت بتحديث المنشور الأصلي ليعكس هذه المعلومات.

5 إعجابات