Skip to content

Commit cd25253

Browse files
committed
Search by URL params of numeric fields only
1 parent a50881c commit cd25253

5 files changed

Lines changed: 70 additions & 24 deletions

File tree

src/Controllers/TicketsController.php

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -765,13 +765,53 @@ protected function getCacheList($list)
765765
*
766766
* @return Response
767767
*/
768-
public function search_form()
768+
public function search_form($parameters = null)
769769
{
770770
// Forget last search
771771
session()->forget('search_fields');
772772

773773
$data = $this->search_form_defaults();
774774

775+
// If there are search parameters
776+
if (!is_null($parameters)){
777+
// Array of the parameters we allow to use via URL
778+
$a_valid_params = array_merge($this->a_search_fields_numeric, ['department_id', 'list', 'tags']);
779+
780+
$a_temp = explode('/', $parameters);
781+
$a_parameters = [];
782+
783+
if (count($a_temp) % 2 == 0){
784+
$key = "";
785+
foreach($a_temp as $param){
786+
if ($key == ""){
787+
$key = $param;
788+
789+
}else{
790+
if (in_array($key, $a_valid_params)){
791+
// Add param value pair into search_fields array
792+
$search_fields[$key] = $param;
793+
}
794+
795+
// key reset to look for a new parameter
796+
$key = "";
797+
}
798+
}
799+
}
800+
801+
if (isset($search_fields['category_id']) and isset($search_fields['tags'])){
802+
// Add tag id's to the array
803+
$search_fields['tags'] = explode(',', $search_fields['tags']);
804+
}
805+
}
806+
807+
if (isset($search_fields)){
808+
// Store search fields in session to use in datatable
809+
session(compact('search_fields'));
810+
811+
// Pass search fields array to the view
812+
$data['search_fields'] = $search_fields;
813+
}
814+
775815
$data['ticketList'] = 'search';
776816

777817
return view('panichd::tickets.search', $data);

src/Views/tickets/search.blade.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
@section('content')
1111
@include('panichd::tickets.search.form')
12-
<div id="search_results" class="card bg-light" style="display: none">
12+
<div id="search_results" class="card bg-light" @if(!isset($search_fields)) style="display: none" @endif>
1313
<div class="card-body">
1414
<h5 class="card-title mb-4">{{ trans('panichd::lang.searchform-results-title') }}
1515
<button type="button" id="edit_search" class="btn btn-default btn-sm ml-4">{{ trans('panichd::lang.searchform-btn-edit') }}</button>
@@ -25,6 +25,6 @@
2525
@include('panichd::tickets.datatable.loader')
2626
@include('panichd::tickets.datatable.events')
2727
@include('panichd::tickets.partials.form_scripts')
28-
@include('panichd::tickets.search.scripts')
29-
@include('panichd::tickets.partials.tags_footer_script')
28+
@include('panichd::tickets.partials.tags_footer_script')
29+
@include('panichd::tickets.search.scripts')
3030
@append

src/Views/tickets/search/form.blade.php

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<div id="search_form" class="card bg-light mb-2"><div class="card-body">
1+
<div id="search_form" class="card bg-light mb-2" @if(isset($search_fields)) style="display: none" @endif><div class="card-body">
22
{!! CollectiveForm::open(['route'=> $setting->grab('main_route').'.search.register', 'method' => 'POST']) !!}
33

44
<legend>{{ trans('panichd::lang.searchform-title') }}</legend>
@@ -19,13 +19,13 @@
1919
<div class="col-lg-9">
2020
<select name="creator_id" class="generate_default_select2 form-control" style="display: none; width: 100%">
2121
<option value="">{{ trans('panichd::lang.searchform-creator-none') }}</option>
22-
@foreach ($c_members as $owner)
23-
<option value="{{ $owner->id }}">{{ $owner->name . ($owner->email == "" ? ' ' . trans('panichd::lang.ticket-owner-no-email') : ' - ' . $owner->email) }}
22+
@foreach ($c_members as $member)
23+
<option value="{{ $member->id }}" @if(isset($search_fields['creator_id']) && $search_fields['creator_id'] == $member->id) selected="selected" @endif>{{ $member->name . ($member->email == "" ? ' ' . trans('panichd::lang.ticket-owner-no-email') : ' - ' . $member->email) }}
2424
@if ($setting->grab('departments_notices_feature'))
25-
@if ($owner->ticketit_department == '0')
25+
@if ($member->ticketit_department == '0')
2626
{{ ' - ' . trans('panichd::lang.create-ticket-notices') . ' ' . trans('panichd::lang.all-depts')}}
27-
@elseif ($owner->ticketit_department != "")
28-
{{ ' - ' . trans('panichd::lang.create-ticket-notices') . ' ' . $owner->userDepartment->getFullName() }}
27+
@elseif ($member->ticketit_department != "")
28+
{{ ' - ' . trans('panichd::lang.create-ticket-notices') . ' ' . $member->userDepartment->getFullName() }}
2929
@endif
3030
@endif
3131
</option>
@@ -41,7 +41,7 @@
4141
<select name="user_id" class="generate_default_select2 form-control" style="display: none; width: 100%">
4242
<option value="">{{ trans('panichd::lang.searchform-owner-none') }}</option>
4343
@foreach ($c_members as $owner)
44-
<option value="{{ $owner->id }}">{{ $owner->name . ($owner->email == "" ? ' ' . trans('panichd::lang.ticket-owner-no-email') : ' - ' . $owner->email) }}
44+
<option value="{{ $owner->id }}" @if(isset($search_fields['user_id']) && $search_fields['user_id'] == $owner->id) selected="selected" @endif>{{ $owner->name . ($owner->email == "" ? ' ' . trans('panichd::lang.ticket-owner-no-email') : ' - ' . $owner->email) }}
4545
@if ($setting->grab('departments_notices_feature'))
4646
@if ($owner->ticketit_department == '0')
4747
{{ ' - ' . trans('panichd::lang.create-ticket-notices') . ' ' . trans('panichd::lang.all-depts')}}
@@ -62,9 +62,9 @@
6262
<select name="department_id" class="generate_default_select2 form-control" style="display: none; width: 100%">
6363
<option value="">{{ trans('panichd::lang.searchform-department-none') }}</option>
6464
@foreach ($c_departments as $dep)
65-
<option value="{{ $dep->id }}">{{ $dep->name }}</option>
65+
<option value="{{ $dep->id }}" @if(isset($search_fields['department_id']) && $search_fields['department_id'] == $dep->id) selected="selected" @endif>{{ $dep->name }}</option>
6666
@foreach($dep->descendants as $descendant)
67-
<option value="{{ $descendant->id }}">&nbsp;&nbsp;&nbsp;&nbsp;{{ $descendant->getFullName() }}</option>
67+
<option value="{{ $descendant->id }}" @if(isset($search_fields['department_id']) && $search_fields['department_id'] == $descendant->id) selected="selected" @endif>&nbsp;&nbsp;&nbsp;&nbsp;{{ $descendant->getFullName() }}</option>
6868
@endforeach
6969
@endforeach
7070
</select>
@@ -82,13 +82,13 @@
8282
<div class="col-lg-9">
8383
<div class="form-check form-check-inline">
8484
<label class="form-check-label">
85-
<input type="radio" class="jquery_ticket_list form-check-input" name="list" value="" checked="checked">{{ trans('panichd::lang.searchform-list-none') }}
85+
<input type="radio" class="jquery_ticket_list form-check-input" name="list" value="" @if(!isset($search_fields['list'])) checked="checked" @endif>{{ trans('panichd::lang.searchform-list-none') }}
8686
</label>
8787
</div>
8888
@foreach (['newest', 'active', 'complete'] as $list)
8989
<div class="form-check form-check-inline">
9090
<label class="form-check-label">
91-
<input type="radio" class="jquery_ticket_list form-check-input" name="list" value="{{ $list }}">{{ trans('panichd::lang.' . $list . '-tickets-adjective') }}
91+
<input type="radio" class="jquery_ticket_list form-check-input" name="list" value="{{ $list }}" @if(isset($search_fields['list']) && $search_fields['list'] == $list) checked="checked" @endif>{{ trans('panichd::lang.' . $list . '-tickets-adjective') }}
9292
</label>
9393
</div>
9494
@endforeach
@@ -104,7 +104,7 @@
104104
<select class="form-control" name="status_id">
105105
<option value="">{{ trans('panichd::lang.searchform-status-none') }}</option>
106106
@foreach($c_status as $status)
107-
<option value="{{ $status->id }}">{{ $status->name }}</option>
107+
<option value="{{ $status->id }}" @if(isset($search_fields['status_id']) && $search_fields['status_id'] == $status->id) selected="selected" @endif>{{ $status->name }}</option>
108108
@endforeach
109109
</select>
110110
</div>
@@ -115,7 +115,7 @@
115115
<select class="form-control" name="priority_id">
116116
<option value="">{{ trans('panichd::lang.searchform-priority-none') }}</option>
117117
@foreach($priorities as $id => $priority)
118-
<option value="{{ $id }}">{{ $priority }}</option>
118+
<option value="{{ $id }}" @if(isset($search_fields['priority_id']) && $search_fields['priority_id'] == $id) selected="selected" @endif>{{ $priority }}</option>
119119
@endforeach
120120
</select>
121121
</div>
@@ -166,7 +166,7 @@
166166
<select id="select_category" class="form-control" name="category_id">
167167
<option value="">{{ trans('panichd::lang.searchform-category-none') }}</option>
168168
@foreach($a_categories as $id => $cat)
169-
<option value="{{ $id }}">{{ $cat }}</option>
169+
<option value="{{ $id }}" @if(isset($search_fields['category_id']) && $search_fields['category_id'] == $id) selected="selected" @endif>{{ $cat }}</option>
170170
@endforeach
171171
</select>
172172
</div>
@@ -181,7 +181,7 @@
181181
<select id="select_visible_agent" name="agent_id" class="form-control">
182182
<option value="">{{ trans('panichd::lang.searchform-agent-none') }}</option>
183183
@foreach($c_visible_agents as $agent)
184-
<option value="{{ $agent->id }}">{{ $agent->name }}</option>
184+
<option value="{{ $agent->id }}" @if(isset($search_fields['agent_id']) && $search_fields['agent_id'] == $agent->id) selected="selected" @endif>{{ $agent->name }}</option>
185185
@endforeach
186186
</select>
187187
</div>
@@ -190,7 +190,7 @@
190190
<div class="form-group row"><!-- TAGS -->
191191
<label class="col-form-label col-lg-3">{{ trans('panichd::lang.tags') . trans('panichd::lang.colon') }}</label>
192192
<div id="tag_list_container" class="col-lg-9">
193-
@include('panichd::tickets.partials.tags_menu', ['categories' => $a_categories, 'tag_lists' => $c_cat_tags, 'a_tags_selected' => []])
193+
@include('panichd::tickets.partials.tags_menu', ['categories' => $a_categories, 'tag_lists' => $c_cat_tags, 'a_tags_selected' => $search_fields['tags'] ?? []])
194194
</div>
195195
</div>
196196

src/Views/tickets/search/scripts.blade.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,12 @@ function success_ajax_callback() {
4848
}
4949
});
5050
51-
// Date fields with datetimepicker
51+
@if(isset($search_fields['category_id']))
52+
// Show active category tags
53+
$('#jquery_tag_category_{{ $search_fields['category_id'] }}').next().show();
54+
@endif
55+
56+
// Extra date fields with datetimepicker
5257
@foreach(['created_at', 'completed_at', 'updated_at'] as $date_field)
5358
$('#{{ $date_field }}').datetimepicker({
5459
locale: '{{App::getLocale()}}',

src/routes.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,12 @@
1717
Route::get("$main_route_path/data/{id?}", 'PanicHD\PanicHD\Controllers\TicketsController@data')
1818
->name("$main_route.data");
1919

20-
// Search form
21-
Route::get("$main_route_path/search", 'PanicHD\PanicHD\Controllers\TicketsController@search_form')
20+
// Search page (Blank form or with search parameters in URL)
21+
Route::get("$main_route_path/search/{parameters?}", 'PanicHD\PanicHD\Controllers\TicketsController@search_form')
22+
->where('parameters', '(.*)')
2223
->name("$main_route.search.form");
2324

24-
// Search register
25+
// Search AJAX registering
2526
Route::post("$main_route_path/search", 'PanicHD\PanicHD\Controllers\TicketsController@register_search_fields')
2627
->name("$main_route.search.register");
2728

0 commit comments

Comments
 (0)