Skip to content
This repository was archived by the owner on Jan 3, 2023. It is now read-only.

Commit 75aba50

Browse files
committed
v3.2.7
- change unFoundLocalizedRoute config to root instead of home for clearity - fix issue for adding mulitple middlewares - update wiki - cleanup
1 parent 1fb4742 commit 75aba50

File tree

4 files changed

+18
-24
lines changed

4 files changed

+18
-24
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ return [
9595
/*
9696
* where to redirect when a route is available in one locale "en" but not in another "fr" ?
9797
*/
98-
'unFoundLocalizedRoute' => 'home',
98+
'unFoundLocalizedRoute' => 'root',
9999

100100
/*
101101
* package models

src/Traits/NavigationTrait.php

+8-13
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,9 @@ public function getRoute($crntRouteName, array $params = null)
6161
return;
6262
}
6363

64-
$locale = $this->getCrntLocale();
65-
$url = $this->routeLink($crntRouteName, $locale);
64+
$locale = $this->getCrntLocale();
65+
$url = $this->routeLink($crntRouteName, $locale);
66+
$forceDefaultLocation = LaravelLocalization::hideDefaultLocaleInURL() && $locale == LaravelLocalization::getDefaultLocale() ? false : true;
6667

6768
// resolve route params
6869
if ($params) {
@@ -71,12 +72,7 @@ public function getRoute($crntRouteName, array $params = null)
7172
session([$key => $value]);
7273

7374
// fix link not being 'is-active' when "hideDefaultLocaleInURL => true"
74-
if (LaravelLocalization::hideDefaultLocaleInURL() && $locale == LaravelLocalization::getDefaultLocale()) {
75-
$finalUrl = LaravelLocalization::getLocalizedURL($locale, url($this->getParams($url, $value)), []);
76-
} else {
77-
$finalUrl = LaravelLocalization::getLocalizedURL($locale, url($this->getParams($url, $value)), [], true);
78-
}
79-
75+
$finalUrl = LaravelLocalization::getLocalizedURL($locale, url($this->getParams($url, $value)), [], $forceDefaultLocation);
8076
$this->urlRoute = $finalUrl;
8177

8278
return $finalUrl;
@@ -131,15 +127,14 @@ protected function routeLink($name, $code)
131127
{
132128
$searchCode = $this->searchForRoute($name, $code);
133129

134-
// if notFound, then either redir to home or abort
130+
// if notFound, then either redir to home or show 404
135131
if (!$searchCode) {
136132
switch (config('simpleMenu.unFoundLocalizedRoute')) {
137-
case 'home':
138-
return '/';
139-
break;
140133
case 'error':
141-
return '404';
134+
return $name;
142135
break;
136+
default:
137+
return '/';
143138
}
144139
}
145140

src/Traits/RoutesTrait.php

+6-8
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
namespace ctf0\SimpleMenu\Traits;
44

55
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
6-
use Mcamara\LaravelLocalization\Middleware\LocaleSessionRedirect;
7-
use Mcamara\LaravelLocalization\Middleware\LaravelLocalizationRedirectFilter;
86

97
trait RoutesTrait
108
{
@@ -17,8 +15,8 @@ public function createRoutes()
1715
'prefix' => LaravelLocalization::setLocale(),
1816
'middleware' => [
1917
'web',
20-
LocaleSessionRedirect::class,
21-
LaravelLocalizationRedirectFilter::class,
18+
'localeSessionRedirect',
19+
'localizationRedirect',
2220
],
2321
], function () {
2422
$this->utilCheck();
@@ -78,9 +76,9 @@ protected function routeGen($page)
7876
$breadCrumb = $page->getAncestors();
7977

8078
// middlewares
81-
$middlewares = $page->middlewares;
82-
$roles = 'role:' . implode(',', $page->roles->pluck('name')->toArray());
83-
$permissions = 'perm:' . implode(',', $page->permissions->pluck('name')->toArray());
79+
$middlewares = is_null($page->middlewares) ? null : preg_split('/[\s,]+/', $page->middlewares);
80+
$roles = empty($page->roles->pluck('name')->toArray()) ? null : 'role:' . implode(',', $page->roles->pluck('name')->toArray());
81+
$permissions = empty($page->permissions->pluck('name')->toArray()) ? null : 'perm:' . implode(',', $page->permissions->pluck('name')->toArray());
8482

8583
// cache the page so we can pass the page params to the controller@method
8684
$compact = compact('template', 'title', 'body', 'desc', 'meta', 'cover', 'breadCrumb', 'middlewares', 'roles', 'permissions');
@@ -95,7 +93,7 @@ protected function routeGen($page)
9593
? $action
9694
: '\ctf0\SimpleMenu\Controllers\DummyController@handle';
9795

98-
$mds = is_null($middlewares) ? [$roles, $permissions] : [$middlewares, $roles, $permissions];
96+
$mds = array_filter(array_flatten([$middlewares, $roles, $permissions]));
9997

10098
app('router')->get($route)
10199
->uses($uses)

src/config/simpleMenu.php

+3-2
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,10 @@
2424
* where to redirect when a route is available in one locale "en" but not in another "fr" ?
2525
*
2626
* add
27-
* 'home' = '/' (or) 'error' = '404'
27+
* 'root' = '/'
28+
* 'error' = '404'
2829
*/
29-
'unFoundLocalizedRoute' => 'home',
30+
'unFoundLocalizedRoute' => 'root',
3031

3132
/*
3233
* package models

0 commit comments

Comments
 (0)