|
10 | 10 | $field['allows_null'] = false; |
11 | 11 | $page_model = $field['page_model']; |
12 | 12 | $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'; |
13 | 17 | ?> |
14 | 18 |
|
15 | 19 | @include('crud::fields.inc.wrapper_start') |
|
20 | 24 | <div class="col-sm-3"> |
21 | 25 | <select |
22 | 26 | data-identifier="page_or_link_select" |
23 | | - name="type" |
| 27 | + name="{!! $entry_type !!}" |
24 | 28 | @include('crud::fields.inc.attributes') |
25 | 29 | > |
26 | 30 |
|
|
31 | 35 | @if (count($field['options'])) |
32 | 36 | @foreach ($field['options'] as $key => $value) |
33 | 37 | <option value="{{ $key }}" |
34 | | - @if (isset($crud->entry) && $key==$crud->entry->type) |
| 38 | + @if (isset($entry) && $key==$entry->$entry_type) |
35 | 39 | selected |
36 | 40 | @endif |
37 | 41 | >{{ $value }}</option> |
|
41 | 45 | </div> |
42 | 46 | <div class="col-sm-9"> |
43 | 47 | <!-- 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') { |
45 | 49 | echo 'd-none'; |
46 | 50 | } ?>"> |
47 | 51 | <input |
48 | 52 | type="url" |
49 | 53 | class="form-control" |
50 | | - name="link" |
| 54 | + name="{!! $entry_link !!}" |
51 | 55 | placeholder="{{ trans('backpack::crud.page_link_placeholder') }}" |
52 | 56 |
|
53 | | - @if (!isset($entry) || $entry->type!='external_link') |
| 57 | + @if (!isset($entry) || $entry->$entry_type !='external_link') |
54 | 58 | disabled="disabled" |
55 | 59 | @endif |
56 | 60 |
|
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 }}" |
59 | 63 | @endif |
60 | 64 | > |
61 | 65 | </div> |
62 | 66 | <!-- 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') { |
64 | 68 | echo 'd-none'; |
65 | 69 | } ?>"> |
66 | 70 | <input |
67 | 71 | type="text" |
68 | 72 | class="form-control" |
69 | | - name="link" |
| 73 | + name="{!! $entry_link !!}" |
70 | 74 | placeholder="{{ trans('backpack::crud.internal_link_placeholder', ['url', url(config('backpack.base.route_prefix').'/page')]) }}" |
71 | 75 |
|
72 | | - @if (!isset($entry) || $entry->type!='internal_link') |
| 76 | + @if (!isset($entry) || $entry->$entry_type!='internal_link') |
73 | 77 | disabled="disabled" |
74 | 78 | @endif |
75 | 79 |
|
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 }}" |
78 | 82 | @endif |
79 | 83 | > |
80 | 84 | </div> |
81 | 85 | <!-- 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') { |
83 | 87 | echo 'd-none'; |
84 | 88 | } ?>"> |
85 | 89 | <select |
86 | 90 | class="form-control" |
87 | | - name="page_id" |
| 91 | + name="{!! $entry_page_id !!}" |
88 | 92 | > |
89 | 93 | @if (!count($active_pages)) |
90 | 94 | <option value="">-</option> |
91 | 95 | @else |
92 | 96 | @foreach ($active_pages as $key => $page) |
93 | 97 | <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) |
95 | 99 | selected |
96 | 100 | @endif |
97 | 101 | >{{ $page->name }}</option> |
@@ -128,27 +132,25 @@ class="form-control" |
128 | 132 | @push('crud_fields_scripts') |
129 | 133 | <script> |
130 | 134 | 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"); |
137 | 139 |
|
138 | 140 | switch($(this).val()) { |
139 | 141 | 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'); |
142 | 144 | break; |
143 | 145 |
|
144 | 146 | 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'); |
147 | 149 | break; |
148 | 150 |
|
149 | 151 | 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'); |
152 | 154 | } |
153 | 155 | }); |
154 | 156 | } |
|
0 commit comments