From a6f898ef02d45bc6909456abadb6b619de1240b4 Mon Sep 17 00:00:00 2001 From: izica Date: Mon, 6 Dec 2021 22:39:37 +0700 Subject: [PATCH] fix --- README.md | 4 +- .../views/widgets/relation_panel.blade.php | 318 ++++-------------- .../views/widgets/relation_table.blade.php | 28 +- 3 files changed, 86 insertions(+), 264 deletions(-) diff --git a/README.md b/README.md index dee7fe1..43489dd 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -## Laravel Backpack Relations Widgets +sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder## Laravel Backpack Relations Widgets 1. [Installation](#installation) 2. [Screenshots](#screenshots) 3. [Features](#features) @@ -57,7 +57,7 @@ composer require izica/relations-widgets-for-backpack * `button_edit` (optional) - set `false` to hide * `button_delete` (optional) - set `false` to hide * `visible` (optional) - `closure` for hiding or showing panel - * `fields` (optional) - columns `array`, by default get columns from `fillable` in model + * `columns` (optional) - columns `array`, by default get columns from `fillable` in model * `name` - name * `label` - for field * `closure` - use `closure` instead of name field for passing value, diff --git a/src/resources/views/widgets/relation_panel.blade.php b/src/resources/views/widgets/relation_panel.blade.php index 3e699fc..ce60e59 100644 --- a/src/resources/views/widgets/relation_panel.blade.php +++ b/src/resources/views/widgets/relation_panel.blade.php @@ -1,279 +1,91 @@ @php - if(!isset($entry)){ + $entry_relation = data_get($entry, $widget['name']); + if(!isset($entry) || $entry_relation === null){ return; } if(isset($widget['visible']) && is_callable($widget['visible'])){ - if(!$widget['visible']($entry)){ + if(!$widget['visible']($entry_relation)){ return; } } - - $searchName = "{$widget['name']}_search"; - $paginationName = "{$widget['name']}_page"; - $widgetId = "relation-table-{$widget['name']}"; - - if (!isset($widget['buttons']) || $widget['buttons'] !== false) { - $widget['buttons'] = true; - } - if (!isset($widget['button_create']) || $widget['button_create'] !== false) { - $widget['button_create'] = true; + if(!isset($widget['fields'])){ + $widget['fields'] = []; + foreach ($entry_relation->getFillable() as $propertyName){ + $widget['fields'][] = [ + 'label' => $crud->makeLabel($propertyName), + 'name' => $propertyName, + ]; + } } - if (!isset($widget['button_show']) || $widget['button_show'] !== false) { + + if (!isset($widget['button_show']) || $widget['button_show'] !== false) { $widget['button_show'] = true; } + if (!isset($widget['button_edit']) || $widget['button_edit'] !== false) { $widget['button_edit'] = true; } - if (!isset($widget['button_delete']) || $widget['button_delete'] !== false) { - $widget['button_delete'] = true; - } - if (!isset($widget['search']) || !is_callable($widget['search'])) { - $widget['search'] = false; - } - if (!isset($widget['per_page'])) { - $widget['per_page'] = null; - } - if(!isset($widget['columns'])){ - $widget['columns'] = []; - - try { - $item = get_class($entry->{$widget['name']}()->getRelated()); - $item = new $item(); - $widget['columns'] = []; - foreach ($item->getFillable() as $property){ - $widget['columns'][] = [ - 'label' => $crud->makeLabel($property), - 'name' => $property, - ]; - } - } catch (Exception $e){} - } - if(!isset($widget['columns']) && !isset($widget['model'])){ - $widget['columns'] = []; + if (!isset($widget['buttons']) || $widget['buttons'] !== false) { + $widget['buttons'] = true; } - $createUrl = backpack_url($widget['backpack_crud'] . "/create"); - if (isset($widget['relation_attribute'])) { - $createUrl .= "?{$widget['relation_attribute']}={$entry->id}"; - } - $query = $entry->{$widget['name']}(); - if(is_callable($widget['search']) && isset($_GET[$searchName])){ - $query = $widget['search']($query, $_GET[$searchName]); - } - if($widget['per_page']) { - $items = $query->paginate($widget['per_page'], ['*'], $paginationName)->fragment($widgetId); - } else { - $items = $query->get(); - } @endphp -
-
-
-
-
{{$widget['label']}}
- @if ($widget['button_create'] === true) - - {{ trans('backpack::crud.add') }} - - @endif -
-
- @if ($widget['search'] !== false) -
- -
- @endif -
- - - - @foreach($widget['columns'] as $column) - - @endforeach - @if($widget['buttons'] === true) - - @endif - - - - @foreach($items as $item) - - @foreach($widget['columns'] as $column) + +
+
+
{{$widget['label']}}
+
+
{{$column['label']}}{{ trans('backpack::crud.actions') }}
+ + @foreach($widget['fields'] as $field) @php + if(isset($field['visible']) && is_callable($field['visible'])){ + if(!$field['visible']($entry_relation)){ + continue; + } + } $value = ''; - if(isset($column['closure'])){ - $value = $column['closure']($item); + if(isset($field['closure'])){ + $value = $field['closure']($entry_relation); } - if(isset($column['name'])){ - $value = data_get($item, $column['name']); + if(isset($field['name'])){ + $value = data_get($entry_relation, $field['name']); } @endphp - + + + + @endforeach - @if($widget['buttons'] === true) - + @if($widget['buttons']) + + + + @endif - - @endforeach - - - - @foreach($widget['columns'] as $column) - - @endforeach - @if($widget['buttons'] === true) - - @endif - - -
- {!!$value!!} -
+ {{$field['label'] ?? ''}}: + + {!!$value ?? ''!!} +
- @if ($widget['button_show'] === true) - id . "/show") }}" - class="btn btn-sm btn-link"> - {{ trans('backpack::crud.preview') }} - - @endif - @if ($widget['button_edit'] === true) - id . "/edit") }}" - class="btn btn-sm btn-link"> - {{ trans('backpack::crud.edit') }} - - @endif - @if ($widget['button_delete'] === true) - id) }}" - class="btn btn-sm btn-link" data-button-type="delete"> - {{ trans('backpack::crud.delete') }} - - @endif -
+ {{ trans('backpack::crud.actions') }} + + @if ($widget['button_show'] === true) + id . "/show") }}" + class="btn btn-sm btn-link"> + {{ trans('backpack::crud.preview') }} + + @endif + @if ($widget['button_edit'] === true) + id . "/edit") }}" + class="btn btn-sm btn-link"> + {{ trans('backpack::crud.edit') }} + + @endif +
{{$column['label']}}{{ trans('backpack::crud.actions') }}
- @if ($widget['per_page']) - {{$items->links('backpack::rwfb-pagination')}} - @endif + + +
+ - -@push('after_scripts') @if (request()->ajax()) @endpush @endif - -@if (!request()->ajax()) @endpush @endif diff --git a/src/resources/views/widgets/relation_table.blade.php b/src/resources/views/widgets/relation_table.blade.php index a4c4669..3e699fc 100644 --- a/src/resources/views/widgets/relation_table.blade.php +++ b/src/resources/views/widgets/relation_table.blade.php @@ -8,7 +8,8 @@ } } - $searchName = "{$widget['name']}-search"; + $searchName = "{$widget['name']}_search"; + $paginationName = "{$widget['name']}_page"; $widgetId = "relation-table-{$widget['name']}"; if (!isset($widget['buttons']) || $widget['buttons'] !== false) { @@ -26,6 +27,12 @@ if (!isset($widget['button_delete']) || $widget['button_delete'] !== false) { $widget['button_delete'] = true; } + if (!isset($widget['search']) || !is_callable($widget['search'])) { + $widget['search'] = false; + } + if (!isset($widget['per_page'])) { + $widget['per_page'] = null; + } if(!isset($widget['columns'])){ $widget['columns'] = []; @@ -47,21 +54,21 @@ } $createUrl = backpack_url($widget['backpack_crud'] . "/create"); - if (isset($widget['relation_column'])) { - $createUrl .= "?{$widget['relation_column']}={$entry->id}"; - } - - if (!isset($widget['search']) || !is_callable($widget['search'])) { - $widget['search'] = false; + if (isset($widget['relation_attribute'])) { + $createUrl .= "?{$widget['relation_attribute']}={$entry->id}"; } $query = $entry->{$widget['name']}(); if(is_callable($widget['search']) && isset($_GET[$searchName])){ $query = $widget['search']($query, $_GET[$searchName]); } - $items = $query->get(); + if($widget['per_page']) { + $items = $query->paginate($widget['per_page'], ['*'], $paginationName)->fragment($widgetId); + } else { + $items = $query->get(); + } @endphp -
+
@@ -166,6 +173,9 @@ class="btn btn-sm btn-link" data-button-type="delete"> + @if ($widget['per_page']) + {{$items->links('backpack::rwfb-pagination')}} + @endif
@push('after_scripts') @if (request()->ajax()) @endpush @endif