Skip to main content
General

صفوف الفئات: قائمة واحدة، وصيد Blink مباشرة إلى فئة

ما الذي تغيّر

كانت كل صف من صفوف الفئات — في Blinks, Goals, Projects and Businesses — تحتوي على خمسة عناصر تحكم: الاسم، شارة العد، وأزرار للملف الشخصي، تحرير وحذف، بالإضافة إلى “+” لإضافة فئة فرعية. على الهاتف، كانت تلك الأزرار تنتقل إلى السطر الثاني، وكان الصف يبدو مزدحمًا.

الصف الآن يظهر شيئان بعد الاسم والعدد:

  • رمز catch-a-Blink، الذي ينقل Blink جديدة مباشرة إلى تلك الفئة;
  • قائمة “…” تحتوي على الملف الشخصي، تحرير، إضافة فئة فرعية وحذف.

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

العرضكيف يبدو الصف
سطح المكتب# العمل  كل شيء من أجل وظيفة اليوم  12 Blinks  (↓) (…)
الهاتف# العمل  12  (↓) (…) — الاسم يتم اختصاره وتحتفظ الشارة بالعدد، متجاهلة الكلمة

صيد Blink إلى فئة

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

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

أي التطبيقات تحتوي على أيها

الصف الهادئ وقائمة “…” موجودة في جميع الأربعة تطبيقات، لأنها تشترك في مكون صف واحد. بعض عناصر القائمة تظهر فقط حيث يمكن أن تعمل بالفعل:

  • إضافة فئة فرعية — Blinks فقط في الوقت الحالي. صفحات إنشاء التطبيقات الثلاثة الأخرى لا يمكنها بعد قبول فئة رئيسية، وعرض عنصر تحكم يقوم بلا شيء بشكل صامت أسوأ من عدم تقديمه.
  • أيقونة الصيد — Blinks فقط في الوقت الحالي، لنفس السبب: فقط نموذج Blink يمكنه حاليًا الفتح مع فئة محددة مسبقًا. يمكن لكل من التطبيقات الأخرى تشغيله لاحقًا عبر تمرير قيمة إضافية واحدة إلى الصف؛ لا حاجة لشفرة جديدة للسلوك نفسه.

لوحات المفاتيح وقارئات الشاشة

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

للمطورين

القطعةأين
الصف (مشترك بين أربعة تطبيقات)templates/_shared/_category_row_inner.html
عقدة الشجرة (كان “+” تعيش هنا)templates/_shared/_category_node.html
الأنماطstatic/css/orbitingfox-ui.css § 23t
فئة محددة مسبقًا + مسار العودةblink/views.py (?category=, nextnext_url)
الاختباراتconfig/test_category_row_actions.py, config/test_capture_return_path.py

القائمة هي قائمة منسدلة من Bootstrap مبطنة باستخدام .of-dropdown-menu القائمة الموجودة — ليست نمط التوسع/الانهيار السادس. القائمة ليست إفصاحًا: <details> لا يمكن أن تطفو فوق الصف، لذا ستقوم بفتح القائمة بدلاً من أن تتراكب عليها.

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

وجدت اثنتان من الفخاخ أثناء بناء هذا، يستحقان المعرفة: min-w-0 ليست فئة في قاعدة الشيفرة هذه (الفئة المنزلية هي of-min-w-0)، وخمسة عمليات لا تفعل شيئًا كانت سببًا في تجاوز الصف على الهاتف؛ وفئات ألوان btn-outline-* هي فئات ألوان Bootstrap التي لا يعدها تصميم التروس حاليًا، لذا يمكن أن تتجمع دون أن تلاحظ.

This guide was translated automatically. Read the English original.

🪐 OrbitPilot