حقول المستخدم المشروطة

حالة الاستخدام

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

اليوم، يبدأ المستخدمون إنشاء حساباتهم من خلال تكامل OIDC الخاص بنا عن طريق إنشاء حساب مع شركتنا. يقدمون البريد الإلكتروني والاسم واسم المستخدم إلى OIDC قبل أن يعيدهم إلى Discourse.

المشكلة

نود الآن أن نقدم لهم بعض حقول المستخدم الإضافية لملئها - وهذا أمر رائع، لأن Discourse يقدم ذلك! للأسف، لا يمكننا إظهار الحقول بناءً على استجابات الحقول السابقة. على سبيل المثال، نود أن نسأل، “ما هو الدور الذي يصفك بشكل أفضل؟” مع الخيارات، developer (مطور)، administrator (مسؤول)، و analyst (محلل).

  • إذا اختاروا developer (مطور)، فسوف أسألهم بالطبع عن لغات البرمجة المفضلة لديهم. سأضيفهم أيضًا لاحقًا إلى مجموعة المستخدمين المطورين.
  • إذا اختاروا analyst (محلل)، فأريد أن أسألهم سلسلة مختلفة من الأسئلة، وأضيفهم إلى مجموعة مستخدمين مختلفة.

الحل المقترح

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

- type: dropdown
  id: user-type
  choices:
    - "Developer"
    - "Application Administrator"
    - "Analyst"
  attributes:
    none_label: "Choose your role..."
    label: "Which option best describes your job"
  validations:
    required: true
- type: dropdown
  id: developer-type-programming-language
  depends: user-type
    choices:
      - "Developer"
  choices:
    - "Developer"
    - "Application Administrator"
    - "Analyst"
  attributes:
    none_label: "Preferred programming language..."
    label: "What is the primary programming language used in your role?"
  validations:
    required: true

في هذا المثال، سيُطرح السؤال الأول على جميع المستخدمين. إذا اختار المستخدم “Developer” (مطور) من القائمة المنسدلة، فسيظهر سؤال ثانٍ في النموذج يسأل عن لغة البرمجة المفضلة لديه.

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

5 إعجابات

يمكنك إلقاء نظرة على GitHub - discourse/discourse-authentication-validations والذي يفعل ذلك بالضبط، باستثناء صفحة تسجيل المستخدم فقط. لا يبدو من السهل تكييفه مع صفحة تفضيلات المستخدم حيث يتم تحرير تلك الحقول.

لكنك تطلب ميزة، ولا تبحث عن حل لمشكلتك الفورية.

6 إعجابات

يبدو واعدًا - أود رؤية المزيد من الوثائق حوله.

للمزيد من المعلومات، يرجى الاطلاع على: url to meta topic

يبدو أن النية كانت موجودة.

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

هذا كل ما في الأمر، أخشى ذلك.

هذا هو النص القياسي من GitHub - discourse/discourse-plugin-skeleton: Template for Discourse plugins

إعجابَين (2)

المكون الإضافي بديهي للغاية في الواقع.

يضيف مربع الاختيار السفلي خيار المصادقة.

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

بمجرد التعبئة، استهدف حقول المستخدم المخصصة التي تريد إظهارها. في مثالي، إذا كان 1-6+، فسيُطلب من المستخدم إدخال سماعات الرأس الأساسية والثانوية.

سيكون هذا رائعًا إذا تم توسيعه ليشمل قوالب النماذج التجريبية.

5 إعجابات

لقد كان على قائمة مهامي لفترة من الوقت… سأحرص على إضافته هذا الأسبوع :slight_smile:

3 إعجابات

لقد اعتقدت أنني كتبت هذا بالفعل.. :sweat_smile:

سأقوم بتحديث المستودع برابط الميتا.

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

آه! آسف لقد نسيت ذلك أيضًا.

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

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

نعم، هذا هو الموقع الوحيد المتأثر حاليًا بهذا المكون الإضافي.

دعني أتأكد من أننا على نفس الصفحة:

هل تريد القدرة على تحديث حقول المستخدم المخصصة العامة عبر /preferences/profile ونطبق نفس منطق الإخفاء/الإظهار الشرطي كما نفعل في نافذة إنشاء الحساب؟

شيء مثل، إذا كانت قيمة الحقل المخصص 1 هي إظهار الحقل المخصص 2، فقم بإظهار الحقل الثاني؟

إعجابَين (2)

نعم. أريد أن يتم تطبيق نفس القواعد على صفحة /preferences/profile لجميع custom_user_fields التي تم تمييزها بأنها Editable after signup.

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

3 إعجابات

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

ستكون هذه مرشحًا جيدًا لـ #pr-welcome، ولكن يمكنني أيضًا محاولة إلقاء نظرة عليها في الشهر المقبل أو نحو ذلك.

4 إعجابات

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

سيكون ذلك رائعًا!

4 إعجابات