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)
|
||||
{
|
||||
dd($e);
|
||||
Bugsnag::setBeforeNotifyFunction(function ($error) { //set bugsnag
|
||||
return false;
|
||||
});
|
||||
|
@@ -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 {
|
||||
|
@@ -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();
|
||||
}
|
||||
}
|
||||
|
@@ -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>
|
||||
</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> <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">
|
||||
<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>
|
||||
|
@@ -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> <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 -->
|
||||
<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>
|
||||
|
@@ -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> <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 -->
|
||||
</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
|
||||
|
@@ -776,4 +776,5 @@ Route::group(['middleware' => ['web']], function () {
|
||||
// $breadcrumbs->parent('dashboard');
|
||||
// $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',
|
||||
'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',
|
||||
|
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',
|
||||
'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',
|
||||
|
Reference in New Issue
Block a user