]> _ Git - cubist_cms-back.git/commitdiff
wip #3080 @2
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 25 Sep 2019 17:28:00 +0000 (19:28 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 25 Sep 2019 17:28:00 +0000 (19:28 +0200)
src/app/Magic/Models/CMSPage.php
src/app/Magic/Models/CubistMagicAbstractModel.php
src/app/Magic/Models/CubistMagicPageModel.php
src/app/Magic/Models/CubistMagicTranslatableModel.php
src/app/Magic/Models/Settings.php
src/app/Middleware/LocaleSelector.php

index 656dc6296430d423b7405a353321dce0e0d3fd52..d261c9356b53b10f4627ba1acf100ec1926e812a 100644 (file)
@@ -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',
index 63e4fdf1f314e635ac349e1344bae14338333f45..35931c9f15d64f8fd1631da31b87d5283379df30 100644 (file)
@@ -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' => [
index b8f7f33a1849878eda51096b054a89ebcc7f1b0d..1bdcc4c251e4c2001de3c94236387ef0ee8f4b32 100644 (file)
@@ -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,
index 9eaa0488b6018e633c1982940c75c6c3246ea19b..0e0559da3254119eb2818bbe9eda8ef7909b41bd 100644 (file)
@@ -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;
index 32b1036e772ba3c208ad8a419dd730d80caf1bd0..63b10c39c346b0017167515895096bcdc34809d1 100644 (file)
@@ -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',
         ]);
 
index 25c97bd9e1cadeb6428070814e91ac9e6dc041bf..bbdc7a3fd147952219184650da7eaf1d68a03950 100644 (file)
@@ -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;
     }
 }