Update v1.0.6.4

This commit is contained in:
sujitprasad
2016-02-24 20:38:42 +05:30
parent d39ef2985d
commit 4270cbcfb3
29 changed files with 700 additions and 198 deletions

2
.env
View File

@@ -2,7 +2,7 @@ APP_ENV=local
APP_DEBUG=false APP_DEBUG=false
APP_KEY=SomeRandomString APP_KEY=SomeRandomString
DB_HOST=localhost DB_HOST=localhost
DB_DATABASE=faveocombine DB_DATABASE=faveo-dev
DB_USERNAME=root DB_USERNAME=root
DB_PASSWORD= DB_PASSWORD=
CACHE_DRIVER=file CACHE_DRIVER=file

View File

@@ -1,5 +1,5 @@
<h3>About Faveo</h3> <h3>About Faveo</h3>
<br><img src="https://travis-ci.org/ladybirdweb/faveo-helpdesk.svg?branch=master">&nbsp;<img src="https://img.shields.io/badge/License-OSL-blue.svg">&nbsp;<a href="https://gitter.im/ladybirdweb/faveo-helpdesk" target="_blank"><img src="https://badges.gitter.im/ladybirdweb/faveo-helpdesk.svg"></a><a href="https://styleci.io/repos/34716238">&nbsp;<img src="https://styleci.io/repos/34716238/shield" alt="StyleCI"></a></br> <br><img src="https://travis-ci.org/ladybirdweb/faveo-helpdesk.svg?branch=master">&nbsp;<img src="https://img.shields.io/badge/License-OSL-blue.svg">&nbsp;<a href="https://gitter.im/ladybirdweb/faveo-helpdesk" target="_blank"><img src="https://badges.gitter.im/ladybirdweb/faveo-helpdesk.svg"></a>&nbsp;<a href="https://styleci.io/repos/52062487"><img src="https://styleci.io/repos/52062487/shield" alt="StyleCI"></a></br>
<p>Headquartered in Bangalore, Faveo HELPDESK provides Businesses with an automated Helpdesk system to manage customer support. <p>Headquartered in Bangalore, Faveo HELPDESK provides Businesses with an automated Helpdesk system to manage customer support.
<br/><br/> <br/><br/>
The word Faveo comes from Latin which means to be favourable. Which truly highlights vision and the scope as well as the functionality of the product that Faveo is. It is specifically designed to cater the needs of startups and SMEs empowering them with state of art, ticket based support system. In todays competitive startup scenario customer retention is one of the major challenges. Handling client query diligently is all the difference between retaining or losing a long lasting relationship. The company is driven with passion of providing tools for managing consumer queries for strategic insights and helping companies take those decisive decisions. The word Faveo comes from Latin which means to be favourable. Which truly highlights vision and the scope as well as the functionality of the product that Faveo is. It is specifically designed to cater the needs of startups and SMEs empowering them with state of art, ticket based support system. In todays competitive startup scenario customer retention is one of the major challenges. Handling client query diligently is all the difference between retaining or losing a long lasting relationship. The company is driven with passion of providing tools for managing consumer queries for strategic insights and helping companies take those decisive decisions.
@@ -22,9 +22,11 @@ Faveo is designed & developed by <a href="http://www.ladybirdweb.com/" target="_
<h3><a id="user-content-requirements" href="https://github.com/ladybirdweb/faveo-helpdesk#requirements" aria-hidden="true"></a>Requirements</h3> <h3><a id="user-content-requirements" href="https://github.com/ladybirdweb/faveo-helpdesk#requirements" aria-hidden="true"></a>Requirements</h3>
<p>To run Faveo your host just needs a couple of things:</p> <p>To run Faveo your host just needs a couple of things:</p>
<ul> <ul>
<li>PHP 5.5 or greater</li> <li> Web Server: Apache or IIS or Nginx</li>
<li>MySQL 5.5 or greater</li> <li> PHP Version: 5.5+</li>
<li>The mod_rewrite Apache module</li> <li> PHP Extensions: Mcrypt, OpenSSL, Mbstring, Tokenizer</li>
<li> Database: MySQL(5.0+) or Postgres or SQLite or SQL Server</li>
<li> Web Server Extension: Pretty URLs or Search Engine Friendly URL's have to be enabled in your web server configuration</li>
</ul> </ul>
<h3>Faveo Web Hosting</h3> <h3>Faveo Web Hosting</h3>
@@ -41,9 +43,16 @@ Faveo is designed & developed by <a href="http://www.ladybirdweb.com/" target="_
<h3>YouTube Channel</h3> <h3>YouTube Channel</h3>
<p><a href="https://www.youtube.com/channel/UC-eqh-h241b1janp6sU7Iiw" target="_blank">Click here</a></p> <p><a href="https://www.youtube.com/channel/UC-eqh-h241b1janp6sU7Iiw" target="_blank">Click here</a></p>
<h3>Road Map for Community Edition:</h3> <h3>Road Map for Community Edition:</h3>
<p><a href="http://www.faveohelpdesk.com/faveo-helpdesk-road-map" target="_blank">Click here</a></p> <p><a href="http://www.faveohelpdesk.com/faveo-helpdesk-road-map" target="_blank">Click here</a></p>
<h3>Faveo Probe:</h3>
<p>Helps verify whether your server can run Faveo or not.
<a href="https://github.com/ladybirdweb/faveo-probe" target="_blank">Download here</a></p>
<h3>Faveo Community:</h3>
<p>Join Faveo discussion group and stay tuned to latest updates.
<a href="https://www.linkedin.com/groups/8429668" target="_blank">Join here</a></p>
<h3>Don't panic if you come across bugs</h3> <h3>Don't panic if you come across bugs</h3>
<p>Faveo is very very new in the market, the product is fully working and is production worthy but it definitely will have some bugs like any software. We fully support Faveo whether free or pro edition, incase you come across any bugs, email us through the <a href="http://www.faveohelpdesk.com/contact-us/">contact form</a>. We want to make your experience of using Faveo as memorable as possible, so help us make Faveo a World, top class helpdesk application. Do check out our roadmap to stayed tuned with future releases </p> <p>Faveo is very very new in the market, the product is fully working and is production worthy but it definitely will have some bugs like any software. We fully support Faveo whether free or pro edition, incase you come across any bugs, email us through the <a href="http://www.faveohelpdesk.com/contact-us/">contact form</a>. We want to make your experience of using Faveo as memorable as possible, so help us make Faveo a World, top class helpdesk application. Do check out our roadmap to stayed tuned with future releases </p>

View File

@@ -2,12 +2,12 @@
namespace App\Exceptions; namespace App\Exceptions;
// controller
use App\Http\Controllers\Common\PhpMailController;
use Exception; use Exception;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
// use App\Http\Controllers\Common\SettingsController;
//use App\Model\helpdesk\Email\Smtp;
class Handler extends ExceptionHandler class Handler extends ExceptionHandler
{ {
/** /**
@@ -19,14 +19,18 @@ class Handler extends ExceptionHandler
'Symfony\Component\HttpKernel\Exception\HttpException', 'Symfony\Component\HttpKernel\Exception\HttpException',
]; ];
/** /**
* Create a new controller instance. * Create a new controller instance.
* * constructor to check
* @return type response * 1. php mailer
* @return void
*/ */
// public function __construct() { public function __construct(PhpMailController $PhpMailController)
// SettingsController::smtp(); {
// } $this->PhpMailController = $PhpMailController;
}
/** /**
* Report or log an exception. * Report or log an exception.
@@ -46,7 +50,7 @@ class Handler extends ExceptionHandler
* Render an exception into an HTTP response. * Render an exception into an HTTP response.
* *
* @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Request $request
* @param \Exception $e * @param \Exception $e
* *
* @return \Illuminate\Http\Response * @return \Illuminate\Http\Response
*/ */
@@ -54,39 +58,50 @@ class Handler extends ExceptionHandler
{ {
if ($e instanceof \Tymon\JWTAuth\Exceptions\TokenExpiredException) { if ($e instanceof \Tymon\JWTAuth\Exceptions\TokenExpiredException) {
return response()->json(['message' => $e->getMessage(), 'code' => $e->getStatusCode()]); return response()->json(['message' => $e->getMessage(), 'code' => $e->getStatusCode()]);
//dd($e);
} elseif ($e instanceof \Tymon\JWTAuth\Exceptions\TokenInvalidException) { } elseif ($e instanceof \Tymon\JWTAuth\Exceptions\TokenInvalidException) {
return response()->json(['message' => $e->getMessage(), 'code' => $e->getStatusCode()]); return response()->json(['message' => $e->getMessage(), 'code' => $e->getStatusCode()]);
} }
// This is to check if the debug is true or false
// if (config('app.debug') == false) { if (config('app.debug') == false) {
// if ($this->isHttpException($e) && $e->getStatusCode() == 404) { // checking if the error is actually an error page or if its an system error page
// return response()->view('errors.404', []); if ($this->isHttpException($e) && $e->getStatusCode() == 404) {
// } else { return response()->view('errors.404', []);
// if (\Config::get('database.install') == 1) { } else {
// // if(\Config::get('app.ErrorLog') == '%1%') { // checking if the application is installed
// // \App\Http\Controllers\Common\SettingsController::smtp(); if (\Config::get('database.install') == 1) {
// // $this->PhpMailController->sendmail($from = $this->PhpMailController->mailfrom('1', '0'), $to = ['name' => '', 'email' => ''], $message = ['subject' => '', 'scenario'=>'error-report'], $template_variables = ['e' =>$e ]); // checking if the error log send to Ladybirdweb is enabled or not
// // } if(\Config::get('app.ErrorLog') == '%1%') {
// } $this->PhpMailController->sendmail($from = $this->PhpMailController->mailfrom('1', '0'), $to = ['name' => 'faveo logger', 'email' => 'faveoerrorlogger@gmail.com'], $message = ['subject' => 'Faveo downloaded from github has occured error', 'scenario'=>'error-report'], $template_variables = ['e' => $e]);
// return response()->view('errors.500', []); }
// } }
// } return response()->view('errors.500', []);
// return parent::render($request, $e); }
}
// returns non oops error message
return parent::render($request, $e);
// checking if the error is related to http error i.e. page not found
if ($this->isHttpException($e)) { if ($this->isHttpException($e)) {
// returns error for page not found
return $this->renderHttpException($e); return $this->renderHttpException($e);
} }
// checking if the config app sebug is enabled or not
if (config('app.debug')) { if (config('app.debug')) {
// returns oops error page i.e. colour full error page
return $this->renderExceptionWithWhoops($e); return $this->renderExceptionWithWhoops($e);
} }
return parent::render($request, $e); return parent::render($request, $e);
} }
/**
* function to generate oops error page
* @param \Exception $e
* @return \Illuminate\Http\Response
*/
protected function renderExceptionWithWhoops(Exception $e) protected function renderExceptionWithWhoops(Exception $e)
{ {
// new instance of whoops class to display customized error page
$whoops = new \Whoops\Run(); $whoops = new \Whoops\Run();
$whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler()); $whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler());

View File

@@ -114,6 +114,10 @@ class EmailsController extends Controller
$email->password = $encrypted; $email->password = $encrypted;
$email->save(); $email->save();
$email_settings = Email::where('id', '=', '1')->first();
$email_settings->sys_email = $email->id;
$email_settings->save();
return redirect('emails')->with('success', 'Email Created sucessfully'); return redirect('emails')->with('success', 'Email Created sucessfully');
} else { } else {
return redirect('emails')->with('fails', 'Email can not Create'); return redirect('emails')->with('fails', 'Email can not Create');
@@ -217,8 +221,8 @@ class EmailsController extends Controller
public function destroy($id, Emails $email) public function destroy($id, Emails $email)
{ {
$default_system_email = Email::where('id', '=', '1')->first(); $default_system_email = Email::where('id', '=', '1')->first();
if ($default_system_email->id) { if ($default_system_email->sys_email) {
if ($id == $default_system_email->id) { if ($id == $default_system_email->sys_email) {
return redirect('emails')->with('fails', 'You cannot delete system default Email'); return redirect('emails')->with('fails', 'You cannot delete system default Email');
} }
} }

View File

@@ -513,4 +513,16 @@ class SettingsController extends Controller
return redirect()->back()->with('success', 'Successfully Deleted'); return redirect()->back()->with('success', 'Successfully Deleted');
} }
/**
* Generate Api key.
*
* @return type json
*/
public function generateApiKey()
{
$key = str_random(32);
return $key;
}
} }

