Browse Source

Added lang switcher on top nav

Save lang selection to session with middlware
Restructure navbar on app layout to nav partial
pull/3/head
Nafies Luthfi 8 years ago
parent
commit
23ca0ce58a
  1. 1
      app/Http/Kernel.php
  2. 24
      app/Http/Middleware/Lang.php
  3. 5
      resources/lang/en/app.php
  4. 5
      resources/lang/id/app.php
  5. 62
      resources/views/layouts/app.blade.php
  6. 59
      resources/views/layouts/partials/nav.blade.php
  7. 18
      resources/views/users/search.blade.php

1
app/Http/Kernel.php

@ -34,6 +34,7 @@ class Kernel extends HttpKernel
\Illuminate\View\Middleware\ShareErrorsFromSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class, \App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class, \Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\Lang::class,
], ],
'api' => [ '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)
{
app()->setLocale(request('lang', session('lang')));
if (request('lang')) {
session(['lang' => request('lang')]);
}
return $next($request);
}
}

5
resources/lang/en/app.php

@ -2,6 +2,8 @@
return [ return [
// Labels // Labels
'my_profile' => 'My Profile',
'search' => 'Search',
'unknown' => 'Unknown', 'unknown' => 'Unknown',
'male' => 'Male', 'male' => 'Male',
'female' => 'Female', 'female' => 'Female',
@ -9,6 +11,9 @@ return [
'family_tree' => 'Family Tree', 'family_tree' => 'Family Tree',
'child_count' => 'Child Count', 'child_count' => 'Child Count',
'grand_child_count' => 'Grand Child Count', 'grand_child_count' => 'Grand Child Count',
'user_found' => '<strong>:total</strong> found with keyword : <strong>:keyword</strong>',
'search_your_family' => 'Search Your Family',
'search_your_family_placeholder' => 'Enter name/nickname... click Search',
// Actions // Actions
'edit' => 'Edit', 'edit' => 'Edit',

5
resources/lang/id/app.php

@ -2,6 +2,8 @@
return [ return [
// Labels // Labels
'my_profile' => 'Profil Saya',
'search' => 'Cari',
'unknown' => 'Tidak diketahui', 'unknown' => 'Tidak diketahui',
'male' => 'Laki-laki', 'male' => 'Laki-laki',
'female' => 'Perempuan', 'female' => 'Perempuan',
@ -9,6 +11,9 @@ return [
'family_tree' => 'Pohon Keluarga', 'family_tree' => 'Pohon Keluarga',
'child_count' => 'Jumlah Anak', 'child_count' => 'Jumlah Anak',
'grand_child_count' => 'Jumlah Cucu', 'grand_child_count' => 'Jumlah Cucu',
'user_found' => 'User ditemukan : <strong>:total Orang</strong> untuk kata kunci : <strong>:keyword</strong>',
'search_your_family' => 'Cari Keluarga Anda',
'search_your_family_placeholder' => 'Masukkan nama/panggilan... klik Cari',
// Actions // Actions
'edit' => 'Edit', 'edit' => 'Edit',

62
resources/views/layouts/app.blade.php

@ -21,63 +21,15 @@
</head> </head>
<body> <body>
<div id="app"> <div id="app">
<nav class="navbar navbar-default navbar-static-top">
<div class="container">
<div class="navbar-header">
<!-- Collapsed Hamburger -->
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#app-navbar-collapse">
<span class="sr-only">Toggle Navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<!-- Branding Image -->
<a class="navbar-brand" href="{{ url('/') }}">
{{ config('app.name', 'Laravel') }}
</a>
</div>
<div class="collapse navbar-collapse" id="app-navbar-collapse">
<!-- Left Side Of Navbar -->
<ul class="nav navbar-nav">
<li><a href="{{ route('users.search') }}">Cari Keluarga</a></li>
</ul>
<!-- Right Side Of Navbar -->
<ul class="nav navbar-nav navbar-right">
<!-- Authentication Links -->
@if (Auth::guest())
<li><a href="{{ route('login') }}">Login</a></li>
<li><a href="{{ route('register') }}">Register</a></li>
@else
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
{{ Auth::user()->name }} <span class="caret"></span>
</a>
<ul class="dropdown-menu" role="menu">
<li>
<a href="{{ route('logout') }}"
onclick="event.preventDefault();
document.getElementById('logout-form').submit();">
Logout
</a>
<form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
{{ csrf_field() }}
</form>
</li>
</ul>
</li>
@endif
</ul>
</div>
</div>
</nav>
@include('layouts.partials.nav')
<div class="container"> <div class="container">
{{-- {{ dump(get_class_methods(url())) }} --}}
{{-- {{ url()->current().'?lang=en' }} --}}
{{-- {{ dump(get_class_methods(Route::current())) }} --}}
{{-- {{ dump(Route::current()->parameters()) }} --}}
{{-- {{ dump(url(Route::getName(), ['query' => 'recent', 'order' => 'desc'])) }} --}}
{{-- {{ dump(Route::current()->setParameter('lang', 'id')) }} --}}
@yield('content') @yield('content')
</div> </div>
</div> </div>

59
resources/views/layouts/partials/nav.blade.php

@ -0,0 +1,59 @@
<nav class="navbar navbar-default navbar-static-top">
<div class="container">
<div class="navbar-header">
<!-- Collapsed Hamburger -->
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#app-navbar-collapse">
<span class="sr-only">Toggle Navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<!-- Branding Image -->
<a class="navbar-brand" href="{{ url('/') }}">
{{ config('app.name', 'Laravel') }}
</a>
</div>
<div class="collapse navbar-collapse" id="app-navbar-collapse">
<!-- Left Side Of Navbar -->
<ul class="nav navbar-nav">
<li><a href="{{ route('users.search') }}">{{ trans('app.search_your_family') }}</a></li>
</ul>
<!-- Right Side Of Navbar -->
<ul class="nav navbar-nav navbar-right">
<!-- Authentication Links -->
<?php $mark = (preg_match('/\?/', url()->current())) ? '&' : '?'; ?>
<li><a href="{{ url(url()->current() . $mark . 'lang=en') }}">en</a></li>
<li><a href="{{ url(url()->current() . $mark . 'lang=id') }}">id</a></li>
@if (Auth::guest())
<li><a href="{{ route('login') }}">Login</a></li>
<li><a href="{{ route('register') }}">Register</a></li>
@else
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
{{ Auth::user()->name }} <span class="caret"></span>
</a>
<ul class="dropdown-menu" role="menu">
<li><a href="{{ route('profile') }}">{{ trans('app.my_profile') }}</a></li>
<li>
<a href="{{ route('logout') }}"
onclick="event.preventDefault();
document.getElementById('logout-form').submit();">
Logout
</a>
<form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
{{ csrf_field() }}
</form>
</li>
</ul>
</li>
@endif
</ul>
</div>
</div>
</nav>

18
resources/views/users/search.blade.php

@ -2,18 +2,18 @@
@section('content') @section('content')
<h3 class="page-header"> <h3 class="page-header">
Cari Keluarga Anda
{{ trans('app.search_your_family') }}
@if (request('q')) @if (request('q'))
<small class="pull-right">User ditemukan : <strong>{{ $users->total() }} Orang</strong> untuk kata kunci : <strong>{{ request('q') }}</strong></small>
<small class="pull-right">{!! trans('app.user_found', ['total' => $users->total(), 'keyword' => request('q')]) !!}</small>
@endif @endif
</h3> </h3>
{{ Form::open(['method' => 'get','class' => '']) }} {{ Form::open(['method' => 'get','class' => '']) }}
<div class="input-group"> <div class="input-group">
{{ Form::text('q', request('q'), ['class' => 'form-control', 'placeholder' => 'Masukkan nama/panggilan... klik Cari']) }}
{{ Form::text('q', request('q'), ['class' => 'form-control', 'placeholder' => trans('app.search_your_family_placeholder')]) }}
<span class="input-group-btn"> <span class="input-group-btn">
{{ Form::submit('Cari', ['class' => 'btn btn-default']) }}
{{ Form::submit(trans('app.search'), ['class' => 'btn btn-default']) }}
{{ link_to_route('users.search', 'Reset', [], ['class' => 'btn btn-default']) }} {{ link_to_route('users.search', 'Reset', [], ['class' => 'btn btn-default']) }}
</span> </span>
</div> </div>
@ -29,14 +29,14 @@
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading"><h3 class="panel-title">{{ $user->profileLink() }} ({{ $user->gender }})</h3></div> <div class="panel-heading"><h3 class="panel-title">{{ $user->profileLink() }} ({{ $user->gender }})</h3></div>
<div class="panel-body"> <div class="panel-body">
<div>Panggilan : {{ $user->nickname }}</div>
<div>{{ trans('user.nickname') }} : {{ $user->nickname }}</div>
<hr style="margin: 5px 0;"> <hr style="margin: 5px 0;">
<div>Ayah : {{ $user->father_id ? $user->father->name : '' }}</div>
<div>Ibu : {{ $user->mother_id ? $user->mother->name : '' }}</div>
<div>{{ trans('user.fahter') }} : {{ $user->father_id ? $user->father->name : '' }}</div>
<div>{{ trans('user.mother') }} : {{ $user->mother_id ? $user->mother->name : '' }}</div>
</div> </div>
<div class="panel-footer"> <div class="panel-footer">
{{ link_to_route('users.show', 'Lihat Profil', [$user->id], ['class' => 'btn btn-default btn-xs']) }}
{{ link_to_route('users.chart', 'Bagan Keluarga', [$user->id], ['class' => 'btn btn-default btn-xs']) }}
{{ link_to_route('users.show', trans('app.show_profile'), [$user->id], ['class' => 'btn btn-default btn-xs']) }}
{{ link_to_route('users.chart', trans('app.show_family_chart'), [$user->id], ['class' => 'btn btn-default btn-xs']) }}
</div> </div>
</div> </div>
</div> </div>

Loading…
Cancel
Save