Skip to content

Commit 3e8081e

Browse files
authored
Merge pull request #3033 from cklll/allow-multiple-page_or_link
Allow multiple page_or_link
2 parents ead693d + a7cf476 commit 3e8081e

File tree

1 file changed

+29
-27
lines changed

1 file changed

+29
-27
lines changed

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

Lines changed: 29 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@
1010
$field['allows_null'] = false;
1111
$page_model = $field['page_model'];
1212
$active_pages = $page_model::all();
13+
14+
$entry_link = $field['name']['link'] ?? 'link';
15+
$entry_type = $field['name']['type'] ?? 'type';
16+
$entry_page_id = $field['name']['page_id'] ?? 'page_id';
1317
?>
1418

1519
@include('crud::fields.inc.wrapper_start')
@@ -20,7 +24,7 @@
2024
<div class="col-sm-3">
2125
<select
2226
data-identifier="page_or_link_select"
23-
name="type"
27+
name="{!! $entry_type !!}"
2428
@include('crud::fields.inc.attributes')
2529
>
2630

@@ -31,7 +35,7 @@
3135
@if (count($field['options']))
3236
@foreach ($field['options'] as $key => $value)
3337
<option value="{{ $key }}"
34-
@if (isset($crud->entry) && $key==$crud->entry->type)
38+
@if (isset($entry) && $key==$entry->$entry_type)
3539
selected
3640
@endif
3741
>{{ $value }}</option>
@@ -41,57 +45,57 @@
4145
</div>
4246
<div class="col-sm-9">
4347
<!-- external link input -->
44-
<div class="page_or_link_value page_or_link_external_link <?php if (! isset($entry) || $entry->type != 'external_link') {
48+
<div class="page_or_link_value page_or_link_external_link <?php if (! isset($entry) || $entry->$entry_type != 'external_link') {
4549
echo 'd-none';
4650
} ?>">
4751
<input
4852
type="url"
4953
class="form-control"
50-
name="link"
54+
name="{!! $entry_link !!}"
5155
placeholder="{{ trans('backpack::crud.page_link_placeholder') }}"
5256

53-
@if (!isset($entry) || $entry->type!='external_link')
57+
@if (!isset($entry) || $entry->$entry_type !='external_link')
5458
disabled="disabled"
5559
@endif
5660

57-
@if (isset($entry) && $entry->type=='external_link' && isset($entry->link) && $entry->link!='')
58-
value="{{ $entry->link }}"
61+
@if (isset($entry) && $entry->$entry_type =='external_link' && isset($entry->$entry_link) && $entry->$entry_link!='')
62+
value="{{ $entry->$entry_link }}"
5963
@endif
6064
>
6165
</div>
6266
<!-- internal link input -->
63-
<div class="page_or_link_value page_or_link_internal_link <?php if (! isset($entry) || $entry->type != 'internal_link') {
67+
<div class="page_or_link_value page_or_link_internal_link <?php if (! isset($entry) || $entry->$entry_type != 'internal_link') {
6468
echo 'd-none';
6569
} ?>">
6670
<input
6771
type="text"
6872
class="form-control"
69-
name="link"
73+
name="{!! $entry_link !!}"
7074
placeholder="{{ trans('backpack::crud.internal_link_placeholder', ['url', url(config('backpack.base.route_prefix').'/page')]) }}"
7175

72-
@if (!isset($entry) || $entry->type!='internal_link')
76+
@if (!isset($entry) || $entry->$entry_type!='internal_link')
7377
disabled="disabled"
7478
@endif
7579

76-
@if (isset($entry) && $entry->type=='internal_link' && isset($entry->link) && $entry->link!='')
77-
value="{{ $entry->link }}"
80+
@if (isset($entry) && $entry->$entry_type=='internal_link' && isset($entry->$entry_link) && $entry->$entry_link!='')
81+
value="{{ $entry->$entry_link }}"
7882
@endif
7983
>
8084
</div>
8185
<!-- page slug input -->
82-
<div class="page_or_link_value page_or_link_page <?php if (isset($entry) && $entry->type != 'page_link') {
86+
<div class="page_or_link_value page_or_link_page <?php if (isset($entry) && $entry->$entry_type != 'page_link') {
8387
echo 'd-none';
8488
} ?>">
8589
<select
8690
class="form-control"
87-
name="page_id"
91+
name="{!! $entry_page_id !!}"
8892
>
8993
@if (!count($active_pages))
9094
<option value="">-</option>
9195
@else
9296
@foreach ($active_pages as $key => $page)
9397
<option value="{{ $page->id }}"
94-
@if (isset($entry) && isset($entry->page_id) && $page->id==$entry->page_id)
98+
@if (isset($entry) && isset($entry->$entry_page_id) && $page->id==$entry->$entry_page_id)
9599
selected
96100
@endif
97101
>{{ $page->name }}</option>
@@ -128,27 +132,25 @@ class="form-control"
128132
@push('crud_fields_scripts')
129133
<script>
130134
function bpFieldInitPageOrLinkElement(element) {
131-
$wrapper = element;
132-
133-
$wrapper.find('[data-identifier=page_or_link_select]').change(function(e) {
134-
$wrapper.find(".page_or_link_value input").attr('disabled', 'disabled');
135-
$wrapper.find(".page_or_link_value select").attr('disabled', 'disabled');
136-
$wrapper.find(".page_or_link_value").removeClass("d-none").addClass("d-none");
135+
element.find('[data-identifier=page_or_link_select]').change(function(e) {
136+
$(this).closest('.row').find(".page_or_link_value input").attr('disabled', 'disabled');
137+
$(this).closest('.row').find(".page_or_link_value select").attr('disabled', 'disabled');
138+
$(this).closest('.row').find(".page_or_link_value").removeClass("d-none").addClass("d-none");
137139
138140
switch($(this).val()) {
139141
case 'external_link':
140-
$wrapper.find(".page_or_link_external_link input").removeAttr('disabled');
141-
$wrapper.find(".page_or_link_external_link").removeClass('d-none');
142+
$(this).closest('.row').find(".page_or_link_external_link input").removeAttr('disabled');
143+
$(this).closest('.row').find(".page_or_link_external_link").removeClass('d-none');
142144
break;
143145
144146
case 'internal_link':
145-
$wrapper.find(".page_or_link_internal_link input").removeAttr('disabled');
146-
$wrapper.find(".page_or_link_internal_link").removeClass('d-none');
147+
$(this).closest('.row').find(".page_or_link_internal_link input").removeAttr('disabled');
148+
$(this).closest('.row').find(".page_or_link_internal_link").removeClass('d-none');
147149
break;
148150
149151
default: // page_link
150-
$wrapper.find(".page_or_link_page select").removeAttr('disabled');
151-
$wrapper.find(".page_or_link_page").removeClass('d-none');
152+
$(this).closest('.row').find(".page_or_link_page select").removeAttr('disabled');
153+
$(this).closest('.row').find(".page_or_link_page").removeClass('d-none');
152154
}
153155
});
154156
}

0 commit comments

Comments
 (0)