mirror of
https://github.com/CachetHQ/Cachet.git
synced 2025-03-14 12:29:44 +01:00
Separate all of the settings into their own pages.
This commit is contained in:
parent
5fbbb1efde
commit
89ec124092
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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' => [
|
||||
|
@ -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
|
||||
|
56
app/views/dashboard/settings-app-setup.blade.php
Normal file
56
app/views/dashboard/settings-app-setup.blade.php
Normal 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
|
51
app/views/dashboard/settings-security.blade.php
Normal file
51
app/views/dashboard/settings-security.blade.php
Normal 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
|
48
app/views/dashboard/settings-stylesheet.blade.php
Normal file
48
app/views/dashboard/settings-stylesheet.blade.php
Normal 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
|
@ -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'>
|
@ -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>
|
@ -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>
|
||||
|
8
app/views/partials/dashboard/sub-sidebar.blade.php
Normal file
8
app/views/partials/dashboard/sub-sidebar.blade.php
Normal 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>
|
@ -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;
|
@ -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;
|
||||
|
@ -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"
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user