From: Vincent Vanwaelscappel Date: Wed, 25 Sep 2019 13:49:31 +0000 (+0200) Subject: wip #3080 @2 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=8aa370fec6337342dd1784bf9999fdffc912f5cb;p=cubist_cms-back.git wip #3080 @2 --- diff --git a/composer.json b/composer.json index 3c49936..e71026e 100644 --- a/composer.json +++ b/composer.json @@ -43,8 +43,8 @@ "league/commonmark-ext-autolink": "^1.0", "cviebrock/laravel-elasticsearch": "^3.6", "spatie/laravel-honeypot": "^1.3", - "chrisjean/php-ico": "^1.0" - + "chrisjean/php-ico": "^1.0", + "ext-json": "*" }, "require-dev": { "filp/whoops": "^2.3", diff --git a/src/app/Magic/Fields/Table.php b/src/app/Magic/Fields/Table.php index 12b2503..87733ad 100644 --- a/src/app/Magic/Fields/Table.php +++ b/src/app/Magic/Fields/Table.php @@ -17,15 +17,21 @@ class Table extends Field return '[]'; } - $string=is_string($value); + $string = is_string($value); if ($string) { $decoded = json_decode($value, 1); } else { $decoded = json_decode(json_encode($value), 1); } + if (null === $decoded) { + $decoded = []; + } $res = []; foreach ($decoded as $i => $item) { + if (is_string($item)) { + continue; + } if (!isset($item['id']) || $item['id'] == '') { $item['id'] = $i; } diff --git a/src/app/Magic/Menu/Item.php b/src/app/Magic/Menu/Item.php index 8bc23ee..e14f8f4 100644 --- a/src/app/Magic/Menu/Item.php +++ b/src/app/Magic/Menu/Item.php @@ -248,7 +248,7 @@ class Item return $item; } /** @var $item PageItem */ - if (stristr($item->getTemplate(), 'redirection')) { + if (stripos($item->getTemplate(), 'redirection') !== false) { continue; } return $item; diff --git a/src/app/Magic/Models/CubistMagicAbstractModel.php b/src/app/Magic/Models/CubistMagicAbstractModel.php index 26aaec1..a6fb6c9 100644 --- a/src/app/Magic/Models/CubistMagicAbstractModel.php +++ b/src/app/Magic/Models/CubistMagicAbstractModel.php @@ -10,10 +10,9 @@ use Cubist\Backpack\app\Magic\Fields\Field; use Cubist\Backpack\app\Magic\PageData; use Cubist\Backpack\app\Magic\Requests\CubistMagicUpdateRequest; use Cubist\Backpack\app\Magic\Util; -use Backpack\CRUD\ModelTraits\SpatieTranslatable\Sluggable; -use Backpack\CRUD\ModelTraits\SpatieTranslatable\SluggableScopeHelpers; -use Backpack\CRUD\ModelTraits\SpatieTranslatable\HasTranslations; 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; @@ -29,10 +28,6 @@ class CubistMagicAbstractModel extends Model implements HasMedia use Sluggable; use SluggableScopeHelpers; use HasMediaTrait; - use HasTranslations { - update as protected updateTranslations; - create as protected createTranslations; - } use RevisionableTrait; use BunchOfFields { addField as protected bunchAddField; @@ -59,11 +54,6 @@ class CubistMagicAbstractModel extends Model implements HasMedia */ protected $_slugFields = ['slug', 'title', 'name']; - /** - * @var array - */ - protected $translatable = []; - /** * @var array */ @@ -136,7 +126,6 @@ class CubistMagicAbstractModel extends Model implements HasMedia } $this->fakeColumns = array_unique($this->fakeColumns); - $this->translatable = array_unique($this->translatable); } @@ -215,12 +204,6 @@ class CubistMagicAbstractModel extends Model implements HasMedia } // do not enable it again !! // $this->casts[$store_in] = 'array'; - if ($field->getAttribute('translatable')) { - if (!in_array($store_in, $this->translatable)) { - $this->translatable[] = $store_in; - } - } - if (!in_array($store_in, $this->fakeColumns)) { $this->fakeColumns[] = $store_in; } @@ -237,9 +220,6 @@ class CubistMagicAbstractModel extends Model implements HasMedia if ($field->getAttribute('cast', false) !== false) { $this->casts[$field->getAttribute('name')] = $field->getAttribute('cast'); } - if ($field->getAttribute('translatable')) { - $this->translatable[] = $name; - } } return $field; @@ -316,13 +296,13 @@ class CubistMagicAbstractModel extends Model implements HasMedia try { $table->addColumn($this->primaryKey, self::toDoctrineType($this->keyType), ['autoincrement' => $this->incrementing, 'unsigned' => true]); } catch (\Exception $e) { - return $e->getMessage(); + } $table->setPrimaryKey([$this->primaryKey], 'pk_' . $this->table); foreach ($this->_relationships as $relationship) { - if ($relationship->getRelationship() == 'belongsToMany') { + if ($relationship->getRelationship() === 'belongsToMany') { $model = self::_toModel($relationship->getAttribute('model')); @@ -336,7 +316,7 @@ class CubistMagicAbstractModel extends Model implements HasMedia } foreach ($this->_fields as $field) { - if ($field->getRelationship() == 'belongsToMany') { + if ($field->getRelationship() === 'belongsToMany') { continue; } if ($field->getAttribute('fake', false) !== false) { @@ -477,10 +457,10 @@ class CubistMagicAbstractModel extends Model implements HasMedia { $res = []; foreach ($attributes as $k => $attribute) { - if (stristr($k, '___')) { + if (strpos($k, '___') !== false) { continue; } - if (stristr($k, 'bunchmultiple_')) { + if (stripos($k, 'bunchmultiple_') !== false) { continue; } $res[$k] = $attribute; @@ -488,24 +468,6 @@ class CubistMagicAbstractModel extends Model implements HasMedia return $res; } - public function update(array $attributes = [], array $options = []) - { - return $this->updateTranslations($this->_prepareData($attributes), $options); - } - - public function create(array $attributes = []) - { - return $this->createTranslations($this->_prepareData($attributes)); - } - - public function getSlugAttribute($value) - { - if (!$value) { - return Str::slug($this->title); - } - return $value; - } - /** * @param $controller CubistMagicController */ diff --git a/src/app/Magic/Models/CubistMagicModel.php b/src/app/Magic/Models/CubistMagicModel.php deleted file mode 100644 index 8fdb583..0000000 --- a/src/app/Magic/Models/CubistMagicModel.php +++ /dev/null @@ -1,8 +0,0 @@ -translatable = array_unique($this->translatable); + } + + public function addField($attributes) + { + $field = parent::addField($attributes); + if ($field->getAttribute('fake', false) === true) { + if ($field->getAttribute('translatable')) { + if (!in_array($field->getAttribute('store_in'), $this->translatable)) { + $this->translatable[] = $field->getAttribute('store_in'); + } + } + } else { + if ($field->getAttribute('translatable')) { + $this->translatable[] = $field->getAttribute('name'); + } + } + + return $field; + } + + public function update(array $attributes = [], array $options = []) + { + return $this->updateTranslations($this->_prepareData($attributes), $options); + } + + public function create(array $attributes = []) + { + return $this->createTranslations($this->_prepareData($attributes)); + } + +} diff --git a/src/app/Magic/Models/Locale.php b/src/app/Magic/Models/Locale.php index 26ecb32..2fbe729 100644 --- a/src/app/Magic/Models/Locale.php +++ b/src/app/Magic/Models/Locale.php @@ -4,7 +4,7 @@ namespace Cubist\Backpack\app\Magic\Models; -class Locale extends CubistMagicModel +class Locale extends CubistMagicAbstractModel { protected $table = 'cubist_locales'; @@ -38,5 +38,12 @@ class Locale extends CubistMagicModel 'type' => 'Checkbox', 'label' => 'Par défaut', 'column' => true]); + + $this->addField(['name' => 'domains', + 'type' => 'Table', + 'label' => 'Domaines', + 'columns' => ['env' => 'Environnement', 'domain' => 'Domaine'], + 'translatable' => false, + ]); } } diff --git a/src/app/Magic/Models/News.php b/src/app/Magic/Models/News.php index f49646d..b96dd33 100644 --- a/src/app/Magic/Models/News.php +++ b/src/app/Magic/Models/News.php @@ -3,8 +3,7 @@ namespace Cubist\Backpack\app\Magic\Models; - -class News extends CubistMagicPageModel +class News extends CubistMagicTranslatableModel { protected $table = 'cubist_news'; diff --git a/src/app/Magic/Models/Settings.php b/src/app/Magic/Models/Settings.php index 6981e67..32b1036 100644 --- a/src/app/Magic/Models/Settings.php +++ b/src/app/Magic/Models/Settings.php @@ -7,7 +7,7 @@ use Cubist\Backpack\app\Http\Controllers\CubistPWAController; use Cubist\Backpack\app\Magic\PageData; use Spatie\MediaLibrary\Models\Media; -class Settings extends CubistMagicModel +class Settings extends CubistMagicTranslatableModel { /** @var PageData|null */ protected static $_data = null; diff --git a/src/app/Magic/Models/Translate.php b/src/app/Magic/Models/Translate.php index 379c61f..361bab9 100644 --- a/src/app/Magic/Models/Translate.php +++ b/src/app/Magic/Models/Translate.php @@ -3,8 +3,7 @@ namespace Cubist\Backpack\app\Magic\Models; - -class Translate extends CubistMagicModel +class Translate extends CubistMagicTranslatableModel { protected $table = 'cubist_translate';