Changes for shared hosting and numerous installer fixes

This commit is contained in:
Nabeel Shahzad 2017-12-17 16:58:53 -06:00
parent 87ab746812
commit ddd92c8b37
47 changed files with 139 additions and 270 deletions

View File

@ -34,7 +34,7 @@ Options -Indexes
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
RewriteRule ^(.*)$ public/$1 [L]
#RewriteRule ^(.*)$ public/$1 [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .

View File

@ -6,16 +6,26 @@
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class InstalledCheck
{
/**
* Check the app.key to see whether we're installed or not
*
* If the default key is set and we're not in any of the installer routes
* show the message that we need to be installed
*
* @param Request $request
* @param Closure $next
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View|mixed
*/
public function handle($request, Closure $next)
public function handle(Request $request, Closure $next)
{
if (config('app.key') === 'NOT_INSTALLED') {
if (config('app.key') === 'base64:zdgcDqu9PM8uGWCtMxd74ZqdGJIrnw812oRMmwDF6KY='
&& !$request->is(['install', 'install/*'])
&& !$request->is(['update', 'update/*'])
) {
return view('system.errors.not_installed');
}

View File

@ -14,3 +14,17 @@ if (!function_exists('setting')) {
return $settingRepo->retrieve($key);
}
}
/**
* Wrap the asset URL in the publicBaseUrl that's been
* set
*/
if (!function_exists('public_asset')) {
function public_asset($path, $parameters = [], $secure = null)
{
$publicBaseUrl = app()->publicUrlPath();
$path = $publicBaseUrl . $path;
return url($path, $parameters, $secure);
}
}

View File

@ -12,7 +12,8 @@ if (!defined('DS')) {
*/
class Application extends LaravelApplication
{
private $publicPath;
private $publicDirPath,
$publicUrlPath = '/';
public function __construct(string $basePath = null)
{
@ -48,9 +49,32 @@ class Application extends LaravelApplication
* Override paths
*/
public function setPublicPath($publicPath)
public function setPublicPath($publicDirPath)
{
$this->publicPath = $publicPath;
$this->publicDirPath = $publicDirPath;
}
/**
* Added for the custom filesystem driver. Used in the index.php
* in the root of the install to set it to point to /public,
* instead of just /
*
* @param $publicUrlPath
*/
public function setPublicUrlPath($publicUrlPath)
{
$this->publicUrlPath = $publicUrlPath;
}
/**
* Added for the custom filesystem driver lookup on what to use
* for the base URL
*
* @return string
*/
public function publicUrlPath()
{
return $this->publicUrlPath ?: '/';
}
public function configPath($path = '')
@ -70,7 +94,7 @@ class Application extends LaravelApplication
public function publicPath()
{
return $this->publicPath ?: $this->basePath . DS . 'public';
return $this->publicDirPath ?: $this->basePath . DS . 'public';
}
public function resourcePath($path = '')

View File

@ -12,7 +12,9 @@ return [
'locale' => env('APP_LOCALE', 'en'),
'fallback_locale' => 'en',
'key' => env('APP_KEY', 'NOT_INSTALLED'),
# Is the default key cipher. Needs to be changed, otherwise phpVMS will think
# that it isn't installed. Doubles as a security feature, so keys are scrambled
'key' => env('APP_KEY', 'base64:zdgcDqu9PM8uGWCtMxd74ZqdGJIrnw812oRMmwDF6KY='),
'cipher' => 'AES-256-CBC',
'log' => env('APP_LOG', 'daily'),
@ -71,6 +73,7 @@ return [
App\Providers\AuthServiceProvider::class,
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,
Nwidart\Modules\LaravelModulesServiceProvider::class,
],
'aliases' => [

View File

@ -9,7 +9,9 @@ $path_to_phpvms_folder = __DIR__;
require $path_to_phpvms_folder.'/bootstrap/autoload.php';
$app = require_once $path_to_phpvms_folder.'/bootstrap/app.php';
$app->setPublicPath(__DIR__ . '/public');
$app->setPublicUrlPath(env('APP_PUBLIC_URL', '/public'));
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);

View File

@ -5,8 +5,6 @@ return [
'version' => '7.0.0'
],
'env_filename' => 'env.php',
'extensions' => [
'openssl',
'pdo',

View File

@ -12,6 +12,8 @@ use Modules\Installer\Services\DatabaseService;
use Modules\Installer\Services\EnvironmentService;
use Modules\Installer\Services\RequirementsService;
use Symfony\Component\HttpFoundation\File\Exception\FileException;
class InstallerController extends AppBaseController
{
@ -31,7 +33,7 @@ class InstallerController extends AppBaseController
*/
public function index()
{
if(config('app.key') !== 'NOT_INSTALLED') {
if(config('app.key') !== 'base64:zdgcDqu9PM8uGWCtMxd74ZqdGJIrnw812oRMmwDF6KY=') {
return view('installer::errors/already-installed');
}
@ -127,14 +129,19 @@ class InstallerController extends AppBaseController
{
Log::info('ENV setup', $request->toArray());
$this->envService->createEnvFile(
$request->input('db_conn'),
$request->input('db_host'),
$request->input('db_port'),
$request->input('db_name'),
$request->input('db_user'),
$request->input('db_pass')
);
try {
$this->envService->createEnvFile(
$request->input('db_conn'),
$request->input('db_host'),
$request->input('db_port'),
$request->input('db_name'),
$request->input('db_user'),
$request->input('db_pass')
);
} catch(FileException $e) {
flash()->error($e->getMessage());
return redirect(route('installer.step2'));
}
# Needs to redirect so it can load the new .env
Log::info('Redirecting to database setup');

View File

@ -14,9 +14,9 @@
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css"/>
<!-- CSS Files -->
<link href="/assets/frontend/css/bootstrap.min.css" rel="stylesheet"/>
<link href="/assets/frontend/css/now-ui-kit.css" rel="stylesheet"/>
<link href="/assets/frontend/css/styles.css" rel="stylesheet"/>
<link href="{!! public_asset('/assets/frontend/css/bootstrap.min.css') !!}" rel="stylesheet"/>
<link href="{!! public_asset('/assets/frontend/css/now-ui-kit.css') !!}" rel="stylesheet"/>
<link href="{!! public_asset('/assets/frontend/css/styles.css') !!}" rel="stylesheet"/>
{{--<link href="/assets/frontend/css/installer.css" rel="stylesheet"/>--}}
<link rel="stylesheet"
@ -42,7 +42,7 @@
</button>
<p class="navbar-brand text-white" data-placement="bottom" target="_blank">
<a href="{!! url('/') !!}">
<img src="/assets/frontend/img/logo_blue_bg.svg" width="135px" style=""/>
<img src="{!! public_asset('/assets/frontend/img/logo_blue_bg.svg') !!}" width="135px" style=""/>
</a>
</p>
</div>
@ -68,7 +68,7 @@
{{--<script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js"></script>--}}
<script src="/assets/frontend/js/core/jquery.3.2.1.min.js" type="text/javascript"></script>
<script src="{!! public_asset('/assets/frontend/js/core/jquery.3.2.1.min.js') !!}" type="text/javascript"></script>
{{--<script src="/assets/frontend/js/core/bootstrap.min.js" type="text/javascript"></script>--}}
{{--<script src="/assets/frontend/js/now-ui-kit.js" type="text/javascript"></script>--}}
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script>

View File

@ -4,6 +4,10 @@ namespace Modules\Installer\Services;
use Illuminate\Encryption\Encrypter;
use Log;
use Symfony\Component\Filesystem\Exception\IOException;
use Symfony\Component\HttpFoundation\File\Exception\FileException;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\Filesystem\Exception\IOExceptionInterface;
class EnvironmentService
{
@ -51,11 +55,7 @@ class EnvironmentService
if(\extension_loaded('apc')) {
$opts['CACHE_DRIVER'] = 'apc';
} else {
if($opts['APP_ENV'] === 'dev') {
$opts['CACHE_DRIVER'] = 'array';
} else {
$opts['CACHE_DRIVER'] = 'file';
}
$opts['CACHE_DRIVER'] = 'array';
}
return $opts;
@ -83,17 +83,26 @@ class EnvironmentService
/**
* Get the template file name and write it out
* @param $opts
* @throws \Symfony\Component\HttpFoundation\File\Exception\FileException
*/
protected function writeEnvFile($opts)
{
$env_file = \App::environmentPath();
$env_file .= config('installer.env_filename');
$env_file = \App::environmentFilePath();
if(file_exists($env_file) && !is_writable($env_file)) {
Log::error('Permissions on existing env.php is not writable');
throw new FileException('Can\'t write to the env.php file! Check the permissions');
}
$fp = fopen($env_file, 'wb');
if($fp === false) {
throw new FileException('Couldn\'t write the env.php. (' . error_get_last() .')');
}
# render it within Blade and log the contents
$env_contents = view('installer::stubs/env', $opts);
Log::info($env_contents);
$fp = fopen($env_file, 'w');
fwrite($fp, $env_contents);
fclose($fp);
}

View File

@ -48,6 +48,8 @@ class RequirementsService {
*/
public function checkPermissions(): array
{
clearstatcache();
$directories = [];
foreach (config('installer.permissions') as $dir)
{

View File

@ -8,14 +8,13 @@
<meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0' name='viewport' />
<meta name="viewport" content="width=device-width" />
<link rel="icon" type="image/png" href="/assets/admin/img/favicon.png">
<link rel="icon" type="image/png" href="{!! public_asset('/assets/admin/img/favicon.png') !!}">
<link href='https://fonts.googleapis.com/css?family=Muli:400,300' rel='stylesheet' type='text/css'>
<link href="http://fonts.googleapis.com/css?family=Roboto:400,700,300" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="{{ mix('/assets/admin/css/vendor.min.css') }}">
{{--{!! Html::style(url('/assets/admin/css/vendor.min.css')) !!}--}}
{!! Html::style(url('/assets/admin/css/admin.css')) !!}
<link rel="stylesheet" href="{{ public_asset('/assets/admin/css/vendor.min.css') }}">
<link rel="stylesheet" href="{{ public_asset('/assets/admin/css/admin.css') }}">
<style type="text/css">
/*.card {
@ -78,17 +77,17 @@
<script src="https://cdn.jsdelivr.net/lodash/4.17.4/lodash.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script src="/assets/vendor/bootstrap/bootstrap.min.js" type="text/javascript"></script>
<script src="/assets/vendor/bootstrap/bootstrap-notify.js"></script>
<script src="/assets/vendor/chartist/chartist.min.js"></script>
<script src="/assets/vendor/select2/dist/js/select2.js"></script>
<script src="/assets/vendor/pjax/jquery.pjax.js"></script>
<script src="/assets/vendor/icheck/icheck.js"></script>
<script src="/assets/vendor/rivets/dist/rivets.bundled.min.js"></script>
<script src="{!! public_asset('/assets/vendor/bootstrap/bootstrap.min.js') !!}" type="text/javascript"></script>
<script src="{!! public_asset('/assets/vendor/bootstrap/bootstrap-notify.js') !!}"></script>
<script src="{!! public_asset('/assets/vendor/chartist/chartist.min.js') !!}"></script>
<script src="{!! public_asset('/assets/vendor/select2/dist/js/select2.js') !!}"></script>
<script src="{!! public_asset('/assets/vendor/pjax/jquery.pjax.js') !!}"></script>
<script src="{!! public_asset('/assets/vendor/icheck/icheck.js') !!}"></script>
<script src="{!! public_asset('/assets/vendor/rivets/dist/rivets.bundled.min.js') !!}"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/x-editable/1.5.0/bootstrap3-editable/js/bootstrap-editable.min.js"></script>
<script src="https://unpkg.com/leaflet@1.2.0/dist/leaflet.js"></script>
<script src="{!! url('/assets/admin/js/admin.js') !!}"></script>
<script src="{!! public_asset('/assets/admin/js/admin.js') !!}"></script>
<script>
rivets.configure({

View File

@ -14,11 +14,11 @@
<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700,200" rel="stylesheet"/>
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css"/>
<!-- CSS Files -->
<link href="/assets/frontend/css/bootstrap.min.css" rel="stylesheet"/>
<link href="/assets/vendor/select2/dist/css/select2.min.css" rel="stylesheet"/>
<link href="/assets/frontend/css/now-ui-kit.css" rel="stylesheet"/>
<link href="/assets/frontend/css/styles.css" rel="stylesheet"/>
<link href="{!! public_asset('/assets/frontend/css/bootstrap.min.css') !!}" rel="stylesheet"/>
<link href="{!! public_asset('/assets/vendor/select2/dist/css/select2.min.css') !!}" rel="stylesheet"/>
<link href="{!! public_asset('/assets/frontend/css/now-ui-kit.css') !!}" rel="stylesheet"/>
<link href="{!! public_asset('/assets/frontend/css/styles.css') !!}" rel="stylesheet"/>
@yield('css')
@ -131,32 +131,20 @@
<div class="wrapper">
<div class="clear"></div>
<div class="container-fluid" style="width: 85%!important;">
@include('layouts.default.flash.message')
@yield('content')
</div>
<div class="clearfix" style="height: 200px;"></div>
{{--<footer class="footer footer-default">--}}
{{--<div class="container">--}}
{{--<div class="copyright">--}}
{{--&copy;--}}
{{--<script>--}}
{{--document.write(new Date().getFullYear())--}}
{{--</script>--}}
{{--, Designed by--}}
{{--<a href="http://www.invisionapp.com" target="_blank">Invision</a>. Coded by--}}
{{--<a href="https://www.creative-tim.com" target="_blank">Creative Tim</a>.--}}
{{--</div>--}}
{{--</div>--}}
{{--</footer>--}}
</div>
<script src="/assets/frontend/js/core/jquery.3.2.1.min.js" type="text/javascript"></script>
<script src="/assets/frontend/js/core/tether.min.js" type="text/javascript"></script>
<script src="/assets/frontend/js/core/bootstrap.min.js" type="text/javascript"></script>
<script src="/assets/frontend/js/plugins/bootstrap-switch.js"></script>
<script src="/assets/frontend/js/plugins/nouislider.min.js" type="text/javascript"></script>
<script src="/assets/frontend/js/plugins/bootstrap-datepicker.js" type="text/javascript"></script>
<script src="/assets/frontend/js/now-ui-kit.js" type="text/javascript"></script>
<script src="/assets/vendor/select2/dist/js/select2.js"></script>
<script src="{!! public_asset('/assets/frontend/js/core/jquery.3.2.1.min.js') !!}" type="text/javascript"></script>
<script src="{!! public_asset('/assets/frontend/js/core/tether.min.js') !!}" type="text/javascript"></script>
<script src="{!! public_asset('/assets/frontend/js/core/bootstrap.min.js') !!}" type="text/javascript"></script>
<script src="{!! public_asset('/assets/frontend/js/plugins/bootstrap-switch.js') !!}"></script>
<script src="{!! public_asset('/assets/frontend/js/plugins/nouislider.min.js') !!}" type="text/javascript"></script>
<script src="{!! public_asset('/assets/frontend/js/plugins/bootstrap-datepicker.js') !!}" type="text/javascript"></script>
<script src="{!! public_asset('/assets/frontend/js/now-ui-kit.js') !!}" type="text/javascript"></script>
<script src="{!! public_asset('/assets/vendor/select2/dist/js/select2.js') !!}"></script>
<script>
$(document).ready(function () {
$(".select2").select2();

View File

@ -13,8 +13,8 @@
<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700,200" rel="stylesheet" />
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css" />
<!-- CSS Files -->
<link href="/assets/frontend/css/bootstrap.min.css" rel="stylesheet" />
<link href="/assets/frontend/css/now-ui-kit.css" rel="stylesheet" />
<link href="{!! public_asset('/assets/frontend/css/bootstrap.min.css') !!}" rel="stylesheet" />
<link href="{!! public_asset('/assets/frontend/css/now-ui-kit.css') !!}" rel="stylesheet" />
<!-- CSS Just for demo purpose, don't include it in your project -->
@yield('css')
@ -43,18 +43,8 @@
</footer>
</div>
</body>
<!-- Core JS Files -->
<script src="/assets/frontend/js/core/jquery.3.2.1.min.js" type="text/javascript"></script>
<script src="/assets/frontend/js/core/tether.min.js" type="text/javascript"></script>
<script src="/assets/frontend/js/core/bootstrap.min.js" type="text/javascript"></script>
<!-- Plugin for Switches, full documentation here: http://www.jque.re/plugins/version3/bootstrap.switch/ -->
<script src="./assets/frontend/js/plugins/bootstrap-switch.js"></script>
<!-- Plugin for the Sliders, full documentation here: http://refreshless.com/nouislider/ -->
<script src="/assets/frontend/js/plugins/nouislider.min.js" type="text/javascript"></script>
<!-- Plugin for the DatePicker, full documentation here: https://github.com/uxsolutions/bootstrap-datepicker -->
<script src="/assets/frontend/js/plugins/bootstrap-datepicker.js" type="text/javascript"></script>
<!-- Control Center for Now Ui Kit: parallax effects, scripts for the example pages etc -->
<script src="/assets/frontend/js/now-ui-kit.js" type="text/javascript"></script>
<script src="{!! public_asset('/assets/frontend/js/core/jquery.3.2.1.min.js') !!}" type="text/javascript"></script>
@yield('scripts')

View File

@ -6,7 +6,7 @@
<form class="form" method="POST" action="{{ url('/login') }}">
<div class="header header-primary text-center">
<div class="logo-container" style="width: 320px;">
<img src="/assets/frontend/img/logo.svg" width="320" height="320" style="background: #FFF">
<img src="{!! public_asset('/assets/frontend/img/logo.svg') !!}" width="320" height="320" style="background: #FFF">
</div>
</div>
<div class="content">

View File

@ -14,9 +14,9 @@
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css"/>
<!-- CSS Files -->
<link href="/assets/frontend/css/bootstrap.min.css" rel="stylesheet"/>
<link href="/assets/frontend/css/now-ui-kit.css" rel="stylesheet"/>
<link href="/assets/frontend/css/styles.css" rel="stylesheet"/>
<link href="{!! public_asset('/assets/frontend/css/bootstrap.min.css') !!}" rel="stylesheet"/>
<link href="{!! public_asset('/assets/frontend/css/now-ui-kit.css') !!}" rel="stylesheet"/>
<link href="{!! public_asset('/assets/frontend/css/styles.css') !!}" rel="stylesheet"/>
{{--<link href="/assets/frontend/css/installer.css" rel="stylesheet"/>--}}
<link rel="stylesheet"
@ -44,7 +44,7 @@
</button>
<p class="navbar-brand text-white" data-placement="bottom" target="_blank">
<a href="{!! url('/') !!}">
<img src="/assets/frontend/img/logo_blue_bg.svg" width="135px" style=""/>
<img src="{!! public_asset('/assets/frontend/img/logo_blue_bg.svg') !!}" width="135px" style=""/>
</a>
</p>
</div>

View File

@ -12,9 +12,9 @@
<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700,200" rel="stylesheet"/>
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css"/>
<link href="/assets/frontend/css/bootstrap.min.css" rel="stylesheet"/>
<link href="/assets/frontend/css/now-ui-kit.css" rel="stylesheet"/>
<link href="/assets/frontend/css/styles.css" rel="stylesheet"/>
<link href="{!! public_asset('/assets/frontend/css/bootstrap.min.css') !!}" rel="stylesheet"/>
<link href="{!! public_asset('/assets/frontend/css/now-ui-kit.css') !!}" rel="stylesheet"/>
<link href="{!! public_asset('/assets/frontend/css/styles.css') !!}" rel="stylesheet"/>
<style>
.table tr:first-child td {
@ -38,7 +38,7 @@
</button>
<p class="navbar-brand text-white" data-placement="bottom" target="_blank">
<a href="{!! url('/') !!}">
<img src="/assets/frontend/img/logo_blue_bg.svg" width="135px" style=""/>
<img src="{!! public_asset('/assets/frontend/img/logo_blue_bg.svg') !!}" width="135px" style=""/>
</a>
</p>
</div>

View File

@ -1,24 +0,0 @@
@if (session()->has('flash_notification.message'))
@if (session()->has('flash_notification.overlay'))
@include('flash::modal', [
'modalClass' => 'flash-modal',
'title' => session('flash_notification.title'),
'body' => session('flash_notification.message')
])
@else
<div class="alert
alert-{{ session('flash_notification.level') }}
{{ session()->has('flash_notification.important') ? 'alert-important' : '' }}"
>
@if(session()->has('flash_notification.important'))
<button type="button"
class="close"
data-dismiss="alert"
aria-hidden="true"
>&times;</button>
@endif
{!! session('flash_notification.message') !!}
</div>
@endif
@endif

View File

@ -1,19 +0,0 @@
<div id="flash-overlay-modal" class="modal fade {{ $modalClass or '' }}">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title">{{ $title }}</h4>
</div>
<div class="modal-body">
<p>{!! $body !!}</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>

View File

@ -1,34 +0,0 @@
<ul class="pagination">
<!-- Previous Page Link -->
@if ($paginator->onFirstPage())
<li class="page-item disabled"><span class="page-link">&laquo;</span></li>
@else
<li class="page-item"><a class="page-link" href="{{ $paginator->previousPageUrl() }}" rel="prev">&laquo;</a></li>
@endif
<!-- Pagination Elements -->
@foreach ($elements as $element)
<!-- "Three Dots" Separator -->
@if (is_string($element))
<li class="page-item disabled"><span class="page-link">{{ $element }}</span></li>
@endif
<!-- Array Of Links -->
@if (is_array($element))
@foreach ($element as $page => $url)
@if ($page == $paginator->currentPage())
<li class="page-item active"><span class="page-link">{{ $page }}</span></li>
@else
<li class="page-item"><a class="page-link" href="{{ $url }}">{{ $page }}</a></li>
@endif
@endforeach
@endif
@endforeach
<!-- Next Page Link -->
@if ($paginator->hasMorePages())
<li class="page-item"><a class="page-link" href="{{ $paginator->nextPageUrl() }}" rel="next">&raquo;</a></li>
@else
<li class="page-item disabled"><span class="page-link">&raquo;</span></li>
@endif
</ul>

View File

@ -1,34 +0,0 @@
<ul class="pagination">
<!-- Previous Page Link -->
@if ($paginator->onFirstPage())
<li class="disabled"><span>&laquo;</span></li>
@else
<li><a href="{{ $paginator->previousPageUrl() }}" rel="prev">&laquo;</a></li>
@endif
<!-- Pagination Elements -->
@foreach ($elements as $element)
<!-- "Three Dots" Separator -->
@if (is_string($element))
<li class="disabled"><span>{{ $element }}</span></li>
@endif
<!-- Array Of Links -->
@if (is_array($element))
@foreach ($element as $page => $url)
@if ($page == $paginator->currentPage())
<li class="active"><span>{{ $page }}</span></li>
@else
<li><a href="{{ $url }}">{{ $page }}</a></li>
@endif
@endforeach
@endif
@endforeach
<!-- Next Page Link -->
@if ($paginator->hasMorePages())
<li><a href="{{ $paginator->nextPageUrl() }}" rel="next">&raquo;</a></li>
@else
<li class="disabled"><span>&raquo;</span></li>
@endif
</ul>

View File

@ -1,36 +0,0 @@
@if ($paginator->hasPages())
<div class="ui pagination menu">
{{-- Previous Page Link --}}
@if ($paginator->onFirstPage())
<a class="icon item disabled"> <i class="left chevron icon"></i> </a>
@else
<a class="icon item" href="{{ $paginator->previousPageUrl() }}" rel="prev"> <i class="left chevron icon"></i> </a>
@endif
{{-- Pagination Elements --}}
@foreach ($elements as $element)
{{-- "Three Dots" Separator --}}
@if (is_string($element))
<a class="icon item disabled">{{ $element }}</a>
@endif
{{-- Array Of Links --}}
@if (is_array($element))
@foreach ($element as $page => $url)
@if ($page == $paginator->currentPage())
<a class="item active" href="{{ $url }}">{{ $page }}</a>
@else
<a class="item" href="{{ $url }}">{{ $page }}</a>
@endif
@endforeach
@endif
@endforeach
{{-- Next Page Link --}}
@if ($paginator->hasMorePages())
<a class="icon item" href="{{ $paginator->nextPageUrl() }}" rel="next"> <i class="right chevron icon"></i> </a>
@else
<a class="icon item disabled"> <i class="right chevron icon"></i> </a>
@endif
</div>
@endif

View File

@ -1,15 +0,0 @@
<ul class="pagination">
<!-- Previous Page Link -->
@if ($paginator->onFirstPage())
<li class="page-item disabled"><span class="page-link">&laquo;</span></li>
@else
<li class="page-item"><a class="page-link" href="{{ $paginator->previousPageUrl() }}" rel="prev">&laquo;</a></li>
@endif
<!-- Next Page Link -->
@if ($paginator->hasMorePages())
<li class="page-item"><a class="page-link" href="{{ $paginator->nextPageUrl() }}" rel="next">&raquo;</a></li>
@else
<li class="page-item disabled"><span class="page-link">&raquo;</span></li>
@endif
</ul>

View File

@ -1,15 +0,0 @@
<ul class="pagination">
<!-- Previous Page Link -->
@if ($paginator->onFirstPage())
<li class="disabled"><span>&laquo;</span></li>
@else
<li><a href="{{ $paginator->previousPageUrl() }}" rel="prev">&laquo;</a></li>
@endif
<!-- Next Page Link -->
@if ($paginator->hasMorePages())
<li><a href="{{ $paginator->nextPageUrl() }}" rel="next">&raquo;</a></li>
@else
<li class="disabled"><span>&raquo;</span></li>
@endif
</ul>