Skip to content

Commit 044ffb3

Browse files
authored
Merge pull request #3069 from Laravel-Backpack/filters-with-untouched-name
Removes the camelCasing of filter names -
2 parents 65eddc6 + c9c1c8c commit 044ffb3

File tree

12 files changed

+118
-119
lines changed

12 files changed

+118
-119
lines changed

src/app/Library/CrudPanel/CrudFilter.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ class CrudFilter
1010
{
1111
public $name; // the name of the filtered variable (db column name)
1212
public $type = 'select2'; // the name of the filter view that will be loaded
13+
public $key; //camelCased version of filter name to use in internal ids, js functions and css classes.
1314
public $label;
1415
public $placeholder;
1516
public $values;
@@ -23,9 +24,6 @@ class CrudFilter
2324

2425
public function __construct($options, $values, $logic, $fallbackLogic)
2526
{
26-
//make sure we use the camel cased version of name.
27-
$options['name'] = Str::camel($options['name']);
28-
2927
// if filter exists
3028
if ($this->crud()->hasFilterWhere('name', $options['name'])) {
3129
$properties = get_object_vars($this->crud()->firstFilterWhere('name', $options['name']));
@@ -35,6 +33,7 @@ public function __construct($options, $values, $logic, $fallbackLogic)
3533
} else {
3634
// it means we're creating the filter now,
3735
$this->name = $options['name'];
36+
$this->key = Str::camel($options['name']);
3837
$this->type = $options['type'] ?? $this->type;
3938
$this->label = $options['label'] ?? $this->crud()->makeLabel($this->name);
4039
$this->viewNamespace = $options['view_namespace'] ?? $this->viewNamespace;

src/app/Library/CrudPanel/Traits/Filters.php

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
use Backpack\CRUD\app\Library\CrudPanel\CrudFilter;
66
use Illuminate\Support\Collection;
7-
use Illuminate\Support\Str;
87
use Symfony\Component\HttpFoundation\ParameterBag;
98

109
trait Filters
@@ -75,10 +74,8 @@ protected function addFilterToCollection($options, $values = false, $filterLogic
7574
// check if another filter with the same name exists
7675
if (! isset($options['name'])) {
7776
abort(500, 'All your filters need names.');
78-
} else {
79-
// make sure we check against the converted camel name before adding.
80-
$options['name'] = Str::camel($options['name']);
8177
}
78+
8279
if ($this->filters()->contains('name', $options['name'])) {
8380
abort(500, "Sorry, you can't have two filters with the same name.");
8481
}

src/resources/views/crud/filters/date.blade.php

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{{-- Date Range Backpack CRUD filter --}}
2-
32
<li filter-name="{{ $filter->name }}"
4-
filter-type="{{ $filter->type }}"
3+
filter-type="{{ $filter->type }}"
4+
filter-key="{{ $filter->key }}"
55
class="nav-item dropdown {{ Request::get($filter->name)?'active':'' }}">
66
<a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">{{ $filter->label }} <span class="caret"></span></a>
77
<div class="dropdown-menu p-0">
@@ -11,13 +11,13 @@ class="nav-item dropdown {{ Request::get($filter->name)?'active':'' }}">
1111
<span class="input-group-text"><i class="la la-calendar"></i></span>
1212
</div>
1313
<input class="form-control pull-right"
14-
id="datepicker-{{ $filter->name }}"
14+
id="datepicker-{{ $filter->key }}"
1515
type="text"
1616
@if ($filter->currentValue)
1717
value="{{ $filter->currentValue }}"
1818
@endif
1919
>
20-
<div class="input-group-append datepicker-{{ $filter->name }}-clear-button">
20+
<div class="input-group-append datepicker-{{ $filter->key }}-clear-button">
2121
<a class="input-group-text" href=""><i class="la la-times"></i></a>
2222
</div>
2323
</div>
@@ -50,7 +50,7 @@ class="nav-item dropdown {{ Request::get($filter->name)?'active':'' }}">
5050
<script src="{{ asset('packages/bootstrap-datepicker/dist/js/bootstrap-datepicker.min.js') }}"></script>
5151
<script>
5252
jQuery(document).ready(function($) {
53-
var dateInput = $('#datepicker-{{ $filter->name }}').datepicker({
53+
var dateInput = $('#datepicker-{{ $filter->key }}').datepicker({
5454
autoclose: true,
5555
format: 'yyyy-mm-dd',
5656
todayHighlight: true
@@ -65,8 +65,6 @@ class="nav-item dropdown {{ Request::get($filter->name)?'active':'' }}">
6565
var value = d.getFullYear() + "-" + ("0"+(d.getMonth()+1)).slice(-2) + "-" + ("0" + d.getDate()).slice(-2);
6666
}
6767
68-
// console.log(value);
69-
7068
var parameter = '{{ $filter->name }}';
7169
7270
// behaviour for ajax table
@@ -83,22 +81,22 @@ class="nav-item dropdown {{ Request::get($filter->name)?'active':'' }}">
8381
8482
// mark this filter as active in the navbar-filters
8583
if (URI(new_url).hasQuery('{{ $filter->name }}', true)) {
86-
$('li[filter-name={{ $filter->name }}]').removeClass('active').addClass('active');
84+
$('li[filter-key={{ $filter->key }}]').removeClass('active').addClass('active');
8785
}
8886
});
8987
90-
$('li[filter-name={{ $filter->name }}]').on('filter:clear', function(e) {
88+
$('li[filter-key={{ $filter->key }}]').on('filter:clear', function(e) {
9189
// console.log('date filter cleared');
92-
$('li[filter-name={{ $filter->name }}]').removeClass('active');
93-
$('#datepicker-{{ $filter->name }}').datepicker('update', '');
94-
$('#datepicker-{{ $filter->name }}').trigger('changeDate');
90+
$('li[filter-key={{ $filter->key }}]').removeClass('active');
91+
$('#datepicker-{{ $filter->key }}').datepicker('update', '');
92+
$('#datepicker-{{ $filter->key }}').trigger('changeDate');
9593
});
9694
9795
// datepicker clear button
98-
$(".datepicker-{{ $filter->name }}-clear-button").click(function(e) {
96+
$(".datepicker-{{ $filter->key }}-clear-button").click(function(e) {
9997
e.preventDefault();
10098
101-
$('li[filter-name={{ $filter->name }}]').trigger('filter:clear');
99+
$('li[filter-key={{ $filter->key }}]').trigger('filter:clear');
102100
})
103101
});
104102
</script>

src/resources/views/crud/filters/date_range.blade.php

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{{-- Date Range Backpack CRUD filter --}}
2-
32
<li filter-name="{{ $filter->name }}"
4-
filter-type="{{ $filter->type }}"
3+
filter-type="{{ $filter->type }}"
4+
filter-key="{{ $filter->key }}"
55
class="nav-item dropdown {{ Request::get($filter->name)?'active':'' }}">
66
<a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">{{ $filter->label }} <span class="caret"></span></a>
77
<div class="dropdown-menu p-0">
@@ -11,7 +11,7 @@ class="nav-item dropdown {{ Request::get($filter->name)?'active':'' }}">
1111
<span class="input-group-text"><i class="la la-calendar"></i></span>
1212
</div>
1313
<input class="form-control pull-right"
14-
id="daterangepicker-{{ $filter->name }}"
14+
id="daterangepicker-{{ $filter->key }}"
1515
type="text"
1616
@if ($filter->currentValue)
1717
@php
@@ -26,7 +26,7 @@ class="nav-item dropdown {{ Request::get($filter->name)?'active':'' }}">
2626
placeholder="{{ $date_range }}"
2727
@endif
2828
>
29-
<div class="input-group-append daterangepicker-{{ $filter->name }}-clear-button">
29+
<div class="input-group-append daterangepicker-{{ $filter->key }}-clear-button">
3030
<a class="input-group-text" href=""><i class="la la-times"></i></a>
3131
</div>
3232
</div>
@@ -62,7 +62,7 @@ class="nav-item dropdown {{ Request::get($filter->name)?'active':'' }}">
6262
<script type="text/javascript" src="{{ asset('packages/bootstrap-daterangepicker/daterangepicker.js') }}"></script>
6363
<script>
6464
65-
function applyDateRangeFilter{{$filter->name}}(start, end) {
65+
function applyDateRangeFilter{{$filter->key}}(start, end) {
6666
if (start && end) {
6767
var dates = {
6868
'from': start.format('YYYY-MM-DD'),
@@ -89,16 +89,16 @@ function applyDateRangeFilter{{$filter->name}}(start, end) {
8989
9090
// mark this filter as active in the navbar-filters
9191
if (URI(new_url).hasQuery('{{ $filter->name }}', true)) {
92-
$('li[filter-name={{ $filter->name }}]').removeClass('active').addClass('active');
92+
$('li[filter-key={{ $filter->key }}]').removeClass('active').addClass('active');
9393
}
9494
else
9595
{
96-
$('li[filter-name={{ $filter->name }}]').trigger('filter:clear');
96+
$('li[filter-key={{ $filter->key }}]').trigger('filter:clear');
9797
}
9898
}
9999
100100
jQuery(document).ready(function($) {
101-
var dateRangeInput = $('#daterangepicker-{{ $filter->name }}').daterangepicker({
101+
var dateRangeInput = $('#daterangepicker-{{ $filter->key }}').daterangepicker({
102102
timePicker: false,
103103
ranges: {
104104
'Today': [moment().startOf('day'), moment().endOf('day')],
@@ -117,24 +117,24 @@ function applyDateRangeFilter{{$filter->name}}(start, end) {
117117
});
118118
119119
dateRangeInput.on('apply.daterangepicker', function(ev, picker) {
120-
applyDateRangeFilter{{$filter->name}}(picker.startDate, picker.endDate);
120+
applyDateRangeFilter{{$filter->key}}(picker.startDate, picker.endDate);
121121
});
122122
123-
$('li[filter-name={{ $filter->name }}]').on('hide.bs.dropdown', function () {
123+
$('li[filter-key={{ $filter->key }}]').on('hide.bs.dropdown', function () {
124124
if($('.daterangepicker').is(':visible'))
125125
return false;
126126
});
127127
128-
$('li[filter-name={{ $filter->name }}]').on('filter:clear', function(e) {
128+
$('li[filter-key={{ $filter->key }}]').on('filter:clear', function(e) {
129129
// console.log('daterangepicker filter cleared');
130130
//if triggered by remove filters click just remove active class,no need to send ajax
131-
$('li[filter-name={{ $filter->name }}]').removeClass('active');
131+
$('li[filter-key={{ $filter->key }}]').removeClass('active');
132132
});
133133
134134
// datepicker clear button
135-
$(".daterangepicker-{{ $filter->name }}-clear-button").click(function(e) {
135+
$(".daterangepicker-{{ $filter->key }}-clear-button").click(function(e) {
136136
e.preventDefault();
137-
applyDateRangeFilter{{$filter->name}}(null, null);
137+
applyDateRangeFilter{{$filter->key}}(null, null);
138138
})
139139
});
140140
</script>

src/resources/views/crud/filters/dropdown.blade.php

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{{-- Dropdown Backpack CRUD filter --}}
2-
32
<li filter-name="{{ $filter->name }}"
4-
filter-type="{{ $filter->type }}"
3+
filter-type="{{ $filter->type }}"
4+
filter-key="{{ $filter->key }}"
55
class="nav-item dropdown {{ Request::get($filter->name)?'active':'' }}">
66
<a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">{{ $filter->label }} <span class="caret"></span></a>
77
<ul class="dropdown-menu">
@@ -41,7 +41,7 @@ class="nav-item dropdown {{ Request::get($filter->name)?'active':'' }}">
4141
@push('crud_list_scripts')
4242
<script>
4343
jQuery(document).ready(function($) {
44-
$("li.dropdown[filter-name={{ $filter->name }}] .dropdown-menu a").click(function(e) {
44+
$("li.dropdown[filter-key={{ $filter->key }}] .dropdown-menu a").click(function(e) {
4545
e.preventDefault();
4646
4747
var value = $(this).attr('dropdownkey');
@@ -62,21 +62,21 @@ class="nav-item dropdown {{ Request::get($filter->name)?'active':'' }}">
6262
// mark this filter as active in the navbar-filters
6363
// mark dropdown items active accordingly
6464
if (URI(new_url).hasQuery('{{ $filter->name }}', true)) {
65-
$("li[filter-name={{ $filter->name }}]").removeClass('active').addClass('active');
66-
$("li[filter-name={{ $filter->name }}] .dropdown-menu a").removeClass('active');
65+
$("li[filter-key={{ $filter->key }}]").removeClass('active').addClass('active');
66+
$("li[filter-key={{ $filter->key }}] .dropdown-menu a").removeClass('active');
6767
$(this).addClass('active');
6868
}
6969
else
7070
{
71-
$("li[filter-name={{ $filter->name }}]").trigger("filter:clear");
71+
$("li[filter-key={{ $filter->key }}]").trigger("filter:clear");
7272
}
7373
});
7474
7575
// clear filter event (used here and by the Remove all filters button)
76-
$("li[filter-name={{ $filter->name }}]").on('filter:clear', function(e) {
76+
$("li[filter-key={{ $filter->key }}]").on('filter:clear', function(e) {
7777
// console.log('dropdown filter cleared');
78-
$("li[filter-name={{ $filter->name }}]").removeClass('active');
79-
$("li[filter-name={{ $filter->name }}] .dropdown-menu a").removeClass('active');
78+
$("li[filter-key={{ $filter->key }}]").removeClass('active');
79+
$("li[filter-key={{ $filter->key }}] .dropdown-menu a").removeClass('active');
8080
});
8181
});
8282
</script>

src/resources/views/crud/filters/example.blade.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{{-- Example Backpack CRUD filter --}}
2-
32
<li filter-name="{{ $filter->name }}"
4-
filter-type="{{ $filter->type }}"
3+
filter-type="{{ $filter->type }}"
4+
filter-key="{{ $filter->key }}"
55
class="nav-item dropdown {{ Request::get($filter->name)?'active':'' }}">
66
<a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">{{ $filter->label }} <span class="caret"></span></a>
77
<div class="dropdown-menu padding-10">
@@ -64,18 +64,18 @@ class="nav-item dropdown {{ Request::get($filter->name)?'active':'' }}">
6464
6565
// mark this filter as active in the navbar-filters
6666
if (URI(new_url).hasQuery('{{ $filter->name }}', true)) {
67-
$("li[filter-name={{ $filter->name }}]").removeClass('active').addClass('active');
67+
$("li[filter-key={{ $filter->key }}]").removeClass('active').addClass('active');
6868
}
6969
else
7070
{
71-
$("li[filter-name={{ $filter->name }}]").trigger("filter:clear");
71+
$("li[filter-key={{ $filter->key }}]").trigger("filter:clear");
7272
}
7373
});
7474
7575
// clear filter event (used here and by the Remove all filters button)
76-
$("li[filter-name={{ $filter->name }}]").on('filter:clear', function(e) {
76+
$("li[filter-key={{ $filter->key }}]").on('filter:clear', function(e) {
7777
// console.log('dropdown filter cleared');
78-
$("li[filter-name={{ $filter->name }}]").removeClass('active');
78+
$("li[filter-key={{ $filter->key }}]").removeClass('active');
7979
});
8080
});
8181
</script>

src/resources/views/crud/filters/range.blade.php

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{{-- Example Backpack CRUD filter --}}
22
<li filter-name="{{ $filter->name }}"
3-
filter-type="{{ $filter->type }}"
3+
filter-type="{{ $filter->type }}"
4+
filter-key="{{ $filter->key }}"
45
class="nav-item dropdown {{ Request::get($filter->name)?'active':'' }}">
56
<a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">{{ $filter->label }} <span class="caret"></span></a>
67
<div class="dropdown-menu p-0">
@@ -38,7 +39,7 @@ class="nav-item dropdown {{ Request::get($filter->name)?'active':'' }}">
3839
placeholder = "max value"
3940
@endif
4041
>
41-
<div class="input-group-append range-filter-{{ $filter->name }}-clear-button">
42+
<div class="input-group-append range-filter-{{ $filter->key }}-clear-button">
4243
<a class="input-group-text" href=""><i class="la la-times"></i></a>
4344
</div>
4445
</div>
@@ -74,10 +75,10 @@ class="nav-item dropdown {{ Request::get($filter->name)?'active':'' }}">
7475
@push('crud_list_scripts')
7576
<script>
7677
jQuery(document).ready(function($) {
77-
$("li[filter-name={{ $filter->name }}] .from, li[filter-name={{ $filter->name }}] .to").change(function(e) {
78+
$("li[filter-key={{ $filter->key }}] .from, li[filter-key={{ $filter->key }}] .to").change(function(e) {
7879
e.preventDefault();
79-
var from = $("li[filter-name={{ $filter->name }}] .from").val();
80-
var to = $("li[filter-name={{ $filter->name }}] .to").val();
80+
var from = $("li[filter-key={{ $filter->key }}] .from").val();
81+
var to = $("li[filter-key={{ $filter->key }}] .to").val();
8182
if (from || to) {
8283
var range = {
8384
'from': from,
@@ -104,22 +105,22 @@ class="nav-item dropdown {{ Request::get($filter->name)?'active':'' }}">
104105
105106
// mark this filter as active in the navbar-filters
106107
if (URI(new_url).hasQuery('{{ $filter->name }}', true)) {
107-
$('li[filter-name={{ $filter->name }}]').removeClass('active').addClass('active');
108+
$('li[filter-key={{ $filter->key }}]').removeClass('active').addClass('active');
108109
}
109110
});
110111
111-
$('li[filter-name={{ $filter->name }}]').on('filter:clear', function(e) {
112-
$('li[filter-name={{ $filter->name }}]').removeClass('active');
113-
$("li[filter-name={{ $filter->name }}] .from").val("");
114-
$("li[filter-name={{ $filter->name }}] .to").val("");
115-
$("li[filter-name={{ $filter->name }}] .to").trigger('change');
112+
$('li[filter-key={{ $filter->key }}]').on('filter:clear', function(e) {
113+
$('li[filter-key={{ $filter->key }}]').removeClass('active');
114+
$("li[filter-key={{ $filter->key }}] .from").val("");
115+
$("li[filter-key={{ $filter->key }}] .to").val("");
116+
$("li[filter-key={{ $filter->key }}] .to").trigger('change');
116117
});
117118
118119
// range clear button
119-
$(".range-filter-{{ $filter->name }}-clear-button").click(function(e) {
120+
$(".range-filter-{{ $filter->key }}-clear-button").click(function(e) {
120121
e.preventDefault();
121122
122-
$('li[filter-name={{ $filter->name }}]').trigger('filter:clear');
123+
$('li[filter-name={{ $filter->key }}]').trigger('filter:clear');
123124
})
124125
125126
});

0 commit comments

Comments
 (0)