Initial Spark Install
This commit is contained in:
1
spark/resources/views/auth/emails/password.blade.php
Normal file
1
spark/resources/views/auth/emails/password.blade.php
Normal file
@@ -0,0 +1 @@
|
||||
Click here to reset your password: <a href="{{ $link = url('password/reset', $token).'?email='.urlencode($user->getEmailForPasswordReset()) }}"> {{ $link }} </a>
|
@@ -0,0 +1,46 @@
|
||||
@extends('spark::layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-8 col-md-offset-2">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Login Via Emergency Token</div>
|
||||
|
||||
<div class="panel-body">
|
||||
@include('spark::shared.errors')
|
||||
|
||||
<!-- Warning Message -->
|
||||
<div class="alert alert-warning">
|
||||
After logging in via your emergency token, two-factor authentication will be
|
||||
disabled for your account. If you would like to maintain two-factor
|
||||
authentication security, you should re-enable it after logging in.
|
||||
</div>
|
||||
|
||||
<form class="form-horizontal" role="form" method="POST" action="/login-via-emergency-token">
|
||||
{{ csrf_field() }}
|
||||
|
||||
<!-- Emergency Token -->
|
||||
<div class="form-group">
|
||||
<label class="col-md-4 control-label">Emergency Token</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input type="password" class="form-control" name="token" autofocus>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Emergency Token Login Button -->
|
||||
<div class="form-group">
|
||||
<div class="col-md-8 col-md-offset-4">
|
||||
<button type="submit" class="btn btn-primary">
|
||||
<i class="fa fa-btn fa-sign-in"></i>Login
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
61
spark/resources/views/auth/login.blade.php
Normal file
61
spark/resources/views/auth/login.blade.php
Normal file
@@ -0,0 +1,61 @@
|
||||
@extends('spark::layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-8 col-md-offset-2">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Login</div>
|
||||
|
||||
<div class="panel-body">
|
||||
@include('spark::shared.errors')
|
||||
|
||||
<form class="form-horizontal" role="form" method="POST" action="/login">
|
||||
{{ csrf_field() }}
|
||||
|
||||
<!-- E-Mail Address -->
|
||||
<div class="form-group">
|
||||
<label class="col-md-4 control-label">E-Mail Address</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input type="email" class="form-control" name="email" value="{{ old('email') }}" autofocus>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Password -->
|
||||
<div class="form-group">
|
||||
<label class="col-md-4 control-label">Password</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input type="password" class="form-control" name="password">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Remember Me -->
|
||||
<div class="form-group">
|
||||
<div class="col-md-6 col-md-offset-4">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" name="remember"> Remember Me
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Login Button -->
|
||||
<div class="form-group">
|
||||
<div class="col-md-8 col-md-offset-4">
|
||||
<button type="submit" class="btn btn-primary">
|
||||
<i class="fa m-r-xs fa-sign-in"></i>Login
|
||||
</button>
|
||||
|
||||
<a class="btn btn-link" href="{{ url('/password/reset') }}">Forgot Your Password?</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
50
spark/resources/views/auth/passwords/email.blade.php
Normal file
50
spark/resources/views/auth/passwords/email.blade.php
Normal file
@@ -0,0 +1,50 @@
|
||||
@extends('spark::layouts.app')
|
||||
|
||||
<!-- Main Content -->
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-8 col-md-offset-2">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Reset Password</div>
|
||||
|
||||
<div class="panel-body">
|
||||
@if (session('status'))
|
||||
<div class="alert alert-success">
|
||||
{{ session('status') }}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<form class="form-horizontal" role="form" method="POST" action="{{ url('/password/email') }}">
|
||||
{!! csrf_field() !!}
|
||||
|
||||
<!-- E-Mail Address -->
|
||||
<div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}">
|
||||
<label class="col-md-4 control-label">E-Mail Address</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input type="email" class="form-control" name="email" value="{{ old('email') }}" autofocus>
|
||||
|
||||
@if ($errors->has('email'))
|
||||
<span class="help-block">
|
||||
{{ $errors->first('email') }}
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Send Password Reset Link Button -->
|
||||
<div class="form-group">
|
||||
<div class="col-md-6 col-md-offset-4">
|
||||
<button type="submit" class="btn btn-primary">
|
||||
<i class="fa fa-btn fa-envelope"></i>Send Password Reset Link
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
74
spark/resources/views/auth/passwords/reset.blade.php
Normal file
74
spark/resources/views/auth/passwords/reset.blade.php
Normal file
@@ -0,0 +1,74 @@
|
||||
@extends('spark::layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-8 col-md-offset-2">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Reset Password</div>
|
||||
|
||||
<div class="panel-body">
|
||||
<form class="form-horizontal" role="form" method="POST" action="{{ url('/password/reset') }}">
|
||||
{!! csrf_field() !!}
|
||||
|
||||
<input type="hidden" name="token" value="{{ $token }}">
|
||||
|
||||
<!-- E-Mail Address -->
|
||||
<div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}">
|
||||
<label class="col-md-4 control-label">E-Mail Address</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input type="email" class="form-control" name="email" value="{{ $email or old('email') }}" autofocus>
|
||||
|
||||
@if ($errors->has('email'))
|
||||
<span class="help-block">
|
||||
{{ $errors->first('email') }}
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Password -->
|
||||
<div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}">
|
||||
<label class="col-md-4 control-label">Password</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input type="password" class="form-control" name="password">
|
||||
|
||||
@if ($errors->has('password'))
|
||||
<span class="help-block">
|
||||
{{ $errors->first('password') }}
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Password Confirmation -->
|
||||
<div class="form-group{{ $errors->has('password_confirmation') ? ' has-error' : '' }}">
|
||||
<label class="col-md-4 control-label">Confirm Password</label>
|
||||
<div class="col-md-6">
|
||||
<input type="password" class="form-control" name="password_confirmation">
|
||||
|
||||
@if ($errors->has('password_confirmation'))
|
||||
<span class="help-block">
|
||||
{{ $errors->first('password_confirmation') }}
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Reset Button -->
|
||||
<div class="form-group">
|
||||
<div class="col-md-6 col-md-offset-4">
|
||||
<button type="submit" class="btn btn-primary">
|
||||
<i class="fa fa-btn fa-refresh"></i>Reset Password
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
91
spark/resources/views/auth/register-address.blade.php
Normal file
91
spark/resources/views/auth/register-address.blade.php
Normal file
@@ -0,0 +1,91 @@
|
||||
<!-- Address -->
|
||||
<div class="form-group" :class="{'has-error': registerForm.errors.has('address')}">
|
||||
<label class="col-md-4 control-label">Address</label>
|
||||
|
||||
<div class="col-sm-6">
|
||||
<input type="text" class="form-control" v-model="registerForm.address" lazy>
|
||||
|
||||
<span class="help-block" v-show="registerForm.errors.has('address')">
|
||||
@{{ registerForm.errors.get('address') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Address Line 2 -->
|
||||
<div class="form-group" :class="{'has-error': registerForm.errors.has('address_line_2')}">
|
||||
<label class="col-md-4 control-label">Address Line 2</label>
|
||||
|
||||
<div class="col-sm-6">
|
||||
<input type="text" class="form-control" v-model="registerForm.address_line_2" lazy>
|
||||
|
||||
<span class="help-block" v-show="registerForm.errors.has('address_line_2')">
|
||||
@{{ registerForm.errors.get('address_line_2') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- City -->
|
||||
<div class="form-group" :class="{'has-error': registerForm.errors.has('city')}">
|
||||
<label class="col-md-4 control-label">City</label>
|
||||
|
||||
<div class="col-sm-6">
|
||||
<input type="text" class="form-control" v-model.lazy="registerForm.city">
|
||||
|
||||
<span class="help-block" v-show="registerForm.errors.has('city')">
|
||||
@{{ registerForm.errors.get('city') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- State & ZIP Code -->
|
||||
<div class="form-group" :class="{'has-error': registerForm.errors.has('state')}">
|
||||
<label class="col-md-4 control-label">State & ZIP / Postal Code</label>
|
||||
|
||||
<!-- State -->
|
||||
<div class="col-sm-3">
|
||||
<input type="text" class="form-control" placeholder="State" v-model.lazy="registerForm.state">
|
||||
|
||||
<span class="help-block" v-show="registerForm.errors.has('state')">
|
||||
@{{ registerForm.errors.get('state') }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- Zip Code -->
|
||||
<div class="col-sm-3">
|
||||
<input type="text" class="form-control" placeholder="Postal Code" v-model.lazy="registerForm.zip">
|
||||
|
||||
<span class="help-block" v-show="registerForm.errors.has('zip')">
|
||||
@{{ registerForm.errors.get('zip') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Country -->
|
||||
<div class="form-group" :class="{'has-error': registerForm.errors.has('country')}">
|
||||
<label class="col-md-4 control-label">Country</label>
|
||||
|
||||
<div class="col-sm-6">
|
||||
<select class="form-control" v-model.lazy="registerForm.country">
|
||||
@foreach (app(Laravel\Spark\Repositories\Geography\CountryRepository::class)->all() as $key => $country)
|
||||
<option value="{{ $key }}">{{ $country }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
|
||||
<span class="help-block" v-show="registerForm.errors.has('country')">
|
||||
@{{ registerForm.errors.get('country') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- European VAT ID -->
|
||||
<div class="form-group" :class="{'has-error': registerForm.errors.has('vat_id')}" v-if="countryCollectsVat">
|
||||
<label class="col-md-4 control-label">VAT ID</label>
|
||||
|
||||
<div class="col-sm-6">
|
||||
<input type="text" class="form-control" v-model.lazy="registerForm.vat_id">
|
||||
|
||||
<span class="help-block" v-show="registerForm.errors.has('vat_id')">
|
||||
@{{ registerForm.errors.get('vat_id') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
85
spark/resources/views/auth/register-braintree.blade.php
Normal file
85
spark/resources/views/auth/register-braintree.blade.php
Normal file
@@ -0,0 +1,85 @@
|
||||
@extends('spark::layouts.app')
|
||||
|
||||
@section('scripts')
|
||||
<script src="https://js.braintreegateway.com/v2/braintree.js"></script>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<spark-register-braintree inline-template>
|
||||
<div>
|
||||
<div class="spark-screen container">
|
||||
<!-- Common Register Form Contents -->
|
||||
@include('spark::auth.register-common')
|
||||
|
||||
<!-- Billing Information -->
|
||||
<div class="row" v-show="selectedPlan && selectedPlan.price > 0">
|
||||
<div class="col-md-8 col-md-offset-2">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading"><i class="fa fa-btn fa-credit-card"></i>Billing</div>
|
||||
|
||||
<div class="panel-body">
|
||||
<!-- Generic 500 Level Error Message / Stripe Threw Exception -->
|
||||
<div class="alert alert-danger" v-if="registerForm.errors.has('form')">
|
||||
We had trouble validating your card. It's possible your card provider is preventing
|
||||
us from charging the card. Please contact your card provider or customer support.
|
||||
</div>
|
||||
|
||||
<form class="form-horizontal" role="form">
|
||||
<!-- Braintree Container -->
|
||||
<div id="braintree-container" class="m-b-sm"></div>
|
||||
|
||||
<!-- Coupon Code -->
|
||||
<div class="form-group" :class="{'has-error': registerForm.errors.has('coupon')}" v-if="query.coupon">
|
||||
<label for="number" class="col-md-4 control-label">Coupon Code</label>
|
||||
|
||||
<div class="col-sm-6">
|
||||
<input type="text" class="form-control" name="coupon" v-model="registerForm.coupon">
|
||||
|
||||
<span class="help-block" v-show="registerForm.errors.has('coupon')">
|
||||
@{{ registerForm.errors.get('coupon') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Terms And Conditions -->
|
||||
<div class="form-group" :class="{'has-error': registerForm.errors.has('terms')}">
|
||||
<div class="col-sm-6 col-sm-offset-4">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" v-model="registerForm.terms">
|
||||
I Accept The <a href="/terms" target="_blank">Terms Of Service</a>
|
||||
|
||||
<span class="help-block" v-show="registerForm.errors.has('terms')">
|
||||
<strong>@{{ registerForm.errors.get('terms') }}</strong>
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Register Button -->
|
||||
<div class="form-group">
|
||||
<div class="col-sm-6 col-sm-offset-4">
|
||||
<button type="submit" class="btn btn-primary" :disabled="registerForm.busy">
|
||||
<span v-if="registerForm.busy">
|
||||
<i class="fa fa-btn fa-spinner fa-spin"></i>Registering
|
||||
</span>
|
||||
|
||||
<span v-else>
|
||||
<i class="fa fa-btn fa-check-circle"></i>Register
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Plan Features Modal -->
|
||||
@include('spark::modals.plan-details')
|
||||
</div>
|
||||
</spark-register-braintree>
|
||||
@endsection
|
119
spark/resources/views/auth/register-common-form.blade.php
Normal file
119
spark/resources/views/auth/register-common-form.blade.php
Normal file
@@ -0,0 +1,119 @@
|
||||
<form class="form-horizontal" role="form">
|
||||
@if (Spark::usesTeams() && Spark::onlyTeamPlans())
|
||||
<!-- Team Name -->
|
||||
<div class="form-group" :class="{'has-error': registerForm.errors.has('team')}" v-if=" ! invitation">
|
||||
<label class="col-md-4 control-label">{{ ucfirst(Spark::teamString()) }} Name</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" name="team" v-model="registerForm.team" autofocus>
|
||||
|
||||
<span class="help-block" v-show="registerForm.errors.has('team')">
|
||||
@{{ registerForm.errors.get('team') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if (Spark::teamsIdentifiedByPath())
|
||||
<!-- Team Slug (Only Shown When Using Paths For Teams) -->
|
||||
<div class="form-group" :class="{'has-error': registerForm.errors.has('team_slug')}" v-if=" ! invitation">
|
||||
<label class="col-md-4 control-label">{{ ucfirst(Spark::teamString()) }} Slug</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" name="team_slug" v-model="registerForm.team_slug" autofocus>
|
||||
|
||||
<p class="help-block" v-show=" ! registerForm.errors.has('team_slug')">
|
||||
This slug is used to identify your {{ Spark::teamString() }} in URLs.
|
||||
</p>
|
||||
|
||||
<span class="help-block" v-show="registerForm.errors.has('team_slug')">
|
||||
@{{ registerForm.errors.get('team_slug') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
@endif
|
||||
|
||||
<!-- Name -->
|
||||
<div class="form-group" :class="{'has-error': registerForm.errors.has('name')}">
|
||||
<label class="col-md-4 control-label">Name</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" name="name" v-model="registerForm.name" autofocus>
|
||||
|
||||
<span class="help-block" v-show="registerForm.errors.has('name')">
|
||||
@{{ registerForm.errors.get('name') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- E-Mail Address -->
|
||||
<div class="form-group" :class="{'has-error': registerForm.errors.has('email')}">
|
||||
<label class="col-md-4 control-label">E-Mail Address</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input type="email" class="form-control" name="email" v-model="registerForm.email">
|
||||
|
||||
<span class="help-block" v-show="registerForm.errors.has('email')">
|
||||
@{{ registerForm.errors.get('email') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Password -->
|
||||
<div class="form-group" :class="{'has-error': registerForm.errors.has('password')}">
|
||||
<label class="col-md-4 control-label">Password</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input type="password" class="form-control" name="password" v-model="registerForm.password">
|
||||
|
||||
<span class="help-block" v-show="registerForm.errors.has('password')">
|
||||
@{{ registerForm.errors.get('password') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Password Confirmation -->
|
||||
<div class="form-group" :class="{'has-error': registerForm.errors.has('password_confirmation')}">
|
||||
<label class="col-md-4 control-label">Confirm Password</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input type="password" class="form-control" name="password_confirmation" v-model="registerForm.password_confirmation">
|
||||
|
||||
<span class="help-block" v-show="registerForm.errors.has('password_confirmation')">
|
||||
@{{ registerForm.errors.get('password_confirmation') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Terms And Conditions -->
|
||||
<div v-if=" ! selectedPlan || selectedPlan.price == 0">
|
||||
<div class="form-group" :class="{'has-error': registerForm.errors.has('terms')}">
|
||||
<div class="col-md-6 col-md-offset-4">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" name="terms" v-model="registerForm.terms">
|
||||
I Accept The <a href="/terms" target="_blank">Terms Of Service</a>
|
||||
</label>
|
||||
|
||||
<span class="help-block" v-show="registerForm.errors.has('terms')">
|
||||
@{{ registerForm.errors.get('terms') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-md-6 col-md-offset-4">
|
||||
<button class="btn btn-primary" @click.prevent="register" :disabled="registerForm.busy">
|
||||
<span v-if="registerForm.busy">
|
||||
<i class="fa fa-btn fa-spinner fa-spin"></i>Registering
|
||||
</span>
|
||||
|
||||
<span v-else>
|
||||
<i class="fa fa-btn fa-check-circle"></i>Register
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
175
spark/resources/views/auth/register-common.blade.php
Normal file
175
spark/resources/views/auth/register-common.blade.php
Normal file
@@ -0,0 +1,175 @@
|
||||
<!-- Coupon -->
|
||||
<div class="row" v-if="coupon">
|
||||
<div class="col-md-8 col-md-offset-2">
|
||||
<div class="panel panel-success">
|
||||
<div class="panel-heading">Discount</div>
|
||||
|
||||
<div class="panel-body">
|
||||
The coupon's @{{ discount }} discount will be applied to your subscription!
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Invalid Coupon -->
|
||||
<div class="row" v-if="invalidCoupon">
|
||||
<div class="col-md-8 col-md-offset-2">
|
||||
<div class="alert alert-danger">
|
||||
Whoops! This coupon code is invalid.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Invitation -->
|
||||
<div class="row" v-if="invitation">
|
||||
<div class="col-md-8 col-md-offset-2">
|
||||
<div class="alert alert-success">
|
||||
We found your invitation to the <strong>@{{ invitation.team.name }}</strong> {{ Spark::teamString() }}!
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Invalid Invitation -->
|
||||
<div class="row" v-if="invalidInvitation">
|
||||
<div class="col-md-8 col-md-offset-2">
|
||||
<div class="alert alert-danger">
|
||||
Whoops! This invitation code is invalid.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Plan Selection -->
|
||||
<div class="row" v-if="paidPlans.length > 0">
|
||||
<div class="col-md-8 col-md-offset-2">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<div class="pull-left" :class="{'btn-table-align': hasMonthlyAndYearlyPlans}">
|
||||
Subscription
|
||||
</div>
|
||||
|
||||
<!-- Interval Selector Button Group -->
|
||||
<div class="pull-right">
|
||||
<div class="btn-group" v-if="hasMonthlyAndYearlyPlans" style="padding-top: 2px;">
|
||||
<!-- Monthly Plans -->
|
||||
<button type="button" class="btn btn-default"
|
||||
@click="showMonthlyPlans"
|
||||
:class="{'active': showingMonthlyPlans}">
|
||||
|
||||
Monthly
|
||||
</button>
|
||||
|
||||
<!-- Yearly Plans -->
|
||||
<button type="button" class="btn btn-default"
|
||||
@click="showYearlyPlans"
|
||||
:class="{'active': showingYearlyPlans}">
|
||||
|
||||
Yearly
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
|
||||
<div class="panel-body spark-row-list">
|
||||
<!-- Plan Error Message - In General Will Never Be Shown -->
|
||||
<div class="alert alert-danger" v-if="registerForm.errors.has('plan')">
|
||||
@{{ registerForm.errors.get('plan') }}
|
||||
</div>
|
||||
|
||||
<!-- European VAT Notice -->
|
||||
@if (Spark::collectsEuropeanVat())
|
||||
<p class="p-b-md">
|
||||
All subscription plan prices are excluding applicable VAT.
|
||||
</p>
|
||||
@endif
|
||||
|
||||
<table class="table table-borderless m-b-none">
|
||||
<thead></thead>
|
||||
<tbody>
|
||||
<tr v-for="plan in plansForActiveInterval">
|
||||
<!-- Plan Name -->
|
||||
<td>
|
||||
<div class="btn-table-align" @click="showPlanDetails(plan)">
|
||||
<span style="cursor: pointer;">
|
||||
<strong>@{{ plan.name }}</strong>
|
||||
</span>
|
||||
</div>
|
||||
</td>
|
||||
|
||||
<!-- Plan Features Button -->
|
||||
<td>
|
||||
<button class="btn btn-default m-l-sm" @click="showPlanDetails(plan)">
|
||||
<i class="fa fa-btn fa-star-o"></i>Plan Features
|
||||
</button>
|
||||
</td>
|
||||
|
||||
<!-- Plan Price -->
|
||||
<td>
|
||||
<div class="btn-table-align">
|
||||
<span v-if="plan.price == 0">
|
||||
Free
|
||||
</span>
|
||||
|
||||
<span v-else>
|
||||
@{{ plan.price | currency }} / @{{ plan.interval | capitalize }}
|
||||
</span>
|
||||
</div>
|
||||
</td>
|
||||
|
||||
<!-- Trial Days -->
|
||||
<td>
|
||||
<div class="btn-table-align" v-if="plan.trialDays">
|
||||
@{{ plan.trialDays}} Day Trial
|
||||
</div>
|
||||
</td>
|
||||
|
||||
<!-- Plan Select Button -->
|
||||
<td class="text-right">
|
||||
<button class="btn btn-primary btn-plan" v-if="isSelected(plan)" disabled>
|
||||
<i class="fa fa-btn fa-check"></i>Selected
|
||||
</button>
|
||||
|
||||
<button class="btn btn-primary-outline btn-plan" @click="selectPlan(plan)" v-else>
|
||||
Select
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Basic Profile -->
|
||||
<div class="row">
|
||||
<div class="col-md-8 col-md-offset-2">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<span v-if="paidPlans.length > 0">
|
||||
Profile
|
||||
</span>
|
||||
|
||||
<span v-else>
|
||||
Register
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="panel-body">
|
||||
<!-- Generic Error Message -->
|
||||
<div class="alert alert-danger" v-if="registerForm.errors.has('form')">
|
||||
@{{ registerForm.errors.get('form') }}
|
||||
</div>
|
||||
|
||||
<!-- Invitation Code Error -->
|
||||
<div class="alert alert-danger" v-if="registerForm.errors.has('invitation')">
|
||||
@{{ registerForm.errors.get('invitation') }}
|
||||
</div>
|
||||
|
||||
<!-- Registration Form -->
|
||||
@include('spark::auth.register-common-form')
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
166
spark/resources/views/auth/register-stripe.blade.php
Normal file
166
spark/resources/views/auth/register-stripe.blade.php
Normal file
@@ -0,0 +1,166 @@
|
||||
@extends('spark::layouts.app')
|
||||
|
||||
@section('scripts')
|
||||
<script src="https://js.stripe.com/v2/"></script>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<spark-register-stripe inline-template>
|
||||
<div>
|
||||
<div class="spark-screen container">
|
||||
<!-- Common Register Form Contents -->
|
||||
@include('spark::auth.register-common')
|
||||
|
||||
<!-- Billing Information -->
|
||||
<div class="row" v-if="selectedPlan && selectedPlan.price > 0">
|
||||
<div class="col-md-8 col-md-offset-2">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Billing Information</div>
|
||||
|
||||
<div class="panel-body">
|
||||
<!-- Generic 500 Level Error Message / Stripe Threw Exception -->
|
||||
<div class="alert alert-danger" v-if="registerForm.errors.has('form')">
|
||||
We had trouble validating your card. It's possible your card provider is preventing
|
||||
us from charging the card. Please contact your card provider or customer support.
|
||||
</div>
|
||||
|
||||
<form class="form-horizontal" role="form">
|
||||
<!-- Billing Address Fields -->
|
||||
@if (Spark::collectsBillingAddress())
|
||||
<h2><i class="fa fa-btn fa-map-marker"></i>Billing Address</h2>
|
||||
|
||||
@include('spark::auth.register-address')
|
||||
|
||||
<h2><i class="fa fa-btn fa-credit-card"></i>Credit Card</h2>
|
||||
@endif
|
||||
|
||||
<!-- Cardholder's Name -->
|
||||
<div class="form-group">
|
||||
<label for="name" class="col-md-4 control-label">Cardholder's Name</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" name="name" v-model="cardForm.name">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Card Number -->
|
||||
<div class="form-group" :class="{'has-error': cardForm.errors.has('number')}">
|
||||
<label class="col-md-4 control-label">Card Number</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" name="number" data-stripe="number" v-model="cardForm.number">
|
||||
|
||||
<span class="help-block" v-show="cardForm.errors.has('number')">
|
||||
@{{ cardForm.errors.get('number') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Security Code -->
|
||||
<div class="form-group">
|
||||
<label class="col-md-4 control-label">Security Code</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" name="cvc" data-stripe="cvc" v-model="cardForm.cvc">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Expiration -->
|
||||
<div class="form-group">
|
||||
<label class="col-md-4 control-label">Expiration</label>
|
||||
|
||||
<!-- Month -->
|
||||
<div class="col-md-3">
|
||||
<input type="text" class="form-control" name="month"
|
||||
placeholder="MM" maxlength="2" data-stripe="exp-month" v-model="cardForm.month">
|
||||
</div>
|
||||
|
||||
<!-- Year -->
|
||||
<div class="col-md-3">
|
||||
<input type="text" class="form-control" name="year"
|
||||
placeholder="YYYY" maxlength="4" data-stripe="exp-year" v-model="cardForm.year">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ZIP Code -->
|
||||
<div class="form-group" :class="{'has-error': registerForm.errors.has('zip')}" v-if=" ! spark.collectsBillingAddress">
|
||||
<label class="col-md-4 control-label">ZIP / Postal Code</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" name="zip" v-model="registerForm.zip">
|
||||
|
||||
<span class="help-block" v-show="registerForm.errors.has('zip')">
|
||||
@{{ registerForm.errors.get('zip') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Coupon Code -->
|
||||
<div class="form-group" :class="{'has-error': registerForm.errors.has('coupon')}" v-if="query.coupon">
|
||||
<label class="col-md-4 control-label">Coupon Code</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" name="coupon" v-model="registerForm.coupon">
|
||||
|
||||
<span class="help-block" v-show="registerForm.errors.has('coupon')">
|
||||
@{{ registerForm.errors.get('coupon') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Terms And Conditions -->
|
||||
<div class="form-group" :class="{'has-error': registerForm.errors.has('terms')}">
|
||||
<div class="col-md-6 col-md-offset-4">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" v-model="registerForm.terms">
|
||||
I Accept The <a href="/terms" target="_blank">Terms Of Service</a>
|
||||
|
||||
<span class="help-block" v-show="registerForm.errors.has('terms')">
|
||||
<strong>@{{ registerForm.errors.get('terms') }}</strong>
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Tax / Price Information -->
|
||||
<div class="form-group" v-if="spark.collectsEuropeanVat && countryCollectsVat && selectedPlan">
|
||||
<label class="col-md-4 control-label"> </label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="alert alert-info" style="margin: 0;">
|
||||
<strong>Tax:</strong> @{{ taxAmount(selectedPlan) | currency }}
|
||||
<br><br>
|
||||
<strong>Total Price Including Tax:</strong>
|
||||
@{{ priceWithTax(selectedPlan) | currency }} / @{{ selectedPlan.interval | capitalize }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Register Button -->
|
||||
<div class="form-group">
|
||||
<div class="col-md-6 col-md-offset-4">
|
||||
<button type="submit" class="btn btn-primary" @click.prevent="register" :disabled="registerForm.busy">
|
||||
<span v-if="registerForm.busy">
|
||||
<i class="fa fa-btn fa-spinner fa-spin"></i>Registering
|
||||
</span>
|
||||
|
||||
<span v-else>
|
||||
<i class="fa fa-btn fa-check-circle"></i>Register
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Plan Features Modal -->
|
||||
@include('spark::modals.plan-details')
|
||||
</div>
|
||||
</spark-register-stripe>
|
||||
@endsection
|
5
spark/resources/views/auth/register.blade.php
Normal file
5
spark/resources/views/auth/register.blade.php
Normal file
@@ -0,0 +1,5 @@
|
||||
@if (Spark::billsUsingStripe())
|
||||
@include('spark::auth.register-stripe')
|
||||
@else
|
||||
@include('spark::auth.register-braintree')
|
||||
@endif
|
43
spark/resources/views/auth/token.blade.php
Normal file
43
spark/resources/views/auth/token.blade.php
Normal file
@@ -0,0 +1,43 @@
|
||||
@extends('spark::layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-8 col-md-offset-2">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Two-Factor Authentication</div>
|
||||
|
||||
<div class="panel-body">
|
||||
@include('spark::shared.errors')
|
||||
|
||||
<form class="form-horizontal" role="form" method="POST" action="/login/token">
|
||||
{{ csrf_field() }}
|
||||
|
||||
<!-- Token -->
|
||||
<div class="form-group">
|
||||
<label class="col-md-4 control-label">Authentication Token</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" name="token" autofocus>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Verify Button -->
|
||||
<div class="form-group">
|
||||
<div class="col-md-6 col-md-offset-4">
|
||||
<button type="submit" class="btn btn-primary">
|
||||
Verify
|
||||
</button>
|
||||
|
||||
<a class="btn btn-link" href="{{ url('login-via-emergency-token') }}">
|
||||
Lost Your Device?
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
Reference in New Issue
Block a user