From 4a1d7c59fb69704e088ce803bca393356faa929b Mon Sep 17 00:00:00 2001 From: Nabeel Shahzad Date: Sat, 30 Dec 2017 10:38:18 -0600 Subject: [PATCH] added settings page in admin #93 --- ...017_06_07_014930_create_settings_table.php | 4 +- .../Controllers/Admin/SettingsController.php | 37 +++--- app/Models/Setting.php | 3 - app/Routes/admin.php | 2 +- package-lock.json | 105 +++++++++++++++++- package.json | 3 + public/assets/admin/css/blue.png | Bin 0 -> 2185 bytes public/assets/admin/css/blue@2x.png | Bin 0 -> 4485 bytes public/assets/admin/css/vendor.min.css | 58 +++++----- public/mix-manifest.json | 4 +- resources/views/admin/app.blade.php | 4 +- .../views/admin/settings/index.blade.php | 7 +- .../views/admin/settings/script.blade.php | 30 +++++ .../views/admin/settings/table.blade.php | 64 +++++++---- webpack.mix.js | 4 +- 15 files changed, 241 insertions(+), 84 deletions(-) create mode 100644 public/assets/admin/css/blue.png create mode 100644 public/assets/admin/css/blue@2x.png create mode 100644 resources/views/admin/settings/script.blade.php diff --git a/app/Database/migrations/2017_06_07_014930_create_settings_table.php b/app/Database/migrations/2017_06_07_014930_create_settings_table.php index ae410de7..938ac195 100644 --- a/app/Database/migrations/2017_06_07_014930_create_settings_table.php +++ b/app/Database/migrations/2017_06_07_014930_create_settings_table.php @@ -33,7 +33,7 @@ class CreateSettingsTable extends Migration [ 'order' => 1, 'name' => 'Start Date', - 'group' => '', + 'group' => 'general', 'key' => 'general.start_date', 'value' => '', 'type' => 'date', @@ -45,7 +45,7 @@ class CreateSettingsTable extends Migration 'group' => 'general', 'key' => 'general.currency', 'value' => 'dollar', - 'type' => 'text', + 'type' => 'select', 'options' => 'dollar,euro,gbp,yen,jpy,rupee,ruble', 'description' => 'Currency to show in the interface', ], diff --git a/app/Http/Controllers/Admin/SettingsController.php b/app/Http/Controllers/Admin/SettingsController.php index 875f29b1..3e1e5441 100644 --- a/app/Http/Controllers/Admin/SettingsController.php +++ b/app/Http/Controllers/Admin/SettingsController.php @@ -2,42 +2,43 @@ namespace App\Http\Controllers\Admin; +use Log; use Illuminate\Http\Request; -use Setting; + +use App\Models\Setting; class SettingsController extends BaseController { /** - * Display a listing of setting. - * - * @return Response + * Display the settings. Group them by the setting group */ public function index() { - /*$settings = array_filter(Setting::all(), function ($key) { - if (strpos($key, '_descrip') !== false) { return true; } - return false; - });*/ - $settings = []; + $settings = Setting::orderBy('order', 'asc')->get(); + $settings = $settings->groupBy('group'); return view('admin.settings.index',[ - 'settings' => $settings, + 'grouped_settings' => $settings, ]); } /** * Update the specified setting in storage. - * - * @param Setting $setting - * @param Request $request - * - * @return Response */ - public function update(Setting $setting, Request $request) + public function update(Request $request) { - /*$this->validate($request, Setting::$rules, Setting::$messages); - $this->updateEntry($setting, $request->all());*/ + foreach($request->post() as $id => $value) { + $setting = Setting::find($id); + if(!$setting) { + continue; + } + Log::info('Updating "'.$setting->key.'" from "'.$setting->value.'" to "'.$value.'"'); + $setting->value = $value; + $setting->save(); + } + + flash('Settings saved!'); return redirect('/admin/settings'); } diff --git a/app/Models/Setting.php b/app/Models/Setting.php index 6e15c424..2e478bc4 100644 --- a/app/Models/Setting.php +++ b/app/Models/Setting.php @@ -22,7 +22,4 @@ class Setting extends BaseModel 'description', ]; - public $casts = [ - 'options' => 'array', - ]; } diff --git a/app/Routes/admin.php b/app/Routes/admin.php index 6ce419ee..921ec289 100644 --- a/app/Routes/admin.php +++ b/app/Routes/admin.php @@ -32,7 +32,7 @@ Route::group([ # view/update settings Route::match(['get'], 'settings', 'SettingsController@index'); - Route::match(['post', 'put'], 'settings', 'SettingsController@update'); + Route::match(['post', 'put'], 'settings', 'SettingsController@update')->name('settings.update'); # pirep related routes Route::resource('pireps', 'PirepController'); diff --git a/package-lock.json b/package-lock.json index 615c608d..702f811c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -243,6 +243,12 @@ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, "asn1": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", @@ -1189,11 +1195,6 @@ "hoek": "2.16.3" } }, - "bootstrap-editable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bootstrap-editable/-/bootstrap-editable-1.0.1.tgz", - "integrity": "sha1-RFpnG1q1/td+jH9OX/vHlsYLUCM=" - }, "bootstrap-sass": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/bootstrap-sass/-/bootstrap-sass-3.3.7.tgz", @@ -1860,6 +1861,67 @@ "run-queue": "1.0.3" } }, + "copy-webpack-plugin": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.3.1.tgz", + "integrity": "sha512-xlcFiW/U7KrpS6dFuWq3r8Wb7koJx7QVc7LDFCosqkikaVSxkaYOnwDLwilbjrszZ0LYZXThDAJKcQCSrvdShQ==", + "dev": true, + "requires": { + "cacache": "10.0.1", + "find-cache-dir": "1.0.0", + "globby": "7.1.1", + "is-glob": "4.0.0", + "loader-utils": "0.2.17", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "p-limit": "1.1.0", + "pify": "3.0.0", + "serialize-javascript": "1.4.0" + }, + "dependencies": { + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "dir-glob": "2.0.0", + "glob": "7.1.2", + "ignore": "3.3.7", + "pify": "3.0.0", + "slash": "1.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + } + } + }, "core-js": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", @@ -2540,6 +2602,27 @@ "randombytes": "2.0.5" } }, + "dir-glob": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", + "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "dev": true, + "requires": { + "arrify": "1.0.1", + "path-type": "3.0.0" + }, + "dependencies": { + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "3.0.0" + } + } + } + }, "dns-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", @@ -4855,6 +4938,12 @@ "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" }, + "ignore": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", + "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", + "dev": true + }, "imagemin": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/imagemin/-/imagemin-5.3.1.tgz", @@ -9421,6 +9510,12 @@ } } }, + "serialize-javascript": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.4.0.tgz", + "integrity": "sha1-fJWFFNtqwkQ6irwGLcn3iGp/YAU=", + "dev": true + }, "serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", diff --git a/package.json b/package.json index ef37cdf1..4ab14ecf 100755 --- a/package.json +++ b/package.json @@ -27,5 +27,8 @@ "rivets": "0.9.6", "select2": "^4.0.5", "x-editable": "1.5.1" + }, + "devDependencies": { + "copy-webpack-plugin": "^4.3.1" } } diff --git a/public/assets/admin/css/blue.png b/public/assets/admin/css/blue.png new file mode 100644 index 0000000000000000000000000000000000000000..a3e040fcce00622a17085d447f1a18c68989357e GIT binary patch literal 2185 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 - @include('flash::message') - @include('admin.settings.table') - + @include('flash::message') + @include('admin.settings.table') @endsection +@include('admin.settings.script') diff --git a/resources/views/admin/settings/script.blade.php b/resources/views/admin/settings/script.blade.php new file mode 100644 index 00000000..4a387288 --- /dev/null +++ b/resources/views/admin/settings/script.blade.php @@ -0,0 +1,30 @@ +@section('scripts') + +@endsection diff --git a/resources/views/admin/settings/table.blade.php b/resources/views/admin/settings/table.blade.php index eaa69fc6..3dcce6fd 100644 --- a/resources/views/admin/settings/table.blade.php +++ b/resources/views/admin/settings/table.blade.php @@ -1,22 +1,44 @@ - - - - - - - -@foreach($settings as $s) - - - - - +{!! Form::model($grouped_settings, ['route' => ['admin.settings.update'], 'method' => 'post']) !!} +@foreach($grouped_settings as $group => $settings) +
+
+
NameValueDescription
{!! $s->key !!}{!! $s->value !!} - @if(Setting::get($s->key.'_descrip')) - {!! Setting::get($s->key.'_descrip') !!} - @else -   - @endif -
+ + + + + @foreach($settings as $setting) + + + + + @endforeach +
+
{!! $group !!}
+
+

