Skip to content

Commit f813c49

Browse files
committed
Ticket list - agent modal: Checkbox to allow choosing to change ticket status or not
1 parent b1104f0 commit f813c49

5 files changed

Lines changed: 45 additions & 28 deletions

File tree

src/Controllers/TicketsController.php

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ public function data($ticketList = 'active')
161161

162162
\Carbon\Carbon::setLocale(config('app.locale'));
163163

164-
$this->renderTicketTable($collection);
164+
$this->renderTicketTable($collection, $ticketList);
165165

166166
// method rawColumns was introduced in laravel-datatables 7, which is only compatible with >L5.4
167167
// in previous laravel-datatables versions escaping columns wasn't defaut
@@ -178,7 +178,7 @@ public function data($ticketList = 'active')
178178
return $collection->make(true);
179179
}
180180

181-
public function renderTicketTable($collection)
181+
public function renderTicketTable($collection, $ticketList)
182182
{
183183

184184
// Column edits
@@ -280,14 +280,19 @@ public function renderTicketTable($collection)
280280
])
281281
->get()->toArray();
282282

283+
$active_status_name = Setting::grab('default_reopen_status_id') == '0' ? Models\Status::first()->name : Models\Status::find(Setting::grab('default_reopen_status_id'))->name;
284+
283285
$a_cat = [];
284286
foreach ($a_cat_pre as $cat){
285287
$a_cat[$cat['id']] = $cat;
286288
$html = '<div>';
287289
foreach ($cat['agents'] as $agent){
288290
$html.='<label><input type="radio" name="%1$s_agent" value="'.$agent['id'].'"> '.$agent['name'].'</label><br />';
289291
}
290-
$html.='<br /><button type="button" class="btn btn-default btn-sm submit_agent_popover" data-ticket-id="%1$s">'.trans('panichd::lang.btn-change').'</button></div>';
292+
if ($ticketList == 'newest' and Setting::grab('use_default_status_id')){
293+
$html.= '<br /><label><input type="checkbox" name="%1$s_status_checkbox"> ' . trans('panichd::lang.table-agent-status-check', ['status' => $active_status_name]) . '</label>';
294+
}
295+
$html.='<br /><button type="button" class="btn btn-default btn-sm submit_agent_popover" data-ticket-id="%1$s">'.trans('panichd::lang.btn-change').'</button></div>';
291296
$a_cat[$cat['id']]['html']=$html;
292297
}
293298

@@ -532,7 +537,7 @@ public function ticketCounts($request, $ticketList)
532537
}
533538
}
534539

