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:
Manish Verma
2018-08-08 15:37:25 +05:30
parent 1013c89634
commit 3b76605892
11 changed files with 136 additions and 7 deletions

View File

@@ -48,6 +48,7 @@ class Handler extends ExceptionHandler
*/
public function report(Exception $e)
{
dd($e);
Bugsnag::setBeforeNotifyFunction(function ($error) { //set bugsnag
return false;
});

View File

@@ -84,6 +84,7 @@ class LanguageController extends Controller
$path = base_path('resources/lang');
$values = scandir($path); //Extracts names of directories present in lang directory
$values = array_slice($values, 2); // skips array element $value[0] = '.' & $value[1] = '..'
$sysLanguage = \Cache::get('language');
return \Datatable::collection(new Collection($values))
->addColumn('language', function ($model) {
if ($model == Config::get('app.fallback_locale')) {
@@ -95,15 +96,15 @@ class LanguageController extends Controller
->addColumn('id', function ($model) {
return $model;
})
->addColumn('status', function ($model) {
if (Lang::getLocale() === $model) {
->addColumn('status', function ($model) use ($sysLanguage){
if ($sysLanguage === $model) {
return "<span style='color:green'>".Lang::trans('lang.active').'</span>';
} else {
return "<span style='color:red'>".Lang::trans('lang.inactive').'</span>';
}
})
->addColumn('Action', function ($model) {
if (Lang::getLocale() === $model) {
->addColumn('Action', function ($model) use ($sysLanguage) {
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>
<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 {

View File

@@ -19,6 +19,7 @@ use Hash;
// classes
use Illuminate\Http\Request;
use Lang;
use Session;
/**
* 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();
}
}

View File

@@ -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
View File

@@ -0,0 +1,3 @@
function changeLang(lang) {
location.href = "swtich-language/"+lang;
}

View File

@@ -156,6 +156,20 @@
</li>
</ul>
</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> &nbsp;<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>&nbsp;{{$value[0]}}&nbsp;
@if(Lang::getLocale() == "ar")
&rlm;
@endif
({{$value[1]}})</a></li>
@endforeach
</ul>
</li>
<li class="dropdown user user-menu">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
@if(Auth::user())
@@ -443,7 +457,7 @@
<script src="{{asset("lb-faveo/js/tabby.js")}}"></script>
<!-- CK Editor -->
<script src="{{asset("lb-faveo/plugins/filebrowser/plugin.js")}}"></script>
<script src="{{asset("lb-faveo/js/languagechanger.js")}}" type="text/javascript"></script>
@yield('FooterInclude')
</body>
<script>

View File

@@ -56,6 +56,18 @@
<script src="{{asset("lb-faveo/js/jquery2.1.1.min.js")}}" type="text/javascript"></script>
@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>
<body class="skin-blue fixed">
<div class="wrapper">
@@ -173,6 +185,20 @@
</li>
</ul>
</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> &nbsp;<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>&nbsp;{{$value[0]}}&nbsp;
@if(Lang::getLocale() == "ar")
&rlm;
@endif
({{$value[1]}})</a></li>
@endforeach
</ul>
</li>
<!-- User Account: style can be found in dropdown.less -->
<li class="dropdown user user-menu">
<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 -->
<div class="content-wrapper">
<!-- 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="tabs-content">
@if($replacetop==0)
@@ -495,7 +521,7 @@ $group = App\Model\helpdesk\Agent\Groups::where('id', '=', $agent_group)->first(
});</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/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.min.js")}}" type="text/javascript"></script>

View File

@@ -83,6 +83,7 @@
@foreach($pages as $page)
<li><a href="{{route('pages',$page->slug)}}">{{$page->name}}</a></li>
@endforeach
@if(Auth::user())
<li @yield('myticket')><a href="{{url('mytickets')}}">{!! Lang::get('lang.my_tickets') !!}</a></li>
@@ -195,6 +196,23 @@
</div>
</div><!-- #login-form -->
@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> &nbsp;<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>&nbsp;{{$value[0]}}&nbsp;
@if(Lang::getLocale() == "ar")
&rlm;
@endif
({{$value[1]}})</a></li>
@endforeach
</ul>
</li>
</ul>
</nav><!-- #site-navigation -->
</div><!-- #navbar -->
<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/js/languagechanger.js")}}" type="text/javascript"></script>
<script src="{{asset("lb-faveo/js/languagechanger.js")}}" type="text/javascript"></script>
<script>
$(function () {
//Enable check and uncheck all functionality

View File

@@ -776,4 +776,5 @@ Route::group(['middleware' => ['web']], function () {
// $breadcrumbs->parent('dashboard');
// $breadcrumbs->push(Lang::get('lang.tickets') . '&nbsp; > &nbsp;' . Lang::get('lang.open'), route('open.ticket'));
// });
Route::get('swtich-language/{id}', ['as' => 'switch-user-lang', 'uses' => 'Client\helpdesk\UnAuthController@changeUserLanguage']);
});

View File

@@ -28,6 +28,7 @@ return array(
'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',
'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',
'Block_Frame_Decorator' => $vendorDir . '/dompdf/dompdf/include/block_frame_decorator.cls.php',
'Block_Frame_Reflower' => $vendorDir . '/dompdf/dompdf/include/block_frame_reflower.cls.php',

View File

@@ -687,6 +687,7 @@ class ComposerStaticInit598add4b9b35c76d3599603201ccdd6d
'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',
'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',
'Block_Frame_Decorator' => __DIR__ . '/..' . '/dompdf/dompdf/include/block_frame_decorator.cls.php',
'Block_Frame_Reflower' => __DIR__ . '/..' . '/dompdf/dompdf/include/block_frame_reflower.cls.php',