@extends('layouts.app') @section('title', (isset($permission) && is_object($permission)) ? 'Edit Permission' : 'Add Permission') @push('stylesheets') @endpush @section('contents')
@csrf @if (isset($permission) && is_object($permission)) @method('PUT') @endif

{{ (isset($permission) && is_object($permission)) ? 'Edit Permission' : 'Add Permission' }}

{{-- Permissions name/slug --}}

Permissions

@if(isset($modules) && !empty($modules))

@php $moduleOrder = config('permission.module_display_order', []); $orderedModuleNames = array_values(array_filter($moduleOrder, fn($n) => isset($modules[$n]))); foreach (array_keys($modules) as $n) { if (!in_array($n, $orderedModuleNames)) { $orderedModuleNames[] = $n; } } @endphp @foreach($orderedModuleNames as $moduleName) @php $forms = $modules[$moduleName] ?? []; $moduleId = preg_replace('/[^a-z0-9\-]+/', '-', trim(str_replace(' ', '-', strtolower($moduleName)), '-')); $isFirstModule = $loop->first; $moduleDisplayName = config('permission.module_display_names.' . $moduleName, $moduleName); @endphp @if(!empty($forms))
{{ $moduleDisplayName }}
@php $formOrder = config('permission.form_display_order.' . $moduleName, []); $orderedFormNames = array_values(array_filter($formOrder, fn($f) => isset($forms[$f]))); foreach (array_keys($forms) as $f) { if (!in_array($f, $orderedFormNames)) { $orderedFormNames[] = $f; } } @endphp @foreach($orderedFormNames as $formName) @php $formData = $forms[$formName] ?? null; @endphp @if(empty($formData)) @continue @endif @php $formId = preg_replace('/[^a-z0-9\-]+/', '-', trim(str_replace(' ', '-', strtolower($formName)), '-')); @endphp
{{ config('permission.form_display_names.'.$formName) ?? ($formData['form_display_name'] ?? $formName) }}
@php $allActions = $formData['actions'] ?? []; $savedPermission = []; if (isset($permission) && is_object($permission)) { $savedPermission = isset($permission->permission_raw) ? $permission->permission_raw : (is_array($permission->permission) ? $permission->permission : json_decode(json_encode($permission->permission), true)); } $isMeetingWorkspace = strcasecmp((string) ($formData['form_display_name'] ?? ''), 'Meeting Workspace') === 0 || strtolower((string) $formName) === 'meeting workspace'; @endphp @if($isMeetingWorkspace) @php $mwsGroups = \App\Support\MwsSchemeMeetingTypePermission::groupPermissionActionsForUi($allActions); $mwsLabels = \App\Support\MwsSchemeMeetingTypePermission::permissionUiGroupLabels(); $mwsCommon = $mwsGroups[\App\Support\MwsSchemeMeetingTypePermission::UI_GROUP_COMMON] ?? []; $mwsTypeOrder = [ \App\Support\MwsSchemeMeetingTypePermission::UI_GROUP_PRE_PDWP, \App\Support\MwsSchemeMeetingTypePermission::UI_GROUP_PDWP, \App\Support\MwsSchemeMeetingTypePermission::UI_GROUP_DDWP, \App\Support\MwsSchemeMeetingTypePermission::UI_GROUP_GENERAL, ]; @endphp @if($mwsCommon !== [])
{{ $mwsLabels[\App\Support\MwsSchemeMeetingTypePermission::UI_GROUP_COMMON] }}
@foreach($mwsCommon as $action)
@include('permissions.partials.action-checkbox', [ 'action' => $action, 'formName' => $formName, 'moduleId' => $moduleId, 'formId' => $formId, 'permission' => $permission ?? null, 'savedPermission' => $savedPermission, 'checkboxId' => 'action-'.$action['id'], 'checkboxClass' => 'action-checkbox mb-2', ])
@endforeach
@endif
@foreach($mwsTypeOrder as $groupKey) @php $typeActions = $mwsGroups[$groupKey] ?? []; @endphp @if($typeActions !== [])
{{ $mwsLabels[$groupKey] ?? $groupKey }}
@foreach($typeActions as $action) @include('permissions.partials.action-checkbox', [ 'action' => $action, 'formName' => $formName, 'moduleId' => $moduleId, 'formId' => $formId, 'permission' => $permission ?? null, 'savedPermission' => $savedPermission, 'checkboxId' => 'action-'.$action['id'], 'checkboxClass' => 'action-checkbox mb-2', ]) @endforeach
@endif @endforeach
@else @php $half = (int) ceil(count($allActions) / 2); $leftActions = array_slice($allActions, 0, $half); $rightActions = array_slice($allActions, $half); @endphp
@foreach($leftActions as $action) @include('permissions.partials.action-checkbox', [ 'action' => $action, 'formName' => $formName, 'moduleId' => $moduleId, 'formId' => $formId, 'permission' => $permission ?? null, 'savedPermission' => $savedPermission, 'checkboxId' => 'action-'.$action['id'], 'checkboxClass' => 'action-checkbox mb-2', ]) @endforeach
@foreach($rightActions as $action) @include('permissions.partials.action-checkbox', [ 'action' => $action, 'formName' => $formName, 'moduleId' => $moduleId, 'formId' => $formId, 'permission' => $permission ?? null, 'savedPermission' => $savedPermission, 'checkboxId' => 'action-right-'.$action['id'], 'checkboxClass' => 'action-checkbox', ]) @endforeach
@endif @if(isset($formData['fields']) && !empty($formData['fields'])) @php $fieldPermissionsId = 'field-permissions-' . $moduleId . '-' . $formId; @endphp
@php $hiddenFields = config('permission.hidden_fields', []); $lowerFormName = strtolower($formName); $savedPermission = (isset($permission) && is_object($permission)) ? (isset($permission->permission_raw) ? $permission->permission_raw : (is_array($permission->permission) ? $permission->permission : json_decode(json_encode($permission->permission), true))) : []; @endphp @foreach($formData['fields'] as $fieldName => $fieldActions) @if(in_array($fieldName, $hiddenFields) || \Str::endsWith($fieldName, '_id')) @continue @endif @php $fieldViewKey = strtolower($fieldName) . '_view'; $fieldEditKey = strtolower($fieldName) . '_edit'; $formPermsRow = $savedPermission[$lowerFormName] ?? []; $fieldsAllowedByAdd = is_array($formPermsRow) && permission_form_has_create($formPermsRow); // Respect explicit 0/1 in DB; only imply "all on" when add/create exists and key was never saved. $hasViewKey = is_array($formPermsRow) && array_key_exists($fieldViewKey, $formPermsRow); $hasEditKey = is_array($formPermsRow) && array_key_exists($fieldEditKey, $formPermsRow); $isCheckedView = $hasViewKey ? !empty($formPermsRow[$fieldViewKey]) : $fieldsAllowedByAdd; $isCheckedEdit = $hasEditKey ? !empty($formPermsRow[$fieldEditKey]) : $fieldsAllowedByAdd; @endphp
{{ permission_field_label($fieldName) }}
@if(isset($fieldActions['view'])) @endif @if(isset($fieldActions['edit'])) @endif
@endforeach
@endif
@endforeach
@endif @endforeach @else

No modules available.

@endif
@endsection @push('scripts') @endpush @stack('textareajs')