535-
if ($this->member->isAdmin() or ($this->member->isAgent() and Setting::grab('agent_restrict') == 0)) {
540+
if ($this->member->isAdmin() or ($this->member->isAgent() and Models\Setting::grab('agent_restrict') == 0)) {
536541

537542
// Visible categories
538543
$filters['category'] = Category::visible()->orderBy('name')->get();
@@ -1570,25 +1575,29 @@ public function agentList ($category_id)
15701575
/*
15711576
* Change agent in ticket list
15721577
*/
1573-
public function changeAgent(Request $request){
1578+
public function changeAgent(Request $request)
1579+
{
15741580
$original_ticket = Ticket::findOrFail($request->input('ticket_id'));
15751581
$ticket = clone $original_ticket;
15761582
$old_agent = $ticket->agent()->first();
1577-
$new_agent = \PanicHDMember::find($request->input('agent_id'));
1583+
if ($request->has('agent_id')){
1584+
$new_agent = \PanicHDMember::find($request->input('agent_id'));
1585+
}else
1586+
$new_agent = clone $old_agent;
15781587

1579-
if (is_null($new_agent) || $ticket->agent_id==$request->input('agent_id')){
1588+
if (!$request->has('status_checkbox') and (is_null($new_agent) || $ticket->agent_id == $request->input('agent_id'))){
15801589
return redirect()->back()->with('warning', trans('panichd::lang.update-agent-same', [
15811590
'name' => '#'.$ticket->id.' '.$ticket->subject,
15821591
'link' => route(Setting::grab('main_route').'.show', $ticket->id),
15831592
'title' => trans('panichd::lang.ticket-status-link-title')
15841593
]));
15851594
}
15861595

1587-
$ticket->agent_id = $request->input('agent_id');
1596+
$ticket->agent_id = $new_agent->id;
15881597

15891598
$old_status_id = $ticket->status_id;
1590-
if ($ticket->status_id==Setting::grab('default_status_id')){
1591-
$ticket->status_id=Setting::grab('default_reopen_status_id');
1599+
if ($request->has('status_checkbox') || !Setting::grab('use_default_status_id')){
1600+
$ticket->status_id = Setting::grab('default_reopen_status_id');
15921601
}
15931602
$ticket->save();
15941603
event(new TicketUpdated($original_ticket, $ticket));

src/Translations/ca/lang.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
// Agent related
5858
'table-change-agent' => 'Canviar tècnic',
5959
'table-one-agent' => 'Només hi ha un tècnic en aquesta categoria',
60+
'table-agent-status-check' => 'Canviar estat a ":status"',
6061

6162
// Priority related
6263
'table-change-priority' => 'Canviar la prioritat',

src/Translations/en/lang.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
// Agent related
5858
'table-change-agent' => 'Change agent',
5959
'table-one-agent' => 'There is one agent in this category',
60+
'table-agent-status-check' => 'Change status to ":status"',
6061

6162
// Priority related
6263
'table-change-priority' => 'Change priority',

src/Views/tickets/datatable/events.blade.php

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -79,25 +79,25 @@
7979
8080
// Agent change: Modal for > 4 agents
8181
$('.jquery_agent_change_modal').click(function(e){
82-
e.preventDefault();
83-
82+
e.preventDefault();
83+
8484
// Row hover
85-
$(this).closest('tr').addClass('hover');
86-
85+
$(this).closest('tr').addClass('hover');
86+
8787
// Form fields
8888
$('#modalAgentChange #agent_ticket_id_field').val($(this).attr('data-ticket-id'));
89-
89+
9090
// Modal itself
9191
$('#modalAgentChange').modal('show');
9292
$('#modalAgentChange .categories_agent_change').hide();
9393
$('#modalAgentChange #category_'+$(this).attr('data-category-id')+'_agents').show()
9494
.find(":radio[value="+$(this).attr('data-agent-id')+"]").prop('checked',true);
9595
});
96-
96+
9797
$('#modalAgentChange').on('hidden.bs.modal', function () {
9898
$(document).find('tr').removeClass('hover');
9999
});
100-
100+
101101
// Agent / Priority change: Popover menu
102102
$(".jquery_popover")
103103
.popover({
@@ -106,32 +106,35 @@
106106
.click(function(e){
107107
e.preventDefault();
108108
});
109-
109+
110110
// Agent change: Popover menu submit
111111
$(document).on('click','.submit_agent_popover',function(e){
112112
e.preventDefault();
113-
113+
114114
// Form fields
115115
$('#modalAgentChange #agent_ticket_id_field').val($(this).attr('data-ticket-id'));
116116
$('#modalAgentChange').find(":radio[value="+$(this).parent('div').find('input[name='+$(this).attr('data-ticket-id')+'_agent]:checked').val()+"]").prop('checked',true);
117-
117+
118+
if ($(this).parent('div').find('input[name=' + $(this).attr('data-ticket-id') + '_status_checkbox]').is(':checked')){
119+
$('#modalAgentChange').find('input[name=status_checkbox]').prop('checked', true);
120+
}
121+
118122
// Form submit
119123
$('#modalAgentChange').find('form').submit();
120-
121124
});
122-
125+
123126
// Agent change: Popover menu submit
124127
$(document).on('click','.submit_priority_popover',function(e){
125128
e.preventDefault();
126-
129+
127130
// Form fields
128131
$('#PriorityPopoverForm #priority_ticket_id_field').val($(this).attr('data-ticket-id'));
129132
var priority_val = $(this).parent('div').find('input[name='+$(this).attr('data-ticket-id')+'_priority]:checked').val();
130133
$('#PriorityPopoverForm #priority_id_field').val(priority_val);
131-
134+
132135
// Form submit
133136
$('#PriorityPopoverForm').find('form').submit();
134-
137+
135138
});
136139
137140
// Agent change: Tooltip for 1 agents
@@ -140,4 +143,4 @@
140143
141144
@yield('footer_jquery')
142145
});
143-
</script>
146+
</script>

src/Views/tickets/partials/modal_agent.blade.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,11 @@
2121
</ul>
2222
</div>
2323
@endforeach
24-
25-
</div>
24+
25+
@if ($setting->grab('use_default_status_id'))
26+
<label><input type="checkbox" name="status_checkbox" value="yes">{{ trans('panichd::lang.table-agent-status-check') }}</label>
27+
@endif
28+
</div>
2629
<div class="modal-footer">
2730
<button type="submit" class="btn btn-danger">{{ trans('panichd::lang.btn-change') }}</button>
2831
</div>

0 commit comments

Comments
 (0)