diff --git a/app/assets/sass/partials/_sidebar.scss b/app/assets/sass/partials/_sidebar.scss index a3d79822..f0332480 100644 --- a/app/assets/sass/partials/_sidebar.scss +++ b/app/assets/sass/partials/_sidebar.scss @@ -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; + } } } diff --git a/app/controllers/DashSettingsController.php b/app/controllers/DashSettingsController.php index c5091699..f7acadfa 100644 --- a/app/controllers/DashSettingsController.php +++ b/app/controllers/DashSettingsController.php @@ -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); } } diff --git a/app/lang/en/cachet.php b/app/lang/en/cachet.php index 402cb31d..e053a298 100644 --- a/app/lang/en/cachet.php +++ b/app/lang/en/cachet.php @@ -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 :count incidents.', + 'settings_saved' => 'Settings saved.', + 'settings_not_saved' => 'Settings could not be saved.', ], // Forms 'forms' => [ diff --git a/app/routes/dashboard.php b/app/routes/dashboard.php index 7c499603..049526cd 100644 --- a/app/routes/dashboard.php +++ b/app/routes/dashboard.php @@ -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 diff --git a/app/views/dashboard/settings-app-setup.blade.php b/app/views/dashboard/settings-app-setup.blade.php new file mode 100644 index 00000000..8912f6d5 --- /dev/null +++ b/app/views/dashboard/settings-app-setup.blade.php @@ -0,0 +1,56 @@ +@extends('layout.dashboard') + +@section('content') + @if(isset($subMenu)) + @include('partials.dashboard.sub-sidebar') + @endif +