359 Select theme in settings (#423)

* Update composer package versions

* Laravel version

* Change theme in the admin settings page closes #359

* Fix comment
This commit is contained in:
Nabeel S 2019-10-30 09:05:18 -04:00 committed by GitHub
parent eff9f6fec6
commit ec4f10d43a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 391 additions and 339 deletions

View File

@ -65,7 +65,9 @@ reset: clean
.PHONY: reload-db .PHONY: reload-db
reload-db: reload-db:
@php artisan phpvms:dev-install --reset-db @php artisan database:create --reset
@php artisan migrate --seed
@echo "Done!"
@make clean @make clean
.PHONY: tests .PHONY: tests

View File

@ -13,14 +13,6 @@ class DevInstall extends Command
protected $signature = 'phpvms:dev-install {--reset-db} {--reset-configs}'; protected $signature = 'phpvms:dev-install {--reset-db} {--reset-configs}';
protected $description = 'Run a developer install and run the sample migration'; protected $description = 'Run a developer install and run the sample migration';
/**
* The YAML files with sample data to import
*/
protected $yaml_imports = [
'sample.yml',
'acars.yml',
];
private $databaseSeeder; private $databaseSeeder;
public function __construct(\DatabaseSeeder $databaseSeeder) public function __construct(\DatabaseSeeder $databaseSeeder)

View File

@ -1,3 +1,10 @@
- key: general.theme
name: 'Current Theme'
group: general
value: 'default'
options: ''
type: select
description: 'The currently active theme'
- key: general.start_date - key: general.start_date
name: 'Start Date' name: 'Start Date'
group: general group: general

View File

@ -4,14 +4,34 @@ namespace App\Http\Controllers\Admin;
use App\Contracts\Controller; use App\Contracts\Controller;
use App\Models\Setting; use App\Models\Setting;
use Igaster\LaravelTheme\Facades\Theme;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Log; use Illuminate\Support\Facades\Log;
/** /**
* Class SettingsController * Class SettingsController
*/ */
class SettingsController extends Controller class SettingsController extends Controller
{ {
/**
* Get a list of themes formatted for a select box
*
* @return array
*/
private function getThemes(): array
{
$themes = Theme::all();
$theme_list = [];
foreach ($themes as $t) {
if (!$t || !$t->name || $t->name === 'false') {
continue;
}
$theme_list[] = $t->name;
}
return $theme_list;
}
/** /**
* Display the settings. Group them by the setting group * Display the settings. Group them by the setting group
*/ */
@ -22,6 +42,7 @@ class SettingsController extends Controller
return view('admin.settings.index', [ return view('admin.settings.index', [
'grouped_settings' => $settings, 'grouped_settings' => $settings,
'themes' => $this->getThemes(),
]); ]);
} }

View File

@ -0,0 +1,22 @@
<?php
namespace App\Http\Middleware;
use Closure;
use Igaster\LaravelTheme\Facades\Theme;
/**
* Read the current theme from the settings (set in admin), and set it
*/
class SetActiveTheme
{
public function handle($request, Closure $next)
{
$theme = setting('general.theme');
if (!empty($theme)) {
Theme::set($theme);
}
return $next($request);
}
}

View File

@ -3,8 +3,11 @@
/** /**
* User doesn't need to be logged in for these * User doesn't need to be logged in for these
*/ */
use App\Http\Middleware\SetActiveTheme;
Route::group([ Route::group([
'namespace' => 'Frontend', 'prefix' => '', 'as' => 'frontend.', 'namespace' => 'Frontend', 'prefix' => '', 'as' => 'frontend.',
'middleware' => [SetActiveTheme::class],
], function () { ], function () {
Route::get('/', 'HomeController@index')->name('home'); Route::get('/', 'HomeController@index')->name('home');
Route::get('r/{id}', 'PirepController@show')->name('pirep.show.public'); Route::get('r/{id}', 'PirepController@show')->name('pirep.show.public');
@ -21,7 +24,7 @@ Route::group([
*/ */
Route::group([ Route::group([
'namespace' => 'Frontend', 'prefix' => '', 'as' => 'frontend.', 'namespace' => 'Frontend', 'prefix' => '', 'as' => 'frontend.',
'middleware' => ['role:admin|user'], 'middleware' => ['role:admin|user', SetActiveTheme::class],
], function () { ], function () {
Route::resource('dashboard', 'DashboardController'); Route::resource('dashboard', 'DashboardController');

View File

@ -13,7 +13,7 @@
"ext-simplexml": "*", "ext-simplexml": "*",
"ext-pdo": "*", "ext-pdo": "*",
"composer/composer": "~1.8.0", "composer/composer": "~1.8.0",
"laravel/framework": "~6.0.0", "laravel/framework": "~6.0",
"akaunting/money": "^1.0", "akaunting/money": "^1.0",
"anhskohbo/no-captcha": "^3.0", "anhskohbo/no-captcha": "^3.0",
"appstract/laravel-opcache": "^2.0", "appstract/laravel-opcache": "^2.0",

539
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -31,17 +31,6 @@ return [
'currency' => 'USD', 'currency' => 'USD',
], ],
// This is the name of the active theme
// Overrides config/themes.php
'themes' => [
'default' => 'default',
],
// Overrides config/vacentral.php
'vacentral' => [
'api_key' => '',
],
// //
// Other settings and configuration you might not need to modify // Other settings and configuration you might not need to modify
// //

View File

@ -1,63 +1,72 @@
{{ Form::model($grouped_settings, ['route' => ['admin.settings.update'], 'method' => 'post']) }} {{ Form::model($grouped_settings, ['route' => ['admin.settings.update'], 'method' => 'post']) }}
@foreach($grouped_settings as $group => $settings) @foreach($grouped_settings as $group => $settings)
<div class="card border-blue-bottom"> <div class="card border-blue-bottom">
<div class="content table-responsive table-full-width"> <div class="content table-responsive table-full-width">
<table class="table table-hover" id="flights-table"> <table class="table table-hover" id="flights-table">
<thead> <thead>
<th colspan="2"> <th colspan="2">
<h5>{{ $group }}</h5> <h5>{{ $group }}</h5>
</th> </th>
</thead> </thead>
@foreach($settings as $setting) @foreach($settings as $setting)
<tr> <tr>
<td width="70%"> <td width="70%">
<p>{{ $setting->name }}</p> <p>{{ $setting->name }}</p>
<p class="description"> <p class="description">
@component('admin.components.info') @component('admin.components.info')
{{$setting->description}} {{$setting->description}}
@endcomponent @endcomponent
</p></td> </p></td>
<td align="center"> <td align="center">
@if($setting->type === 'date') @if($setting->type === 'date')
{{ Form::input('text', $setting->id, $setting->value, ['class' => 'form-control', 'id' => 'datepicker']) }} {{ Form::input('text', $setting->id, $setting->value, ['class' => 'form-control', 'id' => 'datepicker']) }}
@elseif($setting->type === 'boolean' || $setting->type === 'bool') @elseif($setting->type === 'boolean' || $setting->type === 'bool')
{{ Form::hidden($setting->id, 0) }} {{ Form::hidden($setting->id, 0) }}
{{ Form::checkbox($setting->id, null, $setting->value) }} {{ Form::checkbox($setting->id, null, $setting->value) }}
@elseif($setting->type === 'int') @elseif($setting->type === 'int')
{{ Form::number($setting->id, $setting->value, ['class'=>'form-control']) }} {{ Form::number($setting->id, $setting->value, ['class'=>'form-control']) }}
@elseif($setting->type === 'number') @elseif($setting->type === 'number')
{{ Form::number($setting->id, $setting->value, ['class'=>'form-control', 'step' => '0.01']) }} {{ Form::number($setting->id, $setting->value, ['class'=>'form-control', 'step' => '0.01']) }}
@elseif($setting->type === 'select') @elseif($setting->type === 'select')
{{ Form::select(
$setting->id,
list_to_assoc(explode(',', $setting->options)),
$setting->value,
['class' => 'select2', 'style' => 'width: 100%; text-align: left;']) }}
@else
{{ Form::input('text', $setting->id, $setting->value, ['class' => 'form-control']) }}
@endif
</td> @if($setting->id === 'general_theme')
</tr> {{ Form::select(
@endforeach $setting->id,
</table> list_to_assoc($themes),
</div> $setting->value,
['class' => 'select2', 'style' => 'width: 100%; text-align: left;']) }}
@else
{{ Form::select(
$setting->id,
list_to_assoc(explode(',', $setting->options)),
$setting->value,
['class' => 'select2', 'style' => 'width: 100%; text-align: left;']) }}
@endif
@else
{{ Form::input('text', $setting->id, $setting->value, ['class' => 'form-control']) }}
@endif
</td>
</tr>
@endforeach
</table>
</div> </div>
</div>
@endforeach @endforeach
<div class="card"> <div class="card">
<div class="content"> <div class="content">
<div class="text-right"> <div class="text-right">
{{ Form::button('Save', ['type' => 'submit', 'class' => 'btn btn-success']) }} {{ Form::button('Save', ['type' => 'submit', 'class' => 'btn btn-success']) }}
<a href="{{ route('admin.subfleets.index') }}" class="btn btn-default">Cancel</a> <a href="{{ route('admin.subfleets.index') }}" class="btn btn-default">Cancel</a>
</div>
</div> </div>
</div>
</div> </div>
{{ Form::close() }} {{ Form::close() }}
<script> <script>
$(document).ready(function () { $(document).ready(function () {
$('#datepicker').datetimepicker({ $('#datepicker').datetimepicker({
format: "YYYY-MM-DD" format: "YYYY-MM-DD"
}); });
}); });
</script> </script>