Browse Source

Add "en" and "id" lang switch on user profile edit page

Add lang column on users table
Add Lang middleware class
Change default locale config to "en"
pull/6/head
Nafies Luthfi 8 years ago
parent
commit
4c8d6d6f9c
  1. 2
      app/Entities/Users/User.php
  2. 8
      app/Http/Controllers/Users/ProfileController.php
  3. 1
      app/Http/Kernel.php
  4. 24
      app/Http/Middleware/Lang.php
  5. 2
      config/app.php
  6. 1
      database/migrations/2014_10_12_000000_create_users_table.php
  7. 2
      resources/lang/en/bank_account.php
  8. 7
      resources/lang/en/lang.php
  9. 1
      resources/lang/en/user.php
  10. 7
      resources/lang/id/lang.php
  11. 4
      resources/views/reports/current-credits.blade.php
  12. 1
      resources/views/users/profile/edit.blade.php
  13. 1
      resources/views/users/profile/show.blade.php
  14. 2
      tests/Feature/Users/UserProfileTest.php

2
app/Entities/Users/User.php

@ -9,7 +9,7 @@ class User extends Authenticatable
{
use Notifiable;
protected $fillable = ['name', 'email', 'password', 'api_token'];
protected $fillable = ['name', 'email', 'password', 'api_token', 'lang'];
protected $hidden = ['password', 'remember_token', 'api_token'];
public function setPasswordAttribute($value)

8
app/Http/Controllers/Users/ProfileController.php

@ -20,7 +20,9 @@ class ProfileController extends Controller
public function edit()
{
return view('users.profile.edit');
$langList = ['en' => trans('lang.en'), 'id' => trans('lang.id')];
return view('users.profile.edit', compact('langList'));
}
public function update()
@ -28,14 +30,18 @@ class ProfileController extends Controller
request()->validate([
'name' => 'required|string|max:100',
'email' => 'required|email|max:255',
'lang' => 'required|string',
]);
$user = auth()->user();
$user->name = request('name');
$user->email = request('email');
$user->lang = request('lang');
$user->save();
session(['lang' => $user->lang]);
flash(trans('auth.profile_updated'), 'success');
return redirect()->route('users.profile.show');

1
app/Http/Kernel.php

@ -34,6 +34,7 @@ class Kernel extends HttpKernel
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\Lang::class,
],
'api' => [

24
app/Http/Middleware/Lang.php

@ -0,0 +1,24 @@
<?php
namespace App\Http\Middleware;
use Closure;
class Lang
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ($request->user()) {
app()->setLocale($request->user()->lang);
}
return $next($request);
}
}

2
config/app.php

@ -78,7 +78,7 @@ return [
|
*/
'locale' => 'id',
'locale' => 'en',
/*
|--------------------------------------------------------------------------

1
database/migrations/2014_10_12_000000_create_users_table.php

@ -19,6 +19,7 @@ class CreateUsersTable extends Migration
$table->string('password', 60);
$table->rememberToken();
$table->string('api_token')->nullable();
$table->char('lang', 2)->default('en');
$table->timestamps();
});
}

2
resources/lang/en/bank_account.php

@ -3,7 +3,7 @@
return [
// Labels
'bank_account' => 'Bank Account',
'list' => 'Bank Account list',
'list' => 'Bank Account List',
'empty' => 'Bank Account list is empty',
'back_to_index' => 'Back to Bank Account list',

7
resources/lang/en/lang.php

@ -0,0 +1,7 @@
<?php
return [
'lang' => 'Language',
'en' => 'English',
'id' => 'Bahasa',
];

1
resources/lang/en/user.php

@ -27,6 +27,7 @@ return [
// Attributes
'name' => 'User Name',
'email' => 'Email',
'lang' => 'Language',
'api_token' => 'API Token',
'registered_at' => 'Registered at',

7
resources/lang/id/lang.php

@ -0,0 +1,7 @@
<?php
return [
'lang' => 'Bahasa',
'en' => 'Bahasa Inggris',
'id' => 'Bahasa Indonesia',
];

4
resources/views/reports/current-credits.blade.php

@ -1,6 +1,6 @@
@extends('layouts.app')
@section('title', 'Piutang Saat Ini')
@section('title', trans('dashboard.receiveable_earnings'))
@section('content')
<ul class="breadcrumb hidden-print">
@ -13,7 +13,7 @@
<th class="col-md-2">{{ trans('project.project') }}</th>
<th class="col-md-2 text-right">{{ trans('project.project_value') }}</th>
<th class="col-md-2 text-right">{{ trans('project.cash_in_total') }}</th>
<th class="col-md-2 text-right">{{ trans('project.receiveable_cash') }}</th>
<th class="col-md-2 text-right">{{ trans('project.payment_remaining') }}</th>
<th class="col-md-2">{{ trans('project.customer') }}</th>
<th class="col-md-2 text-center">{{ trans('project.status') }}</th>
</thead>

1
resources/views/users/profile/edit.blade.php

@ -8,6 +8,7 @@
{{ Form::model(auth()->user(), ['route' => 'users.profile.update', 'method' => 'patch']) }}
{!! FormField::text('name') !!}
{!! FormField::email('email') !!}
{!! FormField::radios('lang', $langList, ['label' => trans('lang.lang')]) !!}
{{ Form::submit(trans('auth.update_profile'), ['class' => 'btn btn-info']) }}
{{ link_to_route('users.profile.show', trans('app.cancel'), [], ['class' => 'btn btn-default']) }}
{{ Form::close() }}

1
resources/views/users/profile/show.blade.php

@ -12,6 +12,7 @@
<tr><th>{{ trans('user.email') }}</th><td>{{ $user->email }}</td></tr>
<tr><th>{{ trans('user.role') }}</th><td>{!! $user->roleList() !!}</td></tr>
<tr><th>{{ trans('user.api_token') }}</th><td><code>{{ $user->api_token }}</code></td></tr>
<tr><th>{{ trans('lang.lang') }}</th><td>{{ trans('lang.'.$user->lang) }}</td></tr>
</table>
<div class="panel-footer">
{{ link_to_route('users.profile.edit', trans('auth.profile_edit'), [], ['class' => 'btn btn-info']) }}

2
tests/Feature/Users/UserProfileTest.php

@ -36,6 +36,7 @@ class UserProfileTest extends TestCase
$this->submitForm(trans('auth.update_profile'), [
'name' => 'Nama Saya',
'email' => 'me@domain.com',
'lang' => 'en', // en, id
]);
$this->see(trans('auth.profile_updated'));
@ -45,6 +46,7 @@ class UserProfileTest extends TestCase
'id' => $user->id,
'name' => 'Nama Saya',
'email' => 'me@domain.com',
'lang' => 'en',
]);
}
}
Loading…
Cancel
Save