2.7 KiB
Vernova - Calendar Fix (رفع مشکل تقویم)
مشکل
بخشهایی از برنامه تاریخها رو به میلادی نمایش میداد حتی وقتی کاربر تقویم رو روی شمسی ست کرده بود.
تغییرات
1. app/Http/Middleware/SetLocale.php
مشکل: اولویت خواندن تقویم از سشن اشتباه بود. Middleware در هر درخواست، مقدار سشن رو با مقدار دیتابیس کاربر override میکرد. اگر کاربر تقویم رو از هدر تغییر بده، در درخواست بعدی مقدار سشن دوباره از دیتابیس خونده میشد و تغییر کاربر نادیده گرفته میشد.
رفع: اولویت سشن بالاتر از دیتابیس قرار گرفت. حالا ترتیب اولویت:
- سشن (بالاترین اولویت - کاربر همین الان تغییر داده)
- تنظیمات دیتابیس کاربر
- تنظیمات tenant
- تنظیمات مرورگر
- تنظیمات پیشفرض config
2. app/Http/Controllers/DashboardController.php
مشکل: کلید کانفیگ اشتباه بود: config('projectra.defaults.calendar') به جای config('projectra.default_calendar').
رفع: کلید کانفیگ اصلاح شد.
3. resources/views/layouts/header.blade.php
مشکل: سینتکس @x-localized-date :date="now()" معتبر نیست و به صورت متنی خام نمایش داده میشد.
رفع: خط نامعتبر حذف شد و فقط {{ calendar_date(now()) }} باقی ماند.
4. app/Helpers/helpers.php
مشکل: تابع calendar_date() تاریخ شمسی رو با ارقام لاتین نمایش میداد (مثلاً 1403/01/15 به جای ۱۴۰۳/۰۱/۱۵).
رفع: تبدیل خودکار ارقام فارسی وقتی locale روی 'fa' هست اضافه شد.
5. app/Models/Project.php
مشکل: اکسسور getStatusLabelAttribute() وجود نداشت اما ویوها از $project->status_label استفاده میکردن.
رفع: اکسسور status_label و رابطه defaultCurrency() اضافه شد.
نحوه نصب
فایلها رو در مسیرهای مربوطه در پروژه لاراول کپی کنید:
calendar-fix/
├── app/
│ ├── Http/
│ │ ├── Middleware/SetLocale.php
│ │ └── Controllers/DashboardController.php
│ ├── Helpers/helpers.php
│ └── Models/Project.php
├── resources/
│ └── views/
│ └── layouts/header.blade.php
└── README.md