تقديم قوالب نماذج تجريبية

أهلاً بكم يا مجتمع Discourse Meta!

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

multiple_form_templates

تمكين الميزة

الميزة مخفية خلف علامة تجريبية على مستوى الموقع. لتمكينها، قم ببساطة بتشغيل إعداد الموقع experimental_form_templates ضمن :wrench: المسؤول ▸ الإعدادات.

إدارة القوالب

يمكن إنشاء قوالب النماذج وتعديلها وحذفها في :wrench: المسؤول ▸ تخصيص ▸ القوالب (/admin/customize/form-templates/).

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

تُعرّف القوالب في بنية YAML. يمكنك كتابتها يدويًا، أو الاستفادة من أزرار “إضافة” في الأعلى، والتي ستلحق جزءًا من كود YAML كمثال في النهاية، يحدد نوع إدخال معين.

إليك مثال YAML كامل، مع جميع أنواع الحقول:

- type: input
  id: name
  attributes:
    label: "الاسم الكامل"
    placeholder: "مثال. جون سميث"
    description: "ما هو اسمك الكامل؟"
  validations:
    required: true
    minimum: 2
    maximum: 100
- type: textarea
  id: introduction
  attributes:
    label: "مقدمة"
    placeholder: "مقدمة قصيرة"
    description: "اكتب مقدمة قصيرة عن نفسك"
  validations:
    required: true
    minimum: 10
    maximum: 500
- type: dropdown
  id: fav-animal
  attributes:
    label: "حيوان مفضل"
    description: "اختر حيوانك المفضل"
    none_label: "اختر خيارًا"
  choices:
    - "كلب"
    - "قطة"
    - "آخر"
  validations:
    required: true
- type: multi-select
  id: comm-channel
  attributes:
    label: "قنوات الاتصال:"
    description: "اختر قنوات الاتصال المفضلة لديك:"
    none_label: "اختر خيارًا"
  choices:
    - "بريد إلكتروني"
    - "هاتف"
    - "ماسنجر"
- type: upload
  id: cat-photo
  attributes:
    label: "صورة قطة"
    description: "أرسل صورة لقطتك (أو أي قطة)"
    file_types: ".jpg, .png"
    allow_multiple: false
- type: checkbox
  id: accept-terms
  attributes:
    label: "لقد قرأت وأوافق على الشروط"
    description: "تحتاج إلى قبول الشروط للمتابعة"
  validations:
    required: true

التحقق من الصحة

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

خيارات التحقق

المفتاح النوع الوصف
required boolean يتطلب إكمال الحقل لتقديم النموذج
minimum integer بالنسبة للحقول النصية، يحدد الحد الأدنى لعدد الأحرف المسموح به
maximum integer بالنسبة للحقول النصية، يحدد الحد الأقصى لعدد الأحرف المسموح به
pattern regex string بالنسبة للحقول النصية، تعبير عادي يحدد الإدخال المسموح به
type string بالنسبة لحقول الإدخال، يمكنك تحديد نوع الإدخال المتوقع (text|email|date|number|url|tel|color)

تطبيق قالب على فئة

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

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

ملء النموذج

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

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

أخيرًا، بعد الإرسال، يتكون محتوى الموضوع من جميع الحقول المعبأة:

ملء قيم النموذج مسبقًا

يمكنك أيضًا ملء قيم النموذج مسبقًا عن طريق استدعاء /new-topic مع معلمات مطابقة لمعرفات الحقول المحددة في قالب النموذج. على سبيل المثال، للقالب المستخدم سابقًا كمثال:

/new-topic?name=John%20Smith&favorite-animal=Cat

خارطة الطريق

  • تخزين إخراج JSON في بيانات الموضوع عند إنشاء موضوع
  • تبديل للسماح باختيار واستخدام الملحن المجاني في الفئات ذات قوالب النماذج

كيف يمكنك مساعدتنا

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

يرجى بدء مواضيع جديدة مصنفة form-templates لمشاركة تجاربك، أو الإبلاغ عن أي أخطاء، أو تقديم أي اقتراحات.

