diff --git a/src/Composers/TimezoneLocaleComposer.php b/src/Composers/TimezoneLocaleComposer.php new file mode 100644 index 00000000..7c4b4a34 --- /dev/null +++ b/src/Composers/TimezoneLocaleComposer.php @@ -0,0 +1,66 @@ + ucwords(locale_get_display_name($locale, $locale))]; + }, glob(app_path('lang').'/*')); + + $langs = call_user_func_array('array_merge', $langs); + + $regions = [ + 'Africa' => DateTimeZone::AFRICA, + 'America' => DateTimeZone::AMERICA, + 'Antarctica' => DateTimeZone::ANTARCTICA, + 'Asia' => DateTimeZone::ASIA, + 'Atlantic' => DateTimeZone::ATLANTIC, + 'Australia' => DateTimeZone::AUSTRALIA, + 'Europe' => DateTimeZone::EUROPE, + 'Indian' => DateTimeZone::INDIAN, + 'Pacific' => DateTimeZone::PACIFIC, + ]; + + $timezones = []; + + foreach ($regions as $name => $mask) { + $zones = DateTimeZone::listIdentifiers($mask); + + foreach ($zones as $timezone) { + // Lets sample the time there right now + $time = new DateTime(null, new DateTimeZone($timezone)); + + // Us dumb Americans can't handle millitary time + $ampm = $time->format('H') > 12 ? ' ('.$time->format('g:i a').')' : ''; + + // Remove region name and add a sample time + $timezones[$name][$timezone] = substr($timezone, strlen($name) + 1).' - '.$time->format('H:i').$ampm; + + $timezones[$name] = str_replace('_', ' ', $timezones[$name]); + } + } + + $view->with([ + 'timezones' => $timezones, + 'langs' => $langs, + ]); + } +} diff --git a/src/Http/Controllers/DashSettingsController.php b/src/Http/Controllers/DashSettingsController.php index 8897bb8e..3bea6f50 100644 --- a/src/Http/Controllers/DashSettingsController.php +++ b/src/Http/Controllers/DashSettingsController.php @@ -3,8 +3,6 @@ namespace CachetHQ\Cachet\Http\Controllers; use CachetHQ\Cachet\Models\Setting; -use DateTime; -use DateTimeZone; use Exception; use GrahamCampbell\Binput\Facades\Binput; use Illuminate\Routing\Controller; @@ -57,51 +55,11 @@ class DashSettingsController extends Controller */ public function showSetupView() { - $langs = [ - 'de' => 'Deutsch', - 'en' => 'English', - 'fr' => 'Français', - 'pt-BR' => 'Portuguese, Brazilian', - ]; - - $regions = [ - 'Africa' => DateTimeZone::AFRICA, - 'America' => DateTimeZone::AMERICA, - 'Antarctica' => DateTimeZone::ANTARCTICA, - 'Asia' => DateTimeZone::ASIA, - 'Atlantic' => DateTimeZone::ATLANTIC, - 'Australia' => DateTimeZone::AUSTRALIA, - 'Europe' => DateTimeZone::EUROPE, - 'Indian' => DateTimeZone::INDIAN, - 'Pacific' => DateTimeZone::PACIFIC, - ]; - - $timezones = []; - - foreach ($regions as $name => $mask) { - $zones = DateTimeZone::listIdentifiers($mask); - - foreach ($zones as $timezone) { - // Lets sample the time there right now - $time = new DateTime(null, new DateTimeZone($timezone)); - - // Us dumb Americans can't handle millitary time - $ampm = $time->format('H') > 12 ? ' ('.$time->format('g:i a').')' : ''; - - // Remove region name and add a sample time - $timezones[$name][$timezone] = substr($timezone, strlen($name) + 1).' - '.$time->format('H:i').$ampm; - - $timezones[$name] = str_replace('_', ' ', $timezones[$name]); - } - } - $this->subMenu['setup']['active'] = true; return View::make('dashboard.settings.app-setup')->with([ 'pageTitle' => 'Application Setup - Dashboard', 'subMenu' => $this->subMenu, - 'timezones' => $timezones, - 'langs' => $langs, ]); } diff --git a/src/Http/Controllers/SetupController.php b/src/Http/Controllers/SetupController.php index 3884a91b..a350714c 100644 --- a/src/Http/Controllers/SetupController.php +++ b/src/Http/Controllers/SetupController.php @@ -4,8 +4,6 @@ namespace CachetHQ\Cachet\Http\Controllers; use CachetHQ\Cachet\Models\Setting; use CachetHQ\Cachet\Models\User; -use DateTime; -use DateTimeZone; use GrahamCampbell\Binput\Facades\Binput; use Illuminate\Routing\Controller; use Illuminate\Support\Facades\Auth; @@ -34,49 +32,8 @@ class SetupController extends Controller */ public function getIndex() { - $langs = array_map(function ($lang) { - $locale = basename($lang); - - return [$locale => ucwords(locale_get_display_name($locale, $locale))]; - }, glob(app_path('lang').'/*')); - - $langs = call_user_func_array('array_merge', $langs); - - $regions = [ - 'Africa' => DateTimeZone::AFRICA, - 'America' => DateTimeZone::AMERICA, - 'Antarctica' => DateTimeZone::ANTARCTICA, - 'Asia' => DateTimeZone::ASIA, - 'Atlantic' => DateTimeZone::ATLANTIC, - 'Australia' => DateTimeZone::AUSTRALIA, - 'Europe' => DateTimeZone::EUROPE, - 'Indian' => DateTimeZone::INDIAN, - 'Pacific' => DateTimeZone::PACIFIC, - ]; - - $timezones = []; - - foreach ($regions as $name => $mask) { - $zones = DateTimeZone::listIdentifiers($mask); - - foreach ($zones as $timezone) { - // Lets sample the time there right now - $time = new DateTime(null, new DateTimeZone($timezone)); - - // Us dumb Americans can't handle millitary time - $ampm = $time->format('H') > 12 ? ' ('.$time->format('g:i a').')' : ''; - - // Remove region name and add a sample time - $timezones[$name][$timezone] = substr($timezone, strlen($name) + 1).' - '.$time->format('H:i').$ampm; - - $timezones[$name] = str_replace('_', ' ', $timezones[$name]); - } - } - - return View::make('setup')->with([ + return View::make('setup')->with([ 'pageTitle' => trans('setup.setup'), - 'timezones' => $timezones, - 'langs' => $langs, ]); } diff --git a/src/Providers/ViewComposerServiceProvider.php b/src/Providers/ViewComposerServiceProvider.php index e832b663..6b21024b 100644 --- a/src/Providers/ViewComposerServiceProvider.php +++ b/src/Providers/ViewComposerServiceProvider.php @@ -24,5 +24,9 @@ class ViewComposerServiceProvider extends ServiceProvider public function register() { $this->app->view->composer('index', 'CachetHQ\Cachet\Composers\IndexComposer'); + $this->app->view->composer([ + 'setup', + 'dashboard.settings.app-setup', + ], 'CachetHQ\Cachet\Composers\TimezoneLocaleComposer'); } }