first upload all files
This commit is contained in:
62
resources/views/errors/minimal.blade.php
Normal file
62
resources/views/errors/minimal.blade.php
Normal file
@@ -0,0 +1,62 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<title>@yield('title')</title>
|
||||
|
||||
<!-- Fonts -->
|
||||
<link rel="dns-prefetch" href="//fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet">
|
||||
|
||||
<!-- Styles -->
|
||||
<style>
|
||||
html, body {
|
||||
background-color: #fff;
|
||||
color: #636b6f;
|
||||
font-family: 'Nunito', sans-serif;
|
||||
font-weight: 100;
|
||||
height: 100vh;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.full-height {
|
||||
height: 100vh;
|
||||
}
|
||||
|
||||
.flex-center {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.position-ref {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.code {
|
||||
border-right: 2px solid;
|
||||
font-size: 26px;
|
||||
padding: 0 15px 0 15px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.message {
|
||||
font-size: 18px;
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="flex-center position-ref full-height">
|
||||
<div class="code">
|
||||
@yield('code')
|
||||
</div>
|
||||
|
||||
<div class="message" style="padding: 10px;">
|
||||
@yield('message')
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
38
resources/views/install/complete.blade.php
Normal file
38
resources/views/install/complete.blade.php
Normal file
@@ -0,0 +1,38 @@
|
||||
@extends('install.layout')
|
||||
|
||||
@section('content')
|
||||
<h2>3. Complete</h2>
|
||||
|
||||
<div class="box">
|
||||
<div class="installation-message text-center">
|
||||
<i class="fa fa-check-circle-o" aria-hidden="true"></i>
|
||||
<h3>FleetCart installed successfully!</h3>
|
||||
</div>
|
||||
|
||||
<div class="clearfix"></div>
|
||||
|
||||
<div class="visit-wrapper text-center clearfix">
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<a href="{{ url('/') }}" class="visit text-center" target="_blank">
|
||||
<div class="icon">
|
||||
<i class="fa fa-desktop" aria-hidden="true"></i>
|
||||
</div>
|
||||
|
||||
<h5>Go to Your Shop</h5>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-6">
|
||||
<a href="{{ url('admin') }}" class="visit text-center" target="_blank">
|
||||
<div class="icon">
|
||||
<i class="fa fa-cog" aria-hidden="true"></i>
|
||||
</div>
|
||||
|
||||
<h5>Login to Administration</h5>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
264
resources/views/install/configuration.blade.php
Normal file
264
resources/views/install/configuration.blade.php
Normal file
@@ -0,0 +1,264 @@
|
||||
@extends('install.layout')
|
||||
|
||||
@section('content')
|
||||
@if (session()->has('error'))
|
||||
<div class="alert alert-danger fade in alert-dismissable">
|
||||
{{ session('error') }}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<h2>2. Configuration</h2>
|
||||
|
||||
<form method="POST" action="{{ route('install.configuration.post') }}" class="form-horizontal">
|
||||
{{ csrf_field() }}
|
||||
|
||||
<div class="box">
|
||||
<p>Please enter your database connection details.</p>
|
||||
|
||||
<div class="configure-form">
|
||||
<div class="form-group {{ $errors->has('db.host') ? 'has-error': '' }}">
|
||||
<label class="control-label col-sm-3" for="host">Host <span>*</span></label>
|
||||
|
||||
<div class="col-sm-9">
|
||||
<input type="text" name="db[host]" value="{{ old('db.host', '127.0.0.1') }}" id="host" class="form-control" autofocus>
|
||||
|
||||
{!! $errors->first('db.host', '<span class="help-block">:message</span>') !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group {{ $errors->has('db.port') ? 'has-error': '' }}">
|
||||
<label class="control-label col-sm-3" for="port">Port <span>*</span></label>
|
||||
|
||||
<div class="col-sm-9">
|
||||
<input type="text" name="db[port]" value="{{ old('db.port', '3306') }}" id="port" class="form-control">
|
||||
|
||||
{!! $errors->first('db.port', '<span class="help-block">:message</span>') !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group {{ $errors->has('db.username') ? 'has-error': '' }}">
|
||||
<label class="control-label col-sm-3" for="db-username">DB Username <span>*</span></label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" name="db[username]" value="{{ old('db.username') }}" id="db-username" class="form-control">
|
||||
|
||||
{!! $errors->first('db.username', '<span class="help-block">:message</span>') !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-3" for="db-password">DB Password</label>
|
||||
|
||||
<div class="col-sm-9">
|
||||
<input type="password" name="db[password]" value="{{ old('db.password') }}" id="db-password" class="form-control">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group {{ $errors->has('db.database') ? 'has-error': '' }}">
|
||||
<label class="control-label col-sm-3" for="database">Database <span>*</span></label>
|
||||
|
||||
<div class="col-sm-9">
|
||||
<input type="text" name="db[database]" value="{{ old('db.database') }}" id="database" class="form-control">
|
||||
|
||||
{!! $errors->first('db.database', '<span class="help-block">:message</span>') !!}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="box">
|
||||
<p>Please enter a username and password for the administration.</p>
|
||||
|
||||
<div class="configure-form">
|
||||
<div class="form-group {{ $errors->has('admin.first_name') ? 'has-error': '' }}">
|
||||
<label class="control-label col-sm-3" for="admin-first-name">First Name <span>*</span></label>
|
||||
|
||||
<div class="col-sm-9">
|
||||
<input type="text" name="admin[first_name]" value="{{ old('admin.first_name') }}" id="admin-first-name" class="form-control">
|
||||
|
||||
{!! $errors->first('admin.first_name', '<span class="help-block">:message</span>') !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group {{ $errors->has('admin.last_name') ? 'has-error': '' }}">
|
||||
<label class="control-label col-sm-3" for="admin-last-name">Last Name <span>*</span></label>
|
||||
|
||||
<div class="col-sm-9">
|
||||
<input type="text" name="admin[last_name]" value="{{ old('admin.last_name') }}" id="admin-last-name" class="form-control">
|
||||
|
||||
{!! $errors->first('admin.last_name', '<span class="help-block">:message</span>') !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group {{ $errors->has('admin.email') ? 'has-error': '' }}">
|
||||
<label class="control-label col-sm-3" for="admin-email">Email <span>*</span></label>
|
||||
|
||||
<div class="col-sm-9">
|
||||
<input type="text" name="admin[email]" value="{{ old('admin.email') }}" id="admin-email" class="form-control">
|
||||
|
||||
{!! $errors->first('admin.email', '<span class="help-block">:message</span>') !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group {{ $errors->has('admin.phone') ? 'has-error': '' }}">
|
||||
<label class="control-label col-sm-3" for="admin-phone">Phone <span>*</span></label>
|
||||
|
||||
<div class="col-sm-9">
|
||||
<input type="text" name="admin[phone]" value="{{ old('admin.phone') }}" id="admin-phone" class="form-control">
|
||||
|
||||
{!! $errors->first('admin.phone', '<span class="help-block">:message</span>') !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group {{ $errors->has('admin.password') ? 'has-error': '' }}">
|
||||
<label class="control-label col-sm-3" for="admin-password">Password <span>*</span></label>
|
||||
|
||||
<div class="col-sm-9">
|
||||
<input type="password" name="admin[password]" id="admin-password" class="form-control">
|
||||
|
||||
{!! $errors->first('admin.password', '<span class="help-block">:message</span>') !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-3" for="admin-confirm-password">Confirm Password <span>*</span></label>
|
||||
|
||||
<div class="col-sm-9">
|
||||
<input type="password" name="admin[password_confirmation]" id="admin-confirm-password" class="form-control">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="box">
|
||||
<p>Please enter your store details.</p>
|
||||
|
||||
<div class="configure-form p-b-0">
|
||||
<div class="form-group {{ $errors->has('store.store_name') ? 'has-error': '' }}">
|
||||
<label class="control-label col-sm-3" for="store-name">Store Name <span>*</span></label>
|
||||
|
||||
<div class="col-sm-9">
|
||||
<input type="text" name="store[store_name]" value="{{ old('store.store_name') }}" id="store-name" class="form-control">
|
||||
|
||||
{!! $errors->first('store.store_name', '<span class="help-block">:message</span>') !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group {{ $errors->has('store.store_email') ? 'has-error': '' }}">
|
||||
<label class="control-label col-sm-3" for="store-email">Store Email <span>*</span></label>
|
||||
|
||||
<div class="col-sm-9">
|
||||
<input type="text" name="store[store_email]" value="{{ old('store.store_email') }}" id="store-email" class="form-control">
|
||||
|
||||
{!! $errors->first('store.store_email', '<span class="help-block">:message</span>') !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group {{ $errors->has('store.store_phone') ? 'has-error': '' }}">
|
||||
<label class="control-label col-sm-3" for="store-phone">Store Phone <span>*</span></label>
|
||||
|
||||
<div class="col-sm-9">
|
||||
<input type="text" name="store[store_phone]" value="{{ old('store.store_phone') }}" id="store-phone" class="form-control">
|
||||
|
||||
{!! $errors->first('store.store_phone', '<span class="help-block">:message</span>') !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group {{ $errors->has('store.search_engine') ? 'has-error': '' }}">
|
||||
<label class="control-label col-sm-3" for="store-search-engine">Search Engine <span>*</span></label>
|
||||
|
||||
<div class="col-sm-9">
|
||||
<select name="store[search_engine]" class="form-control custom-select-black" id="store-search-engine">
|
||||
<option value="mysql" {{ old('store.search_engine') === 'mysql' ? 'selected' : '' }}>
|
||||
MySQL
|
||||
</option>
|
||||
|
||||
<option value="algolia" {{ old('store.search_engine') === 'algolia' ? 'selected' : '' }}>
|
||||
Algolia
|
||||
</option>
|
||||
|
||||
<option value="meilisearch" {{ old('store.search_engine') === 'meilisearch' ? 'selected' : '' }}>
|
||||
MeiliSearch
|
||||
</option>
|
||||
</select>
|
||||
|
||||
@if ($errors->has('store.search_engine'))
|
||||
{!! $errors->first('store.search_engine', '<span class="help-block">:message</span>') !!}
|
||||
@else
|
||||
<span class="help-block">You cannot change the search engine later.</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="{{ old('store.search_engine') === 'algolia' ? '' : 'hide' }}" id="algolia-fields">
|
||||
<div class="form-group {{ $errors->has('store.algolia_app_id') ? 'has-error': '' }}">
|
||||
<label class="control-label col-sm-3" for="store-algolia-app-id">Algolia Application ID <span>*</span></label>
|
||||
|
||||
<div class="col-sm-9">
|
||||
<input type="text" name="store[algolia_app_id]" value="{{ old('store.algolia_app_id') }}" id="store-algolia-app-id" class="form-control">
|
||||
|
||||
{!! $errors->first('store.algolia_app_id', '<span class="help-block">:message</span>') !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group {{ $errors->has('store.algolia_secret') ? 'has-error': '' }}">
|
||||
<label class="control-label col-sm-3" for="store-algolia-secret">Algolia Admin API Key <span>*</span></label>
|
||||
|
||||
<div class="col-sm-9">
|
||||
<input type="password" name="store[algolia_secret]" value="{{ old('store.algolia_secret') }}" id="store-algolia-secret" class="form-control">
|
||||
|
||||
{!! $errors->first('store.algolia_secret', '<span class="help-block">:message</span>') !!}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="{{ old('store.search_engine') === 'meilisearch' ? '' : 'hide' }}" id="meilisearch-fields">
|
||||
<div class="form-group {{ $errors->has('store.meilisearch_host') ? 'has-error': '' }}">
|
||||
<label class="control-label col-sm-3" for="meilisearch-host">MeiliSearch Host <span>*</span></label>
|
||||
|
||||
<div class="col-sm-9">
|
||||
<input type="text" name="store[meilisearch_host]" value="{{ old('store.meilisearch_host') }}" id="meilisearch-host" class="form-control">
|
||||
|
||||
{!! $errors->first('store.meilisearch_host', '<span class="help-block">:message</span>') !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group {{ $errors->has('store.meilisearch_key') ? 'has-error': '' }}">
|
||||
<label class="control-label col-sm-3" for="meilisearch-key">MeiliSearch Key <span>*</span></label>
|
||||
|
||||
<div class="col-sm-9">
|
||||
<input type="password" name="store[meilisearch_key]" value="{{ old('store.meilisearch_key') }}" id="meilisearch-key" class="form-control">
|
||||
|
||||
{!! $errors->first('store.meilisearch_key', '<span class="help-block">:message</span>') !!}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="content-buttons clearfix">
|
||||
<button type="submit" class="btn btn-primary pull-right install-button">Install</button>
|
||||
</div>
|
||||
</form>
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
<script>
|
||||
$('#store-search-engine').on('change', function () {
|
||||
$('#algolia-fields, #meilisearch-fields').addClass('hide');
|
||||
|
||||
if (this.value === 'algolia') {
|
||||
$('#algolia-fields').removeClass('hide');
|
||||
} else if (this.value === 'meilisearch') {
|
||||
$('#meilisearch-fields').removeClass('hide');
|
||||
}
|
||||
});
|
||||
|
||||
$('.install-button').on('click', function (e) {
|
||||
var button = $(e.currentTarget);
|
||||
|
||||
button.data('loading-text', button.html())
|
||||
.addClass('btn-loading')
|
||||
.button('loading');
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
559
resources/views/install/layout.blade.php
Normal file
559
resources/views/install/layout.blade.php
Normal file
@@ -0,0 +1,559 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<title>FleetCart</title>
|
||||
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:400,600|Rubik:400,500">
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
|
||||
|
||||
<style>
|
||||
html,
|
||||
body {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: "Open Sans", sans-serif;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6,
|
||||
ul, li,
|
||||
p {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
font-family: "Rubik", sans-serif;
|
||||
font-weight: 400;
|
||||
color: #666666;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 36px;
|
||||
line-height: 44px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 30px;
|
||||
line-height: 36px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 24px;
|
||||
line-height: 29px;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 21px;
|
||||
line-height: 26px;
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 18px;
|
||||
line-height: 22px;
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-size: 16px;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 16px;
|
||||
line-height: 22px;
|
||||
color: #777777;
|
||||
letter-spacing: 0.2px;
|
||||
}
|
||||
|
||||
div:active,
|
||||
div:focus,
|
||||
div:visited,
|
||||
a:active,
|
||||
a:focus,
|
||||
a:visited {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
a {
|
||||
transition: 200ms ease-in-out;
|
||||
}
|
||||
|
||||
.table {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.table > thead > tr > th {
|
||||
color: #666666;
|
||||
border-bottom: 1px solid #e9e9e9;
|
||||
}
|
||||
|
||||
.table > tbody > tr > td {
|
||||
color: #777777;
|
||||
padding: 12px 8px;
|
||||
border-color: #f1f1f1;
|
||||
}
|
||||
|
||||
.form-group {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.form-horizontal .control-label {
|
||||
font-size: 15px;
|
||||
padding-top: 8px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.control-label > span {
|
||||
color: #fc4b4b;
|
||||
}
|
||||
|
||||
.form-control {
|
||||
border-color: #d9d9d9;
|
||||
border-radius: 3px;
|
||||
box-shadow: none;
|
||||
height: 40px;
|
||||
transition: 200ms ease-in-out;
|
||||
}
|
||||
|
||||
.form-control:focus {
|
||||
box-shadow: none;
|
||||
border-color: #0068e1;
|
||||
}
|
||||
|
||||
.help-block {
|
||||
font-size: 14px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.has-error .control-label,
|
||||
.has-error .help-block {
|
||||
color: #ff3366;
|
||||
}
|
||||
|
||||
.has-error .form-control {
|
||||
border-color: #ff3366;
|
||||
}
|
||||
|
||||
.has-error .form-control:focus {
|
||||
box-shadow: none;
|
||||
border-color: #ff3366;
|
||||
}
|
||||
|
||||
label {
|
||||
color: #666666;
|
||||
}
|
||||
|
||||
.custom-select-black {
|
||||
appearance: none;
|
||||
-webkit-appearance: none;
|
||||
background: transparent url('../../public/modules/admin/images/arrow-black.png') no-repeat right 8px center;
|
||||
background-size: 10px;
|
||||
}
|
||||
|
||||
.alert {
|
||||
font-family: "Rubik", sans-serif;
|
||||
border: none;
|
||||
border-radius: 3px;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.alert .close {
|
||||
color: #ffffff;
|
||||
opacity: 0.7;
|
||||
text-shadow: none;
|
||||
transition: 200ms ease-in-out;
|
||||
}
|
||||
|
||||
.alert .close:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.alert-danger {
|
||||
background: #ff5252;
|
||||
}
|
||||
|
||||
.alert .close > i {
|
||||
-webkit-text-stroke: 2px #ff5252;
|
||||
}
|
||||
|
||||
.btn {
|
||||
font-family: "Open Sans", sans-serif;
|
||||
font-size: 16px;
|
||||
border: 1px solid;
|
||||
padding: 9px 20px;
|
||||
border-radius: 3px;
|
||||
background: transparent;
|
||||
color: #555555;
|
||||
letter-spacing: 0.2px;
|
||||
transition: 200ms ease-in-out;
|
||||
outline: 0 !important;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
background: #0068e1;
|
||||
color: #ffffff;
|
||||
border-color: #0068e1;
|
||||
}
|
||||
|
||||
.btn-primary:active,
|
||||
.btn-primary:hover,
|
||||
.btn-primary:focus,
|
||||
.btn-primary:active:focus {
|
||||
background: #0059bd;
|
||||
border-color: #0059bd;
|
||||
}
|
||||
|
||||
.btn-primary.disabled,
|
||||
.btn-primary[disabled] {
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
/* modal */
|
||||
.modal {
|
||||
text-align: center;
|
||||
padding-right: 0 !important;
|
||||
}
|
||||
|
||||
.modal .modal-dialog {
|
||||
top: 50%;
|
||||
width: 500px;
|
||||
display: inline-block;
|
||||
margin: auto;
|
||||
vertical-align: middle;
|
||||
transform: translate(0, -50%) scale(0.8);
|
||||
}
|
||||
|
||||
.modal .content {
|
||||
float: none;
|
||||
margin: 0 auto;
|
||||
padding: 0;
|
||||
overflow: visible !important;
|
||||
box-shadow: 0 2px 5px 0 #555555;
|
||||
}
|
||||
|
||||
.modal .modal-body {
|
||||
margin-right: -1px;
|
||||
}
|
||||
|
||||
.modal.fade .modal-dialog {
|
||||
opacity: 0;
|
||||
transform: translate(0, -50%) scale(0.8);
|
||||
transition: 200ms ease-in-out;
|
||||
}
|
||||
|
||||
.modal.fade.in .modal-dialog {
|
||||
opacity: 1;
|
||||
transform: translate(0, -50%) scale(1);
|
||||
}
|
||||
|
||||
.modal-backdrop.in {
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
/* installer */
|
||||
|
||||
.installer-wrapper {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background: #31629f;
|
||||
}
|
||||
|
||||
.installer-wrapper > .wrapper {
|
||||
height: 500px;
|
||||
width: 900px;
|
||||
background: #ffffff;
|
||||
border-radius: 3px;
|
||||
overflow: hidden;
|
||||
-webkit-box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 0.3);
|
||||
-moz-box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 0.3);
|
||||
box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
.left-sidebar {
|
||||
height: 500px;
|
||||
width: 28%;
|
||||
background: #02a9ee;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.left-sidebar > .list-inline {
|
||||
margin: 25px 0 0;
|
||||
padding: 0 30px;
|
||||
}
|
||||
|
||||
.left-sidebar li {
|
||||
position: relative;
|
||||
display: block;
|
||||
float: none;
|
||||
color: #f1f1f1;
|
||||
padding: 8px 0 8px 30px;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.left-sidebar li:after {
|
||||
position: absolute;
|
||||
content: "";
|
||||
left: 0;
|
||||
top: 9px;
|
||||
height: 20px;
|
||||
width: 20px;
|
||||
text-align: center;
|
||||
background: #81d2f6;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.left-sidebar li.active {
|
||||
font-weight: 600;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.left-sidebar li.active:before {
|
||||
position: absolute;
|
||||
content: "";
|
||||
left: 6px;
|
||||
top: 15px;
|
||||
height: 8px;
|
||||
width: 8px;
|
||||
background: #fafafa;
|
||||
border-radius: 50%;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.left-sidebar li.complete:after {
|
||||
position: absolute;
|
||||
font-family: FontAwesome;
|
||||
font-size: 15px;
|
||||
content: "\f00c";
|
||||
color: #ffffff;
|
||||
-webkit-text-stroke: 0.5px #81d2f6;
|
||||
}
|
||||
|
||||
.content-wrapper {
|
||||
width: 72%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.content-wrapper > .content {
|
||||
height: 434px;
|
||||
margin: 33px 0;
|
||||
padding: 0 30px;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.box {
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
.box > p {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.box .table tr > td:last-child > i {
|
||||
font-size: 20px;
|
||||
-webkit-text-stroke: 1px #ffffff;
|
||||
}
|
||||
|
||||
.box .table tr > td > i.fa-check {
|
||||
color: #37bc9b;
|
||||
}
|
||||
|
||||
.box .table tr > td > i.fa-times {
|
||||
color: #fc4b4b;
|
||||
}
|
||||
|
||||
.installation-message {
|
||||
margin: 30px 0 60px;
|
||||
}
|
||||
|
||||
.installation-message > i {
|
||||
font-size: 80px;
|
||||
color: #37bc9b;
|
||||
-webkit-text-stroke: 7px #ffffff;
|
||||
}
|
||||
|
||||
.visit {
|
||||
display: block;
|
||||
background: #f1f4f9;
|
||||
padding: 40px 0;
|
||||
border-radius: 3px;
|
||||
border: 1px solid transparent;
|
||||
transition: 200ms ease-in-out;
|
||||
}
|
||||
|
||||
.visit:active,
|
||||
.visit:hover,
|
||||
.visit:focus {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.visit .icon {
|
||||
display: block;
|
||||
text-align: center;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.visit .icon > i {
|
||||
font-size: 48px;
|
||||
color: #626060;
|
||||
-webkit-text-stroke: 1px #f5f5f5;
|
||||
transition: 200ms ease-in-out;
|
||||
}
|
||||
|
||||
.visit:hover {
|
||||
border-color: rgba(49, 98, 159, 0.2);
|
||||
}
|
||||
|
||||
.visit:hover .icon > i {
|
||||
color: #31629f;
|
||||
}
|
||||
|
||||
.content-buttons {
|
||||
padding-top: 20px;
|
||||
border-top: 1px solid #d9d9d9;
|
||||
}
|
||||
|
||||
.p-b-0 {
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
.btn-loading {
|
||||
position: relative;
|
||||
color: transparent !important;
|
||||
}
|
||||
|
||||
.btn-loading:after {
|
||||
position: absolute;
|
||||
content: "";
|
||||
left: 0;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
margin: auto;
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
border: 2px solid #ffffff;
|
||||
border-radius: 100%;
|
||||
border-right-color: transparent;
|
||||
border-top-color: transparent;
|
||||
animation: spinAround 600ms infinite linear;
|
||||
}
|
||||
|
||||
.btn-loading.btn-default:after {
|
||||
border: 2px solid #0068e1;
|
||||
border-right-color: transparent;
|
||||
border-top-color: transparent;
|
||||
}
|
||||
|
||||
@keyframes spinAround {
|
||||
from {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
|
||||
to {
|
||||
transform: rotate(359deg);
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 991px) {
|
||||
.left-sidebar {
|
||||
border-right: none;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 940px) {
|
||||
html,
|
||||
body {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.installer-wrapper {
|
||||
height: auto;
|
||||
padding: 15px;
|
||||
}
|
||||
|
||||
.installer-wrapper > .wrapper {
|
||||
height: auto;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.left-sidebar {
|
||||
height: auto;
|
||||
width: 100%;
|
||||
float: none;
|
||||
}
|
||||
|
||||
.left-sidebar > .list-inline {
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
|
||||
.content-wrapper {
|
||||
width: 100%;
|
||||
float: none;
|
||||
}
|
||||
|
||||
.content-wrapper > .content {
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 767px) {
|
||||
.table-responsive {
|
||||
border: none;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.form-horizontal .control-label {
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
.configure-form {
|
||||
padding-top: 15px;
|
||||
}
|
||||
|
||||
.visit-wrapper > .row > .col-sm-6:last-child > .visit {
|
||||
margin-top: 30px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="installer-wrapper">
|
||||
<div class="wrapper">
|
||||
<div class="left-sidebar clearfix">
|
||||
<ul class="list-inline">
|
||||
<li class="{{ request()->routeIs('install.pre_installation') ? 'active' : 'complete' }}">
|
||||
Pre-Installation
|
||||
</li>
|
||||
|
||||
<li class="{{ request()->routeIs('install.configuration.show') ? 'active' : '' }} {{ request()->routeIs('install.complete') ? 'complete' : '' }}">
|
||||
Configuration
|
||||
</li>
|
||||
|
||||
<li class="{{ request()->routeIs('install.complete') ? 'complete' : '' }}">
|
||||
Complete
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="content-wrapper clearfix">
|
||||
<div class="content">
|
||||
@yield('content')
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
|
||||
@stack('scripts')
|
||||
</body>
|
||||
</html>
|
||||
65
resources/views/install/pre_installation.blade.php
Normal file
65
resources/views/install/pre_installation.blade.php
Normal file
@@ -0,0 +1,65 @@
|
||||
@extends('install.layout')
|
||||
|
||||
@section('content')
|
||||
<h2>1. Pre-Installation</h2>
|
||||
|
||||
<div class="box">
|
||||
<p>Please make sure the PHP extensions listed below are installed.</p>
|
||||
|
||||
<div class="table-responsive">
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Extensions</th>
|
||||
<th class="text-center">Status</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
@foreach ($requirement->extensions() as $label => $satisfied)
|
||||
<tr>
|
||||
<td>{{ $label }}</td>
|
||||
|
||||
<td class="text-center">
|
||||
<i class="fa fa-{{ $satisfied ? 'check' : 'times' }}" aria-hidden="true"></i>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="box">
|
||||
<p>Please make sure you have set the correct permissions for the directories listed below.</p>
|
||||
|
||||
<div class="table-responsive">
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Directories</th>
|
||||
<th class="text-center">Status</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
@foreach ($requirement->directories() as $label => $satisfied)
|
||||
<tr>
|
||||
<td>{{ $label }}</td>
|
||||
|
||||
<td class="text-center">
|
||||
<i class="fa fa-{{ $satisfied ? 'check' : 'times' }}" aria-hidden="true"></i>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="content-buttons clearfix">
|
||||
<a href="{{ $requirement->satisfied() ? route('install.configuration.show') : '#' }}" class="btn btn-primary pull-right" {{ $requirement->satisfied() ? '' : 'disabled' }}>
|
||||
Continue
|
||||
</a>
|
||||
</div>
|
||||
@endsection
|
||||
5
resources/views/vendor/bone/captcha/image.blade.php
vendored
Normal file
5
resources/views/vendor/bone/captcha/image.blade.php
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<img src="{{ $route }}"
|
||||
style="cursor:pointer;width:{{ $width }}px;height:{{ $height }}px;"
|
||||
title="{{ trans('support::captcha.update_code') }}"
|
||||
onclick="this.setAttribute('src','{{ $route }}?_='+Math.random());var captcha=document.getElementById('{{ $input_id }}');if(captcha){captcha.focus()}"
|
||||
>
|
||||
3
resources/views/vendor/sidebar/append.blade.php
vendored
Normal file
3
resources/views/vendor/sidebar/append.blade.php
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
<a title="{{ $append->getName() }}" class="append pull-right" href="{{ $append->getUrl() }}">
|
||||
<i class="{{ $append->getIcon() }}"></i>
|
||||
</a>
|
||||
1
resources/views/vendor/sidebar/badge.blade.php
vendored
Normal file
1
resources/views/vendor/sidebar/badge.blade.php
vendored
Normal file
@@ -0,0 +1 @@
|
||||
<small class="badge pull-right {{ $badge->getClass() }}">{{ $badge->getValue() }}</small>
|
||||
7
resources/views/vendor/sidebar/group.blade.php
vendored
Normal file
7
resources/views/vendor/sidebar/group.blade.php
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
@if ($group->shouldShowHeading())
|
||||
<li class="header">{{ $group->getName() }}</li>
|
||||
@endif
|
||||
|
||||
@foreach ($items as $item)
|
||||
{!! $item !!}
|
||||
@endforeach
|
||||
35
resources/views/vendor/sidebar/item.blade.php
vendored
Normal file
35
resources/views/vendor/sidebar/item.blade.php
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
<li class="{{ $item->getItemClass() ? $item->getItemClass() : null }}
|
||||
{{ $active ? 'active' : null }}
|
||||
{{ $item->hasItems() ? 'treeview' : null }}
|
||||
">
|
||||
<a href="{{ $item->getUrl() }}" class="{{ count($appends) > 0 ? 'hasAppend' : null }}"
|
||||
@if ($item->getNewTab())
|
||||
target="_blank"
|
||||
@endif
|
||||
>
|
||||
<i class="{{ $item->getIcon() }}"></i>
|
||||
<span>{{ $item->getName() }}</span>
|
||||
|
||||
@foreach ($badges as $badge)
|
||||
{!! $badge !!}
|
||||
@endforeach
|
||||
|
||||
@if ($item->hasItems())
|
||||
<span class="pull-right-container">
|
||||
<i class="{{ $item->getToggleIcon() }} pull-right"></i>
|
||||
</span>
|
||||
@endif
|
||||
</a>
|
||||
|
||||
@foreach ($appends as $append)
|
||||
{!! $append !!}
|
||||
@endforeach
|
||||
|
||||
@if (count($items) > 0)
|
||||
<ul class="treeview-menu">
|
||||
@foreach ($items as $item)
|
||||
{!! $item !!}
|
||||
@endforeach
|
||||
</ul>
|
||||
@endif
|
||||
</li>
|
||||
5
resources/views/vendor/sidebar/menu.blade.php
vendored
Normal file
5
resources/views/vendor/sidebar/menu.blade.php
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<ul class="sidebar-menu">
|
||||
@foreach($groups as $group)
|
||||
{!! $group !!}
|
||||
@endforeach
|
||||
</ul>
|
||||
Reference in New Issue
Block a user