{!! $setting->name !!}

+

{{$setting->description}}

+ @if($setting->type === 'text') + {!! Form::input('text', $setting->id, $setting->value, ['class' => 'form-control']) !!} + @elseif($setting->type === 'boolean' || $setting->type === 'bool') + {!! Form::hidden($setting->id, 0) !!} + {!! Form::checkbox($setting->id, null, $setting->value, ['']) !!} + @elseif($setting->type === 'int' || $setting->type === 'number') + {!! Form::number($setting->id, $setting->value, ['class'=>'form-control']) !!} + @elseif($setting->type === 'select') + {!! Form::select($setting->id, + explode(',', $setting->options), + $setting->value, ['class' => 'select2', 'style' => 'width: 100%']) !!} + @else + {!! Form::input('text', $setting->id, $setting->value, ['class' => 'form-control']) !!} + @endif + +
+ + @endforeach - - +
+ {!! Form::submit('Save', ['class' => 'btn btn-primary']) !!} + Cancel +
+{!! Form::close() !!} diff --git a/webpack.mix.js b/webpack.mix.js index 9a04c897..f6c9390f 100644 --- a/webpack.mix.js +++ b/webpack.mix.js @@ -33,7 +33,7 @@ mix.styles([ 'public/assets/admin/vendor/font-awesome.css', 'node_modules/select2/dist/css/select2.css', 'node_modules/leaflet/dist/leaflet.css', - 'node_modules/icheck/skins/flat/orange.css', + 'node_modules/icheck/skins/square/blue.css', 'node_modules/x-editable/dist/bootstrap3-editable/css/bootstrap-editable.css', 'public/assets/admin/vendor/paper-dashboard.css', ], 'public/assets/admin/css/vendor.min.css').version() @@ -52,6 +52,8 @@ mix.scripts([ 'node_modules/x-editable/dist/bootstrap3-editable/js/bootstrap-editable.js', ], 'public/assets/admin/js/vendor.js'); +mix.copy('node_modules/icheck/skins/square/blue*.png', 'public/assets/admin/css'); + /** * SYSTEM REQUIRED FILES */