• DevPilot's avatar
    fix(core-wide): every edit form in the app was rendering blank — old() never returns null · 41217a9f
    DevPilot authored
    السبب اللي خلّى شاشة تعديل اللاعب تبان كأنها «شاشة إضافة جديدة»:
    old() في app/Core/Helpers.php مُعرّفة إنها ترجع (string) دايماً، يعني
    بترجع '' مش null لما مفيش إدخال سابق. وكل الفورمات مكتوبة بالشكل ده:
    
        old('full_name_ar') ?? $player['full_name_ar']
    
    و ?? بيشتغل على null بس — و'' مش null — فالنتيجة دايماً '' مهما كانت
    البيانات المحفوظة. يعني كل خانات كل شاشات التعديل في النظام كانت بتطلع
    فاضية، والمستخدم يفتكرها شاشة إضافة.
    
    اتصلّح 345 موضع في 37 ملف بتحويل ?? إلى ?: في نداءات old() تحديداً،
    فالقيمة المحفوظة بتظهر لما ما يكونش فيه إدخال سابق.
    ده بيمس: HR (كل الفورمات)، SportsActivity، TrainingGroups، Coaches،
    PlayerAffairs، Tournaments، PoolManagement، Achievements، Waiver،
    Installments.
    
    كمان فورمات بتبعت على routes مش موجودة (الحفظ كان بيدي 404 من غير ما
    الشاشة تشتكي):
    - /hr/overtime/store -> الصح /hr/overtime
    - /hr/shifts/assign  -> الصح /hr/shifts/assignments
    
    وحذف MirrorDisplayController وشاشتينه — مفيش أي route بيوصّلهم من ساعة
    ما الميرور اتنقل لموديول FacilityGrids.
    
    أدوات جديدة عشان النوع ده من الأعطال ما يوصلش للمستخدم تاني:
    - tools/form_action_check.py: بيتأكد إن كل فورم POST بيبعت على route
      موجود فعلاً (692 route اتفحصوا). الفحص ده كان هيمسك بَجّي الـ /update.
    - tools/ui_verify.js: فحص بالمتصفح بيدوس الأزرار زي المستخدم بالظبط
      ويفشل على أي استثناء في الصفحة — مش مجرد طلب GET على الـ route.
    41217a9f
assignments.php 3.85 KB