شكرًا لمساعدتنا في جعل Discourse أفضل!

84 إعجابًا

هذا يبدو مفيدًا جدًا وسأقوم بالتأكيد بتمكينه للتجربة.

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

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

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

13 إعجابًا

مرحباً :wave:

هذا أحد أفضل التحسينات. إنه يمنح الكثير من الفرص. :heart_eyes:

بعض الملاحظات:

  1. يبدو أن form_templates.errors.valueMissing.number عبارة مفقودة.

  2. يبدو أن التحقق من صحة tel لا يعمل.

  3. على الهاتف المحمول، لا يمكن تمرير قالب النموذج في المنشئ.

  4. على الهاتف المحمول، عندما يكون قالب النموذج متاحًا، لا تفعل أزرار التذييل شيئًا. أعتقد أنه سيكون من الجيد إخفاء هذه الأزرار.
    Screenshot 2023-10-17 at 8.04.50

+ سيكون من المفيد إضافة التحقق لمنع الأرقام السالبة إلى النوع number. حالة الاستخدام (السعر) :slightly_smiling_face:

+ سيكون من المفيد أيضًا إضافة ميزة الحقول الشرطية الديناميكية.


شكراً :slight_smile:

15 إعجابًا

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

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


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

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

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

8 إعجابات

إن طلب الميزة الخاص بي لهذه الميزة الجديدة الرائعة، أعتقد أنه شائع في منتديات دعم البرامج.

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

لذلك، أرغب في نموذج يسأل

  • إصدار FabulousApp الخاص بك هو… (قائمة منسدلة مع خيارات)
  • إصدار PHP الخاص بك هو… (قائمة منسدلة مع خيارات)

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

يجب أن يحتفظ النموذج بالقيم التي اختارها نفس المستخدم في مشاركته السابقة، كقيم افتراضية، هذا هو طلب الميزة الخاص بي. ما رأيك؟

5 إعجابات

أعتقد أنه في بعض الحالات، قد يؤدي وجود حقل مملوء مسبقًا إلى إغفال المستخدمين له وعدم تغيير القيمة عند الحاجة إليها. :thinking:

تكهنات بحتة، مع ذلك.

10 إعجابات

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

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

3 إعجابات

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

إعجابَين (2)

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

إعجابَين (2)

