Language editor refactoring part 4 (backend + frontend)

This commit is contained in:
Peter Papp
2021-04-01 10:40:48 +02:00
parent 5130082111
commit 7772ef6b40
32 changed files with 288 additions and 161 deletions
+1 -1
View File
@@ -21,7 +21,7 @@ class SetupDevEnvironment extends Command
* @var string
*/
protected $signature = 'setup:dev';
protected $license = 'Regular';
protected $license = 'Extended';
/**
* The console command description.
@@ -6,7 +6,7 @@ use App\Http\Resources\LanguageCollection;
use App\Http\Resources\LanguageResource;
use App\Models\Language;
use App\Http\Controllers\Controller;
use App\Services\DemoService;
use App\Models\Setting;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\Routing\ResponseFactory;
use Illuminate\Http\Response;
@@ -16,13 +16,6 @@ use App\Http\Requests\Languages\UpdateLanguageRequest;
class LanguageController extends Controller
{
protected $demo;
public function __construct()
{
$this->demo = resolve(DemoService::class);
}
/**
* Get all languages for admin translate
*
@@ -42,7 +35,9 @@ class LanguageController extends Controller
*/
public function get_language(Language $language)
{
return response(new LanguageResource($language), 200);
return response(
new LanguageResource($language), 200
);
}
/**
@@ -53,6 +48,7 @@ class LanguageController extends Controller
*/
public function create_language(CreateLanguageRequest $request)
{
// Abort in demo mode
abort_if(is_demo(), 204, 'Done.');
$language = Language::create([
@@ -73,6 +69,7 @@ class LanguageController extends Controller
*/
public function update_language(UpdateLanguageRequest $request, Language $language)
{
// Abort in demo mode
abort_if(is_demo(), 204, 'Done.');
$language->update(make_single_input($request));
@@ -91,18 +88,21 @@ class LanguageController extends Controller
*/
public function update_string(UpdateStringRequest $request, Language $language)
{
// Abort in demo mode
abort_if(is_demo(), 204, 'Done.');
$language
->languageStrings()
->languageTranslations()
->where('key', $request->name)
->update([
'value' => $request->value
]);
cache()->forget("language-strings-{$language->locale}");
cache()->forget("language-translations-{$language->locale}");
return response('Done', 204);
return response(
'Done', 204
);
}
/**
@@ -113,14 +113,24 @@ class LanguageController extends Controller
*/
public function delete_language(Language $language)
{
// Abort in demo mode
abort_if(is_demo(), 204, 'Done.');
if ($language->locale === 'en') {
abort(401, "Sorry, you can't delete default language.");
}
// If user try to delete language used as default,
// then set en language as default
if ($language->locale === get_setting('language')) {
Setting::whereName('language')->first()
->update(['value' => 'en']);
}
$language->delete();
return response('Done', 204);
return response(
'Done', 204
);
}
}
@@ -51,6 +51,7 @@ class PagesController extends Controller
*/
public function update(Request $request, Page $page)
{
// Abort in demo mode
abort_if(is_demo(), 204, 'Done.');
$page->update(
@@ -110,6 +110,7 @@ class PlanController extends Controller
*/
public function update(Request $request, $id)
{
// Abort in demo mode
abort_if(is_demo(), 204, 'Done.');
// Update plan
@@ -129,6 +130,7 @@ class PlanController extends Controller
*/
public function delete($id)
{
// Abort in demo mode
abort_if(is_demo(), 204, 'Done.');
// Delete plan
@@ -49,6 +49,7 @@ class SettingController extends Controller
*/
public function update(Request $request)
{
// Abort in demo mode
abort_if(is_demo(), 204, 'Done.');
// Store image if exist
@@ -82,6 +83,7 @@ class SettingController extends Controller
public function set_email(Request $request)
{
// TODO: pridat validator do requestu
// Abort in demo mode
abort_if(is_demo(), 204, 'Done.');
if (!app()->runningUnitTests()) {
@@ -174,6 +176,7 @@ class SettingController extends Controller
*/
public function flush_cache()
{
// Abort in demo mode
abort_if(is_demo(), 204, 'Done.');
if (!app()->runningUnitTests()) {
@@ -164,17 +164,10 @@ class AppFunctionsController extends Controller
*/
public function get_storage_plans()
{
if (Cache::has('pricing')) {
// Get pricing from cache
$pricing = Cache::get('pricing');
} else {
// Store pricing to cache
$pricing = Cache::rememberForever('pricing', function () {
return $this->stripe->getActivePlans();
});
}
// Get pricing from cache
$pricing = Cache::rememberForever('pricing', function () {
return $this->stripe->getActivePlans();
});
// Format pricing to collection
$collection = new PricingCollection($pricing);
@@ -194,11 +187,10 @@ class AppFunctionsController extends Controller
*/
public function get_translations($lang)
{
$translations = Cache::rememberForever("language-strings-$lang", function () use ($lang) {
$translations = Cache::rememberForever("language-translations-$lang", function () use ($lang) {
return Language::whereLocale($lang)
->firstOrFail()
->languageStrings;
->languageTranslations;
});
return map_language_translations($translations);
+3 -3
View File
@@ -17,15 +17,15 @@ class LanguageCollection extends ResourceCollection
*/
public function toArray($request)
{
$current_language = Language::with('languageStrings')
$current_language = Language::with('languageTranslations')
->whereLocale(get_setting('language') ?? 'en')
->first();
return [
'data' => $this->collection,
'meta' => [
'current_language' => new LanguageResource($current_language),
'default_translations' => get_default_language_strings()
'current_language' => new LanguageResource($current_language),
'reference_translations' => get_default_language_translations()
],
];
}
+1 -1
View File
@@ -21,7 +21,7 @@ class LanguageResource extends JsonResource
'attributes' => [
'name' => $this->name,
'locale' => $this->locale,
'translations' => map_language_translations($this->languageStrings),
'translations' => map_language_translations($this->languageTranslations),
'updated_at' => $this->updated_at,
'created_at' => $this->created_at,
]
+8 -7
View File
@@ -6,7 +6,7 @@ use App\Models\Setting;
use App\Models\User;
use App\Models\Share;
use App\Models\Language;
use App\Models\LanguageString;
use App\Models\LanguageTranslation;
use ByteUnits\Metric;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
@@ -599,11 +599,12 @@ function get_image_meta_data($file)
/**
* @return Collection
*/
function get_default_language_strings()
function get_default_language_translations()
{
return collect([
config("language-strings.extended"),
config("language-strings.regular")
config("language-translations.extended"),
config("language-translations.regular"),
config("custom-language-translations")
])->collapse();
}
@@ -614,7 +615,7 @@ function get_default_language_strings()
*/
function is_dev()
{
return env('APP_ENV') === 'local' ? 1 : 0;
return env('APP_ENV') === 'local';
}
/**
@@ -853,8 +854,8 @@ function __t($key, $values = null)
return get_setting('language') ?? 'en';
});
$strings = cache()->rememberForever("language-strings-$locale", function () use ($locale) {
return Language::whereLocale($locale)->first()->languageStrings ?? get_default_language_strings();
$strings = cache()->rememberForever("language-translations-$locale", function () use ($locale) {
return Language::whereLocale($locale)->first()->languageTranslations ?? get_default_language_translations();
});
// Find the string by key
+6 -6
View File
@@ -29,9 +29,9 @@ class Language extends Model
public $incrementing = false;
public function languageStrings()
public function languageTranslations()
{
return $this->hasMany(LanguageString::class, 'lang', 'locale');
return $this->hasMany(LanguageTranslation::class, 'lang', 'locale');
}
protected static function boot()
@@ -42,21 +42,21 @@ class Language extends Model
$language->id = Str::uuid();
resolve(HelperService::class)
->create_default_language_strings(
->create_default_language_translations(
get_setting('license') ?? 'extended', $language->locale
);
});
static::updating(function ($language) {
cache()->forget("language-strings-$language->locale");
cache()->forget("language-translations-$language->locale");
});
static::deleting(function ($language) {
DB::table('language_strings')
DB::table('language_translations')
->whereLang($language->locale)
->delete();
cache()->forget("language-strings-$language->locale");
cache()->forget("language-translations-$language->locale");
});
}
}
@@ -4,7 +4,7 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class LanguageString extends Model
class LanguageTranslation extends Model
{
public $timestamps = false;
+3
View File
@@ -5,6 +5,9 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
/**
* @method static whereName(string $string)
*/
class Setting extends Model
{
use HasFactory;
+9 -7
View File
@@ -328,16 +328,18 @@ class HelperService
* @param $license
* @param $locale
*/
function create_default_language_strings($license, $locale)
function create_default_language_translations($license, $locale)
{
$translations = [
'extended' => collect([
config("language-strings.extended"),
config("language-strings.regular")
config("language-translations.extended"),
config("language-translations.regular"),
config("custom-language-translations")
])->collapse(),
'regular' => collect([
config("language-translations.regular"),
config("custom-language-translations")
])->collapse(),
'regular' => collect(
config("language-strings.regular")
),
];
$translations = $translations[strtolower($license)]
@@ -349,7 +351,7 @@ class HelperService
];
})->toArray();
DB::table('language_strings')
DB::table('language_translations')
->insert($translations);
}
}