Skip to content

Commit

Permalink
commit
Browse files Browse the repository at this point in the history
  • Loading branch information
freekmurze committed Oct 8, 2018
1 parent dc88970 commit 1af8218
Showing 1 changed file with 45 additions and 9 deletions.
54 changes: 45 additions & 9 deletions src/Translatable.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,21 @@

namespace Spatie\NovaTranslatable;

use Spatie\Tags\Tag;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Resources\MergeValue;
use Laravel\Nova\Fields\Field;
use Laravel\Nova\Http\Requests\NovaRequest;
use Spatie\Tags\Tag;

class Translatable extends MergeValue implements JsonSerializable
class Translatable extends MergeValue
{
public $component = 'nova-translatable';

protected static $defaultLocales = [];

protected $locales = [];
/** @var array \Laravel\Nova\Fields\Field[] */
protected $originalFields;

protected $fields = [];
protected $locales = [];

public static function make(array $fields): self
{
Expand All @@ -23,20 +25,54 @@ public static function make(array $fields): self

public function __construct(array $fields = [])
{
$this->fields = $fields;

$this->locales(static::$defaultLocales);

$this->originalFields = $fields;

$this->createTranslatableFields();
}

public static function defaultLocales(array $locales)
{
static::$defaultLocales = $locales;
}

public function locales(array $locales)
{
$this->locales = $locales;

$this->createTranslatableFields();

return $this;
}

public static function defaultLocales(array $defaultLocales)
protected function createTranslatableFields()
{
collect($this->locales)->each(function (string $locale) {
collect($this->originalFields)->each(function (Field $field) use ($locale) {
$this->data[] = $this->createTranslatedField($field, $locale);
});
});
}

protected function createTranslatedField(Field $originalField, string $locale): Field
{
static::$defaultLocales = $defaultLocales;
$translatedField = clone $originalField;

$translatedField
->resolveUsing(function ($value, Model $model) use ($translatedField, $locale) {
return $model->getTranslation($translatedField->attribute, $locale);
});

$translatedField->attribute = $translatedField->attribute . '_' . $locale;
$translatedField->name = $translatedField->name . " ({$locale})";

/*
$translatedField->fillUsing(function(NovaRequest $request, $requestAttribute, $model, $attribute) {
// dd('fillusing', $request->all(), $requestAttribute,$model, $attribute);
});
*/

return $translatedField;
}
}

0 comments on commit 1af8218

Please sign in to comment.