Merge remote-tracking branch 'origin/version-1.8.3' into v2

# Conflicts:
#	app/FileManagerFolder.php
#	app/Http/Controllers/AppFunctionsController.php
#	app/Http/Controllers/Auth/AuthController.php
#	app/Http/Controllers/FileManager/BrowseController.php
#	app/Http/Controllers/General/SetupWizardController.php
#	app/Http/Controllers/General/UpgradeAppController.php
#	app/Http/Controllers/Sharing/FileSharingController.php
#	app/Http/helpers.php
#	app/Setting.php
#	composer.lock
#	public/mix-manifest.json
#	resources/js/App.vue
#	resources/js/components/Others/Forms/FormLabel.vue
#	resources/js/store/modules/app.js
#	resources/js/views/Admin.vue
#	resources/js/views/Mobile/AdminMobileMenu.vue
#	resources/js/views/Shared/SharedPage.vue
#	resources/views/index.blade.php
#	resources/views/vuefilemanager/crawler/og-view.blade.php
#	resources/views/vuefilemanager/invoice.blade.php
#	routes/api.php
#	routes/web.php
This commit is contained in:
Peter Papp
2021-03-27 12:12:42 +01:00
39 changed files with 3404 additions and 132 deletions
View File
@@ -0,0 +1,146 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Setting;
use App\Language;
use App\LanguageString;
use App\Http\Tools\Demo;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Cache;
use App\Http\Requests\Languages\UpdateStringRequest;
use App\Http\Requests\Languages\CreateLanguageRequest;
use App\Http\Requests\Languages\UpdateLanguageRequest;
class LanguageController extends Controller
{
/**
* Get all languages for admin translate
*
* @return Collection
*/
public function get_languages()
{
return [
'languages' => Language::all(),
'set_language' => Setting::whereName('language')->first()->value
];
}
/**
* Get all language strings for admin translate
*
* @param Language $language
* @return Collection
*/
public function get_language_strings(Language $language)
{
$lang = Language::whereId($language->id);
$strings = $lang->with('languageStrings')->first();
// dd($language);
$license = get_setting('license') === 'Extended' ? 'extended' : 'regular';
$default_strings = collect(config('language_strings.' . $license));
return [
'translated_strings' => $strings,
'default_strings' => $default_strings
];
}
/**
* Create new language
*
* @param CreateLanguageRequest $request
* @return string
*/
public function create_language(CreateLanguageRequest $request)
{
// Check if is demo
if (env('APP_DEMO')) {
return Demo::response_204();
}
// Create languages & strings
$language = Language::create([
'name' => $request->name,
'locale' => $request->locale
]);
// Return created language
return $language;
}
/**
* Update language
*
* @param UpdateLanguageRequest $request
* @param Language $language
* @return $language
*/
public function update_language(UpdateLanguageRequest $request, Language $language)
{
// Check if is demo
if (env('APP_DEMO')) {
return Demo::response_204();
}
// Update language
$language->update(make_single_input($request));
// Return updated language
return $language;
}
/**
* Update string for language
*
* @param UpdateStringRequest $request
* @param Language $language
* @return ResponseFactory|\Illuminate\Http\Response
*/
public function update_string(UpdateStringRequest $request, Language $language)
{
// Check if is demo
if (env('APP_DEMO')) {
return Demo::response_204();
}
LanguageString::whereLangAndKey($language->locale, $request->name)
->update([
'key' => $request->name,
'lang' => $language->locale,
'value' => $request->value
]);
Cache::forget('language_strings-' . $language->locale);
return response('Done', 204);
}
/**
* Delete the language with all children strings
*
* @param Language $language
* @return ResponseFactory|\Illuminate\Http\Response
*/
public function delete_language(Language $language)
{
// Check if is demo
if (env('APP_DEMO')) {
return Demo::response_204();
}
$language->delete();
return response('Done', 204);
}
}
@@ -0,0 +1,31 @@
<?php
namespace App\Http\Requests\Languages;
use Illuminate\Foundation\Http\FormRequest;
class CreateLanguageRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required|string',
'locale' => 'required|string'
];
}
}
@@ -0,0 +1,31 @@
<?php
namespace App\Http\Requests\Languages;
use Illuminate\Foundation\Http\FormRequest;
class UpdateLanguageRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required|string',
'value' => 'required|string'
];
}
}
@@ -0,0 +1,31 @@
<?php
namespace App\Http\Requests\Languages;
use Illuminate\Foundation\Http\FormRequest;
class UpdateStringRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required|string',
'value' => 'required|string'
];
}
}
+53
View File
@@ -5,6 +5,8 @@ use App\Models\Folder;
use App\Models\Setting;
use App\Models\User;
use App\Models\Share;
use App\Models\Language;
use App\Models\LanguageString;
use ByteUnits\Metric;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
@@ -811,3 +813,54 @@ function set_time_by_user_timezone($time)
return Carbon::parse($time);
}
function __t($key, $values = null)
{
// Check if is in cache save default_language
if (Cache::has('default_language')) {
$locale = Cache::get('default_language');
} else {
$locale = Cache::rememberForever('default_language', function () {
return get_setting('language');
});
}
// Check if cash has string
if (Cache::has('language_strings-' . $locale)) {
$strings = Cache::get('language_strings-' . $locale)
->languageStrings;
// Find the string by key
$string = $strings->firstWhere('key', $key)->value;
}
// If cash dont have string return string from database
$string = LanguageString::whereLangAndKey($locale, $key)
->first()
->value;
if($values) {
return adjust_value($string, $values);
}
return $string;
}
function adjust_value($string, $values)
{
$search = [];
$replace = [];
if($values) {
foreach($values as $key => $variable) {
array_push($search, ':' . $key);
array_push($replace, $variable);
}
}
return str_ireplace($search, $replace, $string);
}
+71
View File
@@ -0,0 +1,71 @@
<?php
namespace App;
use App\LanguageString;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Cache;
use Illuminate\Database\Eloquent\Model;
class Language extends Model
{
protected $guarded = ['id'];
protected $keyType = 'string';
protected $primaryKey = 'id';
public $incrementing = false ;
public $timestamps = false;
protected static function boot()
{
parent::boot();
static::creating(function ($language) {
$language->id = Str::uuid();
});
static::deleting(function ($language) {
DB::table('language_strings')
->where('lang', $language->locale)
->delete();
Cache::forget('language_strings-' . $language->locale );
});
static::updated(function($language) {
Cache::forget('language_strings-' . $language->locale );
});
static::created(function ($language) {
$license = get_setting('license') === 'Extended' ? 'extended' : 'regular';
$language_strings = collect(config('language_strings.' . $license));
$strings = $language_strings->map(function ($value , $key) use($language) {
return [
'key' => $key,
'lang' => $language->locale,
'value' => $value
];
})->toArray();
DB::table('language_strings')
->insert($strings);
});
}
public function languageStrings()
{
return $this->hasMany('App\LanguageString', 'lang', 'locale');
}
}
+28
View File
@@ -0,0 +1,28 @@
<?php
namespace App;
use Illuminate\Support\Facades\Cache;
use Illuminate\Database\Eloquent\Model;
class LanguageString extends Model
{
public $timestamps = false;
public $primaryKey = null;
public $incrementing = false;
protected $fillable = ['value' ,'key', 'lang'];
protected static function boot()
{
parent::boot();
static::updated(function() {
dd('test');
// Cache::forget('language_strings');
});
}
}
+2 -2
View File
@@ -69,7 +69,7 @@ class File extends Model
*/
public function getCreatedAtAttribute()
{
return format_date(set_time_by_user_timezone($this->attributes['created_at']), __('vuefilemanager.time'));
return format_date(set_time_by_user_timezone($this->attributes['created_at']), __t('time'));
}
/**
@@ -81,7 +81,7 @@ class File extends Model
{
if (!$this->attributes['deleted_at']) return null;
return format_date(set_time_by_user_timezone($this->attributes['deleted_at']), __('vuefilemanager.time'));
return format_date(set_time_by_user_timezone($this->attributes['deleted_at']), __t('time'));
}
/**
+6 -6
View File
@@ -44,12 +44,12 @@ class ResetPassword extends Notification
$app_name = get_setting('app_title') ?? 'VueFileManager';
return (new MailMessage)
->subject(__('vuefilemanager.reset_password_subject') . $app_name)
->greeting(__('vuefilemanager.reset_password_greeting'))
->line(__('vuefilemanager.reset_password_line_1'))
->action(__('vuefilemanager.reset_password_action'), $reset_url)
->line(__('vuefilemanager.reset_password_line_2'))
->salutation(__('vuefilemanager.salutation') . ', ' . $app_name);
->subject(__t('reset_password_subject') . $app_name)
->greeting(__t('reset_password_greeting'))
->line(__t('reset_password_line_1'))
->action(__t('reset_password_action'), $reset_url)
->line(__t('reset_password_line_2'))
->salutation(__t('salutation') . ', ' . $app_name);
}
/**
+5 -5
View File
@@ -43,11 +43,11 @@ class SharedSendViaEmail extends Notification
public function toMail($notifiable)
{
return (new MailMessage)
->subject(__('vuefilemanager.shared_link_email_subject' , ['user' => $this->user->name]))
->greeting(__('vuefilemanager.shared_link_email_greeting'))
->line(__('vuefilemanager.shared_link_email_user', ['user' => $this->user->name, 'email' => $this->user->email]))
->action(__('vuefilemanager.shared_link_email_link'), url('/shared', ['token' => $this->token]))
->salutation(__('vuefilemanager.shared_link_email_salutation', ['app_name' => get_setting('app_title') ?? 'VueFileManager']));
->subject(__t('shared_link_email_subject' , ['user' => $this->user->name]))
->greeting(__t('shared_link_email_greeting'))
->line(__t('shared_link_email_user', ['user' => $this->user->name, 'email' => $this->user->email]))
->action(__t('shared_link_email_link'), url('/shared', ['token' => $this->token]))
->salutation(__t('shared_link_email_salutation', ['app_name' => get_setting('app_title') ?? 'VueFileManager']));
}
/**