طلبين!

  1. حقل كود يقوم تلقائيًا بتسييج المحتوى بـ ```
    • يمكن أن يحتوي على قائمة منسدلة للغة، مع قيمة افتراضية.
  2. سمة تسمح للمستخدمين بتكرار حقل (أتخيل زر + أسفل هذا الحقل).
    • تخيل إذا أراد مستخدم نشر كتلتين من الأكواد، أو صور متعددة. يمكنهم إدخال واحدة، والنقر على + وإضافة أخرى.
16 إعجابًا

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

بعد تجربتها لفترة وجيزة، لدي سؤالان:

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

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

4 إعجابات

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

هل سيكون بإمكان شخص ما في النهاية ربط أنواع حقول النموذج بمخرجات مخصصة؟
على سبيل المثال، في حالتي، أريد أن يتم ربط خانة الاختيار التي تم تحديدها/on بتنسيق خانة الاختيار، [x]، وعدم تحديدها/off بـ [].

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

3 إعجابات

هذه طريقة رائعة للغاية لفرض سلوك معين في فئة معينة (كانت نقطة الألم لدي هي نشر الوظائف، حيث كان الجميع ينشرون كما يحلو لهم :smiley: )!

ستكون مجموعة من الميزات الإضافية لطيفة:

  • القدرة على “التبديل إلى عدم وجود قالب” (اختياري). سيكون من الجميل أن يقتصر ذلك على المستخدمين، أو حسب المستوى، أو حسب المجموعة وما إلى ذلك؛ نوع من “ثق بي يا صديقي، أنا أعرف ما أفعله!”
  • حقول متعددة في نفس الصف (فكر في الاسم الأول + الاسم الأخير). سيكون الإصلاح “الجيد بما فيه الكفاية” هو السماح للمسؤولين بتعيين اسم فئة لقالب النموذج؛
  • مكرر (أي تجميع مجموعة من الحقول والسماح للمستخدمين بإضافة المزيد منها)؛
7 إعجابات

سيكون من الجيد توفر القدرة على:

  • لصق المحتوى في حقل تحميل[1].
  • إضافة مُنشئ بالإضافة إلى منطقة النص، حيث يمكن للمستخدمين الوصول إلى مجموعة الميزات العادية.[2]

  1. وظيفة التحميل في منشورات Discourse رائعة. هذه الوظيفة أصعب في الاستخدام، وتتطلب حفظ الصور بالفعل على القرص على سبيل المثال. ↩︎

  2. إذا أردت من المستخدم تحديد قائمة منسدلة بالإضافة إلى منشور، مع النهج الحالي (منطقة نص)، فإنني أُقلل بشكل كبير من قدرته على إنشاء منشوره بشكل طبيعي؛ لا يمكن لصق الصور، ولا شريط التحرير، وما إلى ذلك. ↩︎

9 إعجابات

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

  • النموذج نفسه فكرة رائعة :+1:
  • عدم وجود أداة تنسيق هو نقص كبير.
    • حتى لو كانت صيغة markdown أساسية، فإن تحديدها واستخدام شريط الأدوات غالبًا ما يكون أسهل/أسرع. يساعد ذلك في إنشاء رسالة قابلة للقراءة.
    • يمكن أن ينجح هذا إذا كان التقرير مشكلة بسيطة ولكنها متقدمة؛ قد تحتاج إلى إخفاء التفاصيل أو إدراج جدول.
  • عدم وجود تحميل مضمن غير مريح.
    • على سبيل المثال، عرض مشكلة خطوة بخطوة، قبل/بعد النتائج، إلخ.
    • في حالة وجود لقطات شاشة متعددة، يجب عليك شرح لقطات الشاشة التي يجب أن تنظر إليها.
  • مثل Thomas، سيكون لصق صورة موضع ترحيب. استغرق الأمر مني بعض الوقت لمعرفة مكان حفظ لقطات الشاشة الخاصة بي. :smile:
  • إدخال شرطي – عند تحديد “أخرى”، سيكون من الجيد ظهور إدخال لذلك.

بشكل عام، لطيف جدًا! أتطلع إلى كيفية تحسينه. :slight_smile:

9 إعجابات

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

عند إلغاء تحديد النموذج، ترى النص “تحديد قوالب النماذج” وهو واضح بالنسبة لي أن هناك قائمة بالنماذج التي أختار منها. لا يزال المنشئ يعرض النموذج على الرغم من عدم تحديد أي نموذج. هذا هو المكان الذي سأقول فيه، ثانيًا، لـ @iamntz حول خيار التبديل إلى عدم وجود قالب.

6 إعجابات

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

لذلك، ما نتصوره سيكون إنشاء موضوع جديد في الفئة ورؤية هذا:

من هناك، رؤية “تحديد قوالب النماذج”، حيث يمكنك إما التأليف بشكل طبيعي أو رؤية أن النماذج موجودة في هذه الفئة للطلبات/الملاحظات الموحدة. :slight_smile:

يمكنني رؤية الحجة بأن بعض المستخدمين لن يروا أو يستخدموا قالب النموذج، إذا كان بإمكانهم التأليف، لكنني كنت أحاول البقاء ضمن التصميم الحالي مع النص النائب داخل الحقل بدلاً من تسمية خارج الحقل. ولكن هذا هو السبب في أنه يمكن أن يكون ميزة اختيارية يقوم المسؤولون بتمكينها/تعطيلها. :upside_down_face:

4 إعجابات

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

3 إعجابات

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

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

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

وغني عن القول، أننا نحب ما تقدمه هذه الميزة، وسنكون متحمسين لمثل هذه التحسينات عليها. :slight_smile:

6 إعجابات

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

هل هذا ممكن بالفعل؟

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

8 إعجابات