{{-- صلاحيات البرنامج مقسمة حسب أقسام البرنامج (config/permission_groups.php) — الاسم عربي/إنجليزي حسب اللغة. شكل الكروت: عمودين، كل قسم كارت بعنوان و"تحديد الكل"، والصلاحيات تحت بعض. المتغيرات: $permission (كل الصلاحيات)، $rolePermissions (المحدد حالياً)، $wrapperClass --}} @php $isAr = app()->getLocale() == 'ar'; $sections = config('permission_groups', []); $byName = collect($permission)->keyBy('name'); $checked = $rolePermissions ?? []; $usedIds = []; $hasArabic = fn ($s) => (bool) preg_match('/\p{Arabic}/u', (string) $s); $fallbackLabel = fn ($p) => $isAr ? ($hasArabic($p->name_ar ?? '') ? $p->name_ar : $p->name) : $p->name; $cards = []; foreach ($sections as $key => $section) { $items = []; foreach ($section['permissions'] ?? [] as $name => $labels) { if ($byName->has($name)) { $p = $byName[$name]; $usedIds[] = $p->id; $items[] = [$p, $isAr ? $labels[0] : $labels[1]]; } } if ($items) { $cards[] = ['title' => $isAr ? $section['ar'] : $section['en'], 'items' => $items]; } } $others = collect($permission)->reject(fn ($p) => in_array($p->id, $usedIds)); if ($others->isNotEmpty()) { $cards[] = ['title' => $isAr ? 'صلاحيات أخرى' : 'Other permissions', 'items' => $others->map(fn ($p) => [$p, $fallbackLabel($p)])->values()->all()]; } @endphp
{{ $isAr ? 'الصلاحيات' : 'Permissions' }}
{{ $isAr ? 'تحديد الكل' : 'Select all' }} {{ $isAr ? 'إلغاء تحديد الكل' : 'Unselect all' }}
@foreach ($cards as $card)
{{ $card['title'] }}({{ count($card['items']) }})
@foreach ($card['items'] as [$p, $label])
@endforeach
@endforeach