البطاقات
هذه الصفحة مترجمة من الإنجليزية. إذا اختلفت النسختان، فالصفحة الإنجليزية هي الصحيحة. اقرأ الصفحة الإنجليزية
البطاقة قائمة قصيرة من العناصر ترسمها Lingara بأسلوبها الخاص. لا توجد حقول إدخال ولا صور ولا نصوص برمجية ولا وسوم. لا يستطيع التطبيق أن يضع شيفرته الخاصة أو مظهره الخاص على شاشة المتعلّم، لذا تبدو كل بطاقة مثل بقية Lingara. ردّك بصيغة JSON: card يحمل elements الخاصة به، واختياريًا tutor_note (انظر ملاحظة المدرّس).
العناصر
لكل عنصر type، وهو واحد من هذه الثمانية:
| العنصر | الحقول | ما يعرضه |
|---|---|---|
heading | text, level | عنوان. قيمة level هي 1 أو 2، وأي قيمة أخرى تصبح 2. نصّه 80 حرفًا على الأكثر. |
text | text, lang | فقرة من 600 حرف على الأكثر. وهي المكان الوحيد الذي يُحتفظ فيه بفاصل الأسطر. |
term | word, reading, gloss, lang | كلمة للتعلّم. الحقل word وحده مطلوب. الكلمة 60 حرفًا على الأكثر، والقراءة 120، والشرح 160. |
list | items | حتى 20 عنصرًا. كل عنصر هو text أو term، بالحقول نفسها التي للعنصر الذي يحمل هذا الاسم. |
progress | value, label | شريط تقدّم. تتراوح value من 0 إلى 1، والتسمية 60 حرفًا على الأكثر. |
divider | خط بين أجزاء البطاقة. | |
button | label, action, style | زر يرسل action الخاص به إلى خادمك. قيمة style هي primary أو secondary، والتسمية 32 حرفًا على الأكثر. |
link | label, url | رابط يفتحه المتعلّم في متصفحه، بعد أن تسأله Lingara. التسمية 60 حرفًا على الأكثر. |
قيمة lang هي وسم لغة مثل ja، كي ترسم Lingara الكتابة الصحيحة. وأي قيمة ليست وسم لغة تُزال.
الحدود
- تحمل البطاقة 24 عنصرًا على الأكثر. تُسقَط العناصر التي تلي العنصر الـ 24.
- تحمل القائمة 20 بندًا على الأكثر. تُسقَط البنود التي تلي البند الـ 20، وتُسقَط القائمة الفارغة.
- تحمل البطاقة 4 أزرار على الأكثر. تُسقَط الأزرار التي تلي الزر الـ 4.
- النص الأطول من حدّه يُقصّ ليتّسع وينتهي بـ
…. تُعدّ الأحرف بوصفها قيمًا قياسية في Unicode. - تُزال أحرف التحكم وأحرف تجاوز الاتجاه من كل سلسلة نصية.
- يُسقَط الرابط الذي لا يكون عنوانه HTTPS، أو يحمل اسم مستخدم، أو يشير إلى عنوان IP.
- يُسقَط الزر الذي يزيد طول
actionالخاص به عن 64 حرفًا، أو يستخدم أي شيء غير الحروف والأرقام و_و.و:و-. - يُسقَط العنصر الذي لا يبقى فيه نص بعد هذه القواعد.
هذه القواعد متسامحة: تقصّ Lingara أو تُسقط ما لا يتّسع وترسم الباقي. وتطبّق الحِزم القواعد نفسها قبل أن تردّ، كي ترى ما الذي سيتغيّر.
التحليل الصارم
المفردات مغلقة. نوع عنصر غير معروف، أو حقل لا يملكه العنصر، أو قيمة من نوع JSON خاطئ، أو ردّ ليس JSON أصلًا، كل ذلك يحوّل الرد بأكمله إلى بطاقة بديلة. لا ترسم Lingara أبدًا جزءًا من بطاقة لم تستطع قراءتها.
الحجم والوقت
يمكن أن يبلغ الرد 32 KiB على الأكثر. تمنح Lingara خادمك 3 ثوانٍ للإجابة عن طلب عرض و5 ثوانٍ للإجابة عن إجراء، ولا تعيد المحاولة في أيٍّ منهما. يجب أن يحمل الرد الحالة 200 ونوع محتوى JSON. لا تُتَّبع عمليات إعادة التوجيه.
الأزرار والإجراءات
عندما يضغط المتعلّم زرًا، ترسل Lingara إلى خادمك طلب إجراء يحمل action الخاص بذلك الزر. يجيب خادمك ببطاقة جديدة تحلّ محل القديمة. قد تصل الضغطة نفسها مرتين، لذا اجعل كل إجراء آمنًا للتكرار.
عندما تفشل البطاقة
عندما لا تستطيع Lingara الحصول على بطاقة يمكنها رسمها، يرى المتعلّم بطاقة Lingara الخاصة «هذا التطبيق لم يُجب» بلغته، أو آخر بطاقة سليمة لك مع علامة «غير محدَّث». لا يُخبَر المتعلّم أبدًا بالسبب. وحدك، بصفتك مالك التطبيق، ترى السبب:
- ردّك:
invalid(ليس بطاقة يمكن لـ Lingara قراءتها)، أوempty(لم يبقَ شيء لعرضه بعد الحدود) أوtoo_large(أكثر من 32 KiB). - الوصول إلى خادمك:
timeout، أوhttp_error(أي حالة غير 200)، أوtransport(فشل في الاتصال أو في TLS، مثل شهادة منتهية الصلاحية) أوblocked(قيمةrender_urlتؤدي إلى عنوان خاص أو عنوان IP حرفي). - جانب Lingara:
unavailable(تعذّر على Lingara توقيع الطلب) أوbusy(طلبات جارية كثيرة جدًا بالفعل).