View File

@@ -4,7 +4,6 @@ namespace App\Http\Controllers\Agent\helpdesk;
// controllers // controllers
use App\Http\Controllers\Common\PhpMailController; use App\Http\Controllers\Common\PhpMailController;
use App\Http\Controllers\Common\SettingsController;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
// requests // requests
use App\Http\Requests\helpdesk\CreateTicketRequest; use App\Http\Requests\helpdesk\CreateTicketRequest;
@@ -15,7 +14,7 @@ use App\Model\helpdesk\Agent\Teams;
use App\Model\helpdesk\Email\Emails; use App\Model\helpdesk\Email\Emails;
use App\Model\helpdesk\Form\Fields; use App\Model\helpdesk\Form\Fields;
use App\Model\helpdesk\Manage\Help_topic; use App\Model\helpdesk\Manage\Help_topic;
use App\Model\Helpdesk\Manage\Sla_plan; use App\Model\helpdesk\Manage\Sla_plan;
use App\Model\helpdesk\Settings\Alert; use App\Model\helpdesk\Settings\Alert;
use App\Model\helpdesk\Settings\Company; use App\Model\helpdesk\Settings\Company;
use App\Model\helpdesk\Settings\Email; use App\Model\helpdesk\Settings\Email;
@@ -33,6 +32,7 @@ use App\Model\helpdesk\Utility\Timezones;
use App\User; use App\User;
use Auth; use Auth;
use DB; use DB;
use UTC;
// classes // classes
use Exception; use Exception;
use Hash; use Hash;
@@ -44,7 +44,7 @@ use PDF;
/** /**
* TicketController. * TicketController.
* *
* @author Ladybird <info@ladybirdweb.com> * @author Ladybird <info@ladybirdweb.com>
*/ */
class TicketController extends Controller class TicketController extends Controller
{ {
@@ -56,7 +56,6 @@ class TicketController extends Controller
public function __construct(PhpMailController $PhpMailController) public function __construct(PhpMailController $PhpMailController)
{ {
$this->PhpMailController = $PhpMailController; $this->PhpMailController = $PhpMailController;
SettingsController::smtp();
$this->middleware('auth'); $this->middleware('auth');
} }
@@ -85,10 +84,14 @@ class TicketController extends Controller
}) })
->addColumn('subject', function ($ticket) { ->addColumn('subject', function ($ticket) {
$subject = DB::table('ticket_thread')->select('title')->where('ticket_id', '=', $ticket->id)->first(); $subject = DB::table('ticket_thread')->select('title')->where('ticket_id', '=', $ticket->id)->first();
$string = $subject->title; if (isset($subject->title)) {
if (strlen($string) > 20) { $string = $subject->title;
$stringCut = substr($string, 0, 30); if (strlen($string) > 20) {
$string = substr($stringCut, 0, strrpos($stringCut, ' ')).' ...'; $stringCut = substr($string, 0, 30);
$string = substr($stringCut, 0, strrpos($stringCut, ' ')).' ...';
}
} else {
$string = "(no subject)";
} }
//collabrations //collabrations
$collaborators = DB::table('ticket_collaborator')->where('ticket_id', '=', $ticket->id)->get(); $collaborators = DB::table('ticket_collaborator')->where('ticket_id', '=', $ticket->id)->get();
@@ -158,7 +161,7 @@ class TicketController extends Controller
$TicketData = Ticket_Thread::where('ticket_id', '=', $ticket->id)->max('id'); $TicketData = Ticket_Thread::where('ticket_id', '=', $ticket->id)->max('id');
$TicketDatarow = Ticket_Thread::select('updated_at')->where('id', '=', $TicketData)->first(); $TicketDatarow = Ticket_Thread::select('updated_at')->where('id', '=', $TicketData)->first();
return date('d F Y, H:i:s', strtotime($TicketDatarow->updated_at)); return UTC::usertimezone($TicketDatarow->updated_at);
}) })
->searchColumns('subject', 'from', 'assigned_to', 'ticket_number', 'priority') ->searchColumns('subject', 'from', 'assigned_to', 'ticket_number', 'priority')
->orderColumns('subject', 'from', 'assigned_to', 'Last Replier', 'ticket_number', 'priority', 'Last') ->orderColumns('subject', 'from', 'assigned_to', 'Last Replier', 'ticket_number', 'priority', 'Last')
@@ -188,17 +191,20 @@ class TicketController extends Controller
$dept = Department::where('id', '=', Auth::user()->primary_dpt)->first(); $dept = Department::where('id', '=', Auth::user()->primary_dpt)->first();
$tickets = Tickets::where('status', '=', 1)->where('isanswered', '=', 0)->where('assigned_to', '=', 0)->where('dept_id', '=', $dept->id)->get(); $tickets = Tickets::where('status', '=', 1)->where('isanswered', '=', 0)->where('assigned_to', '=', 0)->where('dept_id', '=', $dept->id)->get();
} }
return \Datatable::collection(new Collection($tickets)) return \Datatable::collection(new Collection($tickets))
->addColumn('id', function ($ticket) { ->addColumn('id', function ($ticket) {
return "<input type='checkbox' name='select_all[]' class='icheckbox_flat-blue' value='".$ticket->id."'></input>"; return "<input type='checkbox' name='select_all[]' class='icheckbox_flat-blue' value='".$ticket->id."'></input>";
}) })
->addColumn('subject', function ($ticket) { ->addColumn('subject', function ($ticket) {
$subject = DB::table('ticket_thread')->select('title')->where('ticket_id', '=', $ticket->id)->first(); $subject = DB::table('ticket_thread')->select('title')->where('ticket_id', '=', $ticket->id)->first();
$string = $subject->title; if (isset($subject->title)) {
if (strlen($string) > 20) { $string = $subject->title;
$stringCut = substr($string, 0, 30); if (strlen($string) > 20) {
$string = substr($stringCut, 0, strrpos($stringCut, ' ')).' ...'; $stringCut = substr($string, 0, 30);
$string = substr($stringCut, 0, strrpos($stringCut, ' ')).' ...';
}
} else {
$string = "(no subject)";
} }
//collabrations //collabrations
$collaborators = DB::table('ticket_collaborator')->where('ticket_id', '=', $ticket->id)->get(); $collaborators = DB::table('ticket_collaborator')->where('ticket_id', '=', $ticket->id)->get();
@@ -265,7 +271,8 @@ class TicketController extends Controller
$TicketData = Ticket_Thread::where('ticket_id', '=', $ticket->id)->max('id'); $TicketData = Ticket_Thread::where('ticket_id', '=', $ticket->id)->max('id');
$TicketDatarow = Ticket_Thread::select('updated_at')->where('id', '=', $TicketData)->first(); $TicketDatarow = Ticket_Thread::select('updated_at')->where('id', '=', $TicketData)->first();
return date('d F Y, H:i:s', strtotime($TicketDatarow->updated_at)); // return date('d F Y, H:i:s', strtotime($TicketDatarow->updated_at));
return UTC::usertimezone($TicketDatarow->updated_at);
}) })
->searchColumns('subject', 'from', 'assigned_to', 'ticket_number', 'priority') ->searchColumns('subject', 'from', 'assigned_to', 'ticket_number', 'priority')
->orderColumns('subject', 'from', 'assigned_to', 'Last Replier', 'ticket_number', 'priority', 'Last') ->orderColumns('subject', 'from', 'assigned_to', 'Last Replier', 'ticket_number', 'priority', 'Last')
@@ -302,10 +309,14 @@ class TicketController extends Controller
}) })
->addColumn('subject', function ($ticket) { ->addColumn('subject', function ($ticket) {
$subject = DB::table('ticket_thread')->select('title')->where('ticket_id', '=', $ticket->id)->first(); $subject = DB::table('ticket_thread')->select('title')->where('ticket_id', '=', $ticket->id)->first();
$string = $subject->title; if (isset($subject->title)) {
if (strlen($string) > 20) { $string = $subject->title;
$stringCut = substr($string, 0, 30); if (strlen($string) > 20) {
$string = substr($stringCut, 0, strrpos($stringCut, ' ')).' ...'; $stringCut = substr($string, 0, 30);
$string = substr($stringCut, 0, strrpos($stringCut, ' ')).' ...';
}
} else {
$string = "(no subject)";
} }
//collabrations //collabrations
$collaborators = DB::table('ticket_collaborator')->where('ticket_id', '=', $ticket->id)->get(); $collaborators = DB::table('ticket_collaborator')->where('ticket_id', '=', $ticket->id)->get();
@@ -372,7 +383,8 @@ class TicketController extends Controller
$TicketData = Ticket_Thread::where('ticket_id', '=', $ticket->id)->max('id'); $TicketData = Ticket_Thread::where('ticket_id', '=', $ticket->id)->max('id');
$TicketDatarow = Ticket_Thread::select('updated_at')->where('id', '=', $TicketData)->first(); $TicketDatarow = Ticket_Thread::select('updated_at')->where('id', '=', $TicketData)->first();
return date('d F Y, H:i:s', strtotime($TicketDatarow->updated_at)); // return date('d F Y, H:i:s', strtotime($TicketDatarow->updated_at));
return UTC::usertimezone($TicketDatarow->updated_at);
}) })
->searchColumns('subject', 'from', 'assigned_to', 'ticket_number', 'priority') ->searchColumns('subject', 'from', 'assigned_to', 'ticket_number', 'priority')
->orderColumns('subject', 'from', 'assigned_to', 'Last Replier', 'ticket_number', 'priority', 'Last') ->orderColumns('subject', 'from', 'assigned_to', 'Last Replier', 'ticket_number', 'priority', 'Last')
@@ -404,10 +416,14 @@ class TicketController extends Controller
}) })
->addColumn('subject', function ($ticket) { ->addColumn('subject', function ($ticket) {
$subject = DB::table('ticket_thread')->select('title')->where('ticket_id', '=', $ticket->id)->first(); $subject = DB::table('ticket_thread')->select('title')->where('ticket_id', '=', $ticket->id)->first();
$string = $subject->title; if (isset($subject->title)) {
if (strlen($string) > 20) { $string = $subject->title;
$stringCut = substr($string, 0, 30); if (strlen($string) > 20) {
$string = substr($stringCut, 0, strrpos($stringCut, ' ')).' ...'; $stringCut = substr($string, 0, 30);
$string = substr($stringCut, 0, strrpos($stringCut, ' ')).' ...';
}
} else {
$string = "(no subject)";
} }
//collabrations //collabrations
$collaborators = DB::table('ticket_collaborator')->where('ticket_id', '=', $ticket->id)->get(); $collaborators = DB::table('ticket_collaborator')->where('ticket_id', '=', $ticket->id)->get();
@@ -474,7 +490,8 @@ class TicketController extends Controller
$TicketData = Ticket_Thread::where('ticket_id', '=', $ticket->id)->max('id'); $TicketData = Ticket_Thread::where('ticket_id', '=', $ticket->id)->max('id');
$TicketDatarow = Ticket_Thread::select('updated_at')->where('id', '=', $TicketData)->first(); $TicketDatarow = Ticket_Thread::select('updated_at')->where('id', '=', $TicketData)->first();
return date('d F Y, H:i:s', strtotime($TicketDatarow->updated_at)); // return date('d F Y, H:i:s', strtotime($TicketDatarow->updated_at));
return UTC::usertimezone($TicketDatarow->updated_at);
}) })
->searchColumns('subject', 'from', 'assigned_to', 'ticket_number', 'priority') ->searchColumns('subject', 'from', 'assigned_to', 'ticket_number', 'priority')
->orderColumns('subject', 'from', 'assigned_to', 'Last Replier', 'ticket_number', 'priority', 'Last') ->orderColumns('subject', 'from', 'assigned_to', 'Last Replier', 'ticket_number', 'priority', 'Last')
@@ -516,10 +533,14 @@ class TicketController extends Controller
}) })
->addColumn('subject', function ($ticket) { ->addColumn('subject', function ($ticket) {
$subject = DB::table('ticket_thread')->select('title')->where('ticket_id', '=', $ticket->id)->first(); $subject = DB::table('ticket_thread')->select('title')->where('ticket_id', '=', $ticket->id)->first();
$string = $subject->title; if (isset($subject->title)) {
if (strlen($string) > 20) { $string = $subject->title;
$stringCut = substr($string, 0, 30); if (strlen($string) > 20) {
$string = substr($stringCut, 0, strrpos($stringCut, ' ')).' ...'; $stringCut = substr($string, 0, 30);
$string = substr($stringCut, 0, strrpos($stringCut, ' ')).' ...';
}
} else {
$string = "(no subject)";
} }
//collabrations //collabrations
$collaborators = DB::table('ticket_collaborator')->where('ticket_id', '=', $ticket->id)->get(); $collaborators = DB::table('ticket_collaborator')->where('ticket_id', '=', $ticket->id)->get();
@@ -585,7 +606,8 @@ class TicketController extends Controller
$TicketData = Ticket_Thread::where('ticket_id', '=', $ticket->id)->max('id'); $TicketData = Ticket_Thread::where('ticket_id', '=', $ticket->id)->max('id');
$TicketDatarow = Ticket_Thread::select('updated_at')->where('id', '=', $TicketData)->first(); $TicketDatarow = Ticket_Thread::select('updated_at')->where('id', '=', $TicketData)->first();
return date('d F Y, H:i:s', strtotime($TicketDatarow->updated_at)); // return date('d F Y, H:i:s', strtotime($TicketDatarow->updated_at));
return UTC::usertimezone($TicketDatarow->updated_at);
}) })
->searchColumns('subject', 'from', 'assigned_to', 'ticket_number', 'priority') ->searchColumns('subject', 'from', 'assigned_to', 'ticket_number', 'priority')
->orderColumns('subject', 'from', 'assigned_to', 'Last Replier', 'ticket_number', 'priority', 'Last') ->orderColumns('subject', 'from', 'assigned_to', 'Last Replier', 'ticket_number', 'priority', 'Last')
@@ -617,10 +639,14 @@ class TicketController extends Controller
}) })
->addColumn('subject', function ($ticket) { ->addColumn('subject', function ($ticket) {
$subject = DB::table('ticket_thread')->select('title')->where('ticket_id', '=', $ticket->id)->first(); $subject = DB::table('ticket_thread')->select('title')->where('ticket_id', '=', $ticket->id)->first();
$string = $subject->title; if (isset($subject->title)) {
if (strlen($string) > 20) { $string = $subject->title;
$stringCut = substr($string, 0, 30); if (strlen($string) > 20) {
$string = substr($stringCut, 0, strrpos($stringCut, ' ')).' ...'; $stringCut = substr($string, 0, 30);
$string = substr($stringCut, 0, strrpos($stringCut, ' ')).' ...';
}
} else {
$string = "(no subject)";
} }
//collabrations //collabrations
$collaborators = DB::table('ticket_collaborator')->where('ticket_id', '=', $ticket->id)->get(); $collaborators = DB::table('ticket_collaborator')->where('ticket_id', '=', $ticket->id)->get();
@@ -687,7 +713,8 @@ class TicketController extends Controller
$TicketData = Ticket_Thread::where('ticket_id', '=', $ticket->id)->max('id'); $TicketData = Ticket_Thread::where('ticket_id', '=', $ticket->id)->max('id');
$TicketDatarow = Ticket_Thread::select('updated_at')->where('id', '=', $TicketData)->first(); $TicketDatarow = Ticket_Thread::select('updated_at')->where('id', '=', $TicketData)->first();
return date('d F Y, H:i:s', strtotime($TicketDatarow->updated_at)); // return date('d F Y, H:i:s', strtotime($TicketDatarow->updated_at));
return UTC::usertimezone($TicketDatarow->updated_at);
}) })
->searchColumns('subject', 'from', 'assigned_to', 'ticket_number', 'priority') ->searchColumns('subject', 'from', 'assigned_to', 'ticket_number', 'priority')
->orderColumns('subject', 'from', 'assigned_to', 'Last Replier', 'ticket_number', 'priority', 'Last') ->orderColumns('subject', 'from', 'assigned_to', 'Last Replier', 'ticket_number', 'priority', 'Last')
@@ -1009,7 +1036,8 @@ class TicketController extends Controller
* @param type $emailadd * @param type $emailadd
* @param type $username * @param type $username
* @param type $subject * @param type $subject
* @param type $body *
@param type $body
* @param type $phone * @param type $phone
* @param type $helptopic * @param type $helptopic
* @param type $sla * @param type $sla
@@ -1051,14 +1079,13 @@ class TicketController extends Controller
// Event fire // Event fire
\Event::fire(new \App\Events\ReadMailEvent($user_id, $password)); \Event::fire(new \App\Events\ReadMailEvent($user_id, $password));
// if (Mail::send('emails.pass', ['password' => $password, 'name' => $username, 'from'=>$company,'emailadd' => $emailadd], function ($message) use ($emailadd, $username,$company) { // if (Mail::send('emails.pass', ['password' => $password, 'name' => $username, 'from'=>$company,'emailadd' => $emailadd], function ($message) use ($emailadd, $username,$company) {
// $message->to($emailadd, $username)->subject('Welcome to '.$company.' helpdesk'); // $message->to($emailadd, $username)->subject('Welcome to '.$company.' helpdesk');
// })) { // })) {
// try { try {
$this->PhpMailController->sendmail($from = $this->PhpMailController->mailfrom('1', '0'), $to = ['name' => $username, 'email' => $emailadd], $message = ['subject' => 'Welcome to '.$company.' helpdesk', 'scenario' => 'registration-notification'], $template_variables = ['user' => $username, 'email_address' => $emailadd, 'user_password' => $password]); $this->PhpMailController->sendmail($from = $this->PhpMailController->mailfrom('1', '0'), $to = ['name' => $username, 'email' => $emailadd], $message = ['subject' => 'Welcome to '.$company.' helpdesk', 'scenario' => 'registration-notification'], $template_variables = ['user' => $username, 'email_address' => $emailadd, 'user_password' => $password]);
// } catch (\Exception $e) { } catch (\Exception $e) {
// return 0; // return 0;
// } }
// $message->to($emailadd, $username)->subject('Welcome to '.$company.' helpdesk'); // $message->to($emailadd, $username)->subject('Welcome to '.$company.' helpdesk');
// })) { // })) {
// need to do something here.... // need to do something here....
@@ -1094,7 +1121,7 @@ class TicketController extends Controller
if ($source == 3) { if ($source == 3) {
// Mail::send('emails.Ticket_Create', ['sign'=>$sign, 'content' => $body, 'name' => $username, 'ticket_number' => $ticket_number2, 'system' => $system], function ($message) use ($emailadd, $username, $ticket_number2, $updated_subject) { // Mail::send('emails.Ticket_Create', ['sign'=>$sign, 'content' => $body, 'name' => $username, 'ticket_number' => $ticket_number2, 'system' => $system], function ($message) use ($emailadd, $username, $ticket_number2, $updated_subject) {
// $message->to($emailadd, $username)->subject($updated_subject); // $message->to($emailadd, $username)->subject($updated_subject);
// }); // });
// dd($body); // dd($body);
try { try {
@@ -1104,7 +1131,7 @@ class TicketController extends Controller
} else { } else {
$body2 = null; $body2 = null;
// Mail::send('emails.Ticket_Create', ['sign'=>$sign, 'content' => $body2, 'name' => $username, 'ticket_number' => $ticket_number2, 'system' => $system], function ($message) use ($emailadd, $username, $ticket_number2, $updated_subject) { // Mail::send('emails.Ticket_Create', ['sign'=>$sign, 'content' => $body2, 'name' => $username, 'ticket_number' => $ticket_number2, 'system' => $system], function ($message) use ($emailadd, $username, $ticket_number2, $updated_subject) {
// $message->to($emailadd, $username)->subject($updated_subject); // $message->to($emailadd, $username)->subject($updated_subject);
// }); // });
try { try {
$this->PhpMailController->sendmail($from = $this->PhpMailController->mailfrom('0', $ticketdata->dept_id), $to = ['name' => $username, 'email' => $emailadd], $message = ['subject' => $updated_subject, 'scenario' => 'create-ticket'], $template_variables = ['user' => $username, 'ticket_number' => $ticket_number2, 'department_sign' => '']); $this->PhpMailController->sendmail($from = $this->PhpMailController->mailfrom('0', $ticketdata->dept_id), $to = ['name' => $username, 'email' => $emailadd], $message = ['subject' => $updated_subject, 'scenario' => 'create-ticket'], $template_variables = ['user' => $username, 'ticket_number' => $ticket_number2, 'department_sign' => '']);
@@ -1122,7 +1149,7 @@ class TicketController extends Controller
$admin_email = $admin->email; $admin_email = $admin->email;
$admin_user = $admin->first_name; $admin_user = $admin->first_name;
// Mail::send('emails.'.$mail, ['agent' => $admin_user,'content'=>$body, 'ticket_number' => $ticket_number2, 'from'=>$company, 'email' => $emailadd, 'name' => $ticket_creator, 'system' => $system], function ($message) use ($admin_email, $admin_user, $ticket_number2, $updated_subject) { // Mail::send('emails.'.$mail, ['agent' => $admin_user,'content'=>$body, 'ticket_number' => $ticket_number2, 'from'=>$company, 'email' => $emailadd, 'name' => $ticket_creator, 'system' => $system], function ($message) use ($admin_email, $admin_user, $ticket_number2, $updated_subject) {
// $message->to($admin_email, $admin_user)->subject($updated_subject); // $message->to($admin_email, $admin_user)->subject($updated_subject);
// }); // });
try { try {
$this->PhpMailController->sendmail($from = $this->PhpMailController->mailfrom('0', $ticketdata->dept_id), $to = ['user' => $admin_user, 'email' => $admin_email], $message = ['subject' => $updated_subject, 'body' => $body, 'scenario' => $mail], $template_variables = ['ticket_agent_name' => $admin_user, 'ticket_client_name' => $username, 'ticket_client_email' => $emailadd, 'user' => $admin_user, 'ticket_number' => $ticket_number2, 'email_address' => $emailadd, 'name' => $ticket_creator]); $this->PhpMailController->sendmail($from = $this->PhpMailController->mailfrom('0', $ticketdata->dept_id), $to = ['user' => $admin_user, 'email' => $admin_email], $message = ['subject' => $updated_subject, 'body' => $body, 'scenario' => $mail], $template_variables = ['ticket_agent_name' => $admin_user, 'ticket_client_name' => $username, 'ticket_client_email' => $emailadd, 'user' => $admin_user, 'ticket_number' => $ticket_number2, 'email_address' => $emailadd, 'name' => $ticket_creator]);
@@ -1143,7 +1170,7 @@ class TicketController extends Controller
$agent_email = $agent->email; $agent_email = $agent->email;
$agent_user = $agent->first_name; $agent_user = $agent->first_name;
// Mail::send('emails.'.$mail, ['agent' => $agent_user ,'content'=>$body , 'ticket_number' => $ticket_number2, 'from'=>$company, 'email' => $emailadd, 'name' => $ticket_creator, 'system' => $system], function ($message) use ($agent_email, $agent_user, $ticket_number2, $updated_subject) { // Mail::send('emails.'.$mail, ['agent' => $agent_user ,'content'=>$body , 'ticket_number' => $ticket_number2, 'from'=>$company, 'email' => $emailadd, 'name' => $ticket_creator, 'system' => $system], function ($message) use ($agent_email, $agent_user, $ticket_number2, $updated_subject) {
// $message->to($agent_email, $agent_user)->subject($updated_subject); // $message->to($agent_email, $agent_user)->subject($updated_subject);
// }); // });
try { try {
$this->PhpMailController->sendmail($from = $this->PhpMailController->mailfrom('0', $ticketdata->dept_id), $to = ['user' => $agent_user, 'email' => $agent_email], $message = ['subject' => $updated_subject, 'body' => $body, 'scenario' => $mail], $template_variables = ['ticket_agent_name' => $admin_user, 'ticket_client_name' => $username, 'ticket_client_email' => $emailadd, 'user' => $agent_user, 'ticket_number' => $ticket_number2, 'email_address' => $emailadd, 'name' => $ticket_creator]); $this->PhpMailController->sendmail($from = $this->PhpMailController->mailfrom('0', $ticketdata->dept_id), $to = ['user' => $agent_user, 'email' => $agent_email], $message = ['subject' => $updated_subject, 'body' => $body, 'scenario' => $mail], $template_variables = ['ticket_agent_name' => $admin_user, 'ticket_client_name' => $username, 'ticket_client_email' => $emailadd, 'user' => $agent_user, 'ticket_number' => $ticket_number2, 'email_address' => $emailadd, 'name' => $ticket_creator]);
@@ -1425,7 +1452,7 @@ class TicketController extends Controller
$system_from = $this->company(); $system_from = $this->company();
// Mail::send('emails.close_ticket', ['ticket_number' => $ticket_number, 'from'=>$company], function ($message) use ($email, $user_name, $ticket_number, $ticket_subject) { // Mail::send('emails.close_ticket', ['ticket_number' => $ticket_number, 'from'=>$company], function ($message) use ($email, $user_name, $ticket_number, $ticket_subject) {
// $message->to($email, $user_name)->subject($ticket_subject.'[#' . $ticket_number . ']'); // $message->to($email, $user_name)->subject($ticket_subject.'[#' . $ticket_number . ']');
// }); // });
$sending_emails = Emails::where('department', '=', $ticket_status->dept_id)->first(); $sending_emails = Emails::where('department', '=', $ticket_status->dept_id)->first();
@@ -1586,10 +1613,10 @@ class TicketController extends Controller
// $master = Auth::user()->first_name . " " . Auth::user()->last_name; // $master = Auth::user()->first_name . " " . Auth::user()->last_name;
// if(Alert::first()->internal_status == 1 || Alert::first()->internal_assigned_agent == 1) { // if(Alert::first()->internal_status == 1 || Alert::first()->internal_assigned_agent == 1) {
// // ticket assigned send mail // // ticket assigned send mail
// Mail::send('emails.Ticket_assign', ['agent' => $agent, 'ticket_number' => $ticket_number, 'from'=>$company, 'master' => $master, 'system' => $system], function ($message) use ($agent_email, $agent, $ticket_number, $ticket_subject) { // Mail::send('emails.Ticket_assign', ['agent' => $agent, 'ticket_number' => $ticket_number, 'from'=>$company, 'master' => $master, 'system' => $system], function ($message) use ($agent_email, $agent, $ticket_number, $ticket_subject) {
// $message->to($agent_email, $agent)->subject($ticket_subject.'[#' . $ticket_number . ']'); // $message->to($agent_email, $agent)->subject($ticket_subject.'[#' . $ticket_number . ']');
// }); // });
// } // }
} elseif ($assign_to[0] == 'user') { } elseif ($assign_to[0] == 'user') {
$ticket->assigned_to = $assign_to[1]; $ticket->assigned_to = $assign_to[1];
@@ -1619,8 +1646,8 @@ class TicketController extends Controller
// if(Alert::first()->internal_status == 1 || Alert::first()->internal_assigned_agent == 1) { // if(Alert::first()->internal_status == 1 || Alert::first()->internal_assigned_agent == 1) {
// ticket assigned send mail // ticket assigned send mail
// Mail::send('emails.Ticket_assign', ['agent' => $agent, 'ticket_number' => $ticket_number, 'from'=>$company, 'master' => $master, 'system' => $system], function ($message) use ($agent_email, $agent, $ticket_number, $ticket_subject) { // Mail::send('emails.Ticket_assign', ['agent' => $agent, 'ticket_number' => $ticket_number, 'from'=>$company, 'master' => $master, 'system' => $system], function ($message) use ($agent_email, $agent, $ticket_number, $ticket_subject) {
// $message->to($agent_email, $agent)->subject($ticket_subject.'[#' . $ticket_number . ']'); // $message->to($agent_email, $agent)->subject($ticket_subject.'[#' . $ticket_number . ']');
// }); // });
// $sending_emails = Emails::where('department', '=', $ticket->dept_id)->first(); // $sending_emails = Emails::where('department', '=', $ticket->dept_id)->first();
// if($sending_emails == null) { // if($sending_emails == null) {
// $from_email = $this->system_mail(); // $from_email = $this->system_mail();
@@ -1761,7 +1788,7 @@ class TicketController extends Controller
$user_id = $create_user->id; $user_id = $create_user->id;
// Mail::send('emails.pass', ['password' => $password, 'name' => $name, 'from'=>$company,'emailadd' => $email], function ($message) use ($email, $name) { // Mail::send('emails.pass', ['password' => $password, 'name' => $name, 'from'=>$company,'emailadd' => $email], function ($message) use ($email, $name) {
// $message->to($email, $name)->subject('password'); // $message->to($email, $name)->subject('password');
// }); // });
// $sending_emails = Emails::where('department', '=', $ticket_status->dept_id)->first(); // $sending_emails = Emails::where('department', '=', $ticket_status->dept_id)->first();
// if($sending_emails == null) { // if($sending_emails == null) {
@@ -1829,28 +1856,28 @@ class TicketController extends Controller
* @return type * @return type
*/ */
// public function search() { // public function search() {
// $product = Input::get('type'); // $product = Input::get('type');
// $word = Input::get('name_startsWith'); // $word = Input::get('name_startsWith');
// if ($product == 'product') { // if ($product == 'product') {
// $starts_with = strtoupper($word); // $starts_with = strtoupper($word);
// $rows = DB::table('users')->select('user_name')->where('name', 'LIKE', $starts_with . '%')->get(); // $rows = DB::table('users')->select('user_name')->where('name', 'LIKE', $starts_with . '%')->get();
// $data = array(); // $data = array();
// foreach ($rows as $row) { // foreach ($rows as $row) {
// array_push($data, $row->name); // array_push($data, $row->name);
// } // }
// print_r(json_encode($data)); // print_r(json_encode($data));
// } // }
// if ($product == 'product_table') { // if ($product == 'product_table') {
// $row_num = Input::get('row_num'); // $row_num = Input::get('row_num');
// $starts_with = strtoupper($word); // $starts_with = strtoupper($word);
// $rows = DB::table('product')->select('name', 'description', 'cost_price')->where('name', 'LIKE', $starts_with . '%')->get(); // $rows = DB::table('product')->select('name', 'description', 'cost_price')->where('name', 'LIKE', $starts_with . '%')->get();
// $data = array(); // $data = array();
// foreach ($rows as $row) { // foreach ($rows as $row) {
// $name = $row->name . '|' . $row->description . '|' . $row->cost_price . '|' . $row_num; // $name = $row->name . '|' . $row->description . '|' . $row->cost_price . '|' . $row_num;
// array_push($data, $name); // array_push($data, $name);
// } // }
// print_r(json_encode($data)); // print_r(json_encode($data));
// } // }
// } // }
/** /**
@@ -1887,10 +1914,14 @@ class TicketController extends Controller
}) })
->addColumn('subject', function ($ticket) { ->addColumn('subject', function ($ticket) {
$subject = DB::table('ticket_thread')->select('title')->where('ticket_id', '=', $ticket->id)->first(); $subject = DB::table('ticket_thread')->select('title')->where('ticket_id', '=', $ticket->id)->first();
$string = $subject->title; if (isset($subject->title)) {
if (strlen($string) > 20) { $string = $subject->title;
$stringCut = substr($string, 0, 30); if (strlen($string) > 20) {
$string = substr($stringCut, 0, strrpos($stringCut, ' ')).' ...'; $stringCut = substr($string, 0, 30);
$string = substr($stringCut, 0, strrpos($stringCut, ' ')).' ...';
}
} else {
$string = "(no subject)";
} }
//collabrations //collabrations
$collaborators = DB::table('ticket_collaborator')->where('ticket_id', '=', $ticket->id)->get(); $collaborators = DB::table('ticket_collaborator')->where('ticket_id', '=', $ticket->id)->get();
@@ -1957,7 +1988,8 @@ class TicketController extends Controller
$TicketData = Ticket_Thread::where('ticket_id', '=', $ticket->id)->max('id'); $TicketData = Ticket_Thread::where('ticket_id', '=', $ticket->id)->max('id');
$TicketDatarow = Ticket_Thread::select('updated_at')->where('id', '=', $TicketData)->first(); $TicketDatarow = Ticket_Thread::select('updated_at')->where('id', '=', $TicketData)->first();
return date('d F Y, H:i:s', strtotime($TicketDatarow->updated_at)); // return date('d F Y, H:i:s', strtotime($TicketDatarow->updated_at));
return UTC::usertimezone($TicketDatarow->updated_at);
}) })
->searchColumns('subject', 'from', 'assigned_to', 'ticket_number', 'priority') ->searchColumns('subject', 'from', 'assigned_to', 'ticket_number', 'priority')
->orderColumns('subject', 'from', 'assigned_to', 'Last Replier', 'ticket_number', 'priority', 'Last') ->orderColumns('subject', 'from', 'assigned_to', 'Last Replier', 'ticket_number', 'priority', 'Last')
@@ -1994,10 +2026,14 @@ class TicketController extends Controller
}) })
->addColumn('subject', function ($ticket) { ->addColumn('subject', function ($ticket) {
$subject = DB::table('ticket_thread')->select('title')->where('ticket_id', '=', $ticket->id)->first(); $subject = DB::table('ticket_thread')->select('title')->where('ticket_id', '=', $ticket->id)->first();
$string = $subject->title; if (isset($subject->title)) {
if (strlen($string) > 20) { $string = $subject->title;
$stringCut = substr($string, 0, 30); if (strlen($string) > 20) {
$string = substr($stringCut, 0, strrpos($stringCut, ' ')).' ...'; $stringCut = substr($string, 0, 30);
$string = substr($stringCut, 0, strrpos($stringCut, ' ')).' ...';
}
} else {
$string = "(no subject)";
} }
//collabrations //collabrations
$collaborators = DB::table('ticket_collaborator')->where('ticket_id', '=', $ticket->id)->get(); $collaborators = DB::table('ticket_collaborator')->where('ticket_id', '=', $ticket->id)->get();
@@ -2064,7 +2100,8 @@ class TicketController extends Controller
$TicketData = Ticket_Thread::where('ticket_id', '=', $ticket->id)->max('id'); $TicketData = Ticket_Thread::where('ticket_id', '=', $ticket->id)->max('id');
$TicketDatarow = Ticket_Thread::select('updated_at')->where('id', '=', $TicketData)->first(); $TicketDatarow = Ticket_Thread::select('updated_at')->where('id', '=', $TicketData)->first();
return date('d F Y, H:i:s', strtotime($TicketDatarow->updated_at)); // return date('d F Y, H:i:s', strtotime($TicketDatarow->updated_at));
return UTC::usertimezone($TicketDatarow->updated_at);
}) })
->searchColumns('subject', 'from', 'assigned_to', 'ticket_number', 'priority') ->searchColumns('subject', 'from', 'assigned_to', 'ticket_number', 'priority')
->orderColumns('subject', 'from', 'assigned_to', 'Last Replier', 'ticket_number', 'priority', 'Last') ->orderColumns('subject', 'from', 'assigned_to', 'Last Replier', 'ticket_number', 'priority', 'Last')
@@ -2181,7 +2218,7 @@ class TicketController extends Controller
$user_id = $user->id; $user_id = $user->id;
// Mail::send('emails.pass', ['password' => $password, 'name' => $name, 'from'=>$company,'emailadd'=>$email], function ($message) use ($email, $name) { // Mail::send('emails.pass', ['password' => $password, 'name' => $name, 'from'=>$company,'emailadd'=>$email], function ($message) use ($email, $name) {
// $message->to($email, $name)->subject('password'); // $message->to($email, $name)->subject('password');
// }); // });
// $sending_emails = Emails::where('department', '=', $ticket_status->dept_id)->first(); // $sending_emails = Emails::where('department', '=', $ticket_status->dept_id)->first();
// if($sending_emails == null) { // if($sending_emails == null) {

View File

@@ -245,10 +245,10 @@ class PhpMailController extends Controller
// $mail->AltBody = $altbody; // $mail->AltBody = $altbody;
if (!$mail->send()) { if (!$mail->send()) {
echo 'Message could not be sent.'; // echo 'Message could not be sent.';
echo 'Mailer Error: '.$mail->ErrorInfo; // echo 'Mailer Error: '.$mail->ErrorInfo;
} else { } else {
echo 'Message has been sent'; // echo 'Message has been sent';
} }
} }

View File

@@ -278,11 +278,20 @@ class InstallController extends Controller
*/ */
public function accountcheck(InstallerRequest $request) public function accountcheck(InstallerRequest $request)
{ {
// checking is the installation was done previously
try {
$check_for_pre_installation = System::all();
if($check_for_pre_installation) {
return redirect()->back()->with('fails', 'The data in database already exist. Please provide fresh database');
}
} catch (Exception $e) {
}
// migrate database // migrate database
Artisan::call('migrate', ['--force' => true]); Artisan::call('migrate', ['--force' => true]);
Artisan::call('db:seed', ['--force' => true]); Artisan::call('db:seed', ['--force' => true]);
// create user // create user
$firstname = $request->input('firstname'); $firstname = $request->input('firstname');
$lastname = $request->input('Lastname'); $lastname = $request->input('Lastname');

View File

@@ -178,6 +178,8 @@ Route::group(['middleware' => 'roles', 'middleware' => 'auth'], function () {
//Routes for delete language package //Routes for delete language package
Route::get('delete-language/{lang}', ['as' => 'lang.delete', 'uses' => 'Admin\helpdesk\LanguageController@deleteLanguage']); Route::get('delete-language/{lang}', ['as' => 'lang.delete', 'uses' => 'Admin\helpdesk\LanguageController@deleteLanguage']);
Route::get('generate-api-key', 'Admin\helpdesk\SettingsController@GenerateApiKey'); // route to generate api key
}); });
/* /*

11
app/Model/kb/Footer.php Normal file
View File

@@ -0,0 +1,11 @@
<?php
namespace App\Model\kb;
use Illuminate\Database\Eloquent\Model;
class Footer extends Model
{
protected $table = 'footer';
protected $fillable = ['title', 'footer'];
}

11
app/Model/kb/Footer2.php Normal file
View File

@@ -0,0 +1,11 @@
<?php
namespace App\Model\kb;
use Illuminate\Database\Eloquent\Model;
class Footer2 extends Model
{
protected $table = 'footer2';
protected $fillable = ['title', 'footer'];
}

11
app/Model/kb/Footer3.php Normal file
View File

@@ -0,0 +1,11 @@
<?php
namespace App\Model\kb;
use Illuminate\Database\Eloquent\Model;
class Footer3 extends Model
{
protected $table = 'footer3';
protected $fillable = ['title', 'footer'];
}

11
app/Model/kb/Footer4.php Normal file
View File

@@ -0,0 +1,11 @@
<?php
namespace App\Model\kb;
use Illuminate\Database\Eloquent\Model;
class Footer4 extends Model
{
protected $table = 'footer4';
protected $fillable = ['title', 'footer'];
}

View File

@@ -38,7 +38,7 @@ return [
| |
*/ */
'version' => 'Community 1.0.6.2', 'version' => 'Community 1.0.6.4',
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
@@ -143,6 +143,52 @@ return [
// //
/* /*
* Laravel Framework Service Providers... * Laravel Framework Service Providers...
*/ */
@@ -245,7 +291,7 @@ return [
'SMTPS' => 'App\Http\Controllers\HomeController', 'SMTPS' => 'App\Http\Controllers\HomeController',
'Datatable' => 'Chumper\Datatable\Facades\DatatableFacade', 'Datatable' => 'Chumper\Datatable\Facades\DatatableFacade',
'Zipper' => 'Chumper\Zipper\Zipper', 'Zipper' => 'Chumper\Zipper\Zipper',
'Image' => Intervention\Image\Facades\Image::class, 'Image' => Intervention\Image\Facades\Image::class,
'JWTAuth' => 'Tymon\JWTAuth\Facades\JWTAuth', 'JWTAuth' => 'Tymon\JWTAuth\Facades\JWTAuth',
'JWTFactory' => 'Tymon\JWTAuth\Facades\JWTFactory', 'JWTFactory' => 'Tymon\JWTAuth\Facades\JWTFactory',

View File

@@ -101,7 +101,7 @@ return [
| installed or not. | installed or not.
| |
*/ */
'install' => '%0%', 'install' => '1',
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Redis Databases | Redis Databases

View File

@@ -9,7 +9,7 @@ return [
'shared_folder_name' => 'shares', 'shared_folder_name' => 'shares',
'thumb_folder_name' => 'thumbs', 'thumb_folder_name' => 'thumbs',
'images_dir' => 'public/photos/', 'images_dir' => 'public/photos/',
'images_url' => '%url%', 'images_url' => url('photos').'/',
'files_dir' => 'public/files/', 'files_dir' => 'public/files/',
'files_url' => '/files/', 'files_url' => '/files/',
'file_type_array' => [ 'file_type_array' => [

6
index.html Normal file
View File

@@ -0,0 +1,6 @@
<html>
<head>
<title>Faveo HELPDESK</title>
<META http-equiv="refresh" content=".001;URL=public">
</head>
</html>

58
public/lb-faveo/js/angular2.js vendored Normal file
View File

@@ -0,0 +1,58 @@
var myApp = angular.module('myApp', []);
myApp.controller('MainController', ['$http', '$scope',
function($http, $scope) {
// $http.get('url').success(function(data) {
//
// });
//titile and content for page 3
$scope.Databasetitle = 'Database Type';
$scope.Databasecontent = 'Faveo supports 3 databases, choose anyone which your server supports';
$scope.Hosttitle = 'Database Host';
$scope.Hostcontent = 'You should be able to get this info from your web host, if localhost doesnt work';
$scope.Porttitle = 'Database Port number';
$scope.Portcontent = 'This is an optional field, by default port no wil be default port no of the database choosen, enter this field only if your database is not running on default port no';
$scope.Databasenametitle = 'Database Name';
$scope.Databasenamecontent = 'The name of the database you want to run Faveo in';
$scope.Usertitle = 'Database Username';
$scope.Usercontent = 'Your Database username';
$scope.Passwordtitle = 'Database Password';
$scope.Passwordcontent = 'Your Database user password';
//titile and content for page 4
$scope.Nametitle = 'First Name';
$scope.Namecontent = 'System administrator first name';
$scope.Lasttitle = 'Last Name';
$scope.Lastcontent = 'System administrator last name';
$scope.Emailtitle = 'Email';
$scope.Emailcontent = 'Email Double-check your email address before continuing';
$scope.UserNametitle = 'User Name';
$scope.UserNamecontent = 'Usernames can have only alphanumeric characters, spaces, underscores, hyphens, periods, and the @ symbol.';
$scope.Passtitle = 'Password';
$scope.Passcontent = 'Important: You will need this password to log in. Please store it in a secure location.';
$scope.Confirmtitle = 'Confirm Password';
$scope.Confirmcontent = 'Type the same password as above';
$scope.Languagetitle = 'Faveo Language';
$scope.Languagecontent = 'The language you want to run Faveo in';
$scope.Timezonetitle = 'Time Zone';
$scope.Timezonecontent = 'Faveo default time zone';
$scope.Datetimetitle = 'Faveo Date & Time format';
$scope.Datetimecontent = 'What format you want to display date & time in Faveo';
}
]);

View File

@@ -53,6 +53,6 @@
</form> </form>
<a href="{{url('password/email')}}">{!! Lang::get("lang.iforgot") !!}</a><br> <a href="{{url('password/email')}}">{!! Lang::get("lang.iforgot") !!}</a><br>
<a href="{{url('auth/register')}}" class="text-center">{!! Lang::get("lang.reg_new_member") !!}</a> <a href="{{url('auth/register')}}" class="text-center">{!! Lang::get("lang.register") !!}</a>
<!-- /.login-page --> <!-- /.login-page -->
@stop @stop

View File

@@ -22,12 +22,26 @@
<!-- Email --> <!-- Email -->
<input type="hidden" name="_token" value="{{ csrf_token() }}"> <input type="hidden" name="_token" value="{{ csrf_token() }}">
<!-- Email --> <!-- Email -->
<div class="input-group margin"> <!-- <div class="input-group margin"> -->
<div class="form-group has-feedback {{ $errors->has('email') ? 'has-error' : '' }}">
<input type="email" class="form-control" name="email" placeholder="{!! Lang::get('lang.email') !!}" value="{{ old('email') }}"> <input type="email" class="form-control" name="email" placeholder="{!! Lang::get('lang.email') !!}" value="{{ old('email') }}">
<span class="input-group-btn"><button type="submit" class="btn btn-primary btn-block btn-flat">{!! Lang::get('lang.send') !!}</button></span> <span class="glyphicon glyphicon-envelope form-control-feedback"></span>
</div> </div>
<div class="row">
<div class="col-xs-8">
<a href="{{url('auth/login')}}" class="text-center">{!! Lang::get('lang.i_know_my_password') !!}</a>
</div>
<div class="col-xs-4">
<span class="input-group-btn"><button type="submit" class="btn btn-primary btn-block btn-flat">{!! Lang::get('lang.send') !!}</button></span>
<br/>
</div>
</div>
<!-- </div> -->
</form> </form>
<a href="{{url('auth/login')}}" class="text-center">{!! Lang::get('lang.i_know_my_password') !!}</a>
<!-- /.login-page --> <!-- /.login-page -->
@stop @stop

View File

@@ -58,7 +58,7 @@
<div class="col-xs-8"> <div class="col-xs-8">
<div class="checkbox icheck"> <div class="checkbox icheck">
<label> <label>
<input type="checkbox">{!! Lang::get('lang.i_agree_to_the') !!} <a href="#">{!! Lang::get('lang.terms') !!}</a> <a href="{{url('auth/login')}}" class="text-center">{!! Lang::get('lang.login') !!}</a>
</label> </label>
</div> </div>
</div><!-- /.col --> </div><!-- /.col -->
@@ -67,7 +67,7 @@
</div><!-- /.col --> </div><!-- /.col -->
</div> </div>
<a href="{{url('auth/login')}}" class="text-center">{!! Lang::get('lang.i_already_have_a_membership') !!}</a>
{!! Form::close()!!} {!! Form::close()!!}
@stop @stop

View File

@@ -81,7 +81,7 @@ class="active"
<div class="form-group {{ $errors->has('sys_email') ? 'has-error' : '' }}"> <div class="form-group {{ $errors->has('sys_email') ? 'has-error' : '' }}">
{!! Form::label('sys_email',Lang::get('lang.default_system_email')) !!} {!! Form::label('sys_email',Lang::get('lang.default_system_email')) !!}
{!! $errors->first('sys_email', '<spam class="help-block">:message</spam>') !!} {!! $errors->first('sys_email', '<spam class="help-block">:message</spam>') !!}
{!!Form::select('sys_email', $emails1->lists('email_name','id'),null,['class'=>'form-control']) !!} {!!Form::select('sys_email', [ 'Select an Email', 'Emails' => $emails1->lists('email_name','id')],null,['class'=>'form-control']) !!}
</div> </div>
</div> </div>
</div> </div>

View File

@@ -132,26 +132,97 @@ class="active"
{!! Form::select('date_time_format',[''=>'Select a date Time Format','Date Time Formats'=>$date_time->lists('format','id')],null,['class' => 'form-control']) !!} {!! Form::select('date_time_format',[''=>'Select a date Time Format','Date Time Formats'=>$date_time->lists('format','id')],null,['class' => 'form-control']) !!}
</div> </div>
</div> </div>
</div> </div>
<hr/>
<h4>{!! Lang::get('lang.api_configurations') !!}</h4>
<!-- Guest user page Content --> <!-- Guest user page Content -->
<div class="row"> <div class="row">
<!-- Default Time Zone: Drop down: timezones table : Required -->
<div class="col-md-3">
<div class="form-group {{ $errors->has('api_enable') ? 'has-error' : '' }}">
{!! Form::label('api',Lang::get('lang.api')) !!}
{!! $errors->first('api_enable', '<spam class="help-block">:message</spam>') !!}
<div class="row">
<div class="col-xs-5">
{!! Form::radio('api_enable','1',true) !!} {{Lang::get('lang.enable')}}
</div>
<div class="col-xs-5">
{!! Form::radio('api_enable','0') !!} {{Lang::get('lang.disable')}}
</div>
</div>
</div>
</div>
<!-- Date and Time Format: text: required: eg - 03/25/2015 7:14 am -->
<div class="col-md-6">
<div class="form-group {{ $errors->has('api_key') ? 'has-error' : '' }}">
{!! Form::label('api_key',Lang::get('lang.api_key')) !!}
{!! $errors->first('api_key', '<spam class="help-block">:message</spam>') !!}
{!! Form::text('api_key',$systems->api_key,['class' => 'form-control']) !!}
</div>
</div>
<div class="col-md-3">
<br/>
<a class="btn btn-primary" id="generate"> <i class="fa fa-refresh"> </i> {!! Lang::get('lang.generate_key') !!}</a>
</div>
</div> </div>
<script language="JavaScript" type="text/javascript">
CKEDITOR.replace( 'content',
{
filebrowserUploadUrl : '/uploader/upload.php'
});
CKEDITOR.replace( 'content', { toolbar : 'MyToolbar' } );
</script>
</div> </div>
<a href="#" id="clickGenerate" data-toggle="modal" data-target="#generateModal"></a>
<div class="modal fade" id="generateModal">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title">{!! Lang::get('lang.api_key') !!}</h4>
</div>
<div class="modal-body" id="messageBody">
</div>
<div class="modal-footer" id="messageBody">
<button type="button" class="btn btn-default" data-dismiss="modal" aria-label="Close">{!! Lang::get('lang.close') !!}</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
<script src="{{asset("lb-faveo/js/ajax-jquery.min.js")}}"></script>
<script type="text/javascript">
jQuery(document).ready(function() {
// Close a ticket
$('#generate').on('click', function(e) {
$.ajax({
type: "GET",
url: "{!! url('generate-api-key') !!}",
beforeSend: function() {
$("#generate").empty();
var message = "<i class='fa fa-refresh fa-spin'> </i> <?php echo Lang::get('lang.generate_key'); ?>";
$('#generate').html(message);
},
success: function(response) {
// alert(response);
$("#messageBody").empty();
var message = "<div class='alert alert-default' style='margin-bottom: -5px;'>Copy and paste in the api to set a different Api key</div> <br/><b>Api key</b> : " + response;
$('#messageBody').html(message);
$('#clickGenerate').trigger("click");
$("#generate").empty();
var message = "<i class='fa fa-refresh'> </i> <?php echo Lang::get('lang.generate_key'); ?>";
$('#generate').html(message);
}
})
return false;
});
});
</script>
@stop @stop

View File

@@ -190,13 +190,15 @@ echo UTC::usertimezone(date_format($time, 'Y-m-d H:i:s'));
</div> </div>
<div id="hide2"> <div id="hide2">
<div class="col-md-6"> <div class="col-md-6">
<table class="table table-hover"id="refresh"> <table class="table table-hover">
<tr><td><b>{!! Lang::get('lang.status') !!}:</b></td> <?php $status = App\Model\helpdesk\Ticket\Ticket_Status::where('id', '=', $tickets->status)->first();?><td title="{{$status->properties}}">{{$status->name}}</td></tr> <div id="refresh">
<tr><td><b>{!! Lang::get('lang.priority') !!}:</b></td> <?php $priority = App\Model\helpdesk\Ticket\Ticket_Priority::where('priority_id', '=', $tickets->priority_id)->first();?><td title="{{$priority->priority_desc}}">{{$priority->priority_desc}}</td></tr> <tr><td><b>{!! Lang::get('lang.status') !!}:</b></td> <?php $status = App\Model\helpdesk\Ticket\Ticket_Status::where('id', '=', $tickets->status)->first();?><td title="{{$status->properties}}">{{$status->name}}</td></tr>
<tr><td><b>{!! Lang::get('lang.department') !!}:</b></td> <?php $help_topic = App\Model\helpdesk\Manage\Help_topic::where('id', '=', $tickets->help_topic_id)->first();?><td title="{{$help_topic->topic}}">{{$help_topic->topic}}</td></tr> <tr><td><b>{!! Lang::get('lang.priority') !!}:</b></td> <?php $priority = App\Model\helpdesk\Ticket\Ticket_Priority::where('priority_id', '=', $tickets->priority_id)->first();?><td title="{{$priority->priority_desc}}">{{$priority->priority_desc}}</td></tr>
<tr><td><b>{!! Lang::get('lang.email') !!}:</b></td> <td>{{$user->email}}</td></tr> <tr><td><b>{!! Lang::get('lang.department') !!}:</b></td> <?php $help_topic = App\Model\helpdesk\Manage\Help_topic::where('id', '=', $tickets->help_topic_id)->first();?><td title="{{$help_topic->topic}}">{{$help_topic->topic}}</td></tr>
@if($user->ban > 0) <tr><td style="color:orange;"><i class="fa fa-warning"></i><b> <tr><td><b>{!! Lang::get('lang.email') !!}:</b></td> <td>{{$user->email}}</td></tr>
{!! Lang::get('lang.this_ticket_is_under_banned_user')!!}</td><td></td></tr>@endif @if($user->ban > 0) <tr><td style="color:orange;"><i class="fa fa-warning"></i><b>
{!! Lang::get('lang.this_ticket_is_under_banned_user')!!}</td><td></td></tr>@endif
</div>
</table> </table>
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
@@ -221,14 +223,16 @@ echo UTC::usertimezone(date_format($time, 'Y-m-d H:i:s'));
$ticket_source = $tickets->source; $ticket_source = $tickets->source;
?> ?>
<table class="table table-hover"> <table class="table table-hover">
<div id="refresh3">
@if($user->phone_number !=null)<tr><td><b>Phone:</b></td> <td>{{$user->phone_number}}</td></tr>@endif @if($user->phone_number !=null)<tr><td><b>Phone:</b></td> <td>{{$user->phone_number}}</td></tr>@endif
@if($user->mobile !=null)<tr><td><b>Phone:</b></td> <td>{{$user->ext . $user->phone_number}}</td></tr>@endif @if($user->mobile !=null)<tr><td><b>Phone:</b></td> <td>{{$user->ext . $user->phone_number}}</td></tr>@endif
<tr><td><b>{!! Lang::get('lang.source') !!}:</b></td> <td>{{$ticket_source}}</td></tr> <tr><td><b>{!! Lang::get('lang.source') !!}:</b></td> <td>{{$ticket_source}}</td></tr>
<tr><td><b>{!! Lang::get('lang.help_topic') !!}:</b></td> <?php $help_topic = App\Model\helpdesk\Manage\Help_topic::where('id', '=', $tickets->help_topic_id)->first();?><td title="{{$help_topic->topic}}">{{$help_topic->topic}}</td></tr> <tr><td><b>{!! Lang::get('lang.help_topic') !!}:</b></td> <?php $help_topic = App\Model\helpdesk\Manage\Help_topic::where('id', '=', $tickets->help_topic_id)->first();?><td title="{{$help_topic->topic}}">{{$help_topic->topic}}</td></tr>
<?php Event::fire(new App\Events\TicketDetailTable($TicketData)); ?> <?php Event::fire(new App\Events\TicketDetailTable($TicketData)); ?>
<tr><td><b>{!! Lang::get('lang.last_message') !!}:</b></td> <td>{{$username}}</td></tr> <tr><td><b>{!! Lang::get('lang.last_message') !!}:</b></td> <td>{{$username}}</td></tr>
<?php Event::fire(new App\Events\TicketDetailTable($TicketData)); ?> <?php Event::fire(new App\Events\TicketDetailTable($TicketData)); ?>
</div>
</table> </table>
</div> </div>
</div> </div>
@@ -237,6 +241,9 @@ echo UTC::usertimezone(date_format($time, 'Y-m-d H:i:s'));
</div> </div>
</div> </div>
{{-- Event fire --}} {{-- Event fire --}}
<div id="resultdiv">
</div>
<div class='row'> <div class='row'>
<div class='col-xs-12'> <div class='col-xs-12'>
<div class="nav-tabs-custom"> <div class="nav-tabs-custom">
@@ -290,15 +297,17 @@ echo UTC::usertimezone(date_format($time, 'Y-m-d H:i:s'));
{!! Form::label('To', Lang::get('lang.to').':') !!} {!! Form::label('To', Lang::get('lang.to').':') !!}
</div> </div>
<div class="col-md-10"> <div class="col-md-10">
{!! Form::text('To',$user->email,['disabled'=>'disabled','id'=>'email','class'=>'form-control','style'=>'width:55%'])!!} <div id="refreshTo">
{!! $errors->first('To', '<spam class="help-block text-red">:message</spam>') !!} {!! Form::text('To',$user->email,['disabled'=>'disabled','id'=>'email','class'=>'form-control','style'=>'width:55%'])!!}
<a href="#" data-toggle="modal" data-target="#addccc"> {!! Lang::get('lang.add_cc') !!} </a> {!! $errors->first('To', '<spam class="help-block text-red">:message</spam>') !!}
<div id="recepients"> <a href="#" data-toggle="modal" data-target="#addccc"> {!! Lang::get('lang.add_cc') !!} </a>
<?php $Collaborator = App\Model\helpdesk\Ticket\Ticket_Collaborator::where('ticket_id', '=', $tickets->id)->get(); <div id="recepients">
$count_collaborator = count($Collaborator);?> <?php $Collaborator = App\Model\helpdesk\Ticket\Ticket_Collaborator::where('ticket_id', '=', $tickets->id)->get();
@if($count_collaborator > 0) $count_collaborator = count($Collaborator);?>
<a href="#" data-toggle="modal" data-target="#surrender2">({!! $count_collaborator !!}) {!! Lang::get('lang.recepients') !!} </a> @if($count_collaborator > 0)
@endif <a href="#" data-toggle="modal" data-target="#surrender2">({!! $count_collaborator !!}) {!! Lang::get('lang.recepients') !!} </a>
@endif
</div>
</div> </div>
</div> </div>
</div> </div>
@@ -349,7 +358,9 @@ $canneds = App\Model\helpdesk\Agent_panel\Canned::where('user_id','=',Auth::user
<div class="form-group {{ $errors->has('title') ? 'has-error' : '' }}"> <div class="form-group {{ $errors->has('title') ? 'has-error' : '' }}">
<div class="col-md-2"></div> <div class="col-md-2"></div>
<div class="col-md-10"> <div class="col-md-10">
<button id="replybtn" type="submit" class="btn btn-primary"><i class="fa fa-check-square-o" style="color:white;"> </i> {!! Lang::get('lang.update') !!}</button> <div id="t5">
<button id="replybtn" type="submit" class="btn btn-primary"><i class="fa fa-check-square-o" style="color:white;"> </i> {!! Lang::get('lang.update') !!}</button>
</div>
</div> </div>
</div> </div>
</div> </div>
@@ -1454,7 +1465,7 @@ $(document).ready(function () {
$("#refresh").load("../thread/{{$tickets->id}} #refresh"); $("#refresh").load("../thread/{{$tickets->id}} #refresh");
$("#refresh1").load("../thread/{{$tickets->id}} #refresh1"); $("#refresh1").load("../thread/{{$tickets->id}} #refresh1");
$("#refresh3").load("../thread/{{$tickets->id}} #refresh3"); $("#refresh3").load("../thread/{{$tickets->id}} #refresh3");
$("#t1").load("../thread/{{$tickets->id}} #t1"); $("#refreshTo").load("../thread/{{$tickets->id}} #refreshTo");
var message = "Success! owner has been changed for this ticket."; var message = "Success! owner has been changed for this ticket.";
$("#alert11").show(); $("#alert11").show();
$('#message-success1').html(message); $('#message-success1').html(message);
@@ -1486,7 +1497,7 @@ $(document).ready(function () {
$("#refresh").load("../thread/{{$tickets->id}} #refresh"); $("#refresh").load("../thread/{{$tickets->id}} #refresh");
$("#refresh1").load("../thread/{{$tickets->id}} #refresh1"); $("#refresh1").load("../thread/{{$tickets->id}} #refresh1");
$("#refresh3").load("../thread/{{$tickets->id}} #refresh3"); $("#refresh3").load("../thread/{{$tickets->id}} #refresh3");
$("#t1").load("../thread/{{$tickets->id}} #t1"); $("#refreshTo").load("../thread/{{$tickets->id}} #refreshTo");
var message = "Success! owner has been changed for this ticket."; var message = "Success! owner has been changed for this ticket.";
$("#alert11").show(); $("#alert11").show();
$('#message-success1').html(message); $('#message-success1').html(message);
@@ -1717,10 +1728,7 @@ $(document).ready(function () {
return false; return false;
} }
$(document).ready(function() { $(document).ready(function() {
var locktime = '<?php echo $var->collision_avoid;?>'*60*1000; var locktime = '<?php echo $var->collision_avoid;?>'*60*1000;
lockAjaxCall(locktime); lockAjaxCall(locktime);
setInterval(function() {// to call ajax for ticket lock repeatedly after defined lock time interval setInterval(function() {// to call ajax for ticket lock repeatedly after defined lock time interval
@@ -1737,7 +1745,6 @@ function lockAjaxCall(locktime){
data: $(this).serialize(), data: $(this).serialize(),
success: function(response) { success: function(response) {
if(response == 0) { if(response == 0) {
var message = "{{Lang::get('lang.locked-ticket')}}"; var message = "{{Lang::get('lang.locked-ticket')}}";
$("#alert22").show(); $("#alert22").show();
$('#message-warning2').html(message); $('#message-warning2').html(message);
@@ -1747,7 +1754,11 @@ function lockAjaxCall(locktime){
// alert(response); // alert(response);
// var message = "{{Lang::get('lang.access-ticket')}}"+locktime/(60*1000) // var message = "{{Lang::get('lang.access-ticket')}}"+locktime/(60*1000)
// +"{{Lang::get('lang.minutes')}}"; // +"{{Lang::get('lang.minutes')}}";
// $("#alert22").hide(); $("#alert22").hide();
$("#refresh").load("../thread/{{$tickets->id}} #refresh");
$("#refresh1").load("../thread/{{$tickets->id}} #refresh1");
$("#refresh3").load("../thread/{{$tickets->id}} #refresh3");
$("#t5").load("../thread/{{$tickets->id}} #t5");
// $("#alert21").show(); // $("#alert21").show();
// $('#message-success2').html(message); // $('#message-success2').html(message);
$('#replybtn').attr('disabled', false); $('#replybtn').attr('disabled', false);
@@ -1772,12 +1783,6 @@ function lockAjaxCall(locktime){
$(this).html($('<span />').width(Math.max(0, (Math.min(5, parseFloat($(this).html())))) * 16)); $(this).html($('<span />').width(Math.max(0, (Math.min(5, parseFloat($(this).html())))) * 16));
}); });
} }
</script> </script>
@stop @stop

View File

@@ -86,7 +86,6 @@ $helptopic = App\Model\helpdesk\Manage\Help_topic::get();
} }
?> ?>
<option value="{!! $default_helptopic !!}">Default</option>
@foreach($helptopic as $topic) @foreach($helptopic as $topic)
<option value="{!! $topic->id !!}">{!! $topic->topic !!}</option> <option value="{!! $topic->id !!}">{!! $topic->topic !!}</option>
@endforeach @endforeach

View File

@@ -0,0 +1,73 @@
@extends('themes.default1.installer.layout.installer')
@section('serial')
active
@stop
@section('content')
<div class="wc-setup-content" ng-app="myApp">
<h1 style="text-align: center;">Faveo HELPDESK Serial Key</h1>
<p><strong>Please enter your serial key for Faveo HELPDESK PRO</strong></p>
@if(Session::has('success'))
<div class="wc-setup-content">
<div class="woocommerce-message woocommerce-tracker">
<div class="ok">
<span id="fail">{{Session::get('success')}}</span><br/><br/>
</div>
</div>
</div>
@endif
<!-- fail message -->
@if(Session::has('fails'))
<div class="wc-setup-content">
<div class="woocommerce-message woocommerce-tracker">
<div class="fail">
<span id="fail">{{Session::get('fails')}}</span><br/><br/>
</div>
</div>
</div>
@endif
<form action="http://www.faveohelpdesk.com/billing/serial" method="post">
<input type="hidden" name="domain" value="http://{{ $_SERVER['HTTP_HOST'] }}">
<input type="hidden" name="url" value="http://{{$_SERVER['HTTP_HOST']}}{{$_SERVER['REQUEST_URI']}}">
<input type="hidden" name="_token" value="{{csrf_token()}}">
<table ng-controller="AutotabController">
<div>
<p ng-bind="user"></p>
</div>
<tr >
<td style="width: 200px;">
<label for="box1" id="test">Order Number<span style="color: red;font-size:12px;">*</span>
</label>
<br/><br/>
</td>
<td style="">
{!! $errors->first('order_no', '<spam class="help-block">:message</spam>') !!}
<input type="text" name="order_no" style="margin-left:180px;width:274px;" value="010451236">
<br/><br/>
</td>
</tr>
<tr>
<td style="width: 200px;">
<label for="box1" id="test">Serial key<span style="color: red;font-size:12px;">*</span>
</label>
</td>
<td ng-repeat="productKey in productKeys" style="margin-left: 150px;">
{!! $errors->first('serial', '<spam class="help-block">:message</spam>') !!}
<input type="text" name="first" id="productKey1" ng-model="productKey.set1" maxlength="4" size="4" required style="padding: 3px; margin-left: 180px; width: 50px;">&nbsp;-
<input type="text" name="second" id="productKey2" ng-model="productKey.set2" maxlength="4" size="4" required style="padding: 3px; margin-left: 3px; width: 50px;">&nbsp;-
<input type="text" name="third" id="productKey3" ng-model="productKey.set3" maxlength="4" size="4" required style="padding: 3px; margin-left: 3px; width: 50px;">&nbsp;-
<input type="text" name="forth" id="productKey4" ng-model="productKey.set4" maxlength="4" size="4" required style="padding: 3px; margin-left: 3px; width: 50px;">
</td>
</tr>
</table>
<br>
<p class="wc-setup-actions step">
<input type="submit" id="submitme" class="button-primary button button-large button-next" value="Continue">
</p>
</form>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="{{asset("lb-faveo/js/jquery.autotab.js")}}"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0/angular.min.js"></script>
<script src="{{asset("lb-faveo/js/angular.js")}}" type="text/javascript"></script>
@stop

View File

@@ -13,11 +13,23 @@ active
@stop @stop
@section('content') @section('content')
<div ng-app="myApp">
@if(Session::has('fails'))
<div class="wc-setup-content">
<div class="woocommerce-message woocommerce-tracker">
<div class="fail">
<span id="fail">{!! Lang::get('lang.fails') !!}! {{Session::get('fails')}}</span><br/><br/>
</div>
</div>
</div>
@endif
<h1 style="text-align: center;">Database Setup</h1> <h1 style="text-align: center;">Database Setup</h1>
<p class="wc-setup-content">Below you should enter your database connection details. If youre not sure about these, contact your host.</p>
{!! Form::open(['url'=> '/step4post']) !!} {!! Form::open(['url'=> '/step4post']) !!}
<table> <table ng-controller="MainController">
<tr> <tr>
<td> <td>
<label for="selectbox1">Database <span style="color <label for="selectbox1">Database <span style="color
@@ -27,7 +39,6 @@ active
<div class="side-by-side clearfix moveleftthre"> <div class="side-by-side clearfix moveleftthre">
<div> <div>
<select name="default" data-placeholder="Choose a SQL format..." class="chosen-select" style="width:290px;" tabindex="2"> <select name="default" data-placeholder="Choose a SQL format..." class="chosen-select" style="width:290px;" tabindex="2">
<option value=""></option>
<option value="mysql">MySQL</option> <option value="mysql">MySQL</option>
<option value="pgsql">PgSQL</option> <option value="pgsql">PgSQL</option>
<option value="sqlsrv">SQLSRV</option> <option value="sqlsrv">SQLSRV</option>
@@ -35,6 +46,10 @@ active
</div> </div>
</div> </div>
</td> </td>
<td>
<button type="button" data-toggle="popover" data-placement="right" data-arrowcolor="#eeeeee" data-bordercolor="#bbbbbb" data-title-backcolor="#cccccc" data-title-bordercolor="#bbbbbb" data-title-textcolor="#444444" data-content-backcolor="#eeeeee" data-content-textcolor="#888888" title="@{{Databasetitle}}" data-content="@{{Databasecontent}}" style="padding: 0px;border: 0px; border-radius: 5px;"><i class="fa fa-question-circle" style="padding: 0px;"></i>
</button>
</td>
</tr> </tr>
<tr> <tr>
<td> <td>
@@ -44,6 +59,10 @@ active
<td> <td>
<input type="text" name="host" required> <input type="text" name="host" required>
</td> </td>
<td>
<button type="button" data-toggle="popover" data-placement="right" data-arrowcolor="#eeeeee" data-bordercolor="#bbbbbb" data-title-backcolor="#cccccc" data-title-bordercolor="#bbbbbb" data-title-textcolor="#444444" data-content-backcolor="#eeeeee" data-content-textcolor="#888888" title="@{{Hosttitle}}" data-content="@{{Hostcontent}}" style="padding: 0px;border: 0px; border-radius: 5px;"><i class="fa fa-question-circle" style="padding: 0px;"></i>
</button>
</td>
</tr> </tr>
<tr> <tr>
<td> <td>
@@ -52,6 +71,10 @@ active
<td> <td>
<input type="text" name="port"> <input type="text" name="port">
</td> </td>
<td>
<button type="button" data-toggle="popover" data-placement="right" data-arrowcolor="#eeeeee" data-bordercolor="#bbbbbb" data-title-backcolor="#cccccc" data-title-bordercolor="#bbbbbb" data-title-textcolor="#444444" data-content-backcolor="#eeeeee" data-content-textcolor="#888888" title="@{{Porttitle}}" data-content="@{{Portcontent}}" style="padding: 0px;border: 0px; border-radius: 5px;"><i class="fa fa-question-circle" style="padding: 0px;"></i>
</button>
</td>
</tr> </tr>
<tr> <tr>
<td> <td>
@@ -61,6 +84,10 @@ active
<td> <td>
<input type="text" name="databasename" required> <input type="text" name="databasename" required>
</td> </td>
<td>
<button type="button" data-toggle="popover" data-placement="right" data-arrowcolor="#eeeeee" data-bordercolor="#bbbbbb" data-title-backcolor="#cccccc" data-title-bordercolor="#bbbbbb" data-title-textcolor="#444444" data-content-backcolor="#eeeeee" data-content-textcolor="#888888" title="@{{Databasenametitle}}" data-content="@{{Databasenamecontent}}" style="padding: 0px;border: 0px; border-radius: 5px;"><i class="fa fa-question-circle" style="padding: 0px;"></i>
</button>
</td>
</tr> </tr>
<tr> <tr>
<td> <td>
@@ -70,6 +97,10 @@ active
<td> <td>
<input type="text" name="username" required> <input type="text" name="username" required>
</td> </td>
<td>
<button type="button" data-toggle="popover" data-placement="right" data-arrowcolor="#eeeeee" data-bordercolor="#bbbbbb" data-title-backcolor="#cccccc" data-title-bordercolor="#bbbbbb" data-title-textcolor="#444444" data-content-backcolor="#eeeeee" data-content-textcolor="#888888" title="@{{Usertitle}}" data-content="@{{Usercontent}}" style="padding: 0px;border: 0px; border-radius: 5px;"><i class="fa fa-question-circle" style="padding: 0px;"></i>
</button>
</td>
</tr> </tr>
<tr> <tr>
<td> <td>
@@ -78,6 +109,10 @@ active
<td> <td>
<input type="text" name="password"> <input type="text" name="password">
</td> </td>
<td>
<button type="button" data-toggle="popover" data-placement="right" data-arrowcolor="#eeeeee" data-bordercolor="#bbbbbb" data-title-backcolor="#cccccc" data-title-bordercolor="#bbbbbb" data-title-textcolor="#444444" data-content-backcolor="#eeeeee" data-content-textcolor="#888888" title="@{{Passwordtitle}}" data-content="@{{Passwordcontent}}" style="padding: 0px;border: 0px; border-radius: 5px;"><i class="fa fa-question-circle" style="padding: 0px;"></i>
</button>
</td>
</tr> </tr>
</table> </table>
<br> <br>
@@ -88,4 +123,7 @@ active
</form> </form>
</div> </div>
<script src="//code.jquery.com/jquery-1.10.2.js"></script> <script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0/angular.min.js"></script>
<script src="{{asset("lb-faveo/js/angular2.js")}}" type="text/javascript"></script>
</div>
@stop @stop

View File

@@ -195,6 +195,15 @@ $(document).ready(function () {
<div class="woocommerce-message woocommerce-tracker" > <div class="woocommerce-message woocommerce-tracker" >
<p id="fail">Database connection unsuccessful. This system does not meet Faveo system requirements</p> <p id="fail">Database connection unsuccessful. This system does not meet Faveo system requirements</p>
</div> </div>
<p>This either means that the username and password information is incorrect or we can&rsquo;t contact the database server. This could mean your host&rsquo;s database server is down.</p>
<ul>
<li>Are you sure you have the correct username and password?</li>
<li>Are you sure that you have typed the correct hostname?</li>
<li>Are you sure that the database server is running?</li>
</ul>
<p>If you&rsquo;re unsure what these terms mean you should probably contact your host. If you still need help you can always visit the <a href="http://www.ladybirdweb.com/support">Faveo Support </a>.</p>
<div style="border-bottom: 1px solid #eee;"> <div style="border-bottom: 1px solid #eee;">
<p class="wc-setup-actions step"> <p class="wc-setup-actions step">
<input type="submit" id="submitme" class="button-danger button button-large button-next" style="background-color: #d43f3a;color:#fff;" value="continue" disabled> <input type="submit" id="submitme" class="button-danger button button-large button-next" style="background-color: #d43f3a;color:#fff;" value="continue" disabled>

View File

@@ -17,11 +17,12 @@ active
@stop @stop
@section('content') @section('content')
<div ng-app="myApp">
<div class="wc-setup-content">
<h1 style="text-align: center;">Locale Information</h1> <h1 style="text-align: center;">Locale Information</h1>
{!! Form::open(['url'=>route('postaccount')]) !!} {!! Form::open(['url'=>route('postaccount')]) !!}
<input type="hidden" name="_token" value="{{ csrf_token() }}"> <input type="hidden" name="_token" value="{{ csrf_token() }}">
<!-- checking if the form submit fails -->
@if($errors->first('firstname')||$errors->first('Lastname')||$errors->first('email')||$errors->first('username')||$errors->first('password')||$errors->first('confirmpassword')) @if($errors->first('firstname')||$errors->first('Lastname')||$errors->first('email')||$errors->first('username')||$errors->first('password')||$errors->first('confirmpassword'))
<div class="woocommerce-message woocommerce-tracker"> <div class="woocommerce-message woocommerce-tracker">
<div class="fail"> <div class="fail">
@@ -46,10 +47,24 @@ active
</div> </div>
</div> </div>
@endif @endif
</div>
<div class="wc-setup-content"> <!-- checking if the system fails -->
@if(Session::has('fails'))
<div class="woocommerce-message woocommerce-tracker">
<div class="fail">
<span id="fail">{{Session::get('fails')}} </span><br/><br/>
</div>
</div>
@endif
<div ng-controller="MainController">
<table> <table>
<h1>Personal Information</h1>
<p>Welcome to the five-minute Faveo installation process! Just fill in the information below.</p>
<h1 style="border-top:1px solid #dedede; border-bottom:1px solid #dedede; padding: 10px 0px 10px 0px;">Personal Information</h1>
<p>Please provide the following information. Dont worry, you can always change these settings later.</p>
<div> <div>
<tr> <tr>
<td> <td>
@@ -59,6 +74,10 @@ active
<td> <td>
{!! Form::text('firstname',null,['style' =>'margin-left:250px']) !!} {!! Form::text('firstname',null,['style' =>'margin-left:250px']) !!}
</td> </td>
<td>
<button type="button" data-toggle="popover" data-placement="right" data-arrowcolor="#eeeeee" data-bordercolor="#bbbbbb" data-title-backcolor="#cccccc" data-title-bordercolor="#bbbbbb" data-title-textcolor="#444444" data-content-backcolor="#eeeeee" data-content-textcolor="#888888" title="@{{Nametitle}}" data-content="@{{Namecontent}}" style="padding: 0px;border: 0px; border-radius: 5px;"><i class="fa fa-question-circle" style="padding: 0px;"></i>
</button>
</td>
</tr> </tr>
<tr> <tr>
<td> <td>
@@ -68,6 +87,10 @@ active
<td> <td>
{!! Form::text('Lastname',null,['style' =>'margin-left:250px']) !!} {!! Form::text('Lastname',null,['style' =>'margin-left:250px']) !!}
</td> </td>
<td>
<button type="button" data-toggle="popover" data-placement="right" data-arrowcolor="#eeeeee" data-bordercolor="#bbbbbb" data-title-backcolor="#cccccc" data-title-bordercolor="#bbbbbb" data-title-textcolor="#444444" data-content-backcolor="#eeeeee" data-content-textcolor="#888888" title="@{{Lasttitle}}" data-content="@{{Lastcontent}}" style="padding: 0px;border: 0px; border-radius: 5px;"><i class="fa fa-question-circle" style="padding: 0px;"></i>
</button>
</td>
</tr> </tr>
<tr> <tr>
<td> <td>
@@ -77,6 +100,10 @@ active
<td> <td>
{!! Form::text('email',null,['style' =>'margin-left:250px']) !!} {!! Form::text('email',null,['style' =>'margin-left:250px']) !!}
</td> </td>
<td>
<button type="button" data-toggle="popover" data-placement="right" data-arrowcolor="#eeeeee" data-bordercolor="#bbbbbb" data-title-backcolor="#cccccc" data-title-bordercolor="#bbbbbb" data-title-textcolor="#444444" data-content-backcolor="#eeeeee" data-content-textcolor="#888888" title="@{{Emailtitle}}" data-content="@{{Emailcontent}}" style="padding: 0px;border: 0px; border-radius: 5px;"><i class="fa fa-question-circle" style="padding: 0px;"></i>
</button>
</td>
</tr> </tr>
</div> </div>
@@ -96,6 +123,10 @@ active
<td> <td>
{!! Form::text('username',null,['style' =>'margin-left:195px']) !!} {!! Form::text('username',null,['style' =>'margin-left:195px']) !!}
</td> </td>
<td>
<button type="button" data-toggle="popover" data-placement="right" data-arrowcolor="#eeeeee" data-bordercolor="#bbbbbb" data-title-backcolor="#cccccc" data-title-bordercolor="#bbbbbb" data-title-textcolor="#444444" data-content-backcolor="#eeeeee" data-content-textcolor="#888888" title="@{{UserNametitle}}" data-content="@{{UserNamecontent}}" style="padding: 0px;border: 0px; border-radius: 5px;"><i class="fa fa-question-circle" style="padding: 0px;"></i>
</button>
</td>
</tr> </tr>
<tr> <tr>
<td> <td>
@@ -106,6 +137,10 @@ active
<td> <td>
<input type="password" name="password" style="margin-left: 195px" > <input type="password" name="password" style="margin-left: 195px" >
</td> </td>
<td>
<button type="button" data-toggle="popover" data-placement="right" data-arrowcolor="#eeeeee" data-bordercolor="#bbbbbb" data-title-backcolor="#cccccc" data-title-bordercolor="#bbbbbb" data-title-textcolor="#444444" data-content-backcolor="#eeeeee" data-content-textcolor="#888888" title="@{{Passtitle}}" data-content="@{{Passcontent}}" style="padding: 0px;border: 0px; border-radius: 5px;"><i class="fa fa-question-circle" style="padding: 0px;"></i>
</button>
</td>
</tr> </tr>
<tr> <tr>
<td> <td>
@@ -116,6 +151,10 @@ active
<td> <td>
<input type="password" name="confirmpassword" style="margin-left: 195px" > <input type="password" name="confirmpassword" style="margin-left: 195px" >
</td> </td>
<td>
<button type="button" data-toggle="popover" data-placement="right" data-arrowcolor="#eeeeee" data-bordercolor="#bbbbbb" data-title-backcolor="#cccccc" data-title-bordercolor="#bbbbbb" data-title-textcolor="#444444" data-content-backcolor="#eeeeee" data-content-textcolor="#888888" title="@{{Confirmtitle}}" data-content="@{{Confirmcontent}}" style="padding: 0px;border: 0px; border-radius: 5px;"><i class="fa fa-question-circle" style="padding: 0px;"></i>
</button>
</td>
</tr> </tr>
</div> </div>
</table> </table>
@@ -130,7 +169,6 @@ active
<div class="side-by-side clearfix moveleft"> <div class="side-by-side clearfix moveleft">
<div> <div>
<select name="datetime" data-placeholder="Choose a date format..." class="chosen-select" style="width:295px;" tabindex="2"> <select name="datetime" data-placeholder="Choose a date format..." class="chosen-select" style="width:295px;" tabindex="2">
<option value=""></option>
<option value="d/m/Y H:i:s">DD/MM/YYYY H:i:s</option> <option value="d/m/Y H:i:s">DD/MM/YYYY H:i:s</option>
<option value="m/d/Y H:i:s">MM/DD/YYYY H:i:s</option> <option value="m/d/Y H:i:s">MM/DD/YYYY H:i:s</option>
<option value="Y/m/d H:i:s">YYYY/MM/DD H:i:s</option> <option value="Y/m/d H:i:s">YYYY/MM/DD H:i:s</option>
@@ -138,6 +176,10 @@ active
</div> </div>
</div> </div>
</td> </td>
<td>
<button type="button" data-toggle="popover" data-placement="right" data-arrowcolor="#eeeeee" data-bordercolor="#bbbbbb" data-title-backcolor="#cccccc" data-title-bordercolor="#bbbbbb" data-title-textcolor="#444444" data-content-backcolor="#eeeeee" data-content-textcolor="#888888" title="@{{Datetimetitle}}" data-content="@{{Datetimecontent}}" style="padding: 0px;border: 0px; border-radius: 5px;"><i class="fa fa-question-circle" style="padding: 0px;"></i>
</button>
</td>
</tr> </tr>
<tr> <tr>
<td> <td>
@@ -147,7 +189,6 @@ active
<div class="side-by-side clearfix moveleft"> <div class="side-by-side clearfix moveleft">
<div> <div>
<select name="timezone" data-placeholder="Choose a timezone..." class="chosen-select" style="width:295px;" tabindex="2"> <select name="timezone" data-placeholder="Choose a timezone..." class="chosen-select" style="width:295px;" tabindex="2">
<option value=""></option>
<option value="US/Samoa">US/Samoa</option> <option value="US/Samoa">US/Samoa</option>
<option value="US/Hawaii">US/Hawaii</option> <option value="US/Hawaii">US/Hawaii</option>
<option value="US/Alaska">US/Alaska</option> <option value="US/Alaska">US/Alaska</option>
@@ -264,6 +305,10 @@ active
</div> </div>
</div> </div>
</td> </td>
<td>
<button type="button" data-toggle="popover" data-placement="right" data-arrowcolor="#eeeeee" data-bordercolor="#bbbbbb" data-title-backcolor="#cccccc" data-title-bordercolor="#bbbbbb" data-title-textcolor="#444444" data-content-backcolor="#eeeeee" data-content-textcolor="#888888" title="@{{Timezonetitle}}" data-content="@{{Timezonecontent}}" style="padding: 0px;border: 0px; border-radius: 5px;"><i class="fa fa-question-circle" style="padding: 0px;"></i>
</button>
</td>
</tr> </tr>
<tr> <tr>
<td> <td>
@@ -278,12 +323,15 @@ active
?> ?>
<select name="language" data-placeholder="Choose a timezone..." class="chosen-select" style="width:295px;" tabindex="2"> <select name="language" data-placeholder="Choose a timezone..." class="chosen-select" style="width:295px;" tabindex="2">
@foreach($values as $value) @foreach($values as $value)
<option value=""></option>
<option value="{!! $value !!}">{!! Config::get('languages.' . $value) !!}</option> <option value="{!! $value !!}">{!! Config::get('languages.' . $value) !!}</option>
@endforeach @endforeach
</select> </select>
</div> </div>
</td> </td>
<td>
<button type="button" data-toggle="popover" data-placement="right" data-arrowcolor="#eeeeee" data-bordercolor="#bbbbbb" data-title-backcolor="#cccccc" data-title-bordercolor="#bbbbbb" data-title-textcolor="#444444" data-content-backcolor="#eeeeee" data-content-textcolor="#888888" title="@{{Languagetitle}}" data-content="@{{Languagecontent}}" style="padding: 0px;border: 0px; border-radius: 5px;"><i class="fa fa-question-circle" style="padding: 0px;"></i>
</button>
</td>
</tr> </tr>
</div> </div>
</table> </table>
@@ -296,4 +344,7 @@ active
</div> </div>
</p> </p>
<script src="//code.jquery.com/jquery-1.10.2.js"></script> <script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0/angular.min.js"></script>
<script src="{{asset("lb-faveo/js/angular2.js")}}" type="text/javascript"></script>
</div>
@stop @stop