Webbox
يُضمّن Webbox صفحة ويب خارجية داخل الاستطلاع كنافذة مشروطة iframe، مما يتيح للمعدِّدين عرض المراجع أو التفاعل مع أدوات خارجية دون مغادرة النموذج.
يُضمّن Webbox صفحة ويب خارجية داخل الاستطلاع كـ نافذة منبثقة مشروطة (iframe). يضغط المعدِّد على زر في التسمية أو نص الملاحظة، وتفتح الصفحة في تراكب ملء الشاشة داخل النموذج، وعندما يغلقها يعود إلى نفس المكان بالضبط. يتيح لك هذا عرض المواد المرجعية والخرائط ولوحات البيانات أو الأدوات المخصصة دون فتح علامة تبويب متصفح منفصلة.
الصياغة
أدرج علامة <webbox> HTML مباشرةً في عمود label أو note في التسمية:
<webbox src='https://example.com/reference' title='Reference Guide'>Open Reference Guide</webbox>
| السمة | الوصف |
|---|---|
src | عنوان URL لتحميله في iframe. يدعم الاقتباسات المفردة والمزدوجة. |
title | النص المعروض في شريط رأس النافذة المشروطة. يدعم النص العادي. |
| (المحتوى) | تسمية الزر القابل للنقر المعروضة في حقل الاستطلاع |
مثال أساسي
| type | name | label |
|---|---|---|
| note | ref_guide | <webbox src='https://docs.example.com/field-guide' title='Field Guide'>📖 Open Field Guide</webbox> |
يُصيّر هذا زراً مُسمى “📖 Open Field Guide”. عند الضغط عليه، تفتح نافذة مشروطة تعرض موقع دليل الميدان.
تضمين خريطة
| type | name | label |
|---|---|---|
| note | area_map | <webbox src='https://maps.example.com/survey-area' title='Survey Area Map'>🗺 View Map</webbox> |
تمرير قيم النموذج إلى الصفحة المضمّنة
ألحق قيم حقول النموذج بعنوان URL باستخدام concat() في عمود calculation واستشر إلى النتيجة في التسمية:
| type | name | label | calculation |
|---|---|---|---|
| calculate | webbox_url | concat('https://dashboard.example.com/household?id=', ${household_id}) | |
| note | hh_dash | <webbox src='${webbox_url}' title='Household Dashboard'>Open Dashboard</webbox> |
تدعم سمة src في علامة <webbox> مراجع ${fieldname} عند حساب التسمية من حقل calculate. أنشئ عنوان URL الكامل في حقل calculate واستشر إليه.
تفاعل التكرار: أزرار الحذف
يدعم Webbox أيضاً علامات إجراء خاصة لإدارة مجموعات التكرار داخل التسميات:
<delete-repeat-current>Remove this row</delete-repeat-current>
<delete-repeat-last>Remove last row</delete-repeat-last>
تُصيَّر هذه كأزرار تحذف مثيلات التكرار عند الضغط عليها. ضعها في حقل note داخل (أو مباشرةً بعد) مجموعة التكرار:
| type | name | label |
|---|---|---|
| begin_repeat | items | Item |
| text | item_name | Item name |
| note | delete_btn | <delete-repeat-current>✕ Remove this item</delete-repeat-current> |
| end_repeat |
التواصل مع الصفحة المضمّنة (postMessage)
يمكن لـ iframe الخاص بـ webbox والنموذج الأصلي التواصل باستخدام browser’s postMessage API. يرسل الأصل رسالة init إلى iframe عند فتحه. يمكن للصفحة المضمّنة الاستجابة بـ:
delete-repeat-current— يُطلق حذف مثيل التكرار الحاليdelete-repeat-last— يُطلق حذف مثيل التكرار الأخير
يُتيح ذلك للأدوات الويب المخصصة (مثل أدوات الرسم والخرائط التفاعلية) تشغيل إجراءات النموذج عندما يؤكد المستخدم إجراءً داخل iframe.
أفضل الممارسات
- استخدم webbox لـ المواد المرجعية (إرشادات، جداول بحث، خرائط) — وليس لجمع البيانات التي يجب أن تكون في النموذج نفسه.
- تأكد من أن عنوان URL المضمّن متاح من شبكة الجهاز — يتطلب webbox الاتصال بالشبكة.
- اجعل الصفحة المضمّنة مناسبة للجوال — النافذة المشروطة بحد أقصى 800 بكسل عرضاً و80% من ارتفاع نافذة العرض.
- استخدم نص زر وصفي (مثل “View Village Map”) بدلاً من التسميات العامة (“Click here”).
- أعلم المعدِّدين أن إغلاق النافذة المشروطة يعيدهم إلى الاستطلاع — قد لا يعرف بعض المستخدمين كيفية إغلاق تراكب iframe.
القيود
- يتطلب Webbox اتصالاً بالشبكة لتحميل عنوان URL المضمّن.
- تحظر بعض المواقع الخارجية التضمين في iframes عبر رؤوس
X-Frame-OptionsأوContent-Security-Policy— لا يمكن استخدام هذه المواقع مع webbox. - تُغلق النافذة المشروطة عندما يتنقل المعدِّد بعيداً عن السؤال — أي حالة غير محفوظة في iframe تُفقد.
- Webbox امتداد لنموذج rtSurvey على الويب وقد لا يعمل في عملاء آخرين متوافقين مع ODK.