Fix language select for new languages (#10323)

This commit is contained in:
Tony Murray
2019-06-07 21:07:49 -05:00
committed by GitHub
parent cf35d99319
commit 1ae77dfb70
2 changed files with 34 additions and 16 deletions

View File

@@ -37,12 +37,6 @@ use Session;
class UserPreferencesController extends Controller
{
private $valid_prefs = [
'dashboard' => 'required|integer',
'add_schedule_note_to_device' => 'required|integer',
'locale' => 'required|in:en,ru',
];
public function __construct()
{
$this->middleware('deny-demo');
@@ -64,14 +58,9 @@ class UserPreferencesController extends Controller
'default_dashboard' => UserPref::getPref($user, 'dashboard'),
'note_to_device' => UserPref::getPref($user, 'add_schedule_note_to_device'),
'locale' => UserPref::getPref($user, 'locale') ?: 'en',
'locales' => $this->getValidLocales(),
];
foreach (glob(resource_path('lang') . '/*', GLOB_ONLYDIR) as $locale) {
$locale = basename($locale);
$lang = __('preferences.lang', [], $locale);
$data['locales'][$locale] = ($lang == 'preferences.lang' ? $locale : $lang);
}
if (Config::get('twofactor')) {
$twofactor = UserPref::getPref($user, 'twofactor');
if ($twofactor) {
@@ -90,14 +79,23 @@ class UserPreferencesController extends Controller
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$valid_prefs = [
'dashboard' => 'required|integer',
'add_schedule_note_to_device' => 'required|integer',
'locale' => [
'required',
Rule::in(array_keys($this->getValidLocales())),
],
];
$this->validate($request, [
'pref' => ['required', Rule::in(array_keys($this->valid_prefs))],
'value' => $this->valid_prefs[$request->pref] ?? 'required|integer',
'pref' => ['required', Rule::in(array_keys($valid_prefs))],
'value' => $valid_prefs[$request->pref] ?? 'required|integer',
]);
UserPref::setPref($request->user(), $request->pref, $request->value);
@@ -108,4 +106,16 @@ class UserPreferencesController extends Controller
return response()->json(['status' => 'success']);
}
private function getValidLocales()
{
return array_reduce(glob(resource_path('lang') . '/*', GLOB_ONLYDIR), function ($locales, $locale) {
{
$locale = basename($locale);
$lang = __('preferences.lang', [], $locale);
$locales[$locale] = ($lang == 'preferences.lang' ? $locale : $lang);
return $locales;
}
}, []);
}
}