From ff05acb8ba31de67b944b4c00672ce932aed68f1 Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Wed, 25 Sep 2019 19:28:00 +0200 Subject: [PATCH] wip #3080 @2 --- src/app/Magic/Models/CMSPage.php | 4 +- .../Magic/Models/CubistMagicAbstractModel.php | 4 +- src/app/Magic/Models/CubistMagicPageModel.php | 6 +- .../Models/CubistMagicTranslatableModel.php | 3 + src/app/Magic/Models/Settings.php | 4 +- src/app/Middleware/LocaleSelector.php | 59 +++++++++++++++---- 6 files changed, 60 insertions(+), 20 deletions(-) diff --git a/src/app/Magic/Models/CMSPage.php b/src/app/Magic/Models/CMSPage.php index 656dc62..d261c93 100644 --- a/src/app/Magic/Models/CMSPage.php +++ b/src/app/Magic/Models/CMSPage.php @@ -68,8 +68,8 @@ class CMSPage extends CubistMagicNestedModel 'name' => 'status', 'type' => 'SelectFromArray', 'default' => '0', - 'label' => __('Status'), - 'options' => ['0' => __('Offline'), '1' => __('Published')], + 'label' => 'Status', + 'options' => ['0' => 'Hors ligne', '1' => 'Publié'], 'translatable' => true, 'column' => true, 'tab' => 'Informations principales', diff --git a/src/app/Magic/Models/CubistMagicAbstractModel.php b/src/app/Magic/Models/CubistMagicAbstractModel.php index 63e4fdf..35931c9 100644 --- a/src/app/Magic/Models/CubistMagicAbstractModel.php +++ b/src/app/Magic/Models/CubistMagicAbstractModel.php @@ -11,8 +11,6 @@ use Cubist\Backpack\app\Magic\PageData; use Cubist\Backpack\app\Magic\Requests\CubistMagicUpdateRequest; use Cubist\Backpack\app\Magic\Util; use Cubist\Util\Json; -use Cviebrock\EloquentSluggable\Sluggable; -use Cviebrock\EloquentSluggable\SluggableScopeHelpers; use Doctrine\DBAL\Schema\Schema; use Doctrine\DBAL\Schema\Table; use Illuminate\Database\Eloquent\Model; @@ -137,7 +135,7 @@ class CubistMagicAbstractModel extends Model implements HasMedia * * @return array */ - public function sluggable() + public function sluggable():array { return [ 'slug' => [ diff --git a/src/app/Magic/Models/CubistMagicPageModel.php b/src/app/Magic/Models/CubistMagicPageModel.php index b8f7f33..1bdcc4c 100644 --- a/src/app/Magic/Models/CubistMagicPageModel.php +++ b/src/app/Magic/Models/CubistMagicPageModel.php @@ -81,7 +81,7 @@ class CubistMagicPageModel extends CubistMagicTranslatableModel 'name' => 'meta_title', 'label' => trans('backpack::pagemanager.meta_title'), 'type' => 'Text', - 'hint' => trans('If empty, page title is used.') . ' ' . __('Recommended length: 60 chars'), + 'hint' => 'Si vide, le titre court est utilisé' . ' ' . 'Longueur recommandée : 60 caractères', 'tab' => $tab, 'fake' => true, 'store_in' => 'seo', @@ -91,7 +91,7 @@ class CubistMagicPageModel extends CubistMagicTranslatableModel 'name' => 'meta_description', 'label' => trans('backpack::pagemanager.meta_description'), 'type' => 'Textarea', - 'hint' => __('Recommended length: 160 chars'), + 'hint' => 'Longueur recommandée : 160 caractères', 'tab' => $tab, 'fake' => true, 'store_in' => 'seo', @@ -99,7 +99,7 @@ class CubistMagicPageModel extends CubistMagicTranslatableModel $this->addFieldAtEnd([ 'name' => 'robots', - 'label' => __('Allow page index by search engines'), + 'label' => 'Permettre l\'indexation par les moteurs de recherche', 'type' => 'Checkbox', 'default' => true, 'tab' => $tab, diff --git a/src/app/Magic/Models/CubistMagicTranslatableModel.php b/src/app/Magic/Models/CubistMagicTranslatableModel.php index 9eaa048..0e0559d 100644 --- a/src/app/Magic/Models/CubistMagicTranslatableModel.php +++ b/src/app/Magic/Models/CubistMagicTranslatableModel.php @@ -9,6 +9,9 @@ use Backpack\CRUD\ModelTraits\SpatieTranslatable\SluggableScopeHelpers; class CubistMagicTranslatableModel extends CubistMagicAbstractModel { + use Sluggable; + use SluggableScopeHelpers; + use HasTranslations { update as protected updateTranslations; create as protected createTranslations; diff --git a/src/app/Magic/Models/Settings.php b/src/app/Magic/Models/Settings.php index 32b1036..63b10c3 100644 --- a/src/app/Magic/Models/Settings.php +++ b/src/app/Magic/Models/Settings.php @@ -100,7 +100,7 @@ class Settings extends CubistMagicTranslatableModel $this->addField(['name' => 'meta_title', 'label' => 'Titre long par défaut', 'type' => 'Text', - 'hint' => trans('If empty, page title is used.') . ' ' . __('Recommended length: 60 chars'), + 'hint' => 'Taille recommandée : 60 caractères', 'tab' => 'SEO // Meta', ]); @@ -108,7 +108,7 @@ class Settings extends CubistMagicTranslatableModel 'name' => 'meta_description', 'label' => 'Meta description par défaut', 'type' => 'Textarea', - 'hint' => __('Recommended length: 160 chars'), + 'hint' => 'Taille recomandée : 160 caractères', 'tab' => 'SEO // Meta', ]); diff --git a/src/app/Middleware/LocaleSelector.php b/src/app/Middleware/LocaleSelector.php index 25c97bd..bbdc7a3 100644 --- a/src/app/Middleware/LocaleSelector.php +++ b/src/app/Middleware/LocaleSelector.php @@ -2,27 +2,66 @@ namespace Cubist\Backpack\app\Middleware; +use Closure; use Cubist\Backpack\app\Magic\Models\Locale; use Illuminate\Http\Request; +use Illuminate\Support\Facades\App; class LocaleSelector { public function handle(Request $request, Closure $next) { - $response = $next($request); - // No need to change locale depending on the domaine on admin - if (strpos($request->getPathInfo(), '/admin/') === 0) { - return $response; - } - - $domain = $request->getHttpHost(); $class = Locale::getLocaleClass(); - $locales = $class::where('active', 1)->get(0); + $locales = $class::where(['enabled' => 1])->orderBy('default', 'DESC')->get(); foreach ($locales as $locale) { - dd($locale); + if ($locale->default) { + $defaultLocale = $locale->locale; + break; + } + } + + + $selectedLocale = $this->_getLocaleByDomain($request, $locales); + if (null === $selectedLocale) { + $selectedLocale = $defaultLocale; } - return $response; + $this->setLocale($selectedLocale, $defaultLocale); + + return $next($request); + } + + public function setLocale($locale, $default) + { + + App::setLocale($locale); + app('translator')->setLocale($locale); + app('translator')->setFallback($default); + } + + /** + * @param Request $request + * @param Locale[] $locales + * @return mixed|null + */ + protected function _getLocaleByDomain(Request $request, $locales) + { + $httpdomain = $request->getHttpHost(); + $default = null; + $map = []; + foreach ($locales as $locale) { + if (null === $default && $locale->default) { + $default = $locale->locale; + } + $domains = $locale->domains; + if (is_string($locale->domains)) { + $domains = json_decode($locale->domains, true); + } + foreach ($domains as $domain) { + $map[trim($domain['domain'])] = $locale->locale; + } + } + return $map[$httpdomain] ?? null; } } -- 2.39.5