@@ -35,7 +35,7 @@ public function __construct(Ticket $tickets, \PanicHDMember $member)
3535 {
3636 $ this ->middleware ('PanicHD\PanicHD\Middleware\EnvironmentReadyMiddleware ' , ['only ' => ['create ' ]]);
3737 $ this ->middleware ('PanicHD\PanicHD\Middleware\UserAccessMiddleware ' , ['only ' => ['show ' , 'downloadAttachment ' , 'viewAttachment ' ]]);
38- $ this ->middleware ('PanicHD\PanicHD\Middleware\AgentAccessMiddleware ' , ['only ' => ['edit ' , 'update ' , 'changeAgent ' , 'changePriority ' , 'hide ' ]]);
38+ $ this ->middleware ('PanicHD\PanicHD\Middleware\AgentAccessMiddleware ' , ['only ' => ['edit ' , 'edit_with_values ' , ' update ' , 'changeAgent ' , 'changePriority ' , 'hide ' ]]);
3939 $ this ->middleware ('PanicHD\PanicHD\Middleware\IsAdminMiddleware ' , ['only ' => ['destroy ' ]]);
4040
4141 $ this ->tickets = $ tickets ;
@@ -616,11 +616,12 @@ protected function getCacheList($list)
616616 });
617617 break ;
618618 case 'statuses ' :
619- $ instance = Cache::remember ('panichd::statuses ' , 60 , function () {
620- if (Setting::grab ('use_default_status_id ' )){
621- return Models \Status::all ();
622- }else
619+ case 'complete_statuses ' :
620+ $ instance = Cache::remember ('panichd:: ' . $ list , 60 , function () use ($ list ) {
621+ if (!Setting::grab ('use_default_status_id ' ) or $ list == 'complete_statuses ' ){
623622 return Models \Status::all ()->where ('id ' , '!= ' , Setting::grab ('default_status_id ' ));
623+ }else
624+ return Models \Status::all ();
624625 });
625626 break ;
626627 default :
@@ -649,8 +650,12 @@ public function create()
649650
650651 return view ('panichd::tickets.createedit ' , $ data );
651652 }
652-
653- public function edit ($ id ){
653+
654+ /*
655+ * Edit a ticket
656+ */
657+ public function edit ($ id )
658+ {
654659 $ ticket = $ this ->tickets ->findOrFail ($ id );
655660
656661 $ data = $ this ->create_edit_data ($ ticket );
@@ -663,8 +668,44 @@ public function edit($id){
663668
664669 return view ('panichd::tickets.createedit ' , $ data );
665670 }
671+
672+ /*
673+ * Edit a ticket and setting one or many fields by URL
674+ *
675+ * Usage: Show ticket -> complete modal -> "Edit more fields" option
676+ */
677+ public function edit_with_values ($ id , $ parameters )
678+ {
679+ $ ticket = $ this ->tickets ->findOrFail ($ id );
680+
681+ $ data = $ this ->create_edit_data ($ ticket );
682+
683+ // Get URL parameters and replace a_current array with them
684+ $ a_temp = explode ('/ ' , $ parameters );
685+ $ a_parameters = [];
686+
687+ if (count ($ a_temp ) % 2 == 0 ){
688+ $ key = "" ;
689+ foreach ($ a_temp as $ param ){
690+ if ($ key == "" ){
691+ $ key = $ param ;
692+ }else {
693+ $ data ['a_current ' ][$ key ] = $ param ;
694+ $ key = "" ;
695+ }
696+ }
697+ }
698+
699+ $ data ['ticket ' ] = $ ticket ;
700+
701+ $ data ['ticket_owner_id ' ] = $ data ['ticket ' ]->user_id ;
702+
703+ $ data ['categories ' ] = $ this ->member ->findOrFail (auth ()->user ()->id )->getEditTicketCategories ();
704+
705+ return view ('panichd::tickets.createedit ' , $ data );
706+ }
666707
667- public function create_edit_data ($ ticket = false )
708+ public function create_edit_data ($ ticket = false , $ a_parameters = false )
668709 {
669710 $ member = $ this ->member ->find (auth ()->user ()->id );
670711
@@ -777,7 +818,7 @@ public function create_edit_data($ticket = false)
777818 }else {
778819 $ a_tags_selected = [];
779820 }
780-
821+
781822 return compact ('a_owners ' , 'priorities ' , 'status_lists ' , 'categories ' , 'agent_lists ' , 'a_current ' , 'permission_level ' , 'tag_lists ' , 'a_tags_selected ' );
782823 }
783824
@@ -1131,6 +1172,7 @@ public function show($id)
11311172 }
11321173
11331174 $ status_lists = $ this ->getCacheList ('statuses ' );
1175+ $ complete_status_list = $ this ->getCacheList ('complete_statuses ' );
11341176
11351177 // Category tags
11361178 $ tag_lists = Category::whereHas ('tags ' )
@@ -1149,7 +1191,7 @@ public function show($id)
11491191 $ comments = $ ticket ->comments ()->forLevel ($ user ->levelInCategory ($ ticket ->category_id ))->orderBy ('id ' ,'desc ' )->paginate (Setting::grab ('paginate_items ' ));
11501192
11511193 return view ('panichd::tickets.show ' ,
1152- compact ('ticket ' , 'a_reasons ' , 'a_tags_selected ' , 'status_lists ' , 'agent_lists ' , 'tag_lists ' ,
1194+ compact ('ticket ' , 'a_reasons ' , 'a_tags_selected ' , 'status_lists ' , 'complete_status_list ' , ' agent_lists ' , 'tag_lists ' ,
11531195 'comments ' , 'close_perm ' , 'reopen_perm ' ));
11541196 }
11551197
0 commit comments