Update skinning with more flexible theme module

This commit is contained in:
Nabeel Shahzad
2018-03-11 18:00:42 -05:00
parent 03c15473b9
commit f05e37767f
50 changed files with 216 additions and 80 deletions

View File

@@ -22,6 +22,6 @@ class ForgotPasswordController extends Controller
*/
public function showLinkRequestForm()
{
return $this->view('auth.passwords.email');
return view('auth.passwords.email');
}
}

View File

@@ -28,7 +28,7 @@ class LoginController extends Controller
*/
public function showLoginForm()
{
return $this->view('auth/login');
return view('auth/login');
}
/**
@@ -54,11 +54,11 @@ class LoginController extends Controller
// Redirect to one of the error pages
if($user->state === UserState::PENDING) {
return $this->view('auth.pending');
return view('auth.pending');
} elseif ($user->state === UserState::REJECTED) {
return $this->view('auth.rejected');
return view('auth.rejected');
} elseif ($user->state === UserState::SUSPENDED) {
return $this->view('auth.suspended');
return view('auth.suspended');
}
}

View File

@@ -55,7 +55,7 @@ class RegisterController extends Controller
$airports = $this->airportRepo->selectBoxList(false, true);
$airlines = $this->airlineRepo->selectBoxList();
return $this->view('auth.register', [
return view('auth.register', [
'airports' => $airports,
'airlines' => $airlines,
'timezones' => Timezonelist::toArray(),
@@ -121,7 +121,7 @@ class RegisterController extends Controller
$user = $this->create($request->all());
if($user->state === UserState::PENDING) {
return $this->view('auth.pending');
return view('auth.pending');
}
$this->guard()->login($user);

View File

@@ -19,7 +19,7 @@ class ResetPasswordController extends Controller
*/
public function showResetForm(Request $request, $token = null)
{
return $this->view('auth.passwords.reset',
return view('auth.passwords.reset',
['token' => $token, 'email' => $request->email]
);
}

View File

@@ -33,7 +33,7 @@ class AcarsController extends Controller
$pireps = $this->acarsRepo->getPositions();
$positions = $this->geoSvc->getFeatureForLiveFlights($pireps);
return $this->view('acars.index',[
return view('acars.index',[
'pireps' => $pireps,
'positions' => $positions,
]);

View File

@@ -36,7 +36,7 @@ class DashboardController extends Controller
$last_pirep = $this->pirepRepo->find($user->last_pirep_id);
} catch(\Exception $e) { }
return $this->view('dashboard.index', [
return view('dashboard.index', [
'user' => $user,
'last_pirep' => $last_pirep,
]);

View File

@@ -68,7 +68,7 @@ class FlightController extends Controller
$saved_flights = Bid::where('user_id', Auth::id())
->pluck('flight_id')->toArray();
return $this->view('flights.index', [
return view('flights.index', [
'airlines' => $this->airlineRepo->selectBoxList(true),
'airports' => $this->airportRepo->selectBoxList(true),
'flights' => $flights,
@@ -89,7 +89,7 @@ class FlightController extends Controller
$saved_flights = Bid::where('user_id', Auth::id())
->pluck('flight_id')->toArray();
return $this->view('flights.index', [
return view('flights.index', [
'airlines' => $this->airlineRepo->selectBoxList(true),
'airports' => $this->airportRepo->selectBoxList(true),
'flights' => $flights,
@@ -112,7 +112,7 @@ class FlightController extends Controller
$map_features = $this->geoSvc->flightGeoJson($flight);
return $this->view('flights.show', [
return view('flights.show', [
'flight' => $flight,
'map_features' => $map_features,
]);

View File

@@ -19,7 +19,7 @@ class HomeController extends Controller
return view('system/errors/not_installed');
}
return $this->view('home', [
return view('home', [
'users' => $users,
]);
}

View File

@@ -166,7 +166,7 @@ class PirepController extends Controller
$this->pirepRepo->pushCriteria(new WhereCriteria($request, $where));
$pireps = $this->pirepRepo->orderBy('created_at', 'desc')->paginate();
return $this->view('pireps.index', [
return view('pireps.index', [
'user' => $user,
'pireps' => $pireps,
]);
@@ -186,7 +186,7 @@ class PirepController extends Controller
$map_features = $this->geoSvc->pirepGeoJson($pirep);
return $this->view('pireps.show', [
return view('pireps.show', [
'pirep' => $pirep,
'map_features' => $map_features,
]);
@@ -202,7 +202,7 @@ class PirepController extends Controller
$aircraft_id = $request->input('aircraft_id');
$aircraft = $this->aircraftRepo->find($aircraft_id);
return $this->view('pireps.fares', [
return view('pireps.fares', [
'aircraft' => $aircraft,
'read_only' => false,
]);
@@ -216,7 +216,7 @@ class PirepController extends Controller
{
$user = Auth::user();
return $this->view('pireps.create', [
return view('pireps.create', [
'aircraft' => null,
'read_only' => false,
'airline_list' => $this->airlineRepo->selectBoxList(true),
@@ -289,7 +289,7 @@ class PirepController extends Controller
$pirep->{$field_name} = $fare->count;
}
return $this->view('pireps.edit', [
return view('pireps.edit', [
'pirep' => $pirep,
'read_only' => $read_only,
'aircraft' => $pirep->aircraft,

View File

@@ -50,7 +50,7 @@ class ProfileController extends Controller
$airports = $this->airportRepo->all();
}
return $this->view('profile.index', [
return view('profile.index', [
'user' => Auth::user(),
'airports' => $airports,
]);
@@ -70,7 +70,7 @@ class ProfileController extends Controller
$airports = $this->airportRepo->all();
return $this->view('profile.index', [
return view('profile.index', [
'user' => $user,
'airports' => $airports,
]);
@@ -92,7 +92,7 @@ class ProfileController extends Controller
$airlines = $this->airlineRepo->selectBoxList();
$airports = $this->airportRepo->selectBoxList(false, setting('pilots.home_hubs_only'));
return $this->view('profile.edit', [
return view('profile.edit', [
'user' => $user,
'airlines' => $airlines,
'airports' => $airports,

View File

@@ -26,7 +26,7 @@ class UserController extends Controller
*/
public function index(Request $request)
{
return $this->view('users.index',[
return view('users.index',[
'country' => new \League\ISO3166\ISO3166(),
'users' => $this->userRepo->orderBy('name', 'desc')->paginate(),
]);

View File

@@ -2,6 +2,7 @@
namespace App\Providers;
use App\Repositories\SettingRepository;
use App\Services\ModuleService;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\ServiceProvider;
use View;
@@ -13,7 +14,7 @@ class AppServiceProvider extends ServiceProvider
Schema::defaultStringLength(191);
$this->app->bind('setting', SettingRepository::class);
View::share('SKIN_NAME', config('phpvms.skin'));
View::share('moduleSvc', app(ModuleService::class));
}
/**

View File

@@ -21,7 +21,7 @@ class LatestNews extends BaseWidget
{
$newsRepo = app(NewsRepository::class);
return $this->view('widgets.latest_news', [
return view('widgets.latest_news', [
'config' => $this->config,
'news' => $newsRepo->recent($this->config['count']),
]);

View File

@@ -21,7 +21,7 @@ class LatestPilots extends BaseWidget
{
$userRepo = app(UserRepository::class);
return $this->view('widgets.latest_pilots', [
return view('widgets.latest_pilots', [
'config' => $this->config,
'users' => $userRepo->recent($this->config['count']),
]);

View File

@@ -21,7 +21,7 @@ class LatestPireps extends BaseWidget
{
$pirepRepo = app(PirepRepository::class);
return $this->view('widgets.latest_pireps', [
return view('widgets.latest_pireps', [
'config' => $this->config,
'pireps' => $pirepRepo->recent($this->config['count']),
]);

View File

@@ -27,7 +27,7 @@ class LiveMap extends BaseWidget
$pireps = $acarsRepo->getPositions();
$positions = $geoSvc->getFeatureForLiveFlights($pireps);
return $this->view('widgets.live_map', [
return view('widgets.live_map', [
'config' => $this->config,
'pireps' => $pireps,
'positions' => $positions,

View File

@@ -36,7 +36,8 @@
"vierbergenlars/php-semver": "3.0.x",
"php-units-of-measure/php-units-of-measure": "2.1.x",
"markrogoyski/math-php": "^0.38.0",
"akaunting/money": "^1.0"
"akaunting/money": "^1.0",
"igaster/laravel-theme": "^2.0"
},
"require-dev": {
"phpunit/phpunit": "~7.0",

65
composer.lock generated
View File

@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"content-hash": "fbfbc4dcf0b6ac78e6aa35c15736fd34",
"content-hash": "e7e949a827f8cef058e1ea7e3db83c5f",
"packages": [
{
"name": "akaunting/money",
@@ -1146,6 +1146,69 @@
],
"time": "2017-10-28T11:24:20+00:00"
},
{
"name": "igaster/laravel-theme",
"version": "v2.0.6",
"source": {
"type": "git",
"url": "https://github.com/igaster/laravel-theme.git",
"reference": "d3835fd99418848ba130e3f7a73d3f78ab636471"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/igaster/laravel-theme/zipball/d3835fd99418848ba130e3f7a73d3f78ab636471",
"reference": "d3835fd99418848ba130e3f7a73d3f78ab636471",
"shasum": ""
},
"require": {
"illuminate/contracts": "5.4.*|5.5.*|5.6.*"
},
"require-dev": {
"orchestra/testbench": "~3.4",
"phpunit/phpunit": "^6.0"
},
"suggest": {
"orchestra/asset": "Use '@css' and '@js' in Blade files"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"Igaster\\LaravelTheme\\themeServiceProvider"
],
"aliases": {
"Theme": "Igaster\\LaravelTheme\\Facades\\Theme"
}
}
},
"autoload": {
"psr-4": {
"Igaster\\LaravelTheme\\": "src/",
"Igaster\\LaravelTheme\\Tests\\": "tests/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Giannis Gasteratos",
"email": "igasteratos@gmail.com"
}
],
"description": "Laravel 5 Themes: Asset & Views folder per theme. Theme inheritance. Blade integration and more...",
"homepage": "https://github.com/Igaster/laravel-theme.git",
"keywords": [
"assets",
"blade",
"laravel-5",
"package",
"themes",
"views"
],
"time": "2018-02-12T11:19:00+00:00"
},
{
"name": "irazasyed/laravel-gamp",
"version": "v1.3.0",

View File

@@ -73,6 +73,8 @@ return [
Toin0u\Geotools\GeotoolsServiceProvider::class,
Jackiedo\Timezonelist\TimezonelistServiceProvider::class,
Irazasyed\LaravelGAMP\LaravelGAMPServiceProvider::class,
Igaster\LaravelTheme\themeServiceProvider::class,
Nwidart\Modules\LaravelModulesServiceProvider::class,
/*
* Application Service Providers...
@@ -82,7 +84,6 @@ return [
App\Providers\AuthServiceProvider::class,
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,
Nwidart\Modules\LaravelModulesServiceProvider::class,
],
'aliases' => [

68
config/themes.php Normal file
View File

@@ -0,0 +1,68 @@
<?php
return [
'themes_path' => resource_path('views/layouts'), // eg: base_path('resources/themes')
'asset_not_found' => 'LOG_ERROR',
'default' => 'default',
'cache' => true,
/*
|--------------------------------------------------------------------------
| Define available themes. Format:
|
| 'theme-name' => [
| 'extends' => 'theme-to-extend', // optional
| 'views-path' => 'path-to-views', // defaults to: resources/views/theme-name
| 'asset-path' => 'path-to-assets', // defaults to: public/theme-name
|
| // You can add your own custom keys
| // Use Theme::getSetting('key') & Theme::setSetting('key', 'value') to access them
| 'key' => 'value',
| ],
|
|--------------------------------------------------------------------------
*/
'themes' => [
'default' => [
'extends' => 'false'
],
// Add your themes here. These settings will override theme.json settings defined for each theme
/*
|---------------------------[ Example Structure ]--------------------------
|
| // Full theme Syntax:
|
| 'example1' => [
| 'extends' => null, // doesn't extend any theme
| 'views-path' => example, // = resources/views/example_theme
| 'asset-path' => example, // = public/example_theme
| ],
|
| // Use all Defaults:
|
| 'example2', // Assets =\public\example2, Views =\resources\views\example2
| // Note that if you use all default values, you can omit declaration completely.
| // i.e. defaults will be used when you call Theme::set('undefined-theme')
|
|
| // This theme shares the views with example2 but defines its own assets in \public\example3
|
| 'example3' => [
| 'views-path' => 'example',
| ],
|
| // This theme extends example1 and may override SOME views\assets in its own paths
|
| 'example4' => [
| 'extends' => 'example1',
| ],
|
|--------------------------------------------------------------------------
*/
],
];

View File

@@ -2,4 +2,4 @@
You probably don't want to edit anything here. Just make
sure to extend this in your views. It will pass the content section through
--}}
@extends('layouts.' . config('phpvms.skin') . '.app')
@extends('app')

View File

@@ -28,6 +28,6 @@ class $CLASS$ extends Mailable
*/
public function build()
{
return $this->view('view.name');
return view('view.name');
}
}

View File

@@ -2,4 +2,4 @@
You probably don't want to edit anything here. Just make
sure to extend this in your views. It will pass the content section through
--}}
@extends('layouts.' . config('phpvms.skin') . '.app')
@extends('app')

View File

@@ -49,7 +49,6 @@
<div class="collapse" id="addons_menu" aria-expanded="true">
<ul class="nav">
@inject('moduleSvc', 'App\Services\ModuleService')
@foreach($moduleSvc->getAdminLinks() as &$link)
<li><a href="{!! url($link['url']) !!}"><i class="{!! $link['icon'] !!}"></i>{!! $link['title'] !!}</a></li>
@endforeach

View File

@@ -1,4 +1,4 @@
@extends("layouts.${SKIN_NAME}.app")
@extends('app')
@section('title', 'live map')
@section('content')

View File

@@ -1,4 +1,3 @@
@inject('moduleSvc', 'App\Services\ModuleService')
<!DOCTYPE html>
<html lang="en">
<head>
@@ -41,7 +40,7 @@
</p>
</div>
<div class="collapse navbar-collapse justify-content-end" id="navigation">
@include("layouts.${SKIN_NAME}.nav")
@include('nav')
</div>
</div>
</nav>
@@ -50,7 +49,7 @@
<div class="wrapper">
<div class="clear"></div>
<div class="container-fluid" style="width: 85%!important;">
@include("layouts.${SKIN_NAME}.flash.message")
@include('flash.message')
@yield('content')
</div>
<div class="clearfix" style="height: 200px;"></div>

View File

@@ -1,4 +1,4 @@
@extends("layouts.${SKIN_NAME}.auth.layout")
@extends("auth.layout")
@section('title', 'log in')
@section('content')

View File

@@ -1,4 +1,4 @@
@extends("layouts.${SKIN_NAME}.app")
@extends('app')
<!-- Main Content -->
@section('content')

View File

@@ -1,4 +1,4 @@
@extends("layouts.${SKIN_NAME}.app")
@extends('app')
@section('content')
<div class="container">

View File

@@ -1,4 +1,4 @@
@extends("layouts.${SKIN_NAME}.app")
@extends('app')
@section('title', 'registration pending')
@section('content')

View File

@@ -1,4 +1,4 @@
@extends("layouts.${SKIN_NAME}.app")
@extends('app')
@section('title', 'register')
@section('content')
@@ -67,7 +67,7 @@
<p class="text-danger">{{ $errors->first('password_confirmation') }}</p>
@endif
@include("layouts.${SKIN_NAME}.auth.toc")
@include("auth.toc")
<div style="width: 100%; text-align: right; padding-top: 20px;">
By registering, you agree to the Term and Conditions<br /><br />

View File

@@ -1,4 +1,4 @@
@extends("layouts.${SKIN_NAME}.app")
@extends('app')
@section('title', 'registration submitted')
@section('content')

View File

@@ -1,4 +1,4 @@
@extends("layouts.${SKIN_NAME}.app")
@extends('app')
@section('title', 'registration denied')
@section('content')

View File

@@ -1,4 +1,4 @@
@extends("layouts.${SKIN_NAME}.app")
@extends('app')
@section('title', 'account suspended')
@section('content')

View File

@@ -1,4 +1,4 @@
@extends("layouts.${SKIN_NAME}.app")
@extends('app')
@section('title', 'dashboard')
@section('content')
@@ -58,7 +58,7 @@
<div class="nav nav-tabs" role="tablist" style="background: #067ec1; color: #FFF;">
Your Last Report
</div>
@include("layouts.${SKIN_NAME}.pireps.pirep_card", ['pirep' => $last_pirep])
@include("pireps.pirep_card", ['pirep' => $last_pirep])
@endif
{{ Widget::latestNews(['count' => 1]) }}

View File

@@ -1,4 +1,4 @@
@extends("layouts.${SKIN_NAME}.app")
@extends('app')
@section('title', 'not authorized')
@section('content')

View File

@@ -1,4 +1,4 @@
@extends("layouts.${SKIN_NAME}.app")
@extends('app')
@section('title', 'not found')
@section('content')

View File

@@ -1,4 +1,4 @@
@extends("layouts.${SKIN_NAME}.app")
@extends('app')
@section('title', 'flights')
@section('content')
@@ -6,18 +6,18 @@
@include('flash::message')
<div class="col-md-9">
<h2 class="description">flights</h2>
@include("layouts.${SKIN_NAME}.flights.table")
@include("flights.table")
</div>
<div class="col-md-3">
@include("layouts.${SKIN_NAME}.flights.search")
@include("flights.search")
</div>
</div>
<div class="row">
<div class="col-12 text-center">
{{ $flights->links("layouts.${SKIN_NAME}.pagination.default") }}
{{ $flights->links("pagination.default") }}
</div>
</div>
@endsection
@include("layouts.${SKIN_NAME}.flights.scripts")
@include("flights.scripts")

View File

@@ -1,4 +1,4 @@
@extends("layouts.${SKIN_NAME}.app")
@extends('app')
@section('title', 'Flight '.$flight->ident)
@section('content')
@@ -49,5 +49,5 @@
</table>
</div>
</div>
@include("layouts.${SKIN_NAME}.flights.map")
@include("flights.map")
@endsection

View File

@@ -1,4 +1,4 @@
@extends("layouts.${SKIN_NAME}.app")
@extends('app')
@section('title', 'welcome!')
@section('content')

View File

@@ -1,4 +1,4 @@
@extends("layouts.${SKIN_NAME}.app")
@extends('app')
@section('title', 'File Flight Report')
@section('content')
@@ -8,11 +8,11 @@
@include('flash::message')
{!! Form::open(['route' => 'frontend.pireps.store']) !!}
@include("layouts.${SKIN_NAME}.pireps.fields")
@include("pireps.fields")
{!! Form::close() !!}
</div>
</div>
@endsection
@include("layouts.${SKIN_NAME}.pireps.scripts")
@include("pireps.scripts")

View File

@@ -1,4 +1,4 @@
@extends("layouts.${SKIN_NAME}.app")
@extends('app')
@section('title', 'Edit Flight Report')
@section('content')
<div class="row">
@@ -7,10 +7,10 @@
@include('flash::message')
{!! Form::model($pirep, ['route' => ['frontend.pireps.update', $pirep->id], 'method' => 'patch']) !!}
@include("layouts.${SKIN_NAME}.pireps.fields")
@include("pireps.fields")
{!! Form::close() !!}
</div>
</div>
@endsection
@include("layouts.${SKIN_NAME}.pireps.scripts")
@include("pireps.scripts")

View File

@@ -11,7 +11,7 @@ flight reports that have been filed. You've been warned!
@if($read_only)
<div class="row">
<div class="col-sm-12">
@component("layouts.${SKIN_NAME}.components.info")
@component("components.info")
Once a PIREP has been accepted/rejected, certain fields go into read-only mode.
@endcomponent
</div>
@@ -210,7 +210,7 @@ flight reports that have been filed. You've been warned!
<div class="row">
{{-- You don't want to change this ID unless you don't want the fares form to work :) --}}
<div id="fares_container" class="col-sm-12">
@include("layouts.${SKIN_NAME}.pireps.fares")
@include("pireps.fares")
</div>
</div>
<div class="row">

View File

@@ -1,4 +1,4 @@
@extends("layouts.${SKIN_NAME}.app")
@extends('app')
@section('title', 'pireps')
@section('content')
@@ -11,12 +11,12 @@
</div>
<h2 class="description">pilot reports</h2>
@include('flash::message')
@include("layouts.${SKIN_NAME}.pireps.table")
@include("pireps.table")
</div>
</div>
<div class="row">
<div class="col-12 text-center">
{{ $pireps->links("layouts.${SKIN_NAME}.pagination.default") }}
{{ $pireps->links("pagination.default") }}
</div>
</div>
@endsection

View File

@@ -1,4 +1,4 @@
@extends("layouts.${SKIN_NAME}.app")
@extends('app')
@section('title', 'PIREP '.$pirep->ident)
@section('content')
@@ -124,7 +124,7 @@
</div>
@endif
@include("layouts.${SKIN_NAME}.pireps.map")
@include("pireps.map")
@if(count($pirep->acars_logs) > 0)
<br /><br />

View File

@@ -1,2 +1,2 @@
@each("layouts.${SKIN_NAME}.pireps.pirep_card", $pireps, 'pirep')
@each("pireps.pirep_card", $pireps, 'pirep')

View File

@@ -1,4 +1,4 @@
@extends("layouts.${SKIN_NAME}.app")
@extends('app')
@section('title', 'edit profile')
@section('content')
@@ -7,7 +7,7 @@
<h2 class="description">edit your profile</h2>
@include('flash::message')
{!! Form::model($user, ['route' => ['frontend.profile.update', $user->id], 'method' => 'patch']) !!}
@include("layouts.${SKIN_NAME}.profile.fields")
@include("profile.fields")
{!! Form::close() !!}
</div>
</div>

View File

@@ -1,4 +1,4 @@
@extends("layouts.${SKIN_NAME}.app")
@extends('app')
@section('title', 'profile')
@section('content')

View File

@@ -0,0 +1,4 @@
{
"name": "default",
"parent_theme": null
}

View File

@@ -1,16 +1,16 @@
@extends("layouts.${SKIN_NAME}.app")
@extends('app')
@section('title', 'Pilots')
@section('content')
<div class="row">
<div class="col-md-12">
<h2 class="description">pilots</h2>
@include("layouts.${SKIN_NAME}.users.table")
@include("users.table")
</div>
</div>
<div class="row">
<div class="col-12 text-center">
{{ $users->links("layouts.${SKIN_NAME}.pagination.default") }}
{{ $users->links("pagination.default") }}
</div>
</div>
@endsection