Set timezone and date from setup and settings
This commit is contained in:
@@ -127,6 +127,7 @@ return [
|
||||
'GrahamCampbell\Markdown\MarkdownServiceProvider',
|
||||
'Roumen\Feed\FeedServiceProvider',
|
||||
'Thujohn\Rss\RssServiceProvider',
|
||||
'Jenssegers\Date\DateServiceProvider',
|
||||
|
||||
'CachetHQ\Cachet\Providers\AuthServiceProvider',
|
||||
'CachetHQ\Cachet\Providers\ConsoleServiceProvider',
|
||||
|
||||
@@ -4,11 +4,13 @@ return [
|
||||
|
||||
// Setup form fields
|
||||
'setup' => [
|
||||
'email' => 'Email',
|
||||
'username' => 'Username',
|
||||
'password' => 'Password',
|
||||
'site_name' => 'Site Name',
|
||||
'site_domain' => 'Site Domain',
|
||||
'email' => 'Email',
|
||||
'username' => 'Username',
|
||||
'password' => 'Password',
|
||||
'site_name' => 'Site Name',
|
||||
'site_domain' => 'Site Domain',
|
||||
'site_timezone' => 'Select your timezone',
|
||||
'site_locale' => 'Select your language',
|
||||
],
|
||||
|
||||
// Login form fields
|
||||
@@ -51,6 +53,8 @@ return [
|
||||
'app-setup' => [
|
||||
'site-name' => 'Site Name',
|
||||
'site-url' => 'Site URL',
|
||||
'site-timezone' => 'Site Timezone',
|
||||
'site-locale' => 'Site Language',
|
||||
'about-this-page' => 'About this page',
|
||||
'days-of-incidents' => 'How many days of incidents to show?',
|
||||
'banner' => 'Banner Image',
|
||||
|
||||
@@ -4,11 +4,13 @@ return [
|
||||
|
||||
// Setup form fields
|
||||
'setup' => [
|
||||
'email' => 'Adresse email',
|
||||
'username' => 'Identifiant',
|
||||
'password' => 'Mot de passe',
|
||||
'site_name' => 'Nom du site',
|
||||
'site_domain' => 'Domaine du site',
|
||||
'email' => 'Adresse email',
|
||||
'username' => 'Identifiant',
|
||||
'password' => 'Mot de passe',
|
||||
'site_name' => 'Nom du site',
|
||||
'site_domain' => 'Domaine du site',
|
||||
'site_timezone' => 'Sélectionnez votre fuseau horaire',
|
||||
'site_locale' => 'Sélectionnez votre langue',
|
||||
],
|
||||
|
||||
// Login form fields
|
||||
@@ -51,6 +53,8 @@ return [
|
||||
'app-setup' => [
|
||||
'site-name' => 'Nom du site',
|
||||
'site-url' => 'URL du site',
|
||||
'site-timezone' => 'Fuseau horaire du site',
|
||||
'site-locale' => 'Langue du site',
|
||||
'about-this-page' => 'À propos de cette page',
|
||||
'days-of-incidents' => 'Nombre de jours à afficher ?',
|
||||
'banner' => 'Bannière',
|
||||
|
||||
@@ -3,11 +3,13 @@
|
||||
return [
|
||||
// Setup form fields
|
||||
'setup' => [
|
||||
'email' => 'Email',
|
||||
'username' => 'Usuário',
|
||||
'password' => 'Senha',
|
||||
'site_name' => 'Nome do site',
|
||||
'site_domain' => 'Domínio do site',
|
||||
'email' => 'Email',
|
||||
'username' => 'Usuário',
|
||||
'password' => 'Senha',
|
||||
'site_name' => 'Nome do site',
|
||||
'site_domain' => 'Domínio do site',
|
||||
'site_timezone' => 'Select your timezone',
|
||||
'site_locale' => 'Select your language',
|
||||
],
|
||||
|
||||
// Login form fields
|
||||
@@ -50,6 +52,8 @@ return [
|
||||
'app-setup' => [
|
||||
'site-name' => 'Nome do site',
|
||||
'site-url' => 'URL do site',
|
||||
'site-timezone' => 'Site Timezone',
|
||||
'site-locale' => 'Site Language',
|
||||
'about-this-page' => 'Sobre esta página',
|
||||
'days-of-incidents' => 'Quantos dias de incidentes para mostrar?',
|
||||
'banner' => 'Imagem do banner',
|
||||
|
||||
@@ -42,6 +42,40 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.app-setup.site-timezone') }}</label>
|
||||
<select name="app_timezone" class="form-control" required>
|
||||
<option value="">Select Timezone</option>
|
||||
@foreach($timezones as $region => $list)
|
||||
<optgroup label="{{ $region }}">
|
||||
@foreach($list as $timezone => $name)
|
||||
<option value="{{ $timezone }}" @if(Setting::get('app_timezone') == $timezone) selected @endif>
|
||||
{{ $name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</optgroup>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.settings.app-setup.site-locale') }}</label>
|
||||
<select name="app_locale" class="form-control" required>
|
||||
<option value="">Select Language</option>
|
||||
@foreach($langs as $lang => $name)
|
||||
<option value="{{ $lang }}" @if(Setting::get('app_locale') == $lang) selected @endif>
|
||||
{{ $name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
|
||||
@@ -40,6 +40,38 @@
|
||||
<span class="text-danger">{{ $errors->first('settings.app_domain') }}</span>
|
||||
@endif
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="sr-only">{{ trans('forms.site_timezone') }}</label>
|
||||
<select name="settings[app_timezone]" class="form-control" required>
|
||||
<option value="">Select Timezone</option>
|
||||
@foreach($timezones as $region => $list)
|
||||
<optgroup label="{{ $region }}">
|
||||
@foreach($list as $timezone => $name)
|
||||
<option value="{{ $timezone }}" @if(Input::old('settins.app_timezone') == $timezone) selected @endif>
|
||||
{{ $name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</optgroup>
|
||||
@endforeach
|
||||
</select>
|
||||
@if($errors->has('settings.app_timezone'))
|
||||
<span class="text-danger">{{ $errors->first('settings.app_timezone') }}</span>
|
||||
@endif
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="sr-only">{{ trans('forms.site_locale') }}</label>
|
||||
<select name="settings[app_locale]" class="form-control" required>
|
||||
<option value="">Select Language</option>
|
||||
@foreach($langs as $lang => $name)
|
||||
<option value="{{ $lang }}" @if(Input::old('settins.app_locale') == $timezone) selected @endif>
|
||||
{{ $name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
@if($errors->has('settings.app_locale'))
|
||||
<span class="text-danger">{{ $errors->first('settings.app_locale') }}</span>
|
||||
@endif
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>
|
||||
<input type="checkbox" name="settings[show_support]" value="1" checked />
|
||||
|
||||
@@ -21,7 +21,8 @@
|
||||
"guzzlehttp/guzzle": "~5.0",
|
||||
"roumen/feed": "~2.8",
|
||||
"thujohn/rss": "~1.0",
|
||||
"watson/validating": "0.10.*"
|
||||
"watson/validating": "0.10.*",
|
||||
"jenssegers/date": "~2.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "~4.3",
|
||||
|
||||
49
composer.lock
generated
49
composer.lock
generated
@@ -4,7 +4,7 @@
|
||||
"Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"hash": "f529ce7217176f2b01770bc984daf22c",
|
||||
"hash": "50862b080034db5b187b78c30807c1d5",
|
||||
"packages": [
|
||||
{
|
||||
"name": "classpreloader/classpreloader",
|
||||
@@ -1185,6 +1185,53 @@
|
||||
],
|
||||
"time": "2014-11-20 16:49:30"
|
||||
},
|
||||
{
|
||||
"name": "jenssegers/date",
|
||||
"version": "v2.0.10",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/jenssegers/laravel-date.git",
|
||||
"reference": "7ac5efaf4b829356d7feda21cace52097c8a1377"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/jenssegers/laravel-date/zipball/7ac5efaf4b829356d7feda21cace52097c8a1377",
|
||||
"reference": "7ac5efaf4b829356d7feda21cace52097c8a1377",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"nesbot/carbon": "*",
|
||||
"php": ">=5.3.0",
|
||||
"symfony/translation": "*"
|
||||
},
|
||||
"require-dev": {
|
||||
"satooshi/php-coveralls": "*"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Jenssegers\\Date": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Jens Segers",
|
||||
"homepage": "http://jenssegers.be"
|
||||
}
|
||||
],
|
||||
"description": "A date library to help you work with dates",
|
||||
"keywords": [
|
||||
"date",
|
||||
"datetime",
|
||||
"laravel",
|
||||
"time"
|
||||
],
|
||||
"time": "2015-01-01 22:46:48"
|
||||
},
|
||||
{
|
||||
"name": "jeremeamia/SuperClosure",
|
||||
"version": "1.0.1",
|
||||
|
||||
31
src/Http/Before/LoadConfigFilter.php
Normal file
31
src/Http/Before/LoadConfigFilter.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace CachetHQ\Cachet\Http\Before;
|
||||
|
||||
use CachetHQ\Cachet\Models\Setting;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Config;
|
||||
use Illuminate\Support\Facades\Lang;
|
||||
|
||||
class LoadConfigFilter
|
||||
{
|
||||
/**
|
||||
* Load confit to override values filter.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
*
|
||||
* @return null
|
||||
*/
|
||||
public function filter(Request $request)
|
||||
{
|
||||
// Always allow our own domain.
|
||||
$appDomain = Setting::get('app_domain');
|
||||
$appTimezone = Setting::get('app_timezone');
|
||||
$appLocale = Setting::get('app_locale');
|
||||
|
||||
Config::set('app.url', $appDomain ?: Config::get('app.url'));
|
||||
Config::set('app.timezone', $appTimezone ?: Config::get('app.timezone'));
|
||||
Config::set('app.locale', $appLocale ?: Config::get('app.locale'));
|
||||
Lang::setLocale($appLocale);
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,8 @@
|
||||
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;
|
||||
@@ -54,11 +56,47 @@ class DashSettingsController extends Controller
|
||||
*/
|
||||
public function showSetupView()
|
||||
{
|
||||
$langs = [
|
||||
'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,
|
||||
'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;
|
||||
}
|
||||
}
|
||||
|
||||
$this->subMenu['setup']['active'] = true;
|
||||
|
||||
return View::make('dashboard.settings.app-setup')->with([
|
||||
'pageTitle' => 'Application Setup - Dashboard',
|
||||
'subMenu' => $this->subMenu,
|
||||
'timezones' => $timezones,
|
||||
'langs' => $langs,
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,8 @@ 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;
|
||||
@@ -32,8 +34,44 @@ class SetupController extends Controller
|
||||
*/
|
||||
public function getIndex()
|
||||
{
|
||||
$langs = [
|
||||
'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,
|
||||
'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;
|
||||
}
|
||||
}
|
||||
|
||||
return View::make('setup')->with([
|
||||
'pageTitle' => trans('setup.setup'),
|
||||
'timezones' => $timezones,
|
||||
'langs' => $langs,
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -49,6 +87,8 @@ class SetupController extends Controller
|
||||
$v = Validator::make($postData, [
|
||||
'settings.app_name' => 'required',
|
||||
'settings.app_domain' => 'required',
|
||||
'settings.app_timezone' => 'required',
|
||||
'settings.app_locale' => 'required',
|
||||
'settings.show_support' => 'boolean',
|
||||
]);
|
||||
|
||||
@@ -72,6 +112,8 @@ class SetupController extends Controller
|
||||
$v = Validator::make($postData, [
|
||||
'settings.app_name' => 'required',
|
||||
'settings.app_domain' => 'required',
|
||||
'settings.app_timezone' => 'required',
|
||||
'settings.app_locale' => 'required',
|
||||
'settings.show_support' => 'boolean',
|
||||
'user.username' => 'alpha_dash|required',
|
||||
'user.email' => 'email|required',
|
||||
|
||||
@@ -41,6 +41,7 @@ class RoutingServiceProvider extends ServiceProvider
|
||||
$this->app->router->filter('csrf', 'CachetHQ\Cachet\Http\Before\CsrfFilter');
|
||||
|
||||
// Cachet's before filters
|
||||
$this->app->router->before('CachetHQ\Cachet\Http\Before\LoadConfigFilter');
|
||||
$this->app->router->filter('is_setup', 'CachetHQ\Cachet\Http\Before\IsSetupFilter');
|
||||
$this->app->router->filter('has_setting', 'CachetHQ\Cachet\Http\Before\HasSettingFilter');
|
||||
$this->app->router->filter('login_throttling', 'CachetHQ\Cachet\Http\Before\LoginThrottlingFilter');
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Config;
|
||||
use Illuminate\Support\Facades\Request;
|
||||
|
||||
if (!function_exists('elixir')) {
|
||||
@@ -26,6 +27,35 @@ if (!function_exists('elixir')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('config')) {
|
||||
/**
|
||||
* Get / set the specified configuration value.
|
||||
*
|
||||
* If an array is passed as the key, we will assume you want to set an array of values.
|
||||
*
|
||||
* @param array|string $key
|
||||
* @param mixed $default
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
function config($key = null, $default = null)
|
||||
{
|
||||
if (is_null($key)) {
|
||||
return Config::getItems();
|
||||
}
|
||||
|
||||
if (is_array($key)) {
|
||||
foreach ($key as $innerKey => $innerValue) {
|
||||
Config::set($innerKey, $innerValue);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
return Config::get($key, $default);
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('set_active')) {
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user