مثال على أي إضافة تحتوي على نموذج مع طلب POST

أهلاً بالجميع!

نحن نعمل حاليًا على محاولة حل مشكلة في تطوير إضافة (plugin) نقوم بها هنا في Error "Unable to configure link to 'Auto Send Messages'. Ensure ad-blockers are disabled and try reloading the page."

ونحن حقًا بحاجة إلى مثال عملي لإضافة تحتوي على إجراء من نوع إرسال نموذج (form submission). تتكون إضافتنا من شيئين، بشكل عام:

  • بعض عناصر التكوين
  • نموذج يدخل فيه المستخدم بعض النصوص، ثم “يرسل” للمعالجة

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

شكرًا لكم!

هل يمكنك قول المزيد عما تفعله؟ ماذا تغير في النموذج؟ هل يمكن أن يكون هذا مكونًا للموضوع؟ هل ما تقدمه هو لنقطة نهاية موجودة أم لنقطة نهاية تضيفها؟

انظر Discourse toolkit to render forms

بعد ذلك، يمكنك الحصول على GitHub - discourse/all-the-plugins والبحث عن “Form” ولكن يمكنك أيضًا رؤية Code search results · GitHub كما هو موضح في Discourse toolkit to render forms - #20 by david (على الرغم من أن كل هذه موجودة في النواة، وليس في الإضافات)

ربما انظر discourse-data-explorer/assets/javascripts/discourse/components/param-input-form.gjs at main · discourse/discourse-data-explorer · GitHub

إعجابَين (2)

FormKit جديد جدًا.

لم أقم حتى بتحديث المكون الإضافي للمواقع لاستخدامه بعد.

(لكنه بالتأكيد الشيء الصحيح لاستخدامه إذا بدأت من جديد :+1:)

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

هذا صحيح جدًا. إنه ما أوصي به دائمًا لمن يكتب رمزًا جديدًا.

لقد استخدمته في شيء جديد أنا أعمل عليه. (ويمكنك أن ترى تذمري بشأنه كثيرًا في موضوع الحديث عنه!)

إعجابَين (2)

@pfaffman نريد إنشاء نموذج بسيط يطالب المستخدم بأربعة أشياء:

  1. المرسل
  2. المستلم
  3. الموضوع
  4. النص

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

على وجه التحديد، سيتضمن النموذج العناصر الأربعة، وبمجرد النقر على زر “إرسال”، سيتم استدعاء نقطة النهاية لإرسال الرسالة.

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

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

ربما نعود خطوة إلى الوراء ونصف المشكلة الفعلية التي تحاول حلها.

هل تقصد أنك تريد إرسال بريد إلكتروني مباشر (بحيث لا يكون الرسالة موجودة في Discourse)، أو أنك تريد إرسال رسالة خاصة تصل إلى المستخدم (والتي في معظم الحالات ستولد إشعارًا عبر البريد الإلكتروني).

هل تريد تغيير مرسل الرسالة الخاصة؟ يبدو أن هذا هو الشيء الوحيد المفقود من واجهة الرسائل الخاصة الحالية، هل هذا صحيح؟

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

شكرًا للتوضيح! لإعطاء مزيد من السياق، نحن نعمل مع قاعدة مستخدمين كبيرة ونرغب في إعادة جذب المستخدمين الذين لم يتفاعلوا مع التطبيق لفترة من الزمن. الهدف هو إرسال رسالة خاصة (PM) إلى عدد كبير من المستخدمين من مرسل معين، مع التحكم في عدة معلمات:

  1. المُرسل: سيحدد المستخدم المسؤول اسم المستخدم للمرسل مباشرة في النموذج.
  2. الموضوع والنص: يمكن للمسؤول تخصيص كل من موضوع الرسالة ونصها.
  3. التحكم في الحجم: نريد السيطرة على عدد الرسائل المرسلة دفعة واحدة لتجنب إزعاج المستخدمين.
  4. الجدولة الزمنية: المهم هو ضمان التحكم في سرعة إرسال الرسائل، لتجنب إغراق نطاق البريد الإلكتروني الخاص بنا والتعرض للتصنيف كمرسل غير مرغوب فيه. سنحتاج إلى القدرة على توقيت الرسائل بفاصل زمني محدد بين كل رسالة وأخرى لمنع استدعاء مرشحات spam.

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

لدينا بالفعل سكريبت بسيط بلغة Ruby قادر على تنفيذ هذه المهمة ويعمل بشكل كامل. حاليًا، نقوم بتنشيطه يدويًا عبر الوصول إلى الجهاز الافتراضي عبر SSH، وهو أمر مرهق بعض الشيء. ما نرغب في القيام به الآن هو تكييف هذا السكريبت ليصبح إضافة (بلجن) بحيث يتمكن المسؤول من تفعيله بسهولة عبر واجهة المستخدم، مع القدرة على إدخال الإعدادات (المُرسل، الموضوع، النص، عدد الرسائل، الفاصل الزمني بينها، وغيرها) مباشرة من واجهة الإدارة.

نود تحقيق هذا عبر واجهة إضافة تسمح للمسؤول بإدخال هذه الإعدادات بسهولة، تفعيل العملية، ومتابعة تقدم عملية إرسال الرسائل.

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

هذه الكثير من القطع.

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

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

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

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