259 lines
7.3 KiB
PHP
Executable file
259 lines
7.3 KiB
PHP
Executable file
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\Category;
|
|
use Request;
|
|
use App\Models\Product;
|
|
use App\Models\Ingredient;
|
|
use App\Models\Shipping;
|
|
use App\Models\TransCategory;
|
|
use App\Models\TransProduct;
|
|
use App\Models\TransIngredient;
|
|
use App\Models\TransShipping;
|
|
use App\Models\TransUserLevel;
|
|
use App\Models\UserLevel;
|
|
use Illuminate\Support\Collection;
|
|
use JoeDixon\Translation\Language;
|
|
|
|
|
|
class TranslationController extends Controller
|
|
{
|
|
|
|
|
|
protected $sourceLanguage;
|
|
protected $selectLanguage;
|
|
protected $selectKey;
|
|
protected $keys;
|
|
protected $model;
|
|
|
|
|
|
/**
|
|
*/
|
|
public function __construct()
|
|
{
|
|
$this->sourceLanguage = 'de';
|
|
$this->selectLanguage = 'en';
|
|
$this->keys = [];
|
|
$this->model = "";
|
|
}
|
|
/**
|
|
*/
|
|
public function index($model, $lang=null)
|
|
{
|
|
//Request::get('key')
|
|
//Request::get('language')
|
|
$this->initByModel($model);
|
|
$languages = $this->allLanguages();
|
|
$languages->forget('de');
|
|
|
|
$translations = $this->getTranslationsFormModel();
|
|
|
|
$data = [
|
|
'keys' => $this->keys,
|
|
'languages' => $languages,
|
|
'model' => $this->model,
|
|
'select_language' => $this->selectLanguage,
|
|
'source_language' => $this->sourceLanguage,
|
|
'translations' => $translations,
|
|
'select_key' => $this->selectKey
|
|
];
|
|
return view('translation::languages.translations.custom', $data);
|
|
|
|
}
|
|
|
|
/**
|
|
*/
|
|
public function initByModel($model)
|
|
{
|
|
if($model === 'products'){
|
|
$this->model = $model;
|
|
$this->keys = [
|
|
'name'=>'Produktname',
|
|
'copy'=>'Produktbeschreibung',
|
|
'description'=>'Beschreibung',
|
|
'usage'=>'Anwendung',
|
|
'ingredients'=>'Hinweise',
|
|
];
|
|
$this->selectKey = 'name';
|
|
}
|
|
|
|
if($model === 'ingredients'){
|
|
$this->model = $model;
|
|
$this->keys = [
|
|
'name'=>'Name',
|
|
'inci'=>'INCI',
|
|
'effect'=>'Wirkung',
|
|
];
|
|
$this->selectKey = 'name';
|
|
}
|
|
|
|
if($model === 'user_levels'){
|
|
$this->model = $model;
|
|
$this->keys = [
|
|
'name'=>'Name',
|
|
];
|
|
$this->selectKey = 'name';
|
|
}
|
|
|
|
if($model === 'shippings'){
|
|
$this->model = $model;
|
|
$this->keys = [
|
|
'name'=>'Name',
|
|
];
|
|
$this->selectKey = 'name';
|
|
}
|
|
|
|
if($model === 'categories'){
|
|
$this->model = $model;
|
|
$this->keys = [
|
|
'name'=>'Name',
|
|
'headline'=>'Headline',
|
|
];
|
|
$this->selectKey = 'name';
|
|
}
|
|
|
|
if(Request::get('key')){
|
|
$this->selectKey = Request::get('key');
|
|
}
|
|
if(Request::get('language')){
|
|
$this->selectLanguage = Request::get('language');
|
|
}
|
|
//Request::get('language')
|
|
}
|
|
|
|
public function getTranslationsFormModel(){
|
|
|
|
if($this->model === 'products'){
|
|
return Product::all()->mapWithKeys(function ($value) {
|
|
return [$value->id => [
|
|
'master' => $value->name,
|
|
'source' => $value->{$this->selectKey},
|
|
'trans' => $value->getTrans($this->selectKey, $this->selectLanguage),
|
|
]
|
|
];
|
|
});
|
|
}
|
|
if($this->model === 'ingredients'){
|
|
return Ingredient::all()->mapWithKeys(function ($value) {
|
|
return [$value->id => [
|
|
'master' => $value->name,
|
|
'source' => $value->{$this->selectKey},
|
|
'trans' => $value->getTrans($this->selectKey, $this->selectLanguage),
|
|
]
|
|
];
|
|
});
|
|
}
|
|
if($this->model === 'user_levels'){
|
|
return UserLevel::all()->mapWithKeys(function ($value) {
|
|
return [$value->id => [
|
|
'master' => $value->name,
|
|
'source' => $value->{$this->selectKey},
|
|
'trans' => $value->getTrans($this->selectKey, $this->selectLanguage),
|
|
]
|
|
];
|
|
});
|
|
}
|
|
if($this->model === 'shippings'){
|
|
return Shipping::all()->mapWithKeys(function ($value) {
|
|
return [$value->id => [
|
|
'master' => $value->name,
|
|
'source' => $value->{$this->selectKey},
|
|
'trans' => $value->getTrans($this->selectKey, $this->selectLanguage),
|
|
]
|
|
];
|
|
});
|
|
}
|
|
if($this->model === 'categories'){
|
|
return Category::all()->mapWithKeys(function ($value) {
|
|
return [$value->id => [
|
|
'master' => $value->name,
|
|
'source' => $value->{$this->selectKey},
|
|
'trans' => $value->getTrans($this->selectKey, $this->selectLanguage),
|
|
]
|
|
];
|
|
});
|
|
}
|
|
}
|
|
|
|
public function update($model)
|
|
{
|
|
$id = Request::get('key'); //id
|
|
$key = Request::get('group'); //key colum
|
|
$language = Request::get('language'); //selectLanguage
|
|
|
|
$value = Request::get('value') ?: ''; //value
|
|
|
|
if($model === 'products'){
|
|
TransProduct::updateOrCreate([
|
|
'language' => $language,
|
|
'product_id' => $id,
|
|
'key' => $key,
|
|
], [
|
|
'key' => $key,
|
|
'value' => $value,
|
|
]);
|
|
}
|
|
|
|
if($model === 'ingredients'){
|
|
TransIngredient::updateOrCreate([
|
|
'language' => $language,
|
|
'ingredient_id' => $id,
|
|
'key' => $key,
|
|
], [
|
|
'key' => $key,
|
|
'value' => $value,
|
|
]);
|
|
}
|
|
|
|
if($model === 'user_levels'){
|
|
TransUserLevel::updateOrCreate([
|
|
'language' => $language,
|
|
'user_level_id' => $id,
|
|
'key' => $key,
|
|
], [
|
|
'key' => $key,
|
|
'value' => $value,
|
|
]);
|
|
}
|
|
|
|
if($model === 'shippings'){
|
|
TransShipping::updateOrCreate([
|
|
'language' => $language,
|
|
'shipping_id' => $id,
|
|
'key' => $key,
|
|
], [
|
|
'key' => $key,
|
|
'value' => $value,
|
|
]);
|
|
}
|
|
|
|
if($model === 'categories'){
|
|
TransCategory::updateOrCreate([
|
|
'language' => $language,
|
|
'categorie_id' => $id,
|
|
'key' => $key,
|
|
], [
|
|
'key' => $key,
|
|
'value' => $value,
|
|
]);
|
|
}
|
|
|
|
return ['success' => true];
|
|
}
|
|
|
|
/**
|
|
* Get all languages from the application.
|
|
*
|
|
* @return Collection
|
|
*/
|
|
|
|
public function allLanguages()
|
|
{
|
|
return Language::all()->mapWithKeys(function ($language) {
|
|
return [$language->language => $language->name ?: $language->language];
|
|
});
|
|
}
|
|
|
|
|
|
}
|