Merge remote-tracking branch 'refs/remotes/origin/release-v1.9.2'
# Conflicts: # app/Console/Kernel.php # app/FaveoStorage/Controllers/SettingsController.php # app/Http/Controllers/Admin/helpdesk/TemplateController.php
This commit is contained in:
1844
DB/demodatabase.sql
1844
DB/demodatabase.sql
File diff suppressed because it is too large
Load Diff
1844
DB/dummy-data.sql
1844
DB/dummy-data.sql
File diff suppressed because it is too large
Load Diff
14
DB/update from 1.9.0 to 1.9.2/updatedatabase.sql
Normal file
14
DB/update from 1.9.0 to 1.9.2/updatedatabase.sql
Normal file
@@ -0,0 +1,14 @@
|
||||
--
|
||||
-- Dumping data for table `template_types`
|
||||
--
|
||||
|
||||
INSERT INTO `template_types` (`id`, `name`, `created_at`, `updated_at`) VALUES
|
||||
(14, 'merge-ticket-notification', '2017-01-02 05:50:11', '2017-01-02 05:50:11');
|
||||
|
||||
--
|
||||
-- Dumping data for table `templates`
|
||||
--
|
||||
|
||||
INSERT INTO `templates` (`name`, `variable`, `type`, `subject`, `message`, `description`, `set_id`, `created_at`, `updated_at`)
|
||||
SELECT 'This template is to notify users when their tickets are merged.', '1', 14, 'Your tickets have been merged.', '<p>Hello {!!$user!!},<br /> </p><p>Your ticket(s) with ticket number {!!$merged_ticket_numbers!!} have been closed and merged with <a href="{!!$ticket_link!!}">{!!$ticket_number!!}</a>. </p><p>Possible reasons for merging tickets</p><ul><li>Tickets are duplicate</li<li>Tickets state the same issue</li><li>Another member from your organization has created a ticket for the same issue</li></ul><p><a href="{!!$system_link!!}">Click here</a> to login to your account and check your tickets.</p><p>Regards,</p><p>{!!$system_from!!}</p>', '', id, '2017-01-02 05:50:12', '2017-01-02 06:01:50'
|
||||
FROM `template_sets`;
|
@@ -1,9 +1,24 @@
|
||||
@extends('themes.default1.admin.layout.admin')
|
||||
@section('content')
|
||||
<section class="content-header">
|
||||
<h1> {{Lang::get('storage::lang.settings')}} </h1>
|
||||
|
||||
</section>
|
||||
@section('Settings')
|
||||
active
|
||||
@stop
|
||||
|
||||
@section('settings-bar')
|
||||
active
|
||||
@stop
|
||||
|
||||
@section('storage')
|
||||
class="active"
|
||||
@stop
|
||||
|
||||
@section('PageHeader')
|
||||
<h1>{{ Lang::get('storage::lang.storage')}}</h1>
|
||||
@stop
|
||||
|
||||
@section('HeadInclude')
|
||||
@stop
|
||||
@section('content')
|
||||
<div class="box box-primary">
|
||||
|
||||
<div class="box-header with-border">
|
||||
|
@@ -85,7 +85,7 @@ class HelptopicController extends Controller
|
||||
$departments = $department->get();
|
||||
$topics = $topic->get();
|
||||
$forms = $form->get();
|
||||
$agents = $agent->where('role', '=', 'agent')->get();
|
||||
$agents = $agent->where('role', '!=', 'user')->where('active', '=', 1)->orderBy('first_name')->get();
|
||||
$slas = $sla->get();
|
||||
$priority = Ticket_Priority::where('status', '=', 1)->get();
|
||||
|
||||
@@ -143,7 +143,7 @@ class HelptopicController extends Controller
|
||||
public function edit($id, Ticket_Priority $priority, Department $department, Help_topic $topic, Forms $form, Sla_plan $sla)
|
||||
{
|
||||
try {
|
||||
$agents = User::where('role', '=', 'agent')->get();
|
||||
$agents = User::where('role', '!=', 'user')->where('active', '=', 1)->orderBy('first_name')->get();
|
||||
$departments = $department->get();
|
||||
$topics = $topic->whereId($id)->first();
|
||||
$forms = $form->get();
|
||||
|
@@ -122,6 +122,7 @@ class LanguageController extends Controller
|
||||
*/
|
||||
public function postForm()
|
||||
{
|
||||
try {
|
||||
// getting all of the post data
|
||||
$file = [
|
||||
'File' => Input::file('File'),
|
||||
@@ -196,6 +197,10 @@ class LanguageController extends Controller
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
Session::flash('fails', $e->getMessage());
|
||||
Redirect::back()->withInput();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -205,7 +210,8 @@ class LanguageController extends Controller
|
||||
*/
|
||||
public function download()
|
||||
{
|
||||
$file_path = base_path('public/downloads/en.zip');
|
||||
$path = 'downloads'.DIRECTORY_SEPARATOR.'en.zip';
|
||||
$file_path = public_path($path);
|
||||
|
||||
return response()->download($file_path);
|
||||
}
|
||||
|
@@ -68,7 +68,7 @@ class TeamController extends Controller
|
||||
public function create(User $user)
|
||||
{
|
||||
try {
|
||||
$user = $user->where('role', '<>', 'user')->where('active', '=', 1)->get();
|
||||
$user = $user->where('role', '<>', 'user')->where('active', '=', 1)->orderBy('first_name')->get();
|
||||
|
||||
return view('themes.default1.admin.helpdesk.agent.teams.create', compact('user'));
|
||||
} catch (Exception $e) {
|
||||
@@ -86,15 +86,23 @@ class TeamController extends Controller
|
||||
*/
|
||||
public function store(Teams $team, TeamRequest $request)
|
||||
{
|
||||
if ($request->team_lead) {
|
||||
$team_lead = $request->team_lead;
|
||||
} else {
|
||||
$team_lead = null;
|
||||
}
|
||||
$team->team_lead = $team_lead;
|
||||
try {
|
||||
/* Check whether function success or not */
|
||||
$team->fill($request->except('team_lead'))->save();
|
||||
$team_update = Teams::find($team->id);
|
||||
if ($request->team_lead) {
|
||||
$team_lead = $request->team_lead;
|
||||
$team_update->update([
|
||||
'team_lead' => $team_lead,
|
||||
]);
|
||||
Assign_team_agent::create([
|
||||
'team_id' => $team_update->id,
|
||||
'agent_id' => $team_lead,
|
||||
]);
|
||||
} else {
|
||||
$team_lead = null;
|
||||
}
|
||||
|
||||
/* redirect to Index page with Success Message */
|
||||
return redirect('teams')->with('success', Lang::get('lang.teams_created_successfully'));
|
||||
} catch (Exception $e) {
|
||||
@@ -202,11 +210,16 @@ $users = DB::table('team_assign_agent')->select('team_assign_agent.id', 'team_as
|
||||
public function edit($id, User $user, Assign_team_agent $assign_team_agent, Teams $team)
|
||||
{
|
||||
try {
|
||||
$user = $user->where('role', '<>', 'user')->where('active', '=', 1)->get();
|
||||
$a_id = [];
|
||||
$teams = $team->whereId($id)->first();
|
||||
$agent_team = $assign_team_agent->where('team_id', $id)->get();
|
||||
$agent_id = $agent_team->lists('agent_id', 'agent_id');
|
||||
|
||||
foreach ($agent_id as $value) {
|
||||
array_push($a_id, $value);
|
||||
}
|
||||
// dd($a_id);
|
||||
$user = $user->whereIn('id', $a_id)->where('active', '=', 1)->orderBy('first_name')->get();
|
||||
// dd($user);
|
||||
return view('themes.default1.admin.helpdesk.agent.teams.edit', compact('agent_id', 'user', 'teams', 'allagents'));
|
||||
} catch (Exception $e) {
|
||||
return redirect()->back()->with('fails', $e->getMessage());
|
||||
|
@@ -132,7 +132,7 @@ class FilterController extends Controller
|
||||
$join->on('ticket_status.id', '=', 'tickets.status');
|
||||
})
|
||||
->where('tickets.status', '=', 1)
|
||||
// ->where('tickets.isanswered', '=', 0)
|
||||
->where('tickets.isanswered', '=', 0)
|
||||
->whereNotNull('tickets.duedate')
|
||||
->where('tickets.duedate', '!=', '00-00-00 00:00:00')
|
||||
|
||||
@@ -196,6 +196,7 @@ class FilterController extends Controller
|
||||
->leftJoin('ticket_status', function ($join) {
|
||||
$join->on('ticket_status.id', '=', 'tickets.status');
|
||||
})
|
||||
->where('isanswered', '=', 0)
|
||||
->where('tickets.status', '=', 1);
|
||||
case '/duetoday':
|
||||
if (Auth::user()->role == 'agent') {
|
||||
@@ -238,7 +239,7 @@ class FilterController extends Controller
|
||||
->whereNotNull('title')
|
||||
->where('ticket_thread.is_internal', '<>', 1);
|
||||
})
|
||||
|
||||
->leftJoin('ticket_thread as ticket_thread2', 'ticket_thread2.ticket_id', '=', 'tickets.id')
|
||||
->Join('ticket_source', 'ticket_source.id', '=', 'tickets.source')
|
||||
->leftJoin('ticket_priority', 'ticket_priority.priority_id', '=', 'tickets.priority_id')
|
||||
->leftJoin('users as u', 'u.id', '=', 'tickets.user_id')
|
||||
@@ -255,17 +256,17 @@ class FilterController extends Controller
|
||||
'u1.user_name as assign_user_name',
|
||||
\DB::raw('max(ticket_thread.updated_at) as updated_at'),
|
||||
\DB::raw('min(ticket_thread.updated_at) as created_at'),
|
||||
'tickets.priority_id', 'tickets.assigned_to',
|
||||
DB::raw('COUNT(ticket_thread.updated_at) as countthread'),
|
||||
'ticket_priority.priority_color',
|
||||
'u.first_name as first_name',
|
||||
'u.last_name as last_name',
|
||||
'u1.first_name as assign_first_name',
|
||||
'u1.last_name as assign_last_name',
|
||||
'tickets.status',
|
||||
'tickets.user_id',
|
||||
'ticket_priority.priority_color',
|
||||
DB::raw('COUNT(DISTINCT ticket_thread2.id) as countthread'),
|
||||
DB::raw('COUNT(ticket_attachment.thread_id) as countattachment'),
|
||||
DB::raw('COUNT(ticket_collaborator.ticket_id) as countcollaborator'),
|
||||
'tickets.status',
|
||||
'tickets.user_id',
|
||||
'tickets.priority_id', 'tickets.assigned_to',
|
||||
'ticket_status.name as tickets_status',
|
||||
'ticket_source.css_class as css',
|
||||
DB::raw('substring_index(group_concat(ticket_thread.poster order by ticket_thread.id desc) , ",", 1) as last_replier'),
|
||||
|
@@ -2218,6 +2218,9 @@ class TicketController extends Controller
|
||||
if ($count === 1) {
|
||||
$user_id = $user->id;
|
||||
$ticket = Tickets::where('id', '=', $id)->first();
|
||||
if ($user_id === (int) $ticket->user_id) {
|
||||
return 400;
|
||||
}
|
||||
$ticket_number = $ticket->ticket_number;
|
||||
$ticket->user_id = $user_id;
|
||||
$ticket->save();
|
||||
@@ -2422,6 +2425,7 @@ class TicketController extends Controller
|
||||
$success = 0;
|
||||
}
|
||||
}
|
||||
$this->sendMergeNotification($p_id, $t_id);
|
||||
|
||||
return $success;
|
||||
}
|
||||
@@ -2896,4 +2900,32 @@ class TicketController extends Controller
|
||||
|
||||
return $base64;
|
||||
}
|
||||
|
||||
/**
|
||||
*@category function to send notification of ticket merging to the owners
|
||||
*
|
||||
*@param srting array $t_id, $p_id
|
||||
*
|
||||
*@return null
|
||||
*/
|
||||
public function sendMergeNotification($p_id, $t_id)
|
||||
{
|
||||
try {
|
||||
$ticket_details = Tickets::select('ticket_number', 'user_id', 'dept_id')->where('id', '=', $p_id)->first();
|
||||
$user_detail = User::where('id', '=', $ticket_details->user_id)->first();
|
||||
if ($user_detail->count() > 0) {
|
||||
if ($user_detail->email !== null || $user_detail->email !== '') {
|
||||
$meged_ticket_details = Tickets::select('ticket_number')->whereIn('id', $t_id)->get();
|
||||
$child_ticket_numbers = [];
|
||||
foreach ($meged_ticket_details as $value) {
|
||||
array_push($child_ticket_numbers, $value->ticket_number);
|
||||
}
|
||||
// dd(implode(", ",$child_ticket_numbers), $ticket_details->ticket_number);
|
||||
$this->PhpMailController->sendmail($from = $this->PhpMailController->mailfrom('0', $ticket_details->dept_id), $to = ['user' => $user_detail->full_name, 'email' => $user_detail->email], $message = ['subject' => '', 'body' => '', 'scenario' => 'merge-ticket-notification'], $template_variables = ['user' => $user_detail->full_name, 'ticket_number' => $ticket_details->ticket_number, 'ticket_link' => route('ticket.thread', $p_id), 'merged_ticket_numbers' => implode(', ', $child_ticket_numbers)]);
|
||||
}
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
//catch the exception
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -32,6 +32,7 @@ use App\Model\helpdesk\Utility\Otp;
|
||||
use App\User;
|
||||
// classes
|
||||
use Auth;
|
||||
use Datatables;
|
||||
use DateTime;
|
||||
use DB;
|
||||
use Exception;
|
||||
@@ -85,7 +86,6 @@ class UserController extends Controller
|
||||
Lang::get('lang.email'),
|
||||
Lang::get('lang.phone'),
|
||||
Lang::get('lang.status'),
|
||||
Lang::get('lang.ban'),
|
||||
Lang::get('lang.last_login'),
|
||||
Lang::get('lang.role'),
|
||||
Lang::get('lang.action')) // these are the column headings to be shown
|
||||
@@ -116,21 +116,42 @@ class UserController extends Controller
|
||||
public function user_list(Request $request)
|
||||
{
|
||||
$type = $request->input('profiletype');
|
||||
$search = $request->input('searchTerm');
|
||||
|
||||
if ($type == 'active') {
|
||||
$users = User::where('role', '!=', 'admin')->where('is_delete', '=', 0)->get();
|
||||
if ($type === 'agents') {
|
||||
$users = User::where('role', '=', 'agent')->where('is_delete', '=', 0);
|
||||
} elseif ($type === 'users') {
|
||||
$users = User::where('role', '=', 'user')->where('is_delete', '=', 0);
|
||||
} elseif ($type === 'active-users') {
|
||||
$users = User::where('role', '!=', 'admin')->where('active', '=', 1);
|
||||
} elseif ($type === 'inactive') {
|
||||
$users = User::where('role', '!=', 'admin')->where('active', '=', 0);
|
||||
} elseif ($type === 'deleted') {
|
||||
$users = User::where('role', '!=', 'admin')->where('is_delete', '=', 1);
|
||||
} elseif ($type === 'banned') {
|
||||
$users = User::where('role', '!=', 'admin')->where('ban', '=', 1);
|
||||
} else {
|
||||
$users = User::where('role', '!=', 'admin')->where('is_delete', '=', 1)->get();
|
||||
$users = User::where('role', '!=', 'admin')->where('is_delete', '=', 0);
|
||||
}
|
||||
|
||||
$users = $users->select('user_name', 'email', 'mobile', 'active', 'updated_at', 'role', 'id', 'last_name', 'country_code', 'phone_number');
|
||||
|
||||
if ($search !== '') {
|
||||
$users = $users->where(function ($query) use ($search) {
|
||||
$query->where('user_name', 'LIKE', '%'.$search.'%');
|
||||
$query->orWhere('email', 'LIKE', '%'.$search.'%');
|
||||
$query->orWhere('first_name', 'LIKE', '%'.$search.'%');
|
||||
$query->orWhere('last_name', 'LIKE', '%'.$search.'%');
|
||||
$query->orWhere('mobile', 'LIKE', '%'.$search.'%');
|
||||
$query->orWhere('updated_at', 'LIKE', '%'.$search.'%');
|
||||
$query->orWhere('country_code', 'LIKE', '%'.$search.'%');
|
||||
});
|
||||
}
|
||||
// displaying list of users with chumper datatables
|
||||
// return \Datatable::collection(User::where('role', "!=", "admin")->get())
|
||||
return \Datatable::collection($users)
|
||||
/* searchable column username and email */
|
||||
->searchColumns('user_name', 'email', 'phone')
|
||||
/* order column username and email */
|
||||
->orderColumns('user_name', 'email')
|
||||
return \Datatables::of($users)
|
||||
/* column username */
|
||||
->removeColumn('id', 'last_name', 'country_code', 'phone_number')
|
||||
->addColumn('user_name', function ($model) {
|
||||
if ($model->first_name) {
|
||||
$string = strip_tags($model->first_name.' '.$model->last_name);
|
||||
@@ -153,7 +174,7 @@ class UserController extends Controller
|
||||
return $email;
|
||||
})
|
||||
/* column phone */
|
||||
->addColumn('phone', function ($model) {
|
||||
->addColumn('mobile', function ($model) {
|
||||
$phone = '';
|
||||
if ($model->phone_number) {
|
||||
$phone = $model->ext.' '.$model->phone_number;
|
||||
@@ -167,7 +188,7 @@ class UserController extends Controller
|
||||
return $phone;
|
||||
})
|
||||
/* column account status */
|
||||
->addColumn('status', function ($model) {
|
||||
->addColumn('active', function ($model) {
|
||||
$status = $model->active;
|
||||
if ($status == 1) {
|
||||
$stat = '<button class="btn btn-success btn-xs">Active</button>';
|
||||
@@ -177,19 +198,8 @@ class UserController extends Controller
|
||||
|
||||
return $stat;
|
||||
})
|
||||
/* column ban status */
|
||||
->addColumn('ban', function ($model) {
|
||||
$status = $model->ban;
|
||||
if ($status == 1) {
|
||||
$stat = '<button class="btn btn-danger btn-xs">Banned</button>';
|
||||
} else {
|
||||
$stat = '<button class="btn btn-success btn-xs">Not Banned</button>';
|
||||
}
|
||||
|
||||
return $stat;
|
||||
})
|
||||
/* column last login date */
|
||||
->addColumn('lastlogin', function ($model) {
|
||||
->addColumn('updated_at', function ($model) {
|
||||
$t = $model->updated_at;
|
||||
|
||||
return TicketController::usertimezone($t);
|
||||
@@ -1064,7 +1074,7 @@ class UserController extends Controller
|
||||
|
||||
public function getAgentDetails()
|
||||
{
|
||||
$users = User::where('role', '<>', 'user')->where('active', '=', 1)->get();
|
||||
$users = User::where('role', '<>', 'user')->where('active', '=', 1)->orderBy('first_name')->get();
|
||||
foreach ($users as $user) {
|
||||
echo "<option value='user_$user->id'>".$user->name().'</option>';
|
||||
}
|
||||
|
@@ -185,7 +185,9 @@ class AuthController extends Controller
|
||||
$sms = Plugin::select('status')->where('name', '=', 'SMS')->first();
|
||||
// Event for login
|
||||
\Event::fire(new \App\Events\LoginEvent($request));
|
||||
if ($request->input('email') !== '') {
|
||||
$var = $this->PhpMailController->sendmail($from = $this->PhpMailController->mailfrom('1', '0'), $to = ['name' => $name, 'email' => $request->input('email')], $message = ['subject' => null, 'scenario' => 'registration'], $template_variables = ['user' => $name, 'email_address' => $request->input('email'), 'password_reset_link' => url('account/activate/'.$code)]);
|
||||
}
|
||||
if ($settings->status == 1 || $settings->status == '1') {
|
||||
if (count($sms) > 0) {
|
||||
if ($sms->status == 1 || $sms->status == '1') {
|
||||
@@ -194,7 +196,11 @@ class AuthController extends Controller
|
||||
$message12 = Lang::get('lang.activate_your_account_click_on_Link_that_send_to_your_mail_sms_plugin_inactive_or_not_setup');
|
||||
}
|
||||
} else {
|
||||
if ($request->input('email') !== '') {
|
||||
$message12 = Lang::get('lang.activate_your_account_click_on_Link_that_send_to_your_mail');
|
||||
} else {
|
||||
$message12 = Lang::get('lang.account-created-contact-admin-as-we-were-not-able-to-send-opt');
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$message12 = Lang::get('lang.activate_your_account_click_on_Link_that_send_to_your_mail');
|
||||
|
@@ -182,6 +182,9 @@ class FormController extends Controller
|
||||
$user_priority = CommonSettings::where('option_name', '=', 'user_priority')->first();
|
||||
if (!($request->input('priority'))) {
|
||||
$priority = $default_priority->priority_id;
|
||||
if ($helpTopicObj->exists() && ($helpTopicObj->value('status') == 1)) {
|
||||
$priority = $helpTopicObj->value('priority');
|
||||
}
|
||||
} else {
|
||||
$priority = $request->input('priority');
|
||||
}
|
||||
@@ -189,6 +192,9 @@ class FormController extends Controller
|
||||
$attachments = $request->file('attachment');
|
||||
$collaborator = null;
|
||||
$assignto = null;
|
||||
if ($helpTopicObj->exists() && ($helpTopicObj->value('status') == 1)) {
|
||||
$assignto = $helpTopicObj->value('auto_assign');
|
||||
}
|
||||
$auto_response = 0;
|
||||
$team_assign = null;
|
||||
if ($phone != null || $mobile_number != null) {
|
||||
|
@@ -164,7 +164,7 @@ class NotificationController extends Controller
|
||||
}, 'notification.model' => function ($query) {
|
||||
$query->select('id', 'ticket_number');
|
||||
},
|
||||
]);
|
||||
])->where('user_id', '=', \Auth::user()->id);
|
||||
|
||||
return $notifications;
|
||||
}
|
||||
|
@@ -115,7 +115,7 @@ class PhpMailController extends Controller
|
||||
$department_sign = $this->checkElement('department_sign', $template_variables);
|
||||
$password_reset_link = $this->checkElement('password_reset_link', $template_variables);
|
||||
$user_password = $this->checkElement('user_password', $template_variables);
|
||||
|
||||
$merged_ticket_numbers = $this->checkElement('merged_ticket_numbers', $template_variables);
|
||||
$email_address = $this->checkElement('email_address', $template_variables);
|
||||
$user = $this->checkElement('user', $template_variables);
|
||||
|
||||
@@ -145,9 +145,9 @@ class PhpMailController extends Controller
|
||||
$subject = null;
|
||||
}
|
||||
|
||||
$variables = ['{!!$user!!}', '{!!$agent!!}', '{!!$ticket_number!!}', '{!!$content!!}', '{!!$from!!}', '{!!$ticket_agent_name!!}', '{!!$ticket_client_name!!}', '{!!$ticket_client_email!!}', '{!!$ticket_body!!}', '{!!$ticket_assigner!!}', '{!!$ticket_link_with_number!!}', '{!!$system_error!!}', '{!!$agent_sign!!}', '{!!$department_sign!!}', '{!!$password_reset_link!!}', '{!!$email_address!!}', '{!!$user_password!!}', '{!!$system_from!!}', '{!!$system_link!!}', '{!!$ticket_link!!}'];
|
||||
$variables = ['{!!$user!!}', '{!!$agent!!}', '{!!$ticket_number!!}', '{!!$content!!}', '{!!$from!!}', '{!!$ticket_agent_name!!}', '{!!$ticket_client_name!!}', '{!!$ticket_client_email!!}', '{!!$ticket_body!!}', '{!!$ticket_assigner!!}', '{!!$ticket_link_with_number!!}', '{!!$system_error!!}', '{!!$agent_sign!!}', '{!!$department_sign!!}', '{!!$password_reset_link!!}', '{!!$email_address!!}', '{!!$user_password!!}', '{!!$system_from!!}', '{!!$system_link!!}', '{!!$ticket_link!!}', '{!!$merged_ticket_numbers!!}'];
|
||||
|
||||
$data = [$user, $agent, $ticket_number, $content, $from, $ticket_agent_name, $ticket_client_name, $ticket_client_email, $ticket_body, $ticket_assigner, $ticket_link_with_number, $system_error, $agent_sign, $department_sign, $password_reset_link, $email_address, $user_password, $system_from, $system_link, $ticket_link];
|
||||
$data = [$user, $agent, $ticket_number, $content, $from, $ticket_agent_name, $ticket_client_name, $ticket_client_email, $ticket_body, $ticket_assigner, $ticket_link_with_number, $system_error, $agent_sign, $department_sign, $password_reset_link, $email_address, $user_password, $system_from, $system_link, $ticket_link, $merged_ticket_numbers];
|
||||
|
||||
foreach ($variables as $key => $variable) {
|
||||
$messagebody = str_replace($variables[$key], $data[$key], $contents);
|
||||
|
@@ -426,10 +426,10 @@ Breadcrumbs::register('report.index', function ($breadcrumbs) {
|
||||
$breadcrumbs->push(Lang::get('lang.dashboard'), route('dashboard'));
|
||||
});
|
||||
Breadcrumbs::register('home', function ($breadcrumbs) {
|
||||
$breadcrumbs->push('Home', route('home'));
|
||||
$breadcrumbs->push(Lang::get('lang.home'), route('home'));
|
||||
});
|
||||
Breadcrumbs::register('/', function ($breadcrumbs) {
|
||||
$breadcrumbs->push('Home', route('/'));
|
||||
$breadcrumbs->push(Lang::get('lang.home'), route('/'));
|
||||
});
|
||||
Breadcrumbs::register('form', function ($breadcrumbs) {
|
||||
$breadcrumbs->push('Create Ticket', route('form'));
|
||||
|
@@ -33,7 +33,7 @@ return [
|
||||
| This tells about aplication current version.
|
||||
|
|
||||
*/
|
||||
'version' => 'Community 1.9.0',
|
||||
'version' => 'Community 1.9.2',
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Application Name
|
||||
|
@@ -1994,6 +1994,7 @@ class DatabaseSeeder extends Seeder
|
||||
TemplateType::create(['id' => '11', 'name' => 'registration']);
|
||||
TemplateType::create(['id' => '12', 'name' => 'team_assign_ticket']);
|
||||
TemplateType::create(['id' => '13', 'name' => 'reset_new_password']);
|
||||
TemplateType::create(['id' => '14', 'name' => 'merge-ticket-notification']);
|
||||
|
||||
Template::create(['id' => '1', 'variable' => '0', 'name' => 'This template is for sending notice to agent when ticket is assigned to them', 'type' => '1', 'message' => '<div>Hello {!!$ticket_agent_name!!},<br /><br /><b>Ticket No:</b> {!!$ticket_number!!}<br />Has been assigned to you by {!!$ticket_assigner!!} <br/> Please check and resppond on the ticket.<br /> Link: {!!$ticket_link!!}<br /><br />Thank You<br />Kind Regards,<br /> {!!$system_from!!}</div>', 'set_id' => '1']);
|
||||
Template::create(['id' => '2', 'variable' => '1', 'name' => 'This template is for sending notice to client with ticket link to check ticket without logging in to system', 'type' => '2', 'subject' => 'Check your Ticket', 'message' => '<div>Hello {!!$user!!},<br/><br/>Click the link below to view your requested ticket<br/> {!!$ticket_link_with_number!!}<br/><br/>Kind Regards,<br/> {!!$system_from!!}</div>', 'set_id' => '1']);
|
||||
@@ -2008,6 +2009,7 @@ class DatabaseSeeder extends Seeder
|
||||
Template::create(['id' => '11', 'variable' => '1', 'name' => 'This template is for sending notice to client about registration confirmation link', 'type' => '11', 'subject' => 'Verify your email address', 'message' => '<p>Hello {!!$user!!}, </p><p>This email is confirmation that you are now registered at our helpdesk.</p><p><b>Registered Email:</b> {!!$email_address!!}</p><p>Please click on the below link to activate your account and Login to the system {!!$password_reset_link!!}</p><p>Thank You.</p><p>Kind Regards,</p><p> {!!$system_from!!} </p>', 'set_id' => '1']);
|
||||
Template::create(['id' => '12', 'variable' => '1', 'name' => 'This template is for sending notice to team when ticket is assigned to team', 'type' => '12', 'message' => '<div>Hello {!!$ticket_agent_name!!},<br /><br /><b>Ticket No:</b> {!!$ticket_number!!}<br />Has been assigned to your team : {!!$team!!} by {!!$ticket_assigner!!} <br /><br />Thank You<br />Kind Regards,<br />{!!$system_from!!}</div>', 'set_id' => '1']);
|
||||
Template::create(['id' => '13', 'variable' => '1', 'name' => 'This template is for sending notice to client when password is changed', 'type' => '13', 'subject' => 'Verify your email address', 'message' => 'Hello {!!$user!!},<br /><br />Your password is successfully changed.Your new password is : {!!$user_password!!}<br /><br />Thank You.<br /><br />Kind Regards,<br /> {!!$system_from!!}', 'set_id' => '1']);
|
||||
Template::create(['id' => '14', 'variable' => '1', 'name' => 'This template is to notify users when their tickets are merged.', 'type' => '14', 'subject' => 'Your tickets have been merged.', 'message' => '<p>Hello {!!$user!!},<br /> </p><p>Your ticket(s) with ticket number {!!$merged_ticket_numbers!!} have been closed and merged with <a href="{!!$ticket_link!!}">{!!$ticket_number!!}</a>. </p><p>Possible reasons for merging tickets</p><ul><li>Tickets are duplicate</li<li>Tickets state the same issue</li><li>Another member from your organization has created a ticket for the same issue</li></ul><p><a href="{!!$system_link!!}">Click here</a> to login to your account and check your tickets.</p><p>Regards,</p><p>{!!$system_from!!}</p>', 'set_id' => '1']);
|
||||
|
||||
/*
|
||||
* All the common settings will be listed here
|
||||
|
Binary file not shown.
@@ -1,3 +1,38 @@
|
||||
|======================================================
|
||||
|v1.9.2
|
||||
|======================================================
|
||||
|
||||
Bug Fixes
|
||||
Corrected notification counts
|
||||
Fixed canned response error
|
||||
Correct message for registration
|
||||
Removed routes of PRO features
|
||||
Exception handling while adding language
|
||||
Showing agents in alphabetical order in various drop down menus
|
||||
Handling the case when agent/admin adds same owner while changing ticket's owner
|
||||
Fixed priority and auto assignment while creating ticket form cleint panel
|
||||
Fixed typos in english language translation
|
||||
Fixed counts of tickets of every categroy
|
||||
Removed duplicate option from top nav bar
|
||||
Fixed empty database check while installation
|
||||
Assigning team leader in a team while creating new team
|
||||
Fixed #361
|
||||
|
||||
Enhancements
|
||||
|
||||
Sending email notfications to users while merging their duplicate tickets
|
||||
Implemented Yajra in users table
|
||||
Custom filter and search option in users table
|
||||
Check if JavaScript is enabled or not while installation
|
||||
Put max execution time and "mbstring" extension check while installation
|
||||
|
||||
|========================================================
|
||||
| Upgrade giude
|
||||
|========================================================
|
||||
|
||||
Follow this wiki article to upgrade your Faveo system
|
||||
https://github.com/ladybirdweb/faveo-helpdesk/wiki/Upgrade-guide-for-v1.9.2
|
||||
|
||||
|=======================================================
|
||||
| v1.9.1
|
||||
|=======================================================
|
||||
|
@@ -1146,4 +1146,16 @@ return [
|
||||
'delete-account-caution-info' => 'Please note this account may still have open tickets in the system.',
|
||||
'reply-can-not-be-empty' => 'Reply can not be blank. Please enter your reply.',
|
||||
|
||||
//update 18-12-2016
|
||||
'account-created-contact-admin-as-we-were-not-able-to-send-opt' => 'Your account has been created successfully. Please contact admin for account activation as we were not able to send you an OPT code.',
|
||||
//update 19-12-2016
|
||||
'only-agents' => 'Agent users',
|
||||
'only-users' => 'Clients users',
|
||||
'banned-users' => 'Banned users',
|
||||
'inactive-users' => 'Inactive users',
|
||||
'all-users' => 'All users',
|
||||
'search' => 'Search...',
|
||||
//update 21-12-2016
|
||||
'selected-user-is-already-the-owner' => 'Selected user is already the owner of this ticket.',
|
||||
|
||||
];
|
||||
|
@@ -106,7 +106,7 @@ return [
|
||||
*/
|
||||
'i_know_my_password' => 'I know my password',
|
||||
'recover_passord' => 'Recover password',
|
||||
'send_password_reset_link' => 'Send pasword reset link',
|
||||
'send_password_reset_link' => 'Send password reset link',
|
||||
'enter_email_to_reset_password' => 'Enter email/mobile number to reset password',
|
||||
'link' => 'Link',
|
||||
'email_or_mobile' => 'Email or mobile',
|
||||
@@ -474,7 +474,7 @@ return [
|
||||
'default' => 'default',
|
||||
'language-settings' => 'Language settings',
|
||||
'iso-code' => 'ISO-CODE',
|
||||
'download' => 'Downlaod',
|
||||
'download' => 'Download',
|
||||
'upload_file' => 'Upload file',
|
||||
'enter_iso-code' => 'Enter ISO code',
|
||||
'eg.' => 'Example',
|
||||
@@ -493,8 +493,8 @@ return [
|
||||
'delete-success' => 'Language package deleted successfully.',
|
||||
'lang-doesnot-exist' => 'Language package does not exist.',
|
||||
'active-lang-error' => 'Language package can not be deleted when it is active.',
|
||||
'language-error' => 'Language package not found in your lang directroy.',
|
||||
'lang-fallback-lang' => 'Cannot delete system\'s defualt fallback language',
|
||||
'language-error' => 'Language package not found in your lang directory.',
|
||||
'lang-fallback-lang' => 'Can not delete system\'s defualt fallback language',
|
||||
|
||||
/*
|
||||
|--------------------------------------
|
||||
@@ -550,7 +550,7 @@ return [
|
||||
'SLA_plan' => 'SLA plan',
|
||||
'sla-plans' => 'SLA plans',
|
||||
'auto_assign' => 'Auto assign',
|
||||
'auto_respons' => 'Auto respons',
|
||||
'auto_respons' => 'Auto response',
|
||||
'ticket_number_format' => 'Ticket number format',
|
||||
'system_default' => 'System default',
|
||||
'custom' => 'Custom',
|
||||
@@ -807,7 +807,7 @@ return [
|
||||
'outgoing_emails' => 'Outgoing emails',
|
||||
'outgoing_email' => 'Outgoing email',
|
||||
'template_set' => 'Template set',
|
||||
'auto_responding_settings' => 'Auto-Responding settigs',
|
||||
'auto_responding_settings' => 'Auto-Responding settings',
|
||||
'disable_for_this_department' => 'Disable for this department',
|
||||
'auto_response_email' => 'Auto-Response email',
|
||||
'recipient' => 'Recipient',
|
||||
@@ -819,14 +819,14 @@ return [
|
||||
'edit_department' => 'Edit department',
|
||||
'select_a_sla' => 'Select a SLA',
|
||||
'select_a_manager' => 'Select a manager',
|
||||
'department_created_sucessfully' => 'Department created sucessfully',
|
||||
'department_created_sucessfully' => 'Department created successfully',
|
||||
'failed_to_create_department' => 'Failed to create department',
|
||||
'department_updated_sucessfully' => 'Department updated sucessfully',
|
||||
'department_updated_sucessfully' => 'Department updated successfully',
|
||||
'department_not_updated' => 'Department not updated',
|
||||
'you_cannot_delete_default_department' => 'You cannot delete default department',
|
||||
'have_been_moved_to_default_department' => 'have been moved to default department',
|
||||
'the_associated_helptopic_has_been_deactivated' => 'The associated helptopic has been deactivated',
|
||||
'department_deleted_sucessfully' => 'Department deleted sucessfully',
|
||||
'department_deleted_sucessfully' => 'Department deleted successfully',
|
||||
'department_can_not_delete' => 'Department can not be deleted',
|
||||
'select_a_department' => 'Select a department',
|
||||
'make-default-department' => 'Make system\'s default department',
|
||||
@@ -1104,7 +1104,7 @@ return [
|
||||
'submit' => 'Submit',
|
||||
'max' => 'Maximum file size',
|
||||
'add_cc' => 'Add CC',
|
||||
'recepients' => 'Recepients',
|
||||
'recepients' => 'Recipients',
|
||||
'select_a_canned_response' => 'Select a canned response',
|
||||
'assign_to' => 'Assign to',
|
||||
'detail' => 'Detail',
|
||||
@@ -1118,7 +1118,7 @@ return [
|
||||
'minutes' => ' minutes',
|
||||
'in_minutes' => 'In minutes',
|
||||
'add_another_owner' => 'Add another owner',
|
||||
'user-not-found' => 'User not found. Try again or add a new user.',
|
||||
'user-not-found' => 'User not found or user is inactive. Try again or add a new user.',
|
||||
'change-success' => 'Success! owner has been changed for this ticket.',
|
||||
'user-exists' => 'User already exists. Try search existing user.',
|
||||
'valid-email' => 'Enter a valid email address.',
|
||||
@@ -1137,7 +1137,7 @@ return [
|
||||
'merge-success' => 'Tickets have been merged successfully.',
|
||||
'merge-error2' => 'Please select ticket to merge.',
|
||||
'select-tickets-to merge' => 'Select two or more tickets to merge.',
|
||||
'different-users' => 'Ticktes from different users',
|
||||
'different-users' => 'Selected tickets are from different users',
|
||||
'clean-up' => 'Delete forever',
|
||||
'hard-delete-success-message' => 'Tickets have been deleted permanently.',
|
||||
'overdue' => 'Overdue',
|
||||
@@ -1364,11 +1364,11 @@ return [
|
||||
'Send' => 'SEND',
|
||||
'no_article' => 'No article',
|
||||
'profile_settings' => 'Profile settings',
|
||||
'please_fill_all_required_feilds' => 'Please fill all required feilds.',
|
||||
'please_fill_all_required_feilds' => 'Please fill all required fields.',
|
||||
'successfully_replied' => 'Successfully replied',
|
||||
'please_fill_some_data' => 'Please fill some data!',
|
||||
'profile_updated_sucessfully' => 'Profile updated sucessfully',
|
||||
'password_updated_sucessfully' => 'Password updated sucessfully',
|
||||
'password_updated_sucessfully' => 'Password updated successfully',
|
||||
'password_was_not_updated_incorrect_old_password' => 'Password was not updated. Incorrect old password',
|
||||
'there_is_no_such_ticket_number' => 'There is no such ticket number',
|
||||
"email_didn't_match_with_ticket_number" => "Email didn't match with ticket number",
|
||||
@@ -1546,9 +1546,9 @@ return [
|
||||
'change_password' => 'Change password',
|
||||
'role_change' => 'Role change',
|
||||
'password_generator' => 'Password generator',
|
||||
'depertment' => 'Depertment',
|
||||
'depertment' => 'Department',
|
||||
'duetoday' => 'Due today',
|
||||
'today-due_tickets' => 'Today\'s due ticekts',
|
||||
'today-due_tickets' => 'Today\'s due tickets',
|
||||
'password_change_successfully' => 'Password changed successfully',
|
||||
'role_change_successfully' => 'Role changed successfully',
|
||||
'user_delete_successfully' => 'User deleted successfully',
|
||||
@@ -1583,4 +1583,15 @@ return [
|
||||
'delete-account-caution-info' => 'Please note this account may still have open tickets in the system.',
|
||||
'reply-can-not-be-empty' => 'Reply can not be blank. Please enter your reply.',
|
||||
|
||||
//update 18-12-2016
|
||||
'account-created-contact-admin-as-we-were-not-able-to-send-opt' => 'Your account has been created successfully. Please contact admin for account activation as we were not able to send you an OTP code.',
|
||||
//update 19-12-2016
|
||||
'only-agents' => 'Agent users',
|
||||
'only-users' => 'Clients users',
|
||||
'banned-users' => 'Banned users',
|
||||
'inactive-users' => 'Inactive users',
|
||||
'all-users' => 'All users',
|
||||
'search' => 'Search...',
|
||||
//update 21-12-2016
|
||||
'selected-user-is-already-the-owner' => 'Selected user is already the owner of this ticket.',
|
||||
];
|
||||
|
@@ -1554,4 +1554,16 @@ return [
|
||||
'delete-account-caution-info' => 'Please note this account may still have open tickets in the system.',
|
||||
'reply-can-not-be-empty' => 'Reply can not be blank. Please enter your reply.',
|
||||
|
||||
//update 18-12-2016
|
||||
'account-created-contact-admin-as-we-were-not-able-to-send-opt' => 'Your account has been created successfully. Please contact admin for account activation as we were not able to send you an OPT code.',
|
||||
//update 19-12-2016
|
||||
'only-agents' => 'Agent users',
|
||||
'only-users' => 'Clients users',
|
||||
'banned-users' => 'Banned users',
|
||||
'inactive-users' => 'Inactive users',
|
||||
'all-users' => 'All users',
|
||||
'search' => 'Search...',
|
||||
//update 21-12-2016
|
||||
'selected-user-is-already-the-owner' => 'Selected user is already the owner of this ticket.',
|
||||
|
||||
];
|
||||
|
@@ -1105,4 +1105,16 @@ return [
|
||||
'restore-user' => 'Restore user account',
|
||||
'delete-account-caution-info' => 'Please note this account may still have open tickets in the system.',
|
||||
'reply-can-not-be-empty' => 'Reply can not be blank. Please enter your reply.',
|
||||
|
||||
//update 18-12-2016
|
||||
'account-created-contact-admin-as-we-were-not-able-to-send-opt' => 'Your account has been created successfully. Please contact admin for account activation as we were not able to send you an OPT code.',
|
||||
//update 19-12-2016
|
||||
'only-agents' => 'Agent users',
|
||||
'only-users' => 'Clients users',
|
||||
'banned-users' => 'Banned users',
|
||||
'inactive-users' => 'Inactive users',
|
||||
'all-users' => 'All users',
|
||||
'search' => 'Search...',
|
||||
//update 21-12-2016
|
||||
'selected-user-is-already-the-owner' => 'Selected user is already the owner of this ticket.',
|
||||
];
|
||||
|
@@ -1599,4 +1599,16 @@ return [
|
||||
'delete-account-caution-info' => 'Please note this account may still have open tickets in the system.',
|
||||
'reply-can-not-be-empty' => 'Reply can not be blank. Please enter your reply.',
|
||||
|
||||
//update 18-12-2016
|
||||
'account-created-contact-admin-as-we-were-not-able-to-send-opt' => 'Your account has been created successfully. Please contact admin for account activation as we were not able to send you an OPT code.',
|
||||
|
||||
//update 19-12-2016
|
||||
'only-agents' => 'Agent users',
|
||||
'only-users' => 'Clients users',
|
||||
'banned-users' => 'Banned users',
|
||||
'inactive-users' => 'Inactive users',
|
||||
'all-users' => 'All users',
|
||||
'search' => 'Search...',
|
||||
//update 21-12-2016
|
||||
'selected-user-is-already-the-owner' => 'Selected user is already the owner of this ticket.',
|
||||
];
|
||||
|
@@ -1544,4 +1544,17 @@ return [
|
||||
'delete-account-caution-info' => 'Please note this account may still have open tickets in the system.',
|
||||
'reply-can-not-be-empty' => 'Reply can not be blank. Please enter your reply.',
|
||||
|
||||
//update 18-12-2016
|
||||
'account-created-contact-admin-as-we-were-not-able-to-send-opt' => 'Your account has been created successfully. Please contact admin for account activation as we were not able to send you an OPT code.',
|
||||
|
||||
//update 19-12-2016
|
||||
'only-agents' => 'Agent users',
|
||||
'only-users' => 'Clients users',
|
||||
'banned-users' => 'Banned users',
|
||||
'inactive-users' => 'Inactive users',
|
||||
'all-users' => 'All users',
|
||||
'search' => 'Search...',
|
||||
//update 21-12-2016
|
||||
'selected-user-is-already-the-owner' => 'Selected user is already the owner of this ticket.',
|
||||
|
||||
];
|
||||
|
@@ -1052,4 +1052,17 @@ return [
|
||||
'restore-user' => 'Restore user account',
|
||||
'delete-account-caution-info' => 'Please note this account may still have open tickets in the system.',
|
||||
'reply-can-not-be-empty' => 'Reply can not be blank. Please enter your reply.',
|
||||
|
||||
//update 18-12-2016
|
||||
'account-created-contact-admin-as-we-were-not-able-to-send-opt' => 'Your account has been created successfully. Please contact admin for account activation as we were not able to send you an OPT code.',
|
||||
|
||||
//update 19-12-2016
|
||||
'only-agents' => 'Agent users',
|
||||
'only-users' => 'Clients users',
|
||||
'banned-users' => 'Banned users',
|
||||
'inactive-users' => 'Inactive users',
|
||||
'all-users' => 'All users',
|
||||
'search' => 'Search...',
|
||||
//update 21-12-2016
|
||||
'selected-user-is-already-the-owner' => 'Selected user is already the owner of this ticket.',
|
||||
];
|
||||
|
@@ -61,7 +61,6 @@ class="active"
|
||||
<!-- team lead -->
|
||||
<div class="col-xs-6 form-group {{ $errors->has('team_lead') ? 'has-error' : '' }}">
|
||||
{!! Form::label('team_lead',Lang::get('lang.team_lead')) !!}
|
||||
<?php $user = App\User::where('role', 'admin')->orWhere('role', 'agent')->get(); ?>
|
||||
{!! Form::select('team_lead',[''=>Lang::get('lang.select_a_team_lead'), Lang::get('lang.members')=>$user->lists('full_name','id')->toArray()],null,['class' => 'form-control']) !!}
|
||||
</div>
|
||||
</div>
|
||||
|
@@ -60,7 +60,6 @@ class="active"
|
||||
<!-- team lead -->
|
||||
<div class="col-xs-6 form-group {{ $errors->has('team_lead') ? 'has-error' : '' }}">
|
||||
{!! Form::label('team_lead',Lang::get('lang.team_lead')) !!}
|
||||
<?php $user = App\User::where('role', 'admin')->orWhere('role', 'agent')->get(); ?>
|
||||
{!! Form::select('team_lead',[''=>Lang::get('lang.select_a_team_lead'), Lang::get('lang.members')=>$user->lists('full_name','id')->toArray()],null,['class' => 'form-control']) !!}
|
||||
</div>
|
||||
</div>
|
||||
|
@@ -137,7 +137,7 @@ class="active"
|
||||
<div class="col-md-4">
|
||||
<div class="form-group {{ $errors->has('auto_assign') ? 'has-error' : '' }}">
|
||||
{!! Form::label('auto_assign',Lang::get('lang.auto_assign')) !!}
|
||||
{!!Form::select('auto_assign', [''=>Lang::get('lang.select_an_agent'),Lang::get('lang.agents')=>$agents->lists('first_name','id')->toArray()],null,['class' => 'form-control']) !!}
|
||||
{!!Form::select('auto_assign', [''=>Lang::get('lang.select_an_agent'),Lang::get('lang.agents')=>$agents->lists('full_name','id')->toArray()],null,['class' => 'form-control']) !!}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@@ -135,7 +135,7 @@ class="active"
|
||||
<div class="col-md-4">
|
||||
<div class="form-group {{ $errors->has('auto_assign') ? 'has-error' : '' }}">
|
||||
{!! Form::label('auto_assign',Lang::get('lang.auto_assign')) !!}
|
||||
{!!Form::select('auto_assign', [''=>Lang::get('lang.select_an_agent'),Lang::get('lang.agents')=>$agents->lists('first_name','id')->toArray()],null,['class' => 'form-control']) !!}
|
||||
{!!Form::select('auto_assign', [''=>Lang::get('lang.select_an_agent'),Lang::get('lang.agents')=>$agents->lists('full_name','id')->toArray()],null,['class' => 'form-control']) !!}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@@ -54,6 +54,11 @@ class="active"
|
||||
</div><!-- /.modal -->
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<div class="alert alert-info alert-dismissable">
|
||||
<i class="fa fa-info-circle"></i>
|
||||
<b>{!! Lang::get('lang.plugin-info') !!}</b><br/>
|
||||
<a href="http://www.faveohelpdesk.com/plugins/" target="_blank">{!!Lang::get('lang.click-here')!!}</a> {!!Lang::get('lang.plugin-info-pro')!!}
|
||||
</div>
|
||||
@if (count($errors) > 0)
|
||||
<div class="alert alert-danger alert-dismissable">
|
||||
<i class="fa fa-ban"></i>
|
||||
|
@@ -278,7 +278,6 @@
|
||||
<li @yield('auto-response')><a href="{{url('getresponder')}}"><i class="fa fa-reply-all"></i>{!! Lang::get('lang.auto_response') !!}</a></li>
|
||||
<li @yield('alert')><a href="{{url('getalert')}}"><i class="fa fa-bell"></i>{!! Lang::get('lang.alert_notices') !!}</a></li>
|
||||
<li @yield('status')><a href="{{url('setting-status')}}"><i class="fa fa-plus-square-o"></i>{!! Lang::get('lang.status') !!}</a></li>
|
||||
<li @yield('labels')><a href="{{url('labels')}}"><i class="fa fa-lastfm"></i>{!! Lang::get('lang.labels') !!}</a></li>
|
||||
<li @yield('ratings')><a href="{{url('getratings')}}"><i class="fa fa-star"></i>{!! Lang::get('lang.ratings') !!}</a></li>
|
||||
<li @yield('close-workflow')><a href="{{url('close-workflow')}}"><i class="fa fa-sitemap"></i>{!! Lang::get('lang.close-workflow') !!}</a></li>
|
||||
</ul>
|
||||
@@ -297,7 +296,7 @@
|
||||
<li @yield('cron')><a href="{{url('job-scheduler')}}"><i class="fa fa-hourglass"></i>{!! Lang::get('lang.cron') !!}</a></li>
|
||||
<li @yield('security')><a href="{{url('security')}}"><i class="fa fa-lock"></i>{!! Lang::get('lang.security') !!}</a></li>
|
||||
<li @yield('notification')><a href="{{url('settings-notification')}}"><i class="fa fa-bell"></i>{!! Lang::get('lang.notifications') !!}</a></li>
|
||||
<li @yield('Approval')><a href="{{url('approval/settings')}}"><i class="glyphicon glyphicon-repeat"></i>{!! Lang::get('lang.approval') !!}</a></li>
|
||||
<li @yield('storage')><a href="{{url('storage')}}"><i class="fa fa-save"></i>{!! Lang::get('storage::lang.storage') !!}</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="treeview @yield('error-bugs')">
|
||||
|
@@ -38,9 +38,6 @@ class="active"
|
||||
<link type="text/css" href="{{asset("lb-faveo/css/bootstrap-datetimepicker4.7.14.min.css")}}" rel="stylesheet">
|
||||
{{-- <script src="{{asset("lb-faveo/dist/js/bootstrap-datetimepicker4.7.14.min.js")}}" type="text/javascript"></script> --}}
|
||||
<div class="row">
|
||||
<?php
|
||||
$overdue_ticket = count($overdues);
|
||||
?>
|
||||
<!-- <div class="col-md-3 col-sm-6 col-xs-12"> -->
|
||||
<div class="col-md-2" style="width:20%;">
|
||||
<a href="{!! route('inbox.ticket') !!}">
|
||||
@@ -75,18 +72,8 @@ class="active"
|
||||
<div class="info-box">
|
||||
<span class="info-box-icon bg-red"><i class="fa fa-calendar-times-o"></i></span>
|
||||
<div class="info-box-content">
|
||||
|
||||
<?php
|
||||
if (Auth::user()->role == 'admin') {
|
||||
$overdue_ticket = App\Model\helpdesk\Ticket\Tickets::where('status', '=', 1)->where('tickets.duedate','<', \Carbon\Carbon::now())->count();
|
||||
} else {
|
||||
$dept = App\Model\helpdesk\Agent\Department::where('id', '=', Auth::user()->primary_dpt)->first();
|
||||
$overdue_ticket = App\Model\helpdesk\Ticket\Tickets::where('status', '=', 1)->where('tickets.duedate','<', \Carbon\Carbon::now())->where('dept_id', '=', $dept->id)->count();
|
||||
}
|
||||
?>
|
||||
|
||||
<span class="info-box-text">{!! Lang::get('lang.overdue') !!}</span>
|
||||
<span class="info-box-number">{{ $overdue_ticket }} <small> Tickets</small></span>
|
||||
<span class="info-box-number">{{ $overdues->count() }} <small> Tickets</small></span>
|
||||
</div><!-- /.info-box-content -->
|
||||
</div><!-- /.info-box -->
|
||||
</a>
|
||||
|
@@ -45,17 +45,15 @@ class="active"
|
||||
$date_time_format = UTC::getDateTimeFormat();
|
||||
if (Auth::user()->role == 'agent') {
|
||||
$dept = App\Model\helpdesk\Agent\Department::select('id', 'name')->where('id', '=', Auth::user()->primary_dpt)->first();
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::whereIn('status', array(1, 7))->where('dept_id', '=', $dept->id)->orderBy('id', 'DESC')->paginate(20);
|
||||
$dept_name = $dept->name;
|
||||
} else {
|
||||
$dept_name = \Request::segments()[1];
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::whereIn('status', array(1, 7))->orderBy('id', 'DESC')->paginate(20);
|
||||
}
|
||||
?>
|
||||
<!-- Main content -->
|
||||
<div class="box box-primary">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">{!! $dept_name !!} / {!! $status !!} </h3> <small id="title_refresh">{!! $tickets->total() !!} {!! Lang::get('lang.tickets') !!}</small>
|
||||
<h3 class="box-title">{!! $dept_name !!} / {!! $status !!} </h3>
|
||||
</div><!-- /.box-header -->
|
||||
|
||||
<div class="box-body ">
|
||||
|
@@ -46,15 +46,15 @@ class="active"
|
||||
$date_time_format = UTC::getDateTimeFormat();
|
||||
if (Auth::user()->role == 'agent') {
|
||||
$dept = App\Model\helpdesk\Agent\Department::where('id', '=', Auth::user()->primary_dpt)->first();
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::where('status', '=', 1)->where('isanswered', '=', 1)->where('dept_id', '=', $dept->id)->orderBy('id', 'DESC')->paginate(20);
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::where('status', '=', 1)->where('isanswered', '=', 1)->where('dept_id', '=', $dept->id)->orderBy('id', 'DESC')->count();
|
||||
} else {
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::where('status', '=', 1)->where('isanswered', '=', 1)->orderBy('id', 'DESC')->paginate(20);
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::where('status', '=', 1)->where('isanswered', '=', 1)->orderBy('id', 'DESC')->count();
|
||||
}
|
||||
?>
|
||||
<!-- Main content -->
|
||||
<div class="box box-primary">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">{!! Lang::get('lang.answered') !!} </h3> <small id="title_refresh">{!! $tickets->total() !!} {!! Lang::get('lang.tickets') !!}</small>
|
||||
<h3 class="box-title">{!! Lang::get('lang.answered') !!} </h3> <small id="title_refresh">{!! $tickets !!} {!! Lang::get('lang.tickets') !!}</small>
|
||||
<div class="box-tools pull-right">
|
||||
<div class="has-feedback">
|
||||
</div>
|
||||
|
@@ -46,15 +46,15 @@ class="active"
|
||||
$date_time_format = UTC::getDateTimeFormat();
|
||||
if (Auth::user()->role == 'agent') {
|
||||
$dept = App\Model\helpdesk\Agent\Department::where('id', '=', Auth::user()->primary_dpt)->first();
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::where('status', '=', 1)->where('assigned_to', '>', 0)->where('dept_id', '=', $dept->id)->orderBy('id', 'DESC')->paginate(20);
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::where('status', '=', 1)->where('assigned_to', '>', 0)->where('dept_id', '=', $dept->id)->orderBy('id', 'DESC')->count();
|
||||
} else {
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::where('status', '=', 1)->where('assigned_to', '>', 0)->orderBy('id', 'DESC')->paginate(20);
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::where('status', '=', 1)->where('assigned_to', '>', 0)->orderBy('id', 'DESC')->count();
|
||||
}
|
||||
?>
|
||||
<!-- Main content -->
|
||||
<div class="box box-primary">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title"> {!! Lang::get('lang.assigned') !!} </h3> <small id="title_refresh"> {!! $tickets->total() !!} {!! Lang::get('lang.tickets') !!}</small>
|
||||
<h3 class="box-title"> {!! Lang::get('lang.assigned') !!} </h3> <small id="title_refresh"> {!! $tickets !!} {!! Lang::get('lang.tickets') !!}</small>
|
||||
</div><!-- /.box-header -->
|
||||
<div class="box-body">
|
||||
@if(Session::has('success'))
|
||||
|
@@ -46,15 +46,15 @@ class="active"
|
||||
$date_time_format = UTC::getDateTimeFormat();
|
||||
if (Auth::user()->role == 'agent') {
|
||||
$dept = App\Model\helpdesk\Agent\Department::where('id', '=', Auth::user()->primary_dpt)->first();
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::where('status', '>', 1)->where('dept_id', '=', $dept->id)->where('status', '<', 4)->orderBy('id', 'DESC')->paginate(20);
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::where('status', '>', 1)->where('dept_id', '=', $dept->id)->where('status', '<', 4)->orderBy('id', 'DESC')->count();
|
||||
} else {
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::where('status', '>', 1)->where('status', '<', 4)->orderBy('id', 'DESC')->paginate(20);
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::where('status', '>', 1)->where('status', '<', 4)->orderBy('id', 'DESC')->count();
|
||||
}
|
||||
?>
|
||||
<!-- Main content -->
|
||||
<div class="box box-primary">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title"> {!! Lang::get('lang.closed') !!} </h3> <small id="title_refresh">{!! $tickets->total() !!} {!! Lang::get('lang.tickets') !!}</small>
|
||||
<h3 class="box-title"> {!! Lang::get('lang.closed') !!} </h3> <small id="title_refresh">{!! $tickets !!} {!! Lang::get('lang.tickets') !!}</small>
|
||||
</div><!-- /.box-header -->
|
||||
<div class="box-body">
|
||||
@if(Session::has('success'))
|
||||
|
@@ -48,23 +48,14 @@ class="active"
|
||||
$todaytickets = count(App\Model\helpdesk\Ticket\Tickets::where('status', '=', 1)->whereRaw('date(duedate) = ?', [date('Y-m-d')])->get());
|
||||
} else {
|
||||
$dept = App\Model\helpdesk\Agent\Department::where('id', '=', Auth::user()->primary_dpt)->first();
|
||||
$todaytickets = count(App\Model\helpdesk\Ticket\Tickets::where('status', '=', 1)->whereRaw('date(duedate) = ?', [date('Y-m-d')])->where('dept_id', '=', $dept->id)->get());
|
||||
$todaytickets = App\Model\helpdesk\Ticket\Tickets::where('status', '=', 1)->whereRaw('date(duedate) = ?', [date('Y-m-d')])->where('dept_id', '=', $dept->id)->count();
|
||||
}
|
||||
?>
|
||||
<!-- //no need -->
|
||||
<?php
|
||||
$date_time_format = UTC::getDateTimeFormat();
|
||||
if (Auth::user()->role == 'agent') {
|
||||
$dept = App\Model\helpdesk\Agent\Department::where('id', '=', Auth::user()->primary_dpt)->first();
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::where('status', '=', 1)->where('isanswered', '=', 0)->where('dept_id', '=', $dept->id)->orderBy('id', 'DESC')->paginate(20);
|
||||
} else {
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::where('status', '=', 1)->where('isanswered', '=', 0)->orderBy('id', 'DESC')->paginate(20);
|
||||
}
|
||||
?>
|
||||
<!-- Main content -->
|
||||
<div class="box box-primary">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">{!! Lang::get('lang.open') !!} </h3> <small id="title_refresh">{!! $todaytickets !!} {!! Lang::get('lang.tickets') !!}</small>
|
||||
<h3 class="box-title">{!! Lang::get('lang.duetoday') !!} </h3> <small id="title_refresh">{!! $todaytickets !!} {!! Lang::get('lang.tickets') !!}</small>
|
||||
<div class="box-tools pull-right">
|
||||
<div class="has-feedback">
|
||||
</div>
|
||||
|
@@ -45,15 +45,15 @@ class="active"
|
||||
$date_time_format = UTC::getDateTimeFormat();
|
||||
if (Auth::user()->role == 'agent') {
|
||||
$dept = App\Model\helpdesk\Agent\Department::where('id', '=', Auth::user()->primary_dpt)->first();
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::whereIn('status', array(1, 7))->where('dept_id', '=', $dept->id)->orderBy('id', 'DESC')->paginate(20);
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::whereIn('status', array(1, 7))->where('dept_id', '=', $dept->id)->orderBy('id', 'DESC')->count();
|
||||
} else {
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::whereIn('status', array(1, 7))->orderBy('id', 'DESC')->paginate(20);
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::whereIn('status', array(1, 7))->orderBy('id', 'DESC')->count();
|
||||
}
|
||||
?>
|
||||
<!-- Main content -->
|
||||
<div class="box box-primary">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">{!! Lang::get('lang.inbox') !!} </h3> <small id="title_refresh">{!! $tickets->total() !!} {!! Lang::get('lang.tickets') !!}</small>
|
||||
<h3 class="box-title">{!! Lang::get('lang.inbox') !!} </h3> <small id="title_refresh">{!! $tickets !!} {!! Lang::get('lang.tickets') !!}</small>
|
||||
</div><!-- /.box-header -->
|
||||
|
||||
<div class="box-body ">
|
||||
|
@@ -44,15 +44,15 @@ class="active"
|
||||
$date_time_format = UTC::getDateTimeFormat();
|
||||
if (Auth::user()->role == 'agent') {
|
||||
$dept = App\Model\helpdesk\Agent\Department::where('id', '=', Auth::user()->primary_dpt)->first();
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::where('status', '=', 1)->where('assigned_to', '=', Auth::user()->id)->orderBy('id', 'ASC')->paginate(20);
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::where('status', '=', 1)->where('assigned_to', '=', Auth::user()->id)->orderBy('id', 'ASC')->count();
|
||||
} else {
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::where('status', '=', 1)->where('assigned_to', '=', Auth::user()->id)->orderBy('id', 'ASC')->paginate(20);
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::where('status', '=', 1)->where('assigned_to', '=', Auth::user()->id)->orderBy('id', 'ASC')->count();
|
||||
}
|
||||
?>
|
||||
<!-- Main content -->
|
||||
<div class="box box-primary">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">{!! Lang::get('lang.my_tickets') !!}</h3> <small id="title_refresh">{!! $tickets->total() !!} {!! Lang::get('lang.tickets') !!}</small>
|
||||
<h3 class="box-title">{!! Lang::get('lang.my_tickets') !!}</h3> <small id="title_refresh">{!! $tickets !!} {!! Lang::get('lang.tickets') !!}</small>
|
||||
</div><!-- /.box-header -->
|
||||
|
||||
<div class="box-body">
|
||||
|
@@ -46,15 +46,15 @@ class="active"
|
||||
$date_time_format = UTC::getDateTimeFormat();
|
||||
if (Auth::user()->role == 'agent') {
|
||||
$dept = App\Model\helpdesk\Agent\Department::where('id', '=', Auth::user()->primary_dpt)->first();
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::where('status', '=', 1)->where('isanswered', '=', 0)->where('dept_id', '=', $dept->id)->orderBy('id', 'DESC')->paginate(20);
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::where('status', '=', 1)->where('isanswered', '=', 0)->where('dept_id', '=', $dept->id)->orderBy('id', 'DESC')->count();
|
||||
} else {
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::where('status', '=', 1)->where('isanswered', '=', 0)->orderBy('id', 'DESC')->paginate(20);
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::where('status', '=', 1)->where('isanswered', '=', 0)->orderBy('id', 'DESC')->count();
|
||||
}
|
||||
?>
|
||||
<!-- Main content -->
|
||||
<div class="box box-primary">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">{!! Lang::get('lang.open') !!} </h3> <small id="title_refresh">{!! $tickets->total() !!} {!! Lang::get('lang.tickets') !!}</small>
|
||||
<h3 class="box-title">{!! Lang::get('lang.open') !!} </h3> <small id="title_refresh">{!! $tickets !!} {!! Lang::get('lang.tickets') !!}</small>
|
||||
<div class="box-tools pull-right">
|
||||
<div class="has-feedback">
|
||||
</div>
|
||||
|
@@ -41,38 +41,20 @@ class="active"
|
||||
@stop
|
||||
@section('content')
|
||||
<?php
|
||||
// $date_time_format = UTC::getDateTimeFormat();
|
||||
// if (Auth::user()->role == 'agent') {
|
||||
// $dept = \App\Model\helpdesk\Agent\Department::where('id', '=', Auth::user()->primary_dpt)->first();
|
||||
// $overdues = App\Model\helpdesk\Ticket\Tickets::where('status', '=', 1)->where('isanswered', '=', 0)->where('dept_id', '=', $dept->id)->orderBy('id', 'DESC')->get();
|
||||
// } else {
|
||||
// $overdues = App\Model\helpdesk\Ticket\Tickets::where('status', '=', 1)->where('isanswered', '=', 0)->orderBy('id', 'DESC')->get();
|
||||
// }
|
||||
// $i = count($overdues);
|
||||
// if ($i == 0) {
|
||||
// $overdue_ticket = 0;
|
||||
// } else {
|
||||
// $j = 0;
|
||||
// foreach ($overdues as $overdue) {
|
||||
// $sla_plan = App\Model\helpdesk\Manage\Sla_plan::where('id', '=', $overdue->sla)->first();
|
||||
|
||||
// $ovadate = $overdue->created_at;
|
||||
// $new_date = date_add($ovadate, date_interval_create_from_date_string($sla_plan->grace_period)) . '<br/><br/>';
|
||||
// if (date('Y-m-d H:i:s') > $new_date) {
|
||||
// $j++;
|
||||
// //$value[] = $overdue;
|
||||
// }
|
||||
// }
|
||||
// // dd(count($value));
|
||||
// if ($j > 0) {
|
||||
// $overdue_ticket = $j;
|
||||
// } else {
|
||||
// $overdue_ticket = 0;
|
||||
// }
|
||||
// }
|
||||
|
||||
$overdue_ticket=App\Model\helpdesk\Ticket\Tickets::where('tickets.duedate','<', \Carbon\Carbon::now())->count();
|
||||
$otickets = App\Model\helpdesk\Ticket\Tickets::where('tickets.status', '=', 1)
|
||||
->where('tickets.isanswered', '=', 0)
|
||||
->whereNotNull('tickets.duedate')
|
||||
->where('tickets.duedate', '!=', '00-00-00 00:00:00')
|
||||
|
||||
// ->where('duedate','>',\Carbon\Carbon::now());
|
||||
->where('tickets.duedate', '<', \Carbon\Carbon::now());
|
||||
if (\Auth::user()->role === 'agent') {
|
||||
$dept = App\Model\helpdesk\Agent\Department::where('id', '=', Auth::user()->primary_dpt)->first();
|
||||
$otickets = $otickets->where('dept_id', '=', $dept->id);
|
||||
}
|
||||
$overdue_ticket = $otickets->count();
|
||||
|
||||
?>
|
||||
<!-- Main content -->
|
||||
|
@@ -397,14 +397,14 @@ if ($thread->title != "") {
|
||||
<label>{!! Lang::get('lang.response') !!}</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<select class="form-control" style="width:55%" id="select">
|
||||
<select class="form-control" style="width:55%" id="select" onchange="addCannedResponse()">
|
||||
|
||||
<?php
|
||||
$canneds = App\Model\helpdesk\Agent_panel\Canned::where('user_id', '=', Auth::user()->id)->get();
|
||||
?>
|
||||
<option value="zzz">{!! Lang::get('lang.select_a_canned_response') !!}</option>
|
||||
@foreach($canneds as $canned)
|
||||
<option value="{!! $canned->id !!}" >{!! $canned->title !!}</option>
|
||||
<option value="{!! $canned->message !!}" >{!! $canned->title !!}</option>
|
||||
@endforeach
|
||||
{{-- <option>Last Message</option> --}}
|
||||
</select>
|
||||
@@ -948,7 +948,7 @@ alert(h+20);
|
||||
<div class="tab-pane active" id="ahah1">
|
||||
<div id="change_alert" class="alert alert-danger alert-dismissable" style="display:none;">
|
||||
<button id="change_dismiss" type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
|
||||
<h4><i class="icon fa fa-check"></i>Alert!</h4>
|
||||
<h4><i class="icon fa fa-exclamation-circle"></i>Alert!</h4>
|
||||
<div id="message-success42"></div>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
@@ -1054,7 +1054,7 @@ alert(h+20);
|
||||
<p>{!! Lang::get('lang.whome_do_you_want_to_assign_ticket') !!}?</p>
|
||||
<select id="asssign" class="form-control" name="assign_to">
|
||||
<?php
|
||||
$assign = App\User::where('role', '!=', 'user')->where('active', '=', '1')->get();
|
||||
$assign = App\User::where('role', '!=', 'user')->where('active', '=', '1')->orderBy('first_name')->get();
|
||||
$count_assign = count($assign);
|
||||
$teams = App\Model\helpdesk\Agent\Teams::where('status', '=', '1')->get();
|
||||
$count_teams = count($teams);
|
||||
@@ -1645,10 +1645,12 @@ alert(h+20);
|
||||
$("#change_loader").show();
|
||||
},
|
||||
success: function(response) {
|
||||
if (response != 1)
|
||||
{
|
||||
if (response != 1) {
|
||||
// $("#assign_body").show();
|
||||
var message = "{{Lang::get('lang.user-not-found')}}";
|
||||
if (response == 400) {
|
||||
message = "{{Lang::get('lang.selected-user-is-already-the-owner')}}";
|
||||
}
|
||||
$('#change_alert').show();
|
||||
$('#message-success42').html(message);
|
||||
setInterval(function(){$("#change_alert").hide(); }, 5000);
|
||||
@@ -2210,5 +2212,20 @@ echo $ticket_data->title;
|
||||
$(this).html($('<span />').width(Math.max(0, (Math.min(5, parseFloat($(this).html())))) * 16));
|
||||
});
|
||||
}
|
||||
|
||||
function addCannedResponse() {
|
||||
var selectedResponse = document.getElementById( "select" );
|
||||
var response = selectedResponse.options[selectedResponse.selectedIndex ].value;
|
||||
if (response == 'zzz') {
|
||||
for ( instance in CKEDITOR.instances ){
|
||||
CKEDITOR.instances[instance].updateElement();
|
||||
CKEDITOR.instances[instance].setData('');
|
||||
}
|
||||
} else {
|
||||
for ( instance in CKEDITOR.instances ) {
|
||||
CKEDITOR.instances[instance].insertHtml(response);
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@stop
|
@@ -44,15 +44,15 @@ class="active"
|
||||
// $date_time_format = UTC::getDateTimeFormat();
|
||||
if (Auth::user()->role == 'agent') {
|
||||
$dept = App\Model\helpdesk\Agent\Department::where('id', '=', Auth::user()->primary_dpt)->first();
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::where('status', '=', 5)->where('dept_id', '=', $dept->id)->orderBy('id', 'DESC')->paginate(20);
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::where('status', '=', 5)->where('dept_id', '=', $dept->id)->orderBy('id', 'DESC')->count();
|
||||
} else {
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::where('status', '=', 5)->orderBy('id', 'DESC')->paginate(20);
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::where('status', '=', 5)->orderBy('id', 'DESC')->count();
|
||||
}
|
||||
?>
|
||||
<!-- Main content -->
|
||||
<div class="box box-warning">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">{!! Lang::get('lang.trash') !!} </h3> <small id="title_refresh">{!! $tickets->total() !!} {!! Lang::get('lang.tickets') !!}</small>
|
||||
<h3 class="box-title">{!! Lang::get('lang.trash') !!} </h3> <small id="title_refresh">{!! $tickets !!} {!! Lang::get('lang.tickets') !!}</small>
|
||||
</div><!-- /.box-header -->
|
||||
<div class="box-body">
|
||||
@if(Session::has('success'))
|
||||
|
@@ -44,9 +44,9 @@ class="active"
|
||||
$date_time_format = UTC::getDateTimeFormat();
|
||||
if (Auth::user()->role == 'agent') {
|
||||
$dept = App\Model\helpdesk\Agent\Department::where('id', '=', Auth::user()->primary_dpt)->first();
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::where('assigned_to', '=', null)->where('dept_id', '=', $dept->id)->where('status', '1')->orderBy('id', 'DESC')->paginate(20);
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::where('assigned_to', '=', null)->where('dept_id', '=', $dept->id)->where('status', '1')->orderBy('id', 'DESC')->count();
|
||||
} else {
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::where('assigned_to', '=', null)->where('status', '1')->orderBy('id', 'DESC')->paginate(20);
|
||||
$tickets = App\Model\helpdesk\Ticket\Tickets::where('assigned_to', '=', null)->where('status', '1')->orderBy('id', 'DESC')->count();
|
||||
}
|
||||
// dd($tickets);
|
||||
?>
|
||||
@@ -54,7 +54,7 @@ if (Auth::user()->role == 'agent') {
|
||||
<div class="box box-info">
|
||||
<div class="box-header with-border">
|
||||
<?php $counted = count(App\Model\helpdesk\Ticket\Tickets::where('assigned_to', '=', 0)->get()); ?>
|
||||
<h3 class="box-title">{!! Lang::get('lang.unassigned') !!} </h3> <small id="title_refresh"> {!! $tickets->total() !!} {!! Lang::get('lang.tickets') !!}</small>
|
||||
<h3 class="box-title">{!! Lang::get('lang.unassigned') !!} </h3> <small id="title_refresh"> {!! $tickets !!} {!! Lang::get('lang.tickets') !!}</small>
|
||||
</div><!-- /.box-header -->
|
||||
<div class="box-body">
|
||||
@if(Session::has('success'))
|
||||
|
@@ -34,20 +34,32 @@ class="active"
|
||||
|
||||
<div class="box-header with-border">
|
||||
<div class="row">
|
||||
<div>
|
||||
<div class="col-md-6">
|
||||
<h3 class="box-title ">{{Lang::get('lang.user')}}</h3>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="col-md-3">
|
||||
<div class="col-md-5">
|
||||
<div class="box-tools" style="width: 235px">
|
||||
<div class="has-feedback">
|
||||
<input type="text" class="form-control input-sm" id="search-text" name="search" placeholder="{{Lang::get('lang.search')}}" style="height:30px">
|
||||
<span class="fa fa-search form-control-feedback"></span>
|
||||
</div>
|
||||
<div class="col-md-9">
|
||||
</div><!-- /.box-tools -->
|
||||
</div>
|
||||
<div class="col-md-7">
|
||||
<div class="pull-right">
|
||||
<div id="labels-div" class="btn-group">
|
||||
<button type="button" class="btn btn-sm btn-default dropdown-toggle" data-toggle="dropdown" id="labels-button"><i class="fa fa-eye" style="color:teal;"> </i>{{Lang::get('lang.view-option')}}<span class="caret"></span>
|
||||
<button type="button" class="btn btn-sm btn-default dropdown-toggle" data-toggle="dropdown" id="labels-button"><i class="fa fa-eye" style="color:teal;"> </i>{{Lang::get('lang.view-option')}}<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu pull-right" role="menu">
|
||||
<li><a href="#" class="active">{{Lang::get('lang.active-users')}}</a></li>
|
||||
<li><a href="#" class="inactive">{{Lang::get('lang.deleted-users')}}</a></li>
|
||||
<ul class="dropdown-menu role="menu">
|
||||
<li class="active"><a href="#" class="all">{{Lang::get('lang.all-users')}}</a></li>
|
||||
<li><a href="#" class="agents">{{Lang::get('lang.only-agents')}}</a></li>
|
||||
<li><a href="#" class="users">{{Lang::get('lang.only-users')}}</a></li>
|
||||
<li><a href="#" class="active-users">{{Lang::get('lang.active-users')}}</a></li>
|
||||
<li><a href="#" class="inactive">{{Lang::get('lang.inactive-users')}}</a></li>
|
||||
<li><a href="#" class="deleted">{{Lang::get('lang.deleted-users')}}</a></li>
|
||||
<li><a href="#" class="banned">{{Lang::get('lang.banned-users')}}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<a href="{{url('user-export')}}" class="btn btn-default btn-sm ">Export</a>
|
||||
|
@@ -320,7 +320,7 @@
|
||||
</aside>
|
||||
<?php
|
||||
$agent_group = $auth_user_assign_group;
|
||||
$group = App\Model\helpdesk\Agent\Groups::where('id', '=', $agent_group)->where('group_status', '=', '1')->first();
|
||||
$group = App\Model\helpdesk\Agent\Groups::where('id', '=', $agent_group)->first();
|
||||
?>
|
||||
<!-- Right side column. Contains the navbar and content of the page -->
|
||||
<div class="content-wrapper">
|
||||
@@ -344,10 +344,6 @@ $group = App\Model\helpdesk\Agent\Groups::where('id', '=', $agent_group)->where(
|
||||
<ul class="nav navbar-nav">
|
||||
<li id="bar" @yield('open')><a href="{{ url('/ticket/open')}}" id="load-open">{!! Lang::get('lang.open') !!}</a></li>
|
||||
<li id="bar" @yield('answered')><a href="{{ url('/ticket/answered')}}" id="load-answered">{!! Lang::get('lang.answered') !!}</a></li>
|
||||
<li id="bar" @yield('myticket')><a href="{{ url('/ticket/myticket')}}" >{!! Lang::get('lang.my_tickets') !!}</a></li>
|
||||
{{-- < li id = "bar" @yield('ticket') > < a href = "{{ url('ticket') }}" >Ticket</a></li> --}}
|
||||
{{-- < li id = "bar" @yield('overdue') > < a href = "{{ url('/ticket/overdue') }}" >Overdue</a></li> --}}
|
||||
|
||||
<li id="bar" @yield('assigned')><a href="{{ url('/ticket/assigned')}}" id="load-assigned" >{!! Lang::get('lang.assigned') !!}</a></li>
|
||||
<li id="bar" @yield('closed')><a href="{{ url('/ticket/closed')}}" >{!! Lang::get('lang.closed') !!}</a></li>
|
||||
<?php if ($group->can_create_ticket == 1) { ?>
|
||||
|
@@ -156,15 +156,7 @@ class = "active"
|
||||
$helptopic = App\Model\helpdesk\Manage\Help_topic::where('status', '=', 1)->get();
|
||||
?>
|
||||
<select name="helptopic" class="form-control" id="selectid">
|
||||
<?php
|
||||
$system_default_department = App\Model\helpdesk\Settings\System::where('id', '=', 1)->first();
|
||||
if (isset($system_default_department->department)) {
|
||||
$department_relation_helptopic = App\Model\helpdesk\Manage\Help_topic::where('department', '=', $system_default_department->department)->first();
|
||||
$default_helptopic = $department_relation_helptopic->id;
|
||||
} else {
|
||||
$default_helptopic = 0;
|
||||
}
|
||||
?>
|
||||
|
||||
@foreach($helptopic as $topic)
|
||||
<option value="{!! $topic->id !!}">{!! $topic->topic !!}</option>
|
||||
@endforeach
|
||||
|
@@ -171,9 +171,13 @@
|
||||
<div class="form-group pull-left">
|
||||
<input type="checkbox" name="remember"> {!! Lang::get("lang.remember") !!}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<button type="submit" class="btn btn-custom .btn-sm ">{!! Lang::get('lang.login') !!}</button>
|
||||
{!! Form::close() !!}
|
||||
</div>
|
||||
</div>
|
||||
{{Lang::get('lang.or')}}
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
|
@@ -9,11 +9,12 @@ active
|
||||
|
||||
<div class="woocommerce-message woocommerce-tracker" >
|
||||
<center id="fail" style="font-size: 1.3em">JavaScript Disabled!</center>
|
||||
<p style="font-size:1.0em">Hello, Sparky! You are just few steps away from your support system. It looks like that JavaScript is disabled in your browser or not supported by your browser. FAVEO doesn't work properly without JavaScript, and it may cause errors in installation. Please check and enable JavaScript in your browser in order to install and run FAVEO to its full extent.</p>
|
||||
</div>
|
||||
<p style="font-size:1.0em">Hello, Sparky! You are just a few steps away from your support system. It looks like that JavaScript is disabled in your browser or not supported by your browser. FAVEO doesn't work properly without JavaScript, and it may cause errors in installation. Please check and enable JavaScript in your browser in order to install and run FAVEO to its full extent.</p>
|
||||
<p class="wc-setup-actions step">
|
||||
<a href="{!! $url !!}"><input type="submit" id="submitme" class="button-primary button button-large button-next" value="Reload" name="accept1"></a>
|
||||
Have you enabled JavaScript?
|
||||
<a href="{!! $url !!}">Click here</a> to reload the page now.
|
||||
</p>
|
||||
</div>
|
||||
</noscript>
|
||||
</div>
|
||||
|
||||
|
@@ -12,37 +12,7 @@ active
|
||||
|
||||
@section('content')
|
||||
|
||||
<?php //dd(ini_get('disable_functions')); ?>
|
||||
|
||||
|
||||
<?php
|
||||
// $sets = explode(",", ini_get('disable_functions'));
|
||||
// $required_functions = ['escapeshellarg'];
|
||||
// foreach ($sets as $key) {
|
||||
// $key = trim($key);
|
||||
// foreach ($required_functions as $value) {
|
||||
// if($key == $value) {
|
||||
// if (strpos(ini_get('disable_functions'), $key) !== false) {
|
||||
// dd("found");
|
||||
// } else {
|
||||
// dd("not - found");
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// dd($sets);
|
||||
|
||||
// // foreach ( as $key => $value) {
|
||||
// // # code...
|
||||
// // }
|
||||
// if (strpos($to_check, $statement) !== false) {
|
||||
// return true;
|
||||
// } else {
|
||||
// return false;
|
||||
// }
|
||||
?>
|
||||
|
||||
<div id="form-content">
|
||||
<div id="form-content">
|
||||
<center><h1>Environment Test</h1></center>
|
||||
@if (Session::has('fail_to_change'))
|
||||
<div class="woocommerce-message woocommerce-tracker" >
|
||||
@@ -208,7 +178,7 @@ function validate_zend_compatibility_mode(&$results) {
|
||||
function validate_extensions(&$results) {
|
||||
$ok = true;
|
||||
|
||||
$required_extensions = array('mcrypt', 'openssl', 'pdo', 'fileinfo', 'curl', 'zip');
|
||||
$required_extensions = array('mcrypt', 'openssl', 'pdo', 'fileinfo', 'curl', 'zip', 'mbstring');
|
||||
|
||||
foreach ($required_extensions as $required_extension) {
|
||||
if (extension_loaded($required_extension)) {
|
||||
@@ -277,6 +247,16 @@ function checkDisabledFunctions(&$results) {
|
||||
return $ok;
|
||||
}
|
||||
|
||||
function checkMaxExecutiontime(&$results)
|
||||
{
|
||||
$ok = true;
|
||||
if ((int)ini_get('max_execution_time') >= 120) {
|
||||
$results[] = new TestResult("Maximum execution time is as per requirement.", STATUS_OK);
|
||||
} else {
|
||||
$results[] = new TestResult("Maximum execution time is too low. Recommneded execution time is 120 seconds ", STATUS_WARNING);
|
||||
}
|
||||
return $ok;
|
||||
}
|
||||
// ---------------------------------------------------
|
||||
// Do the magic
|
||||
// ---------------------------------------------------
|
||||
@@ -288,6 +268,7 @@ $memory_ok = validate_memory_limit($results);
|
||||
$extensions_ok = validate_extensions($results);
|
||||
$file_permission = checkFilePermission($results);
|
||||
$required_functions = checkDisabledFunctions($results);
|
||||
$check_execution_time = checkMaxExecutiontime($results);
|
||||
?>
|
||||
<p class="setup-actions step">
|
||||
<?php
|
||||
@@ -297,7 +278,7 @@ foreach ($results as $result) {
|
||||
?>
|
||||
</p>
|
||||
<?php
|
||||
if ($php_ok && $memory_ok && $extensions_ok && $file_permission && $required_functions) {
|
||||
if ($php_ok && $memory_ok && $extensions_ok && $file_permission && $required_functions && $check_execution_time) {
|
||||
?>
|
||||
</div>
|
||||
|
||||
|
@@ -0,0 +1,63 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-US">
|
||||
<head>
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Faveo HELPDESK</title>
|
||||
<link rel="shortcut icon" href="{{asset("lb-faveo/media/images/favicon.ico")}}">
|
||||
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
|
||||
<link rel="stylesheet" href="{{asset("lb-faveo/css/load-styles.css")}}" type="text/css" media="all">
|
||||
<link rel="stylesheet" href="{{asset("lb-faveo/css/css.css")}}" type="text/css" media="all">
|
||||
<link rel="stylesheet" href="{{asset("lb-faveo/css/admin.css")}}" type="text/css" media="all">
|
||||
<link rel="stylesheet" href="{{asset("lb-faveo/css/wc-setup.css")}}" type="text/css" media="all">
|
||||
<link rel="stylesheet" href="{{asset("lb-faveo/css/activation.css")}}" type="text/css" media="all">
|
||||
<link rel="stylesheet" href="{{asset("lb-faveo/css/style.css")}}" type="text/css" media="all">
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
|
||||
<link href="{{asset("lb-faveo/css/ggpopover.css")}}" rel="stylesheet"/>
|
||||
<link rel="stylesheet" href="{{asset("lb-faveo/css/prism.css")}}">
|
||||
<link rel="stylesheet" href="{{asset("lb-faveo/css/chosen.css")}}">
|
||||
</head>
|
||||
<body class="wc-setup wp-core-ui">
|
||||
<center><h1 id="wc-logo"><a href="http://www.faveohelpdesk.com">
|
||||
<img src="{{asset("lb-faveo/media/installer/faveo.png")}}" alt="faveo" width="
|
||||
250px"></a></h1></center>
|
||||
|
||||
<div class="wc-setup-content">
|
||||
@yield('content')
|
||||
</div>
|
||||
|
||||
|
||||
<p style="text-align: center;"> Copyright © 2015 - <?php echo date('Y')?> · Ladybird Web Solution Pvt Ltd. All Rights Reserved. Powered by <a target="_blank" href="http://www.faveohelpdesk.com">Faveo </a></p>
|
||||
|
||||
|
||||
|
||||
|
||||
<script src="{{asset("lb-faveo/js/ggpopover.js")}}"></script>
|
||||
<script type="text/javascript">
|
||||
$('[data-toggle="popover"]').ggpopover();
|
||||
</script>
|
||||
<!-- <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js" type="text/javascript"></script> -->
|
||||
<script src="{{asset("lb-faveo/js/chosen.jquery.js")}}" type="text/javascript"></script>
|
||||
<script src="{{asset("lb-faveo/js/prism.js")}}" type="text/javascript" charset="utf-8"></script>
|
||||
<script type="text/javascript">
|
||||
var config = {
|
||||
'.chosen-select': {},
|
||||
'.chosen-select-deselect': {
|
||||
allow_single_deselect: true
|
||||
},
|
||||
'.chosen-select-no-single': {
|
||||
disable_search_threshold: 10
|
||||
},
|
||||
'.chosen-select-no-results': {
|
||||
no_results_text: 'Oops, nothing found!'
|
||||
},
|
||||
'.chosen-select-width': {
|
||||
width: "95%"
|
||||
}
|
||||
}
|
||||
for (var selector in config) {
|
||||
$(selector).chosen(config[selector]);
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@@ -7,8 +7,9 @@ foreach($segments as $seg){
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
jQuery(document).ready(function () {
|
||||
var show = 'active';
|
||||
oTable = myFunction(show);
|
||||
var show = 'all';
|
||||
var searchTerm = '';
|
||||
oTable = myFunction(show, searchTerm);
|
||||
|
||||
$("select[name=type_of_profile]").change(function () {
|
||||
//alert($('select[name=type_of_profile]').val());
|
||||
@@ -19,29 +20,91 @@ foreach($segments as $seg){
|
||||
function myFunction(show)
|
||||
{
|
||||
return jQuery('#chumper').dataTable({
|
||||
"sDom": "<'row'<'col-xs-6'l><'col-xs-6'>r>"+
|
||||
"t"+
|
||||
"<'row'<'col-xs-6'i><'col-xs-6'p>>",
|
||||
"sPaginationType": "full_numbers",
|
||||
"bProcessing": true,
|
||||
"bServerSide": true,
|
||||
"ajax": {
|
||||
url: "{{url('user-list')}}",
|
||||
data: function (d) {
|
||||
d.profiletype = show;
|
||||
d.searchTerm = searchTerm;
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
$('.active').on('click', function(){
|
||||
show = 'active';
|
||||
$("#chumper").dataTable().fnDestroy();
|
||||
myFunction(show);
|
||||
$('.all').on('click', function(){
|
||||
show = 'all';
|
||||
classname = '.'+show;
|
||||
filterTable(show);
|
||||
toggleActiveClass(classname);
|
||||
});
|
||||
|
||||
$('.active-users').on('click', function(){
|
||||
show = 'active-users';
|
||||
classname = '.'+show;
|
||||
filterTable(show);
|
||||
toggleActiveClass(classname);
|
||||
|
||||
});
|
||||
|
||||
$('.inactive').on('click', function(){
|
||||
show = 'inactive';
|
||||
$("#chumper").dataTable().fnDestroy();
|
||||
myFunction(show);
|
||||
});
|
||||
classname = '.'+show;
|
||||
filterTable(show);
|
||||
toggleActiveClass(classname);
|
||||
});
|
||||
|
||||
$('.agents').on('click', function(){
|
||||
show = 'agents';
|
||||
classname = '.'+show;
|
||||
filterTable(show);
|
||||
toggleActiveClass(classname);
|
||||
});
|
||||
|
||||
$('.users').on('click', function(){
|
||||
show = 'users';
|
||||
classname = '.'+show;
|
||||
filterTable(show);
|
||||
toggleActiveClass(classname);
|
||||
});
|
||||
|
||||
$('.banned').on('click', function(){
|
||||
show = 'banned';
|
||||
classname = '.'+show;
|
||||
filterTable(show);
|
||||
toggleActiveClass(classname);
|
||||
});
|
||||
|
||||
$('.deleted').on('click', function(){
|
||||
show = 'deleted';
|
||||
classname = '.'+show;
|
||||
filterTable(show);
|
||||
toggleActiveClass(classname);
|
||||
});
|
||||
|
||||
document.getElementById('search-text').onkeypress = function(e){
|
||||
if (!e) e = window.event;
|
||||
var keyCode = e.keyCode || e.which;
|
||||
if (keyCode == '13'){
|
||||
searchTerm = $('input[name=search]').val();
|
||||
$("#chumper").dataTable().fnDestroy();
|
||||
myFunction(show, searchTerm);
|
||||
}
|
||||
}
|
||||
|
||||
function filterTable(show) {
|
||||
$("#chumper").dataTable().fnDestroy();
|
||||
myFunction(show, searchTerm);
|
||||
}
|
||||
|
||||
function toggleActiveClass(classname) {
|
||||
$('.active').removeClass('active');
|
||||
$(classname).parent('li').addClass('active');
|
||||
}
|
||||
});
|
||||
</script>
|
Binary file not shown.
Before Width: | Height: | Size: 1.9 KiB |
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user