Skip to content

Commit a99feee

Browse files
pxpmtabacitu
andauthored
Fix page or link v6 (#78)
* fix page or link * fix disabling js error * only support Backpack v6 --------- Co-authored-by: Cristian Tăbăcitu <[email protected]>
1 parent f415585 commit a99feee

File tree

3 files changed

+36
-28
lines changed

3 files changed

+36
-28
lines changed

composer.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
"minimum-stability": "dev",
2020
"prefer-stable": true,
2121
"require": {
22-
"backpack/crud": "^5.0",
23-
"backpack/pagemanager": "^3.0|^2.0"
22+
"backpack/crud": "^6.0",
23+
"backpack/pagemanager": "^3.2"
2424
},
2525
"require-dev": {
2626
"phpunit/phpunit" : "^9.0||^7.0",

src/app/Http/Controllers/Admin/MenuItemCrudController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public function setup()
4949
'model' => "\Backpack\MenuCRUD\app\Models\MenuItem",
5050
]);
5151
$this->crud->addField([
52-
'name' => ['type', 'link', 'page_id'],
52+
'name' => 'type,link,page_id',
5353
'label' => 'Type',
5454
'type' => 'page_or_link',
5555
'page_model' => '\Backpack\PageManager\app\Models\Page',

src/resources/views/fields/page_or_link.blade.php

Lines changed: 33 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@
33

44
<?php
55
$field['allows_null'] = $field['allows_null'] ?? false;
6+
7+
[$type, $link, $page_id] = explode(',', $field['name']);
8+
$field['configurationNames'] = [];
69
7-
$field['name']['type'] = $field['name']['type'] ?? $field['name'][0] ?? 'type';
8-
$field['name']['link'] = $field['name']['link'] ?? $field['name'][1] ?? 'link';
9-
$field['name']['page_id'] = $field['name']['page_id'] ?? $field['name'][2] ?? 'page_id';
10-
10+
$field['configurationNames']['type'] = $type ?? 'type';
11+
$field['configurationNames']['link'] = $link ?? 'link';
12+
$field['configurationNames']['page_id'] = $page_id ?? 'page_id';
1113
$field['options']['page_link'] = $field['options']['page_link'] ?? trans('backpack::crud.page_link');
1214
$field['options']['internal_link'] = $field['options']['internal_link'] ?? trans('backpack::crud.internal_link');
1315
$field['options']['external_link'] = $field['options']['external_link'] ?? trans('backpack::crud.external_link');
@@ -21,14 +23,14 @@
2123

2224
<div class="row" data-init-function="bpFieldInitPageOrLinkElement">
2325
{{-- hidden placeholders for content --}}
24-
<input type="hidden" value="{{ $entry->{$field['name']['page_id']} ?? '' }}" name="{{ $field['name']['page_id'] }}" />
25-
<input type="hidden" value="{{ $entry->{$field['name']['link']} ?? '' }}" name="{{ $field['name']['link'] }}" />
26+
<input type="hidden" value="{{ $entry->{$field['configurationNames']['page_id']} ?? '' }}" name="{{ $field['configurationNames']['page_id'] }}" />
27+
<input type="hidden" value="{{ $entry->{$field['configurationNames']['link']} ?? '' }}" name="{{ $field['configurationNames']['link'] }}" />
2628

2729
<div class="col-sm-3">
2830
{{-- type select --}}
2931
<select
3032
data-identifier="page_or_link_select"
31-
name="{!! $field['name']['type'] !!}"
33+
name="{!! $field['configurationNames']['type'] !!}"
3234
@include('crud::fields.inc.attributes')
3335
>
3436

@@ -38,7 +40,7 @@
3840

3941
@foreach ($field['options'] as $key => $value)
4042
<option value="{{ $key }}"
41-
@if (isset($entry) && $key === $entry->{$field['name']['type']})
43+
@if (isset($entry) && $key === $entry->{$field['configurationNames']['type']})
4244
selected
4345
@endif
4446
>{{ $value }}</option>
@@ -47,15 +49,15 @@
4749
</div>
4850
<div class="col-sm-9">
4951
{{-- page slug input --}}
50-
<div class="page_or_link_value page_link {{ (isset($entry) && $entry->{$field['name']['type']} === 'page_link') || (isset($entry) && !$entry->{$field['name']['type']} && !$field['allows_null']) || (!isset($entry) && !$field['allows_null']) ? '' : 'd-none' }}">
52+
<div class="page_or_link_value page_link {{ (isset($entry) && $entry->{$field['configurationNames']['type']} === 'page_link') || (isset($entry) && !$entry->{$field['configurationNames']['type']} && !$field['allows_null']) || (!isset($entry) && !$field['allows_null']) ? '' : 'd-none' }}">
5153
<select
5254
class="form-control"
53-
for="{{ $field['name']['page_id'] }}"
55+
for="{{ $field['configurationNames']['page_id'] }}"
5456
required
5557
>
5658
@foreach ($field['pages'] as $page)
5759
<option value="{{ $page->id }}"
58-
@if (isset($entry) && $page->id === $entry->{$field['name']['page_id']})
60+
@if (isset($entry) && $page->id === $entry->{$field['configurationNames']['page_id']})
5961
selected
6062
@endif
6163
>{{ $page->name }}</option>
@@ -64,40 +66,46 @@ class="form-control"
6466
</div>
6567

6668
{{-- internal link input --}}
67-
<div class="page_or_link_value internal_link {{ isset($entry) && $entry->{$field['name']['type']} === 'internal_link' ? '' : 'd-none' }}">
69+
<div class="page_or_link_value internal_link {{ isset($entry) && $entry->{$field['configurationNames']['type']} === 'internal_link' ? '' : 'd-none' }}">
6870
<input
6971
type="text"
7072
class="form-control"
7173
placeholder="{{ trans('backpack::crud.internal_link_placeholder', ['url', url(config('backpack.base.route_prefix').'/page')]) }}"
72-
for="{{ $field['name']['link'] }}"
74+
for="{{ $field['configurationNames']['link'] }}"
7375
required
76+
@if(isset($entry))
77+
@if ($entry->{$field['configurationNames']['type']} !== 'internal_link' && $entry->{$field['configurationNames']['type']} !== 'page_link')
78+
disabled="disabled"
79+
@endif
7480

75-
@if (isset($entry) && $entry->{$field['name']['type']} !== 'internal_link')
81+
@if ($entry->{$field['configurationNames']['type']} === 'internal_link' && $entry->{$field['configurationNames']['link']})
82+
value="{{ $entry->{$field['configurationNames']['link']} }}"
83+
@endif
84+
@else
7685
disabled="disabled"
7786
@endif
78-
79-
@if (isset($entry) && $entry->{$field['name']['type']} === 'internal_link' && $entry->{$field['name']['link']})
80-
value="{{ $entry->{$field['name']['link']} }}"
81-
@endif
8287
>
8388
</div>
8489

8590
{{-- external link input --}}
86-
<div class="page_or_link_value external_link {{ isset($entry) && $entry->{$field['name']['type']} === 'external_link' ? '' : 'd-none' }}">
91+
<div class="page_or_link_value external_link {{ isset($entry) && $entry->{$field['configurationNames']['type']} === 'external_link' ? '' : 'd-none' }}">
8792
<input
8893
type="url"
8994
class="form-control"
9095
placeholder="{{ trans('backpack::crud.page_link_placeholder') }}"
91-
for="{{ $field['name']['link'] }}"
96+
for="{{ $field['configurationNames']['link'] }}"
9297
required
98+
@if(isset($entry))
99+
@if ($entry->{$field['configurationNames']['type']} !== 'external_link' && $entry->{$field['configurationNames']['type']} !== 'page_link')
100+
disabled="disabled"
101+
@endif
93102

94-
@if (isset($entry) && $entry->{$field['name']['type']} !== 'external_link')
103+
@if ($entry->{$field['configurationNames']['type']} === 'external_link' && $entry->{$field['configurationNames']['link']})
104+
value="{{ $entry->{$field['configurationNames']['link']} }}"
105+
@endif
106+
@else
95107
disabled="disabled"
96108
@endif
97-
98-
@if (isset($entry) && $entry->{$field['name']['type']} === 'external_link' && $entry->{$field['name']['link']})
99-
value="{{ $entry->{$field['name']['link']} }}"
100-
@endif
101109
>
102110
</div>
103111
</div>

0 commit comments

Comments
 (0)