Language update
Added different level of language preference functionaloty which can be set from the new option in top navigation bar Lanaguage preference can be set as * System language (Default for all users) * Session based (User who are not logged in and want to see they system in language of their choice can set their preference in browser session) * User lever (for authenticated users who have updated their language preference, system will change into their selected language when they log into the system)
This commit is contained in:
@@ -48,6 +48,7 @@ class Handler extends ExceptionHandler
|
|||||||
*/
|
*/
|
||||||
public function report(Exception $e)
|
public function report(Exception $e)
|
||||||
{
|
{
|
||||||
|
dd($e);
|
||||||
Bugsnag::setBeforeNotifyFunction(function ($error) { //set bugsnag
|
Bugsnag::setBeforeNotifyFunction(function ($error) { //set bugsnag
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
@@ -84,6 +84,7 @@ class LanguageController extends Controller
|
|||||||
$path = base_path('resources/lang');
|
$path = base_path('resources/lang');
|
||||||
$values = scandir($path); //Extracts names of directories present in lang directory
|
$values = scandir($path); //Extracts names of directories present in lang directory
|
||||||
$values = array_slice($values, 2); // skips array element $value[0] = '.' & $value[1] = '..'
|
$values = array_slice($values, 2); // skips array element $value[0] = '.' & $value[1] = '..'
|
||||||
|
$sysLanguage = \Cache::get('language');
|
||||||
return \Datatable::collection(new Collection($values))
|
return \Datatable::collection(new Collection($values))
|
||||||
->addColumn('language', function ($model) {
|
->addColumn('language', function ($model) {
|
||||||
if ($model == Config::get('app.fallback_locale')) {
|
if ($model == Config::get('app.fallback_locale')) {
|
||||||
@@ -95,15 +96,15 @@ class LanguageController extends Controller
|
|||||||
->addColumn('id', function ($model) {
|
->addColumn('id', function ($model) {
|
||||||
return $model;
|
return $model;
|
||||||
})
|
})
|
||||||
->addColumn('status', function ($model) {
|
->addColumn('status', function ($model) use ($sysLanguage){
|
||||||
if (Lang::getLocale() === $model) {
|
if ($sysLanguage === $model) {
|
||||||
return "<span style='color:green'>".Lang::trans('lang.active').'</span>';
|
return "<span style='color:green'>".Lang::trans('lang.active').'</span>';
|
||||||
} else {
|
} else {
|
||||||
return "<span style='color:red'>".Lang::trans('lang.inactive').'</span>';
|
return "<span style='color:red'>".Lang::trans('lang.inactive').'</span>';
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
->addColumn('Action', function ($model) {
|
->addColumn('Action', function ($model) use ($sysLanguage) {
|
||||||
if (Lang::getLocale() === $model) {
|
if ($model === $sysLanguage) {
|
||||||
return "<a href='change-language/".$model."'><input type='button' class='btn btn-info btn-xs btn-flat' disabled value='".Lang::trans('lang.disable')."'/></a>
|
return "<a href='change-language/".$model."'><input type='button' class='btn btn-info btn-xs btn-flat' disabled value='".Lang::trans('lang.disable')."'/></a>
|
||||||
<a href='change-language/".$model."' class='btn btn-danger btn-xs btn-flat' disabled><i class='fa fa-trash' style='color:black;'> </i> ".Lang::trans('lang.delete').'</a>';
|
<a href='change-language/".$model."' class='btn btn-danger btn-xs btn-flat' disabled><i class='fa fa-trash' style='color:black;'> </i> ".Lang::trans('lang.delete').'</a>';
|
||||||
} else {
|
} else {
|
||||||
|
@@ -19,6 +19,7 @@ use Hash;
|
|||||||
// classes
|
// classes
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Lang;
|
use Lang;
|
||||||
|
use Session;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GuestController.
|
* GuestController.
|
||||||
@@ -415,4 +416,30 @@ class UnAuthController extends Controller
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function to chnage user language preference
|
||||||
|
*
|
||||||
|
* @param string $lang //desired language's iso code
|
||||||
|
*
|
||||||
|
* @category function to change system's language
|
||||||
|
*
|
||||||
|
* @return response
|
||||||
|
*/
|
||||||
|
public static function changeUserLanguage($lang)
|
||||||
|
{
|
||||||
|
$path = base_path('resources/lang'); // Path to check available language packages
|
||||||
|
if (array_key_exists($lang, \Config::get('languages')) && in_array($lang, scandir($path))) {
|
||||||
|
if (\Auth::check()) {
|
||||||
|
$id = \Auth::user()->id;
|
||||||
|
$user = User::find($id);
|
||||||
|
$user->user_language = $lang;
|
||||||
|
$user->save();
|
||||||
|
} else {
|
||||||
|
Session::put('language', $lang);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return redirect()->back();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,32 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
|
||||||
|
class AlterUsersTableAddUserLanguageColumn extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::table('users', function (Blueprint $table) {
|
||||||
|
$table->string('user_language', 10)->default(null)->nullable();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::table('users', function (Blueprint $table) {
|
||||||
|
$table->dropIfExists('user_language');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
3
public/lb-faveo/js/languagechanger.js
vendored
Normal file
3
public/lb-faveo/js/languagechanger.js
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
function changeLang(lang) {
|
||||||
|
location.href = "swtich-language/"+lang;
|
||||||
|
}
|
@@ -156,6 +156,20 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
<li class="dropdown">
|
||||||
|
<?php $src = Lang::getLocale().'.png'; ?>
|
||||||
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown" aria-expanded="true"><img src="{{asset("lb-faveo/flags/$src")}}"></img> <span class="caret"></span></a>
|
||||||
|
<ul class="dropdown-menu" role="menu">
|
||||||
|
@foreach($langs as $key => $value)
|
||||||
|
<?php $src = $key.".png"; ?>
|
||||||
|
<li><a href="#" id="{{$key}}" onclick="changeLang(this.id)"><img src="{{asset("lb-faveo/flags/$src")}}"></img> {{$value[0]}}
|
||||||
|
@if(Lang::getLocale() == "ar")
|
||||||
|
‏
|
||||||
|
@endif
|
||||||
|
({{$value[1]}})</a></li>
|
||||||
|
@endforeach
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
<li class="dropdown user user-menu">
|
<li class="dropdown user user-menu">
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
|
||||||
@if(Auth::user())
|
@if(Auth::user())
|
||||||
@@ -443,7 +457,7 @@
|
|||||||
<script src="{{asset("lb-faveo/js/tabby.js")}}"></script>
|
<script src="{{asset("lb-faveo/js/tabby.js")}}"></script>
|
||||||
<!-- CK Editor -->
|
<!-- CK Editor -->
|
||||||
<script src="{{asset("lb-faveo/plugins/filebrowser/plugin.js")}}"></script>
|
<script src="{{asset("lb-faveo/plugins/filebrowser/plugin.js")}}"></script>
|
||||||
|
<script src="{{asset("lb-faveo/js/languagechanger.js")}}" type="text/javascript"></script>
|
||||||
@yield('FooterInclude')
|
@yield('FooterInclude')
|
||||||
</body>
|
</body>
|
||||||
<script>
|
<script>
|
||||||
|
@@ -56,6 +56,18 @@
|
|||||||
<script src="{{asset("lb-faveo/js/jquery2.1.1.min.js")}}" type="text/javascript"></script>
|
<script src="{{asset("lb-faveo/js/jquery2.1.1.min.js")}}" type="text/javascript"></script>
|
||||||
|
|
||||||
@yield('HeadInclude')
|
@yield('HeadInclude')
|
||||||
|
<style type="text/css">
|
||||||
|
#bar {
|
||||||
|
border-right: 1px solid rgba(204, 204, 204, 0.41);
|
||||||
|
}
|
||||||
|
#bar a{
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
#bar a:hover, #bar a:focus{
|
||||||
|
background-color: #357CA5;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body class="skin-blue fixed">
|
<body class="skin-blue fixed">
|
||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
@@ -173,6 +185,20 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
<li class="dropdown">
|
||||||
|
<?php $src = Lang::getLocale().'.png'; ?>
|
||||||
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown" aria-expanded="true"><img src="{{asset("lb-faveo/flags/$src")}}"></img> <span class="caret"></span></a>
|
||||||
|
<ul class="dropdown-menu" role="menu">
|
||||||
|
@foreach($langs as $key => $value)
|
||||||
|
<?php $src = $key.".png"; ?>
|
||||||
|
<li><a href="#" id="{{$key}}" onclick="changeLang(this.id)"><img src="{{asset("lb-faveo/flags/$src")}}"></img> {{$value[0]}}
|
||||||
|
@if(Lang::getLocale() == "ar")
|
||||||
|
‏
|
||||||
|
@endif
|
||||||
|
({{$value[1]}})</a></li>
|
||||||
|
@endforeach
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
<!-- User Account: style can be found in dropdown.less -->
|
<!-- User Account: style can be found in dropdown.less -->
|
||||||
<li class="dropdown user user-menu">
|
<li class="dropdown user user-menu">
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
|
||||||
@@ -325,7 +351,7 @@ $group = App\Model\helpdesk\Agent\Groups::where('id', '=', $agent_group)->first(
|
|||||||
<!-- Right side column. Contains the navbar and content of the page -->
|
<!-- Right side column. Contains the navbar and content of the page -->
|
||||||
<div class="content-wrapper">
|
<div class="content-wrapper">
|
||||||
<!-- Content Header (Page header) -->
|
<!-- Content Header (Page header) -->
|
||||||
<div class="tab-content" style="background-color: white;padding: 0 0px 0 20px">
|
<div class="tab-content" style="background-color: #80B5D3; position: fixed; width:100% ;padding: 0 0px 0 0px; z-index:999">
|
||||||
<div class="collapse navbar-collapse" id="navbar-collapse">
|
<div class="collapse navbar-collapse" id="navbar-collapse">
|
||||||
<div class="tabs-content">
|
<div class="tabs-content">
|
||||||
@if($replacetop==0)
|
@if($replacetop==0)
|
||||||
@@ -495,7 +521,7 @@ $group = App\Model\helpdesk\Agent\Groups::where('id', '=', $agent_group)->first(
|
|||||||
});</script>
|
});</script>
|
||||||
|
|
||||||
<script src="{{asset("lb-faveo/js/tabby.js")}}" type="text/javascript"></script>
|
<script src="{{asset("lb-faveo/js/tabby.js")}}" type="text/javascript"></script>
|
||||||
|
<script src="{{asset("lb-faveo/js/languagechanger.js")}}" type="text/javascript"></script>
|
||||||
<script src="{{asset("lb-faveo/plugins/filebrowser/plugin.js")}}" type="text/javascript"></script>
|
<script src="{{asset("lb-faveo/plugins/filebrowser/plugin.js")}}" type="text/javascript"></script>
|
||||||
|
|
||||||
<script src="{{asset("lb-faveo/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.min.js")}}" type="text/javascript"></script>
|
<script src="{{asset("lb-faveo/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.min.js")}}" type="text/javascript"></script>
|
||||||
|
@@ -83,6 +83,7 @@
|
|||||||
@foreach($pages as $page)
|
@foreach($pages as $page)
|
||||||
<li><a href="{{route('pages',$page->slug)}}">{{$page->name}}</a></li>
|
<li><a href="{{route('pages',$page->slug)}}">{{$page->name}}</a></li>
|
||||||
@endforeach
|
@endforeach
|
||||||
|
|
||||||
@if(Auth::user())
|
@if(Auth::user())
|
||||||
<li @yield('myticket')><a href="{{url('mytickets')}}">{!! Lang::get('lang.my_tickets') !!}</a></li>
|
<li @yield('myticket')><a href="{{url('mytickets')}}">{!! Lang::get('lang.my_tickets') !!}</a></li>
|
||||||
|
|
||||||
@@ -195,6 +196,23 @@
|
|||||||
</div>
|
</div>
|
||||||
</div><!-- #login-form -->
|
</div><!-- #login-form -->
|
||||||
@endif
|
@endif
|
||||||
|
<ul class="nav navbar-nav navbar-menu">
|
||||||
|
|
||||||
|
<li class="dropdown">
|
||||||
|
<?php $src = Lang::getLocale().'.png'; ?>
|
||||||
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown" aria-expanded="true"><img src="{{asset("lb-faveo/flags/$src")}}"></img> <span class="caret"></span></a>
|
||||||
|
<ul class="dropdown-menu" role="menu">
|
||||||
|
@foreach($langs as $key => $value)
|
||||||
|
<?php $src = $key.".png"; ?>
|
||||||
|
<li><a href="#" id="{{$key}}" onclick="changeLang(this.id)"><img src="{{asset("lb-faveo/flags/$src")}}"></img> {{$value[0]}}
|
||||||
|
@if(Lang::getLocale() == "ar")
|
||||||
|
‏
|
||||||
|
@endif
|
||||||
|
({{$value[1]}})</a></li>
|
||||||
|
@endforeach
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
</nav><!-- #site-navigation -->
|
</nav><!-- #site-navigation -->
|
||||||
</div><!-- #navbar -->
|
</div><!-- #navbar -->
|
||||||
<div id="header-search" class="site-search clearfix" style="padding-bottom:5px"><!-- #header-search -->
|
<div id="header-search" class="site-search clearfix" style="padding-bottom:5px"><!-- #header-search -->
|
||||||
@@ -415,6 +433,10 @@
|
|||||||
|
|
||||||
<script src="{{asset("lb-faveo/plugins/iCheck/icheck.min.js")}}" type="text/javascript"></script>
|
<script src="{{asset("lb-faveo/plugins/iCheck/icheck.min.js")}}" type="text/javascript"></script>
|
||||||
|
|
||||||
|
<script src="{{asset("lb-faveo/js/languagechanger.js")}}" type="text/javascript"></script>
|
||||||
|
|
||||||
|
<script src="{{asset("lb-faveo/js/languagechanger.js")}}" type="text/javascript"></script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
$(function () {
|
$(function () {
|
||||||
//Enable check and uncheck all functionality
|
//Enable check and uncheck all functionality
|
||||||
|
@@ -776,4 +776,5 @@ Route::group(['middleware' => ['web']], function () {
|
|||||||
// $breadcrumbs->parent('dashboard');
|
// $breadcrumbs->parent('dashboard');
|
||||||
// $breadcrumbs->push(Lang::get('lang.tickets') . ' > ' . Lang::get('lang.open'), route('open.ticket'));
|
// $breadcrumbs->push(Lang::get('lang.tickets') . ' > ' . Lang::get('lang.open'), route('open.ticket'));
|
||||||
// });
|
// });
|
||||||
|
Route::get('swtich-language/{id}', ['as' => 'switch-user-lang', 'uses' => 'Client\helpdesk\UnAuthController@changeUserLanguage']);
|
||||||
});
|
});
|
||||||
|
1
vendor/composer/autoload_classmap.php
vendored
1
vendor/composer/autoload_classmap.php
vendored
@@ -28,6 +28,7 @@ return array(
|
|||||||
'AddForeignKeysToUsersTable' => $baseDir . '/database/migrations/2016_02_16_140454_add_foreign_keys_to_users_table.php',
|
'AddForeignKeysToUsersTable' => $baseDir . '/database/migrations/2016_02_16_140454_add_foreign_keys_to_users_table.php',
|
||||||
'Adobe_Font_Metrics' => $vendorDir . '/phenx/php-font-lib/classes/Adobe_Font_Metrics.php',
|
'Adobe_Font_Metrics' => $vendorDir . '/phenx/php-font-lib/classes/Adobe_Font_Metrics.php',
|
||||||
'AlterTicketSourceTable' => $baseDir . '/database/migrations/2016_08_16_104539_alter_ticket_source_table.php',
|
'AlterTicketSourceTable' => $baseDir . '/database/migrations/2016_08_16_104539_alter_ticket_source_table.php',
|
||||||
|
'AlterUsersTableAddUserLanguageColumn' => $baseDir . '/database/migrations/2018_08_08_094653_alter_users_table_add_user_language_column.php',
|
||||||
'Attribute_Translator' => $vendorDir . '/dompdf/dompdf/include/attribute_translator.cls.php',
|
'Attribute_Translator' => $vendorDir . '/dompdf/dompdf/include/attribute_translator.cls.php',
|
||||||
'Block_Frame_Decorator' => $vendorDir . '/dompdf/dompdf/include/block_frame_decorator.cls.php',
|
'Block_Frame_Decorator' => $vendorDir . '/dompdf/dompdf/include/block_frame_decorator.cls.php',
|
||||||
'Block_Frame_Reflower' => $vendorDir . '/dompdf/dompdf/include/block_frame_reflower.cls.php',
|
'Block_Frame_Reflower' => $vendorDir . '/dompdf/dompdf/include/block_frame_reflower.cls.php',
|
||||||
|
1
vendor/composer/autoload_static.php
vendored
1
vendor/composer/autoload_static.php
vendored
@@ -687,6 +687,7 @@ class ComposerStaticInit598add4b9b35c76d3599603201ccdd6d
|
|||||||
'AddForeignKeysToUsersTable' => __DIR__ . '/../..' . '/database/migrations/2016_02_16_140454_add_foreign_keys_to_users_table.php',
|
'AddForeignKeysToUsersTable' => __DIR__ . '/../..' . '/database/migrations/2016_02_16_140454_add_foreign_keys_to_users_table.php',
|
||||||
'Adobe_Font_Metrics' => __DIR__ . '/..' . '/phenx/php-font-lib/classes/Adobe_Font_Metrics.php',
|
'Adobe_Font_Metrics' => __DIR__ . '/..' . '/phenx/php-font-lib/classes/Adobe_Font_Metrics.php',
|
||||||
'AlterTicketSourceTable' => __DIR__ . '/../..' . '/database/migrations/2016_08_16_104539_alter_ticket_source_table.php',
|
'AlterTicketSourceTable' => __DIR__ . '/../..' . '/database/migrations/2016_08_16_104539_alter_ticket_source_table.php',
|
||||||
|
'AlterUsersTableAddUserLanguageColumn' => __DIR__ . '/../..' . '/database/migrations/2018_08_08_094653_alter_users_table_add_user_language_column.php',
|
||||||
'Attribute_Translator' => __DIR__ . '/..' . '/dompdf/dompdf/include/attribute_translator.cls.php',
|
'Attribute_Translator' => __DIR__ . '/..' . '/dompdf/dompdf/include/attribute_translator.cls.php',
|
||||||
'Block_Frame_Decorator' => __DIR__ . '/..' . '/dompdf/dompdf/include/block_frame_decorator.cls.php',
|
'Block_Frame_Decorator' => __DIR__ . '/..' . '/dompdf/dompdf/include/block_frame_decorator.cls.php',
|
||||||
'Block_Frame_Reflower' => __DIR__ . '/..' . '/dompdf/dompdf/include/block_frame_reflower.cls.php',
|
'Block_Frame_Reflower' => __DIR__ . '/..' . '/dompdf/dompdf/include/block_frame_reflower.cls.php',
|
||||||
|
Reference in New Issue
Block a user