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
reload-db:
@php artisan phpvms:dev-install --reset-db
@php artisan database:create --reset
@php artisan migrate --seed
@echo "Done!"
@make clean
.PHONY: tests

View File

@ -13,14 +13,6 @@ class DevInstall extends Command
protected $signature = 'phpvms:dev-install {--reset-db} {--reset-configs}';
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;
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
name: 'Start Date'
group: general

View File

@ -4,14 +4,34 @@ namespace App\Http\Controllers\Admin;
use App\Contracts\Controller;
use App\Models\Setting;
use Igaster\LaravelTheme\Facades\Theme;
use Illuminate\Http\Request;
use Log;
use Illuminate\Support\Facades\Log;
/**
* Class SettingsController
*/
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
*/
@ -22,6 +42,7 @@ class SettingsController extends Controller
return view('admin.settings.index', [
'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
*/
use App\Http\Middleware\SetActiveTheme;
Route::group([
'namespace' => 'Frontend', 'prefix' => '', 'as' => 'frontend.',
'namespace' => 'Frontend', 'prefix' => '', 'as' => 'frontend.',
'middleware' => [SetActiveTheme::class],
], function () {
Route::get('/', 'HomeController@index')->name('home');
Route::get('r/{id}', 'PirepController@show')->name('pirep.show.public');
@ -21,7 +24,7 @@ Route::group([
*/
Route::group([
'namespace' => 'Frontend', 'prefix' => '', 'as' => 'frontend.',
'middleware' => ['role:admin|user'],
'middleware' => ['role:admin|user', SetActiveTheme::class],
], function () {
Route::resource('dashboard', 'DashboardController');

View File

@ -13,7 +13,7 @@
"ext-simplexml": "*",
"ext-pdo": "*",
"composer/composer": "~1.8.0",
"laravel/framework": "~6.0.0",
"laravel/framework": "~6.0",
"akaunting/money": "^1.0",
"anhskohbo/no-captcha": "^3.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',
],
// 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
//

View File

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