Separate all of the settings into their own pages.

This commit is contained in:
James Brooks 2014-12-31 10:38:59 +00:00
parent 5fbbb1efde
commit 89ec124092
14 changed files with 302 additions and 100 deletions

View File

@ -138,14 +138,14 @@ body.dashboard {
}
}
}
}
.content-panel {
top: 0;
position: relative;
width: 78%;
margin-left: 22%;
padding: 24px 50px;
padding-bottom: 80px;
+ .content-panel {
top: 0;
position: relative;
width: 78%;
margin-left: 22%;
padding: 24px 50px;
padding-bottom: 80px;
}
}
}

View File

@ -2,15 +2,98 @@
class DashSettingsController extends Controller
{
protected $subMenu = [];
protected $subTitle = 'Settings';
public function __construct() {
$this->subMenu = [
'setup' => [
'title' => 'Application Setup',
'url' => '/dashboard/settings/setup',
'icon' => 'ion-gear-b',
'active' => false,
],
'security' => [
'title' => 'Security',
'url' => '/dashboard/settings/security',
'icon' => 'ion-lock-combination',
'active' => false,
],
'theme' => [
'title' => 'Theme',
'url' => '/dashboard/settings/theme',
'icon' => 'ion-paintbrush',
'active' => false,
],
'stylesheet' => [
'title' => 'Stylesheet',
'url' => '/dashboard/settings/stylesheet',
'icon' => 'ion-paintbucket',
'active' => false,
]
];
View::share('subTitle', $this->subTitle);
View::share('subMenu', $this->subMenu);
}
/**
* Shows the settings view.
* Shows the settings setup view.
*
* @return \Illuminate\View\View
*/
public function showSettings()
public function showSetupView()
{
return View::make('dashboard.settings')->with([
'pageTitle' => 'Settings - Dashboard',
$this->subMenu['setup']['active'] = true;
return View::make('dashboard.settings-app-setup')->with([
'pageTitle' => 'Application Setup - Dashboard',
'subMenu' => $this->subMenu
]);
}
/**
* Shows the settings theme view.
*
* @return \Illuminate\View\View
*/
public function showThemeView()
{
$this->subMenu['theme']['active'] = true;
return View::make('dashboard.settings-theme')->with([
'pageTitle' => 'Theme - Dashboard',
'subMenu' => $this->subMenu
]);
}
/**
* Shows the settings security view.
*
* @return \Illuminate\View\View
*/
public function showSecurityView()
{
$this->subMenu['security']['active'] = true;
return View::make('dashboard.settings-security')->with([
'pageTitle' => 'Security - Dashboard',
'subMenu' => $this->subMenu
]);
}
/**
* Shows the settings stylesheet view.
*
* @return \Illuminate\View\View
*/
public function showStylesheetView()
{
$this->subMenu['stylesheet']['active'] = true;
return View::make('dashboard.settings-stylesheet')->with([
'pageTitle' => 'Stylesheet - Dashboard',
'subMenu' => $this->subMenu
]);
}
@ -24,14 +107,18 @@ class DashSettingsController extends Controller
// Fetch all of the settings we've been POSTed.
$settings = Input::all();
foreach ($settings as $settingName => $settingValue) {
$setting = Setting::firstOrCreate([
'name' => $settingName,
])->update([
'value' => $settingValue,
]);
try {
foreach ($settings as $settingName => $settingValue) {
$setting = Setting::firstOrCreate([
'name' => $settingName,
])->update([
'value' => $settingValue,
]);
}
} catch (Exception $e) {
return Redirect::back()->withSaved(false);
}
return Redirect::back();
return Redirect::back()->withSaved(true);
}
}

View File

@ -51,6 +51,8 @@ return [
'user' => 'User',
'help' => 'Help',
'logged_incidents' => '{0} There are no incidents, good work.|You have logged one incident.|You have reported <strong>:count</strong> incidents.',
'settings_saved' => 'Settings saved.',
'settings_not_saved' => 'Settings could not be saved.',
],
// Forms
'forms' => [

View File

@ -27,7 +27,10 @@ Route::group(['before' => 'auth', 'prefix' => 'dashboard'], function () {
Route::get('notifications', ['as' => 'dashboard.notifications', 'uses' => 'DashboardController@showNotifications']);
// Settings
Route::get('settings', ['as' => 'dashboard.settings', 'uses' => 'DashSettingsController@showSettings']);
Route::get('settings/setup', ['as' => 'dashboard.settings.setup', 'uses' => 'DashSettingsController@showSetupView']);
Route::get('settings/security', ['as' => 'dashboard.settings.security', 'uses' => 'DashSettingsController@showSecurityView']);
Route::get('settings/theme', ['as' => 'dashboard.settings.theme', 'uses' => 'DashSettingsController@showThemeView']);
Route::get('settings/stylesheet', ['as' => 'dashboard.settings.stylesheet', 'uses' => 'DashSettingsController@showStylesheetView']);
Route::post('settings', 'DashSettingsController@postSettings');
// User Settings

View File

@ -0,0 +1,56 @@
@extends('layout.dashboard')
@section('content')
@if(isset($subMenu))
@include('partials.dashboard.sub-sidebar')
@endif
<div class='content-panel'>
<div class="header">
<span class="uppercase">
<i class="icon ion-gear-a"></i> {{ Lang::get('cachet.dashboard.settings') }}
</span>
</div>
<div class="content-wrapper">
<div class="row">
<div class="col-sm-12">
<form name='SettingsForm' class='form-vertical' role='form' action='/dashboard/settings' method='POST'>
<h4 class="sub-header" id='application-setup'>Application Setup</h4>
@if($saved = Session::get('saved'))
<div class='alert alert-success'><strong>{{ Lang::get('cachet.dashboard.settings_saved') }}</strong></div>
@elseif(Session::has('saved'))
<div class='alert alert-danger'><strong>{{ Lang::get('cachet.dashboard.settings_not_saved') }}</strong></div>
@endif
<fieldset>
<div class='row'>
<div class='col-xs-12'>
<div class='form-group'>
<label>Site Name</label>
<input type='text' class='form-control' name='app_name' value='{{ Setting::get("app_name") }}' required />
</div>
</div>
</div>
<div class='row'>
<div class='col-xs-12'>
<div class='form-group'>
<label>Site URL</label>
<input type='text' class='form-control' name='app_domain' value='{{ Setting::get("app_domain") }}' required />
</div>
</div>
</div>
</fieldset>
<div class='row'>
<div class='col-xs-12'>
<div class='form-group'>
<button type="submit" class="btn btn-success">Save settings</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
@stop

View File

@ -0,0 +1,51 @@
@extends('layout.dashboard')
@section('content')
@if(isset($subMenu))
@include('partials.dashboard.sub-sidebar')
@endif
<div class='content-panel'>
<div class="header">
<span class="uppercase">
<i class="icon ion-gear-a"></i> {{ Lang::get('cachet.dashboard.settings') }}
</span>
</div>
<div class="content-wrapper">
<div class="row">
<div class="col-sm-12">
<form name='SettingsForm' class='form-vertical' role='form' action='/dashboard/settings' method='POST'>
<h4 class="sub-header" id='security'>Security</h4>
@if($saved = Session::get('saved'))
<div class='alert alert-success'><strong>{{ Lang::get('cachet.dashboard.settings_saved') }}</strong></div>
@elseif(Session::has('saved'))
<div class='alert alert-danger'><strong>{{ Lang::get('cachet.dashboard.settings_not_saved') }}</strong></div>
@endif
<fieldset>
<div class='row'>
<div class='col-xs-12'>
<div class='form-group'>
<label>Allowed Domains <em>Comma Seperated</em></label>
<textarea class='form-control' name='allowed_domains' rows='5' placeholder='http://cachet.io, http://cachet.herokuapp.com'>{{ Setting::get('allowed_domains') }}</textarea>
<div class='help-block'>
The domain set above is automatically allowed by default.
</div>
</div>
</div>
</div>
</fieldset>
<div class='row'>
<div class='col-xs-12'>
<div class='form-group'>
<button type="submit" class="btn btn-success">Save settings</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
@stop

View File

@ -0,0 +1,48 @@
@extends('layout.dashboard')
@section('content')
@if(isset($subMenu))
@include('partials.dashboard.sub-sidebar')
@endif
<div class='content-panel'>
<div class="header">
<span class="uppercase">
<i class="icon ion-gear-a"></i> {{ Lang::get('cachet.dashboard.settings') }}
</span>
</div>
<div class="content-wrapper">
<div class="row">
<div class="col-sm-12">
<form name='SettingsForm' class='form-vertical' role='form' action='/dashboard/settings' method='POST'>
<h4 class="sub-header" id='stylesheet'>Stylesheet</h4>
@if($saved = Session::get('saved'))
<div class='alert alert-success'><strong>{{ Lang::get('cachet.dashboard.settings_saved') }}</strong></div>
@elseif(Session::has('saved'))
<div class='alert alert-danger'><strong>{{ Lang::get('cachet.dashboard.settings_not_saved') }}</strong></div>
@endif
<fieldset>
<div class='row'>
<div class='col-xs-12'>
<div class='form-group'>
<label>Custom Stylesheet</label>
<textarea class='form-control' name='stylesheet' rows='10'>{{ Setting::get('stylesheet') }}</textarea>
</div>
</div>
</div>
</fieldset>
<div class='row'>
<div class='col-xs-12'>
<div class='form-group'>
<button type="submit" class="btn btn-success">Save settings</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
@stop

View File

@ -1,7 +1,9 @@
@extends('layout.dashboard')
@section('content')
@include('partials.dashboard.sidebar-settings')
@if(isset($subMenu))
@include('partials.dashboard.sub-sidebar')
@endif
<div class='content-panel'>
<div class="header">
<span class="uppercase">
@ -12,48 +14,14 @@
<div class="row">
<div class="col-sm-12">
<form name='SettingsForm' class='form-vertical' role='form' action='/dashboard/settings' method='POST'>
<h4 class="sub-header" id='application-setup'>Application Setup</h4>
<fieldset>
<div class='row'>
<div class='col-xs-12'>
<div class='form-group'>
<label>Site Name</label>
<input type='text' class='form-control' name='app_name' value='{{ Setting::get("app_name") }}' required />
</div>
</div>
</div>
<div class='row'>
<div class='col-xs-12'>
<div class='form-group'>
<label>Site URL</label>
<input type='text' class='form-control' name='app_domain' value='{{ Setting::get("app_domain") }}' required />
</div>
</div>
</div>
</fieldset>
<!-- <h4 class="sub-header">Server</h4>
<fieldset></fieldset> -->
<h4 class="sub-header" id='security'>Security</h4>
<fieldset>
<div class='row'>
<div class='col-xs-12'>
<div class='form-group'>
<label>Allowed Domains <em>Comma Seperated</em></label>
<textarea class='form-control' name='allowed_domains' rows='5' placeholder='http://cachet.io, http://cachet.herokuapp.com'>{{ Setting::get('allowed_domains') }}</textarea>
<div class='help-block'>
The domain set above is automatically allowed by default.
</div>
</div>
</div>
</div>
</fieldset>
<!-- <h4 class='sub-header'>Mail</h4>
<fieldset></fieldset> -->
<h4 class="sub-header" id='theme'>Theme</h4>
@if($saved = Session::get('saved'))
<div class='alert alert-success'><strong>{{ Lang::get('cachet.dashboard.settings_saved') }}</strong></div>
@elseif(Session::has('saved'))
<div class='alert alert-danger'><strong>{{ Lang::get('cachet.dashboard.settings_not_saved') }}</strong></div>
@endif
<fieldset>
<div class='row'>
<div class='col-xs-6'>
@ -91,18 +59,6 @@
</div>
</fieldset>
<h4 class="sub-header" id='stylesheet'>Stylesheet</h4>
<fieldset>
<div class='row'>
<div class='col-xs-12'>
<div class='form-group'>
<label>Custom Stylesheet</label>
<textarea class='form-control' name='stylesheet' rows='10'>{{ Setting::get('stylesheet') }}</textarea>
</div>
</div>
</div>
</fieldset>
<div class='row'>
<div class='col-xs-12'>
<div class='form-group'>

View File

@ -1,9 +0,0 @@
<div class='sub-sidebar'>
<h3>Settings</h3>
<ul class='menu'>
<li><a href='#setup'><i class='ion-gear-b'></i> Application Setup</a></li>
<li><a href='#security'><i class='ion-lock-combination'></i> Security</a></li>
<li><a href='#theme'><i class='ion-paintbrush'></i> Theme</a></li>
<li><a href='#stylesheet'><i class='ion-paintbucket'></i> Stylesheet</a></li>
</ul>
</div>

View File

@ -59,8 +59,8 @@
<i class="ion ion-email"></i> {{ Lang::get('cachet.dashboard.notifications') }}
</a>
</li> --}}
<li class="{{ Request::is('dashboard/settings') ? 'active' : '' }}">
<a href="{{ URL::route('dashboard.settings') }}">
<li class="{{ Request::is('dashboard/settings/setup') ? 'active' : '' }}">
<a href="{{ URL::route('dashboard.settings.setup') }}">
<i class="icon ion-gear-a"></i> {{ Lang::get('cachet.dashboard.settings') }}
</a>
</li>

View File

@ -0,0 +1,8 @@
<div class='sub-sidebar'>
<h3>{{ $subTitle }}</h3>
<ul class='menu'>
@foreach($subMenu as $key => $item)
<li><a href='{{ $item["url"] }}' class='{{ $item["active"] ? "active" : null }}'><i class='{{ $item["icon"] }}'></i> {{ $item['title'] }}</a></li>
@endforeach
</ul>
</div>

View File

@ -4718,13 +4718,13 @@ body.dashboard .sub-sidebar {
color: #6787DA; }
body.dashboard .sub-sidebar ul.menu li a:hover {
color: #6787DA; }
body.dashboard .content-panel {
top: 0;
position: relative;
width: 78%;
margin-left: 22%;
padding: 24px 50px;
padding-bottom: 80px; }
body.dashboard .sub-sidebar + .content-panel {
top: 0;
position: relative;
width: 78%;
margin-left: 22%;
padding: 24px 50px;
padding-bottom: 80px; }
body.dashboard .content {
position: relative;

View File

@ -4718,13 +4718,13 @@ body.dashboard .sub-sidebar {
color: #6787DA; }
body.dashboard .sub-sidebar ul.menu li a:hover {
color: #6787DA; }
body.dashboard .content-panel {
top: 0;
position: relative;
width: 78%;
margin-left: 22%;
padding: 24px 50px;
padding-bottom: 80px; }
body.dashboard .sub-sidebar + .content-panel {
top: 0;
position: relative;
width: 78%;
margin-left: 22%;
padding: 24px 50px;
padding-bottom: 80px; }
body.dashboard .content {
position: relative;

View File

@ -1,4 +1,4 @@
{
"css/all.css": "css/all-3a96db65.css",
"css/all.css": "css/all-ba7bbe3d.css",
"js/all.js": "js/all-4554a981.js"
}