forked from gergo85/oc-translate-extended
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathroutes.php
59 lines (46 loc) · 1.84 KB
/
routes.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php
/**
* Created by PhpStorm.
* User: r
* Date: 13.04.16
* Time: 16:12
*/
use Excodus\TranslateExtended\Models\Settings;
use Excodus\TranslateExtended\Classes\ExtendedLocaleMiddleware;
use RainLab\Translate\Classes\Translator;
App::before(function($request) {
if (App::runningInBackend()) {
return;
}
$translator = Translator::instance();
if (!$translator->isConfigured())
return;
$locale = $translator->loadLocaleFromRequest() ? $translator->getLocale() : null;
if(Settings::get('route_prefixing', true)) {
if($locale){
Route::group(['prefix' => $locale, 'middleware' => 'web'], function() {
Route::any('{slug?}', 'Cms\Classes\CmsController@run')->where('slug', '(.*)?');
});
Route::any($locale, 'Cms\Classes\CmsController@run')->middleware('web');
Event::listen('cms.route', function() use ($locale) {
Route::group(['prefix' => $locale, 'middleware' => 'web'], function() {
Route::any('{slug?}', 'Cms\Classes\CmsController@run')->where('slug', '(.*)?');
});
});
}
if(Settings::get('homepage_redirect', true)) {
Route::get('/', function() use($translator) {
return redirect($translator->getLocale());
})->middleware(['web', ExtendedLocaleMiddleware::class]);
}
if (Settings::get('force_prefix', true)) {
Route::get('/{any}', function ($any) use ($translator, $request) {
$redirect = $translator->getDefaultLocale() . '/' . $request->path();
if ($request->query()) {
$redirect .= '?' . http_build_query($request->query());
}
return redirect($redirect);
})->where('any', '.*');
}
}
});