commit 08-2025
This commit is contained in:
parent
9ae662f63e
commit
480fdc65ed
404 changed files with 65310 additions and 2600431 deletions
35
resources/views/portal/abo/_create_basis_product.blade.php
Normal file
35
resources/views/portal/abo/_create_basis_product.blade.php
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
{!! Form::open(['action' => route('portal.my_subscriptions.create', 3), 'method' => 'POST', 'class' => '']) !!}
|
||||
|
||||
@include('portal.abo.componenten.product-table-styles')
|
||||
|
||||
<div class="card-body">
|
||||
@include('portal.abo.componenten.vat-info')
|
||||
|
||||
<div class="alert alert-warning">
|
||||
<strong>{!! __('abo.abo_type_info', ['base'=>get_abo_type_badge('base'), 'upgrade'=>get_abo_type_badge('upgrade')]) !!}</strong>
|
||||
</div>
|
||||
|
||||
@if(isset($error))
|
||||
<div class="alert alert-danger">
|
||||
<strong>{{ $error }}</strong>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
|
||||
@include('portal.abo.componenten.product-table', [
|
||||
'products' => $basis_products ?? [],
|
||||
'productType' => 'base',
|
||||
'formRoute' => 'portal.my_subscriptions.create',
|
||||
'formStep' => 3
|
||||
])
|
||||
</div>
|
||||
|
||||
<div class="card-footer">
|
||||
<button type="submit" class="btn btn-default" name="action" value="back">{{ __('abo.back') }}</button>
|
||||
<button type="submit" class="btn btn-secondary float-right" name="action" value="next">{{ __('abo.confirm_and_next') }}</button>
|
||||
</div>
|
||||
|
||||
{!! Form::close() !!}
|
||||
|
||||
|
||||
|
||||
192
resources/views/portal/abo/_create_check.blade.php
Normal file
192
resources/views/portal/abo/_create_check.blade.php
Normal file
|
|
@ -0,0 +1,192 @@
|
|||
{!! Form::open(['action' => route('portal.my_subscriptions.create', 5), 'method' => 'POST', 'class' => '']) !!}
|
||||
|
||||
<div class="card-body">
|
||||
@if(Yard::instance('subscription')->content()->count())
|
||||
<style>
|
||||
.cart-item {
|
||||
position: relative;
|
||||
padding: 15px 0;
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
.cart-item:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
.cart-item .product-image {
|
||||
max-width: 80px;
|
||||
}
|
||||
.cart-item .product-title {
|
||||
font-size: 1.1em;
|
||||
font-weight: 500;
|
||||
color: #393939;
|
||||
}
|
||||
.cart-item .product-details {
|
||||
font-size: 0.9em;
|
||||
color: #666;
|
||||
}
|
||||
.cart-item .quantity-input {
|
||||
width: 80px;
|
||||
text-align: center;
|
||||
}
|
||||
.cart-summary {
|
||||
background: #f8f9fa;
|
||||
padding: 20px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
.cart-summary .table {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.cart-summary .table td {
|
||||
border-top: none;
|
||||
padding: 8px 0;
|
||||
}
|
||||
.cart-summary .total-row {
|
||||
font-weight: bold;
|
||||
border-top: 1px solid #ddd;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="cart-overview">
|
||||
<h4 class="mb-4">{{ __('abo.abo_order_hl') }}</h4>
|
||||
@if(isset($error))
|
||||
<div class="alert alert-danger">
|
||||
<strong>{{ $error }}</strong>
|
||||
</div>
|
||||
@endif
|
||||
@foreach(Yard::instance('subscription')->getContentByOrder() as $row)
|
||||
@php($product = \App\Models\Product::find($row->id))
|
||||
<div class="cart-item">
|
||||
<div class="row align-items-center">
|
||||
<div class="col-3 col-sm-2">
|
||||
@if($row->options->has('image'))
|
||||
<img src="{{ route('product_image', [$row->options->image]) }}" class="product-image" alt="{{ $row->name }}">
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-9 col-sm-10">
|
||||
<div class="row">
|
||||
<div class="col-12 col-sm-6 col-md-7">
|
||||
<div class="product-title">
|
||||
{{ $row->name }}
|
||||
|
||||
{!! get_abo_type_badge_by_product($product) !!}
|
||||
|
||||
</div>
|
||||
<div class="product-details">
|
||||
<div>{{ __('order.content') }}: {{ $product->contents }}</div>
|
||||
<div>{{ __('order.art_no') }}: {{ $product->number }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6 col-sm-3 col-md-2">
|
||||
<div class="price-single">
|
||||
<div style="">{{ $row->price() }} € {{ Yard::instance('subscription')->getUserTaxFree() }}</div>
|
||||
@if(Yard::instance('subscription')->isPriceCurrency())
|
||||
<span class="small">~{{ Yard::instance('subscription')->getCurrencyByKey('price', $row, 2) }} {{ Yard::instance('subscription')->getPriceCurrencyUnit() }} </span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6 col-sm-3 col-md-3">
|
||||
<div class="quantity-select text-right">
|
||||
@if($row->options->comp)
|
||||
<span class="text-right">1 x</span>
|
||||
@else
|
||||
<span class="text-right">{{ $row->qty }} x</span>
|
||||
@endif
|
||||
</div>
|
||||
<div class="price-total text-right mt-2">
|
||||
<span class="font-bold text-price-total"><strong>{{ $row->subtotal() }} € </strong></span>
|
||||
@if(Yard::instance('subscription')->isPriceCurrency())
|
||||
<br>
|
||||
<span class="small">~{{ Yard::instance('subscription')->getCurrencyByKey('subtotal', $row, 2) }} {{ Yard::instance('subscription')->getPriceCurrencyUnit() }} </span> @endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
|
||||
<div class="cart-summary mt-4">
|
||||
<table class="table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>{{ __('order.subtotal') }}:</td>
|
||||
<td class="text-right">
|
||||
{{ Yard::instance('subscription')->total() }} €
|
||||
@if(Yard::instance('subscription')->isPriceCurrency())
|
||||
<span class="small">~{{ Yard::instance('subscription')->getCurrencyByKey('subtotal') }} {{ Yard::instance('subscription')->getPriceCurrencyUnit() }}</span>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ __('Delivery country') }}:</td>
|
||||
<td class="text-right">
|
||||
{{ Yard::instance('subscription')->getShippingCountryName() }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ __('order.shipping_costs') }}:</td>
|
||||
<td class="text-right">
|
||||
{{ Yard::instance('subscription')->shipping() }} €
|
||||
</td>
|
||||
</tr>
|
||||
@if(Yard::instance('subscription')->getUserTaxFree())
|
||||
<tr>
|
||||
<td class="">{{ __('order.sum_net') }}:</td>
|
||||
<td class="text-right">{{ Yard::instance('subscription')->subtotalWithShipping() }} €</td>
|
||||
</tr>
|
||||
@else
|
||||
<tr>
|
||||
<td class="">{{ __('order.total_without_VAT') }}:</td>
|
||||
<td class="text-right">{{ Yard::instance('subscription')->subtotalWithShipping() }} €</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="">{{ __('order.plus_VAT') }}:</td>
|
||||
<td class="text-right">{{ Yard::instance('subscription')->taxWithShipping() }} €</td>
|
||||
</tr>
|
||||
@endif
|
||||
|
||||
<tr class="total-row">
|
||||
<td>
|
||||
@if(Yard::instance('subscription')->getUserTaxFree())
|
||||
{{ __('order.total_net') }}:
|
||||
@else
|
||||
{{ __('order.total_gross') }}:
|
||||
@endif
|
||||
</td>
|
||||
<td class="text-right">
|
||||
{{ Yard::instance('subscription')->totalWithShipping() }} €
|
||||
@if(Yard::instance('subscription')->isPriceCurrency())
|
||||
<span class="small">~{{ Yard::instance('subscription')->getCurrencyByKey('totalWithShipping') }} {{ Yard::instance('subscription')->getPriceCurrencyUnit() }}</span>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="abo-settings mt-4">
|
||||
<h5>{{ __('abo.abo_settings') }}</h5>
|
||||
<div class="form-group">
|
||||
<label>{{ __('abo.delivery_day') }}*</label>
|
||||
<select class="form-control custom-select" name="abo_interval">
|
||||
{!! HTMLHelper::getAboDeliveryOptions() !!}
|
||||
</select>
|
||||
</div>
|
||||
<div class="alert alert-info">
|
||||
<i class="fa fa-info-circle"></i> {!! __('abo.abo_order_info') !!}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<button type="submit" class="btn btn-default" name="action" value="back">{{ __('abo.back') }}</button>
|
||||
<div class="float-right">
|
||||
<button type="submit" class="btn btn-secondary" name="action" value="checkout"><i class="ion ion-ios-redo"></i> {{ __('order.confirm_and_proceed_to_checkout') }}</button>
|
||||
</div>
|
||||
<br><br>
|
||||
<div class="text-right">
|
||||
<em class="small"> <i class="fa fa-lock"></i> {!! __('payment.checkout_ssl_server') !!}</em>
|
||||
</div>
|
||||
</div>
|
||||
{!! Form::close() !!}
|
||||
|
||||
15
resources/views/portal/abo/_create_data.blade.php
Normal file
15
resources/views/portal/abo/_create_data.blade.php
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
{!! Form::open(['action' => route('portal.my_subscriptions.create', 2), 'method' => 'POST', 'class' => '']) !!}
|
||||
<div class="card-body">
|
||||
<h4>{{ __('abo.my_address') }}</h4>
|
||||
<p>{{ __('abo.my_address_check_info') }}<br>
|
||||
<a href="{{route('portal.my_data.edit')}}"><i class="fa fa-edit"></i> {{ __('navigation.my_data') }} {{ __('abo.edit') }}</a></p>
|
||||
<p>{!! __('order.reorder_info_2', ['country' => $shopping_user->getDeliveryCountry(), 'link' => route('portal.my_data.edit')]) !!}</p>
|
||||
@include('admin.customer._customer_detail')
|
||||
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<button type="submit" class="btn btn-default" name="action" value="back">{{ __('abo.back') }}</button>
|
||||
<button type="submit" class="btn btn-secondary float-right" name="action" value="next">{{ __('abo.confirm_and_next') }}</button>
|
||||
</div>
|
||||
|
||||
{!! Form::close() !!}
|
||||
34
resources/views/portal/abo/_create_info.blade.php
Normal file
34
resources/views/portal/abo/_create_info.blade.php
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
{!! Form::open(['action' => route('portal.my_subscriptions.create', 1), 'method' => 'POST', 'class' => '']) !!}
|
||||
<div class="card-body">
|
||||
<h4>{{ __('abo.abo_delivery') }}</h4>
|
||||
|
||||
<p>
|
||||
{{ __('abo.abo_order_info') }}
|
||||
</p>
|
||||
<hr class="container-m-nx mt-0 mb-4">
|
||||
|
||||
<h5>{{ __('abo.pros_hl') }}</h5>
|
||||
<ul>
|
||||
{!! __('abo.pros_list') !!}
|
||||
</ul>
|
||||
|
||||
@if(isset($no_shopping_user) && $no_shopping_user)
|
||||
|
||||
@endif
|
||||
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
@if(!isset($no_shopping_user))
|
||||
<div class="text-right">
|
||||
<button type="submit" class="btn btn-secondary" name="action" value="next">{{ __('abo.understood_and_next') }}</button>
|
||||
</div>
|
||||
@else
|
||||
<h4>{{ __('navigation.my_data') }}</h4>
|
||||
<div class="alert alert-warning">{{ __('abo.change_my_data_empty') }}</div>
|
||||
<a href="{{ route('portal.my_data.edit') }}" class="btn btn-secondary"><i
|
||||
class="ion ion-md-person text-default mr-1"></i> {{ __('portal.change_my_data_empty_button') }}</a>
|
||||
|
||||
@endif
|
||||
</div>
|
||||
|
||||
{!! Form::close() !!}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
{!! Form::open(['action' => route('portal.my_subscriptions.create', 4), 'method' => 'POST', 'class' => '']) !!}
|
||||
|
||||
@include('portal.abo.componenten.product-table-styles')
|
||||
|
||||
<div class="card-body">
|
||||
@include('portal.abo.componenten.vat-info')
|
||||
|
||||
<div class="alert alert-warning">
|
||||
<strong>{!! __('abo.abo_type_info', ['base'=>get_abo_type_badge('base'), 'upgrade'=>get_abo_type_badge('upgrade')]) !!}</strong>
|
||||
</div>
|
||||
|
||||
@if(isset($error))
|
||||
<div class="alert alert-danger">
|
||||
<strong>{{ $error }}</strong>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
|
||||
@include('portal.abo.componenten.product-table', [
|
||||
'products' => $upgrade_products ?? [],
|
||||
'productType' => 'upgrade',
|
||||
'formRoute' => 'portal.my_subscriptions.create',
|
||||
'formStep' => 4
|
||||
])
|
||||
</div>
|
||||
|
||||
<div class="card-footer">
|
||||
<button type="submit" class="btn btn-default" name="action" value="back">{{ __('abo.back') }}</button>
|
||||
<button type="submit" class="btn btn-secondary float-right" name="action" value="next">{{ __('abo.confirm_and_next') }}</button>
|
||||
</div>
|
||||
|
||||
{!! Form::close() !!}
|
||||
|
|
@ -0,0 +1,124 @@
|
|||
<style>
|
||||
/* Basis-Styles */
|
||||
.btn-md-extra {
|
||||
padding: 0.3rem 0.6rem;
|
||||
font-size: 0.8rem;
|
||||
line-height: 1.5;
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
|
||||
.md-btn-extra {
|
||||
width: calc(1.7rem + 2px) !important;
|
||||
line-height: 1.5rem;
|
||||
}
|
||||
|
||||
.form-control.input-extra {
|
||||
padding: 0.28rem 0.6rem;
|
||||
font-size: 0.8rem;
|
||||
font-weight: 600;
|
||||
min-height: calc(1.8rem + 2px);
|
||||
height: calc(1.8rem + 2px);
|
||||
width: 44px;
|
||||
}
|
||||
|
||||
.form-control.input-extra.active {
|
||||
background-color: #f0f0f0;
|
||||
}
|
||||
|
||||
.input-group-min-w {
|
||||
min-width: 102px;
|
||||
}
|
||||
|
||||
.img-extra {
|
||||
min-width: 55px;
|
||||
max-height: 160px;
|
||||
}
|
||||
|
||||
.product-active {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.product-inactive {
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
/* Mobile Optimierungen */
|
||||
@media (max-width: 767px) {
|
||||
.table thead {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.table, .table tbody, .table tr, .table td {
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.table tr {
|
||||
margin-bottom: 1.5rem;
|
||||
border: 1px solid #dee2e6;
|
||||
border-radius: 0.25rem;
|
||||
padding: 1rem;
|
||||
background: #fff;
|
||||
box-shadow: 0 1px 3px rgba(0,0,0,0.1);
|
||||
}
|
||||
|
||||
.table td {
|
||||
border: none;
|
||||
padding: 0.75rem 0;
|
||||
position: relative;
|
||||
padding-left: 50%;
|
||||
}
|
||||
|
||||
.table td:before {
|
||||
content: attr(data-label);
|
||||
position: absolute;
|
||||
left: 0;
|
||||
width: 45%;
|
||||
padding-right: 1rem;
|
||||
font-weight: 600;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.table td:first-child {
|
||||
padding-top: 1rem;
|
||||
}
|
||||
|
||||
.table td:last-child {
|
||||
padding-bottom: 1rem;
|
||||
}
|
||||
|
||||
.media {
|
||||
flex-direction: column;
|
||||
align-items: flex-start !important;
|
||||
}
|
||||
|
||||
.media img {
|
||||
margin-bottom: 1rem;
|
||||
margin-right: 0 !important;
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.media-body {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.input-group-min-w {
|
||||
min-width: auto;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.input-group {
|
||||
width: 100% !important;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.form-control.input-extra {
|
||||
width: 60px;
|
||||
}
|
||||
|
||||
.no-line-break {
|
||||
white-space: normal;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,82 @@
|
|||
@props([
|
||||
'products' => [],
|
||||
'productType' => 'base', // 'base' oder 'upgrade'
|
||||
'formRoute' => '',
|
||||
'formStep' => 3
|
||||
])
|
||||
|
||||
|
||||
|
||||
@if(count($products) > 0)
|
||||
<div class="table-responsive">
|
||||
<table class="table table- m-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ __('abo.' . $productType . '_product') }}</th>
|
||||
<th> </th>
|
||||
<th class="text-right">{{ __('order.unit_price') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($products as $product)
|
||||
|
||||
@php
|
||||
$cartItem = Yard::instance('subscription')->getCartItemByProduct($product->id, 'withTaxFree');
|
||||
$qty = isset($cartItem->qty) ? $cartItem->qty : 0;
|
||||
$rowId = isset($cartItem->rowId) ? $cartItem->rowId : '';
|
||||
@endphp
|
||||
<tr>
|
||||
<td class="text-center align-middle px-0" data-label="{{ __('abo.' . $productType . '_product') }}">
|
||||
<div class="no-line-break input-group-min-w">
|
||||
<div class="input-group d-inline-flex w-auto">
|
||||
<span class="input-group-prepend">
|
||||
<button type="button" class="btn btn-secondary icon-btn md-btn-extra remove-product-qty"
|
||||
data-row-id="{{ $rowId }}"
|
||||
data-product-id="{{ $product->id }}">-</button>
|
||||
</span>
|
||||
<input type="text"
|
||||
class="form-control text-center input-extra table-input-event-onchange"
|
||||
name="{{ $productType }}_product_qty[{{ $product->id }}]"
|
||||
data-row-id="{{ $rowId }}"
|
||||
data-product-id="{{ $product->id }}"
|
||||
value="{{ $qty }}">
|
||||
<span class="input-group-append">
|
||||
<button type="button" class="btn btn-secondary icon-btn md-btn-extra add-product-qty"
|
||||
data-row-id="{{ $rowId }}"
|
||||
data-product-id="{{ $product->id }}">+</button>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td class="p-4" data-label="">
|
||||
<div class="media align-items-center product-inactive" id="product-{{ $product->id }}">
|
||||
@if(count($product->images))
|
||||
<img src="{{ route('product_image', [$product->images->first()->slug]) }}"
|
||||
class="d-block ui-w-100 ui-bordered mr-4"
|
||||
alt="{{ $product->getLang('name') }}">
|
||||
@endif
|
||||
<div class="media-body">
|
||||
<h5 class="d-block text-dark">
|
||||
{{$product->getLang('name')}}
|
||||
<br>{!! get_abo_type_badge($productType) !!}
|
||||
</h5>
|
||||
{!! $product->getLang('copy') !!}
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td class="text-right font-weight-semibold align-middle p-4" data-label="{{ __('order.unit_price') }}">
|
||||
<span class="no-line-break">
|
||||
{{ $product->getFormattedPriceWith(\App\Services\UserService::getTaxFree(), false, \App\Services\UserService::$user_country) }} €
|
||||
</span>
|
||||
@if(\App\Services\UserService::$user_country && \App\Services\UserService::$user_country->currency)
|
||||
<span class="no-line-break">
|
||||
{!! $product->getFormattedPriceCurrencyWith(\App\Services\UserService::getTaxFree(), false, \App\Services\UserService::$user_country) !!}
|
||||
</span>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@endif
|
||||
18
resources/views/portal/abo/componenten/vat-info.blade.php
Normal file
18
resources/views/portal/abo/componenten/vat-info.blade.php
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
<div class="row">
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">{{ __('payment.ordering_country') }}</div>
|
||||
{{ App\Services\UserService::getOrderInfo('billing_state') }}
|
||||
</div>
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">{{ __('payment.country_of_delivery') }}</div>
|
||||
{{ App\Services\UserService::getOrderInfo('shipping_state') }}
|
||||
</div>
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">{{ __('payment.VAT') }}</div>
|
||||
{{ App\Services\UserService::getOrderInfo('tax_free') }}
|
||||
</div>
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">{{ __('payment.reverse_charge_procedure') }}</div>
|
||||
{{ App\Services\UserService::getOrderInfo('user_reverse_charge') }}
|
||||
</div>
|
||||
</div>
|
||||
60
resources/views/portal/abo/my_abo.blade.php
Executable file
60
resources/views/portal/abo/my_abo.blade.php
Executable file
|
|
@ -0,0 +1,60 @@
|
|||
@extends('portal.layouts.layout-2')
|
||||
|
||||
@section('content')
|
||||
|
||||
<h4 class="font-weight-bold py-2 mb-2">
|
||||
{{ __('navigation.my_abo') }}
|
||||
<span class="text-muted">{{ '#'.$user_abo->payone_userid }}</span>
|
||||
</h4>
|
||||
|
||||
@if(Session::has('alert-error'))
|
||||
<div class="col-sm-12">
|
||||
<div class="alert alert-danger p-2 mt-2">
|
||||
<ul>
|
||||
<li>{{ Session::get('alert-error') }}</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="card">
|
||||
@include('admin.abo._detail')
|
||||
</div>
|
||||
|
||||
<div class="card mt-3">
|
||||
@include('admin.customer._customer_detail', ['shopping_user' => $customer_detail])
|
||||
</div>
|
||||
|
||||
{!! Form::open(['action' => route('user_abos_update', [$view, $user_abo->id]), 'class' => 'form-horizontal', 'id'=>'cart-order-form']) !!}
|
||||
<input type="hidden" name="is_for" value="{{ $user_abo->is_for }}">
|
||||
<div class="card mt-3">
|
||||
@include('admin.abo._order_abo')
|
||||
</div>
|
||||
|
||||
@if($comp_products && Yard::instance('shopping')->getNumComp() > 0)
|
||||
<div id="holder_html_view_comp_product">
|
||||
@include('user.order.comp_product')
|
||||
</div>
|
||||
@endif
|
||||
|
||||
{{ Form::close() }}
|
||||
|
||||
<div class="card mt-3 mb-3">
|
||||
@include('admin.abo._executions')
|
||||
</div>
|
||||
|
||||
|
||||
<a href="{{route('user_abos', [$view])}}" class="btn btn-sm btn-default float-right">{{ __('back') }}</a>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('scripts')
|
||||
<script src="{{ asset('/js/iq-modal-cart.js') }}?v=1{{ get_file_last_time('/js/iq-modal-cart.js') }}"></script>
|
||||
<script type="application/javascript">
|
||||
var iqModalCart = IqModalCart.init();
|
||||
$( document ).ready(function() {
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
@endsection
|
||||
174
resources/views/portal/abo/my_abo_create.blade.php
Normal file
174
resources/views/portal/abo/my_abo_create.blade.php
Normal file
|
|
@ -0,0 +1,174 @@
|
|||
@extends('portal.layouts.layout-2')
|
||||
|
||||
@section('content')
|
||||
|
||||
@if ($errors->any())
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="alert alert-danger">
|
||||
<ul>
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<h4 class="font-weight-bold py-2 mb-2">
|
||||
{{__('abo.create_abo')}}
|
||||
</h4>
|
||||
|
||||
<style>
|
||||
.smartwizard-abo .nav-link {
|
||||
pointer-events: none;
|
||||
opacity: 0.7;
|
||||
}
|
||||
.smartwizard-abo .nav-link.active {
|
||||
pointer-events: auto;
|
||||
opacity: 1;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="smartwizard" class="smartwizard-abo">
|
||||
<ul class="card px-4 pt-3 mb-3">
|
||||
<li>
|
||||
<a href="#smartwizard-step-0" class="mb-3">
|
||||
<span class="sw-done-icon ion ion-md-checkmark"></span>
|
||||
<span class="sw-number">1</span>
|
||||
{{__('abo.abo')}}
|
||||
<div class="text-muted small">{{__('abo.info')}}</div>
|
||||
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#smartwizard-step-1" class="mb-3">
|
||||
<span class="sw-done-icon ion ion-md-checkmark"></span>
|
||||
<span class="sw-number">2</span>
|
||||
{{__('abo.data')}}
|
||||
<div class="text-muted small">{{__('abo.check')}}</div>
|
||||
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#smartwizard-step-2" class="mb-3">
|
||||
<span class="sw-done-icon ion ion-md-checkmark"></span>
|
||||
<span class="sw-number">3</span>
|
||||
{{__('abo.basis_product')}}
|
||||
<div class="text-muted small">{{__('abo.choose')}}</div>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#smartwizard-step-3" class="mb-3">
|
||||
<span class="sw-done-icon ion ion-md-checkmark"></span>
|
||||
<span class="sw-number">4</span>
|
||||
{{__('abo.upgrade_products')}}
|
||||
<div class="text-muted small">{{__('abo.choose')}}</div>
|
||||
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#smartwizard-step-4" class="mb-3">
|
||||
<span class="sw-done-icon ion ion-md-checkmark"></span>
|
||||
<span class="sw-number">5</span>
|
||||
{{__('abo.check')}}
|
||||
<div class="text-muted small">{{__('abo.order')}}</div>
|
||||
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="mb-3">
|
||||
<div id="smartwizard-step-0" class="card animated fadeIn">
|
||||
@include('portal.abo._create_info')
|
||||
</div>
|
||||
@if(!isset($no_shopping_user))
|
||||
<div id="smartwizard-step-1" class="card animated fadeIn">
|
||||
@include('portal.abo._create_data')
|
||||
</div>
|
||||
|
||||
<div id="smartwizard-step-2" class="card animated fadeIn">
|
||||
@include('portal.abo._create_basis_product')
|
||||
</div>
|
||||
|
||||
<div id="smartwizard-step-3" class="card animated fadeIn">
|
||||
@include('portal.abo._create_upgrade_products')
|
||||
</div>
|
||||
<div id="smartwizard-step-4" class="card animated fadeIn">
|
||||
@include('portal.abo._create_check')
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('scripts')
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/libs/smartwizard/smartwizard.css') }}">
|
||||
<script src="{{ asset('/vendor/libs/smartwizard/smartwizard.js') }}"></script>
|
||||
<script src="{{ asset('js/product-quantity.js') }}?v={{ get_file_last_time('/js/product-quantity.js') }}"></script>
|
||||
|
||||
<script>
|
||||
$( document ).ready(function() {
|
||||
$('.smartwizard-abo').smartWizard({
|
||||
autoAdjustHeight: true,
|
||||
backButtonSupport: true,
|
||||
useURLhash: false,
|
||||
showStepURLhash: false,
|
||||
selected: '{{$step}}',
|
||||
toolbarSettings: {
|
||||
showNextButton: false,
|
||||
showPreviousButton: false,
|
||||
},
|
||||
/*events: {
|
||||
leaveStep: function(e, anchorObject, stepNumber, stepDirection) {
|
||||
// Formular im aktuellen Schritt finden
|
||||
const $currentForm = $(e.target).find('.tab-pane.active form');
|
||||
if ($currentForm.length) {
|
||||
// Temporäres Formular erstellen und absenden
|
||||
const $tempForm = $('<form>', {
|
||||
'method': 'POST',
|
||||
'action': $currentForm.attr('action'),
|
||||
'style': 'display: none;'
|
||||
});
|
||||
|
||||
// Alle Input-Felder kopieren
|
||||
$currentForm.find('input').each((_, input) => {
|
||||
const $input = $(input);
|
||||
if ($input.attr('type') === 'text') {
|
||||
const value = parseInt($input.val()) || 0;
|
||||
if (value > 0) {
|
||||
$tempForm.append($('<input>', {
|
||||
'type': 'hidden',
|
||||
'name': $input.attr('name'),
|
||||
'value': value
|
||||
}));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// CSRF-Token hinzufügen
|
||||
$tempForm.append($('<input>', {
|
||||
'type': 'hidden',
|
||||
'name': '_token',
|
||||
'value': $('meta[name="csrf-token"]').attr('content')
|
||||
}));
|
||||
|
||||
// Action-Button-Wert hinzufügen
|
||||
$tempForm.append($('<input>', {
|
||||
'type': 'hidden',
|
||||
'name': 'action',
|
||||
'value': 'next'
|
||||
}));
|
||||
|
||||
// Formular zum Body hinzufügen und absenden
|
||||
$('body').append($tempForm);
|
||||
$tempForm.submit();
|
||||
return false; // Verhindert den normalen Schrittwechsel
|
||||
}
|
||||
}
|
||||
}*/
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
114
resources/views/portal/abo/no_shopping_user.blade.php
Normal file
114
resources/views/portal/abo/no_shopping_user.blade.php
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
@extends('portal.layouts.layout-2')
|
||||
|
||||
@section('content')
|
||||
|
||||
@if ($errors->any())
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="alert alert-danger">
|
||||
<ul>
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<h4 class="font-weight-bold py-2 mb-2">
|
||||
{{__('abo.create_abo')}}
|
||||
</h4>
|
||||
|
||||
<div id="smartwizard" class="smartwizard-abo">
|
||||
<ul class="card px-4 pt-3 mb-3">
|
||||
<li>
|
||||
<a href="#smartwizard-step-0" class="mb-3">
|
||||
<span class="sw-done-icon ion ion-md-checkmark"></span>
|
||||
<span class="sw-number">1</span>
|
||||
{{__('abo.abo')}}
|
||||
<div class="text-muted small">{{__('abo.info')}}</div>
|
||||
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#smartwizard-step-1" class="mb-3">
|
||||
<span class="sw-done-icon ion ion-md-checkmark"></span>
|
||||
<span class="sw-number">1</span>
|
||||
{{__('abo.data')}}
|
||||
<div class="text-muted small">{{__('abo.check')}}</div>
|
||||
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#smartwizard-step-2" class="mb-3">
|
||||
<span class="sw-done-icon ion ion-md-checkmark"></span>
|
||||
<span class="sw-number">2</span>
|
||||
{{__('abo.basis_product')}}
|
||||
<div class="text-muted small">{{__('abo.choose')}}</div>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#smartwizard-step-3" class="mb-3">
|
||||
<span class="sw-done-icon ion ion-md-checkmark"></span>
|
||||
<span class="sw-number">3</span>
|
||||
{{__('abo.upgrade_products')}}
|
||||
<div class="text-muted small">{{__('abo.choose')}}</div>
|
||||
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#smartwizard-step-4" class="mb-3">
|
||||
<span class="sw-done-icon ion ion-md-checkmark"></span>
|
||||
<span class="sw-number">4</span>
|
||||
{{__('abo.check')}}
|
||||
<div class="text-muted small">{{__('abo.order')}}</div>
|
||||
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="mb-3">
|
||||
|
||||
<div id="smartwizard-step-0" class="card animated fadeIn">
|
||||
@include('portal.abo._create_info')
|
||||
</div>
|
||||
|
||||
<div id="smartwizard-step-1" class="card animated fadeIn">
|
||||
|
||||
</div>
|
||||
|
||||
<div id="smartwizard-step-2" class="card animated fadeIn">
|
||||
|
||||
</div>
|
||||
|
||||
<div id="smartwizard-step-3" class="card animated fadeIn">
|
||||
|
||||
</div>
|
||||
<div id="smartwizard-step-4" class="card animated fadeIn">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('scripts')
|
||||
<link rel="stylesheet" href="{{ mix('/vendor/libs/smartwizard/smartwizard.css') }}">
|
||||
<script src="{{ mix('/vendor/libs/smartwizard/smartwizard.js') }}"></script>
|
||||
<script>
|
||||
$( document ).ready(function() {
|
||||
$('.smartwizard-abo').smartWizard({
|
||||
autoAdjustHeight: true,
|
||||
backButtonSupport: true,
|
||||
useURLhash: false,
|
||||
showStepURLhash: false,
|
||||
selected: '{{$step}}',
|
||||
toolbarSettings: {
|
||||
showNextButton: false,
|
||||
showPreviousButton: false,
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
53
resources/views/portal/auth/change.blade.php
Normal file
53
resources/views/portal/auth/change.blade.php
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
@extends('portal.layouts.auth')
|
||||
|
||||
@section('content')
|
||||
|
||||
<!-- Content -->
|
||||
|
||||
<div class="authentication-wrapper authentication-2 ui-bg-cover ui-bg-overlay-container px-4" style="background-image: url({{asset('images/back-in2.jpg')}});">
|
||||
<div class="ui-bg-overlay bg-dark opacity-25"></div>
|
||||
|
||||
<div class="authentication-inner py-5">
|
||||
|
||||
<div class="card">
|
||||
|
||||
@include('layouts.includes.header-language')
|
||||
|
||||
<div class="p-4 p-sm-4" style="padding-bottom: 1.5rem !important;">
|
||||
<div class="d-flex justify-content-center align-items-center pb-2 mb-2">
|
||||
<div class="">
|
||||
<div class="w-100 position-relative">
|
||||
<a href="https://www.mivita.care"><img src="{{ asset('/images/logo_mivita.png') }}" alt="mivita.care" class=""></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<form method="POST" class="my-2" action="{{ route('portal.logout_change') }}" aria-label="{{ __('portal.login_button') }}">
|
||||
@csrf
|
||||
<h4 class="text-center mb-4">{{ __('portal.change_login_title') }}</h4>
|
||||
<div class="d-flex flex-column align-items-center m-0 mt-2">
|
||||
<p class="text-center">
|
||||
{{ __('portal.change_login_description') }}
|
||||
</p>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between align-items-center m-0">
|
||||
<button type="submit" class="btn btn-primary btn-block">{{ __('portal.logout_button') }}</button>
|
||||
</div>
|
||||
<div class="d-flex flex-column align-items-center m-0 mt-2">
|
||||
<p class="text-center small border-top pt-2 mt-2">
|
||||
{{ __('portal.change_login_description3') }}
|
||||
</p>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div class="mt-1 text-center justify-content-center">
|
||||
<button type="button" class="btn btn-outline-primary mt-2 btn-sm update_modal_data_load" data-url="{{ route('portal.loading_modal') }}" data-data="data_protection" data-target="#modal-loading">{{__('register.data_protection')}}</button>
|
||||
<button type="button" class="btn btn-outline-primary mt-2 btn-sm update_modal_data_load" data-url="{{ route('portal.loading_modal') }}" data-data="imprint" data-target="#modal-loading">{{__('imprint')}}</button>
|
||||
</div>
|
||||
<div class="mt-1 text-center justify-content-center">
|
||||
<a href="{{ Util::getMyMivitaShopUrl() }}" class="btn btn-secondary mt-2 btn-sm">{{__('portal.back_to_shop')}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
74
resources/views/portal/auth/login.blade.php
Normal file
74
resources/views/portal/auth/login.blade.php
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
@extends('portal.layouts.auth')
|
||||
|
||||
@section('content')
|
||||
|
||||
<!-- Content -->
|
||||
|
||||
<div class="authentication-wrapper authentication-2 ui-bg-cover ui-bg-overlay-container px-4" style="background-image: url({{asset('images/back-in2.jpg')}});">
|
||||
<div class="ui-bg-overlay bg-dark opacity-25"></div>
|
||||
|
||||
<div class="authentication-inner py-5">
|
||||
|
||||
<div class="card">
|
||||
|
||||
@include('layouts.includes.header-language')
|
||||
|
||||
<div class="p-4 p-sm-4" style="padding-bottom: 1.5rem !important;">
|
||||
<!-- Logo -->
|
||||
<div class="d-flex justify-content-center align-items-center pb-2 mb-2">
|
||||
<div class="">
|
||||
<div class="w-100 position-relative">
|
||||
<a href="https://www.mivita.care"><img src="{{ asset('/images/logo_mivita.png') }}" alt="mivita.care" class=""></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- / Logo -->
|
||||
<!-- Form -->
|
||||
<form method="POST" class="my-2" action="{{ route('portal.login.send-otp') }}" aria-label="{{ __('portal.login_button') }}">
|
||||
@csrf
|
||||
<h4 class="text-center mb-4">{{ __('portal.login_title') }}</h4>
|
||||
|
||||
@if(Util::isTestSystem(true))
|
||||
<h5 class="text-center mb-4">TestSystem</h5>
|
||||
@php
|
||||
$email = 'kevin@adametz.media';
|
||||
@endphp
|
||||
@endif
|
||||
<div class="form-group">
|
||||
<label class="form-label">{{ __('portal.login_email') }}</label>
|
||||
<input id="email" type="email" class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}" name="email" value="{{ $email ?? old('email') }}" required autofocus>
|
||||
@if ($errors->has('email'))
|
||||
<span class="invalid-feedback" role="alert">
|
||||
<strong>{{ $errors->first('email') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<div class="d-flex justify-content-between align-items-center m-0">
|
||||
<button type="submit" class="btn btn-primary btn-block">{{ __('portal.login_button') }}</button>
|
||||
</div>
|
||||
|
||||
<div class="d-flex flex-column align-items-center m-0 mt-2 border-top pt-2">
|
||||
<p class="text-center small">
|
||||
{{ __('portal.login_send_otp_description') }}
|
||||
</p>
|
||||
<p class="text-center small border-top pt-2 mt-2">
|
||||
{{ __('portal.login_send_otp_description2') }}
|
||||
</p>
|
||||
</div>
|
||||
</form>
|
||||
<!-- / Form -->
|
||||
|
||||
<div class="mt-1 text-center justify-content-center">
|
||||
<button type="button" class="btn btn-outline-primary mt-2 btn-sm update_modal_data_load" data-url="{{ route('portal.loading_modal') }}" data-data="data_protection" data-target="#modal-loading">{{__('register.data_protection')}}</button>
|
||||
<button type="button" class="btn btn-outline-primary mt-2 btn-sm update_modal_data_load" data-url="{{ route('portal.loading_modal') }}" data-data="imprint" data-target="#modal-loading">{{__('imprint')}}</button>
|
||||
</div>
|
||||
<div class="mt-1 text-center justify-content-center">
|
||||
<a href="{{ Util::getMyMivitaShopUrl() }}" class="btn btn-secondary mt-2 btn-sm">{{__('portal.back_to_shop')}}</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
184
resources/views/portal/auth/verify-otp.blade.php
Normal file
184
resources/views/portal/auth/verify-otp.blade.php
Normal file
|
|
@ -0,0 +1,184 @@
|
|||
@extends('portal.layouts.auth')
|
||||
|
||||
@section('content')
|
||||
|
||||
<style>
|
||||
.otp-input {
|
||||
height: 58px;
|
||||
padding: 0 10px;
|
||||
text-align: center;
|
||||
font-size: 24px;
|
||||
font-weight: bold;
|
||||
border-radius: 8px;
|
||||
border: 1px solid #e0e0e0;
|
||||
transition: all 0.2s ease-in-out;
|
||||
}
|
||||
.otp-input:focus {
|
||||
border-color: #007bff;
|
||||
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
|
||||
}
|
||||
.otp-input:focus-visible {
|
||||
outline: none;
|
||||
}
|
||||
.otp-input:hover {
|
||||
border-color: #007bff;
|
||||
}
|
||||
.otp-input:active {
|
||||
border-color: #007bff;
|
||||
}
|
||||
.otp-input:disabled {
|
||||
background-color: #f8f9fa;
|
||||
border-color: #e9ecef;
|
||||
color: #adb5bd;
|
||||
}
|
||||
.gap-2 {
|
||||
gap: .5rem;
|
||||
}
|
||||
</style>
|
||||
<!-- Content -->
|
||||
|
||||
<div class="authentication-wrapper authentication-2 ui-bg-cover ui-bg-overlay-container px-4" style="background-image: url({{asset('images/back.jpg')}});">
|
||||
<div class="ui-bg-overlay bg-dark opacity-25"></div>
|
||||
|
||||
<div class="authentication-inner py-5">
|
||||
|
||||
<div class="card">
|
||||
|
||||
@include('layouts.includes.header-language')
|
||||
|
||||
<div class="p-4 p-sm-4" style="padding-bottom: 1.5rem !important;">
|
||||
<!-- Logo -->
|
||||
<div class="d-flex justify-content-center align-items-center pb-2 mb-2">
|
||||
<div class="">
|
||||
<div class="w-100 position-relative">
|
||||
<a href="https://www.mivita.care"><img src="{{ asset('/images/logo_mivita.png') }}" alt="mivita.care" class=""></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- / Logo -->
|
||||
<!-- Form -->
|
||||
<form method="POST" class="my-3" action="{{ route('portal.login.verify-otp') }}" aria-label="{{ __('portal.login_button') }}" id="otp-form">
|
||||
@csrf
|
||||
<h4 class="text-center mb-4">{{ __('portal.verify_otp_title') }}</h4>
|
||||
<div class="form-group">
|
||||
<label class="form-label text-center">{{ __('portal.verify_otp_description') }}</label>
|
||||
<div class="mb-3">
|
||||
<div class="d-flex align-items-center gap-2">
|
||||
<input type="text" class="form-control otp-input" maxlength="1" id="otp1" name="otp1" placeholder="" value="{{ isset($otp_value) && strlen($otp_value) === 6 ? $otp_value[0] : '' }}">
|
||||
<input type="text" class="form-control otp-input" maxlength="1" id="otp2" name="otp2" placeholder="" value="{{ isset($otp_value) && strlen($otp_value) === 6 ? $otp_value[1] : '' }}">
|
||||
<input type="text" class="form-control otp-input" maxlength="1" id="otp3" name="otp3" placeholder="" value="{{ isset($otp_value) && strlen($otp_value) === 6 ? $otp_value[2] : '' }}">
|
||||
<input type="text" class="form-control otp-input" maxlength="1" id="otp4" name="otp4" placeholder="" value="{{ isset($otp_value) && strlen($otp_value) === 6 ? $otp_value[3] : '' }}">
|
||||
<input type="text" class="form-control otp-input" maxlength="1" id="otp5" name="otp5" placeholder="" value="{{ isset($otp_value) && strlen($otp_value) === 6 ? $otp_value[4] : '' }}">
|
||||
<input type="text" class="form-control otp-input" maxlength="1" id="otp6" name="otp6" placeholder="" value="{{ isset($otp_value) && strlen($otp_value) === 6 ? $otp_value[5] : '' }}">
|
||||
</div>
|
||||
</div>
|
||||
{{-- Hidden field to combine OTP values --}}
|
||||
<input type="hidden" name="otp" id="otp" value="{{ isset($otp_value) && strlen($otp_value) === 6 ? $otp_value : '' }}">
|
||||
<input type="hidden" name="email" id="email" value="{{ $email }}">
|
||||
</div>
|
||||
@error('otp')
|
||||
<div class="text-danger text-center font-weight-bold mt-1">{{ $message }}</div>
|
||||
@enderror
|
||||
<div class="d-flex justify-content-between align-items-center m-0 mt-3">
|
||||
<button type="submit" class="btn btn-primary btn-block">{{ __('portal.login_button') }}</button>
|
||||
</div>
|
||||
|
||||
<div class="d-flex justify-content-between align-items-center m-0 mt-4">
|
||||
<p class="text-center small">
|
||||
{{ __('portal.verify_otp_resend') }}<br>
|
||||
<a class="btn btn-link btn-xs btn-secondary mt-2" href="{{ route('portal.login.form') }}">{{ __('portal.verify_otp_resend_link') }}</a>
|
||||
</p>
|
||||
</div>
|
||||
</form>
|
||||
<!-- / Form -->
|
||||
|
||||
<div class="mt-2 text-center justify-content-center">
|
||||
<button type="button" class="btn btn-outline-primary mt-2 btn-sm update_modal_data_load" data-url="{{ route('portal.loading_modal') }}" data-data="data_protection" data-target="#modal-loading">{{__('register.data_protection')}}</button>
|
||||
<button type="button" class="btn btn-outline-primary mt-2 btn-sm update_modal_data_load" data-url="{{ route('portal.loading_modal') }}" data-data="imprint" data-target="#modal-loading">{{__('imprint')}}</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('scripts')
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
const inputs = document.querySelectorAll('.otp-input');
|
||||
const otpForm = document.getElementById('otp-form');
|
||||
const hiddenOtpField = document.getElementById('otp');
|
||||
|
||||
inputs.forEach((input, index) => {
|
||||
input.addEventListener('input', (e) => {
|
||||
// Move to next input if current one is filled
|
||||
if (input.value.length === 1 && index < inputs.length - 1) {
|
||||
inputs[index + 1].focus();
|
||||
}
|
||||
combineOtpValues(); // Update hidden field on input
|
||||
});
|
||||
|
||||
input.addEventListener('keydown', (e) => {
|
||||
// Move to previous input on backspace if current one is empty
|
||||
if (e.key === 'Backspace' && input.value.length === 0 && index > 0) {
|
||||
inputs[index - 1].focus();
|
||||
}
|
||||
combineOtpValues(); // Update hidden field on keydown
|
||||
});
|
||||
|
||||
input.addEventListener('paste', (e) => {
|
||||
e.preventDefault();
|
||||
const pasteData = (e.clipboardData || window.clipboardData).getData('text');
|
||||
const digits = pasteData.replace(/\D/g, '').split(''); // Get only digits
|
||||
|
||||
inputs.forEach((inputField, i) => {
|
||||
if (digits[i]) {
|
||||
inputField.value = digits[i];
|
||||
if (i < inputs.length - 1 && digits.length > 1) { // Move focus if pasting multiple digits
|
||||
inputs[i + 1].focus();
|
||||
}
|
||||
} else {
|
||||
inputField.value = ''; // Clear if paste data is shorter
|
||||
}
|
||||
});
|
||||
if(digits.length >= inputs.length) {
|
||||
inputs[inputs.length - 1].focus(); // Focus last field if paste is long enough
|
||||
}
|
||||
combineOtpValues(); // Update hidden field after paste
|
||||
});
|
||||
});
|
||||
|
||||
// Combine OTP values into the hidden field before submitting
|
||||
function combineOtpValues() {
|
||||
let combinedValue = '';
|
||||
inputs.forEach(input => {
|
||||
combinedValue += input.value;
|
||||
});
|
||||
hiddenOtpField.value = combinedValue;
|
||||
console.log(hiddenOtpField.value);
|
||||
}
|
||||
|
||||
// Ensure combined value is updated on form submit
|
||||
otpForm.addEventListener('submit', function(e) {
|
||||
combineOtpValues();
|
||||
// Basic validation: ensure all 6 digits are entered
|
||||
if (hiddenOtpField.value.length !== 6) {
|
||||
e.preventDefault(); // Prevent form submission
|
||||
// Optionally: show an error message to the user
|
||||
alert('Bitte geben Sie alle 6 Ziffern des OTP-Codes ein.');
|
||||
}
|
||||
});
|
||||
|
||||
// Automatically focus the first input field if it's empty
|
||||
if(inputs[0].value === '') {
|
||||
inputs[0].focus();
|
||||
} else if(hiddenOtpField.value.length === 6) {
|
||||
// If prefilled, focus the submit button or last input
|
||||
inputs[inputs.length - 1].focus();
|
||||
}
|
||||
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
437
resources/views/portal/customer/_edit.blade.php
Normal file
437
resources/views/portal/customer/_edit.blade.php
Normal file
|
|
@ -0,0 +1,437 @@
|
|||
<div class="card mb-4">
|
||||
<h5 class="card-header">
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-sm-6">
|
||||
{{ __('customer.customer_billing_address') }}
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-6">
|
||||
<span class="text-tiny float-right">* {{trans('register.required_fields')}}</span>
|
||||
<span class="d-none d-lg-inline">{{ __('Delivery address') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</h5>
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-12 col-lg-6">
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12">
|
||||
<label for="billing_company" class="form-label">{{ __('Company name') }} ({{__('optional')}})</label>
|
||||
{{ Form::text('billing_company', $shopping_user->billing_company, array('placeholder'=>__('Company name'), 'class'=>'form-control', 'id'=>'billing_company', 'tabindex' => 1)) }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-6 {{ $errors->has('billing_salutation') ? 'has-error' : '' }}">
|
||||
<label class="form-label">{{ __('Salutation') }}*</label>
|
||||
<select class="selectpicker" data-style="btn-light" name="billing_salutation" id="billing_salutation" required tabindex="2">
|
||||
{!! HTMLHelper::getSalutation($shopping_user->billing_salutation) !!}
|
||||
</select>
|
||||
@if ($errors->has('billing_salutation'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('billing_salutation') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-6 {{ $errors->has('billing_firstname') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="billing_firstname">{{ __('First name') }}*</label>
|
||||
{{ Form::text('billing_firstname', $shopping_user->billing_firstname, array('placeholder'=>__('First name'), 'class'=>'form-control', 'id'=>'billing_firstname', 'required'=>true, 'tabindex' => 4)) }}
|
||||
@if ($errors->has('billing_firstname'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('billing_firstname') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
|
||||
</div>
|
||||
<div class="form-group col-md-6 {{ $errors->has('billing_lastname') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="billing_lastname">{{ __('Last name') }}*</label>
|
||||
{{ Form::text('billing_lastname', $shopping_user->billing_lastname, array('placeholder'=>__('Last name'), 'class'=>'form-control', 'id'=>'billing_lastname', 'required'=>true, 'tabindex' => 5)) }}
|
||||
@if ($errors->has('billing_lastname'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('billing_lastname') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12 {{ $errors->has('billing_address') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="billing_address">{{ __('Street') }} / {{ __('House number') }}*</label>
|
||||
{{ Form::text('billing_address', $shopping_user->billing_address, array('placeholder'=>__('Street'), 'class'=>'form-control', 'required'=>true, 'id'=>'billing_address', 'tabindex' => 6)) }}
|
||||
@if ($errors->has('billing_address'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('billing_address') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12 {{ $errors->has('billing_address_2') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="billing_address_2">{{ __('Flat Building optional') }}</label>
|
||||
{{ Form::text('billing_address_2', $shopping_user->billing_address_2, array('placeholder'=>__('Flat Building optional'), 'class'=>'form-control', 'id'=>'billing_address_2', 'tabindex' => 6)) }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-6 {{ $errors->has('billing_zipcode') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="billing_zipcode">{{ __('Postcode') }}*</label>
|
||||
{{ Form::text('billing_zipcode', $shopping_user->billing_zipcode, array('placeholder'=>__('Postcode'), 'class'=>'form-control', 'required'=>true, 'id'=>'billing_zipcode', 'tabindex' => 7)) }}
|
||||
@if ($errors->has('billing_zipcode'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('billing_zipcode') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
<div class="form-group col-md-6 {{ $errors->has('billing_city') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="billing_city">{{ __('City') }}*</label>
|
||||
{{ Form::text('billing_city', $shopping_user->billing_city, array('placeholder'=>__('City'), 'class'=>'form-control', 'required'=>true, 'id'=>'billing_city', 'tabindex' => 8)) }}
|
||||
@if ($errors->has('billing_city'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('billing_city') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12 {{ $errors->has('billing_country_id') ? 'has-error' : '' }}">
|
||||
<label class="form-label">{{ __('Country') }}*</label>
|
||||
<select class="selectpicker" name="billing_country_id" id="billing_country_id" data-style="btn-light" data-live-search="true" required tabindex="9">
|
||||
{!! HTMLHelper::getContriesWithMore($shopping_user->billing_country_id) !!}
|
||||
</select>
|
||||
@if ($errors->has('billing_country_id'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('billing_country_id') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12 {{ $errors->has('billing_phone') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="billing_phone">{{ __('Phone') }}</label>
|
||||
{{ Form::text('billing_phone', $shopping_user->billing_phone, array('placeholder'=>__('Phone'), 'class'=>'form-control', 'id'=>'billing_phone', 'tabindex' => 11)) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-lg-6">
|
||||
<div class="d-md-block d-lg-none">
|
||||
<hr>
|
||||
<h5 class="mt-4">{{ __('Delivery address') }}</h5>
|
||||
</div>
|
||||
<div id="show_shipping_address" style="@if($shopping_user->same_as_billing) display:none @endif">
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12">
|
||||
<label for="shipping_company" class="form-label">{{ __('Company name') }} ({{__('optional')}})</label>
|
||||
{{ Form::text('shipping_company', $shopping_user->shipping_company, array('placeholder'=>__('Company name'), 'class'=>'form-control', 'id'=>'shipping_company', 'tabindex' => 16)) }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-6 {{ $errors->has('shipping_salutation') ? 'has-error' : '' }}">
|
||||
<label class="form-label">{{ __('Salutation') }}*</label>
|
||||
<select class="selectpicker" data-style="btn-light" name="shipping_salutation" id="shipping_salutation" required tabindex="17">
|
||||
{!! HTMLHelper::getSalutation($shopping_user->shipping_salutation) !!}
|
||||
</select>
|
||||
@if ($errors->has('shipping_salutation'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('shipping_salutation') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-6 {{ $errors->has('shipping_firstname') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="shipping_firstname">{{ __('First name') }}*</label>
|
||||
{{ Form::text('shipping_firstname', $shopping_user->shipping_firstname, array('placeholder'=>__('First name'), 'class'=>'form-control', 'required'=>true, 'id'=>'shipping_firstname', 'tabindex' => 18)) }}
|
||||
@if ($errors->has('shipping_firstname'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('shipping_firstname') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
<div class="form-group col-md-6 {{ $errors->has('shipping_lastname') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="shipping_lastname">{{ __('Last name') }}*</label>
|
||||
{{ Form::text('shipping_lastname', $shopping_user->shipping_lastname, array('placeholder'=>__('Last name'), 'class'=>'form-control', 'required'=>true, 'id'=>'shipping_lastname', 'tabindex' => 19)) }}
|
||||
@if ($errors->has('shipping_lastname'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('shipping_lastname') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12 {{ $errors->has('shipping_address') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="shipping_address">{{ __('Street') }} / {{ __('House number') }}*</label>
|
||||
{{ Form::text('shipping_address', $shopping_user->shipping_address, array('placeholder'=>__('Street'), 'class'=>'form-control', 'required'=>true, 'id'=>'shipping_address', 'tabindex' => 20)) }}
|
||||
@if ($errors->has('shipping_address'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('shipping_address') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12 {{ $errors->has('shipping_address_2') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="shipping_address_2">{{ __('Flat Building optional') }}</label>
|
||||
{{ Form::text('shipping_address_2', $shopping_user->shipping_address_2, array('placeholder'=>__('Flat Building optional'), 'class'=>'form-control', 'id'=>'shipping_address_2', 'tabindex' => 21)) }}
|
||||
@if ($errors->has('shipping_address_2'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('shipping_address_2') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-6 {{ $errors->has('shipping_zipcode') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="shipping_zipcode">{{ __('Postcode') }}*</label>
|
||||
{{ Form::text('shipping_zipcode', $shopping_user->shipping_zipcode, array('placeholder'=>__('Postcode'), 'class'=>'form-control', 'required'=>true, 'id'=>'shipping_zipcode', 'tabindex' => 22)) }}
|
||||
@if ($errors->has('shipping_zipcode'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('shipping_zipcode') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
|
||||
</div>
|
||||
<div class="form-group col-md-6 {{ $errors->has('shipping_city') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="shipping_city">{{ __('City') }}*</label>
|
||||
{{ Form::text('shipping_city', $shopping_user->shipping_city, array('placeholder'=>__('City'), 'class'=>'form-control', 'required'=>true, 'id'=>'shipping_city', 'tabindex' => 23)) }}
|
||||
@if ($errors->has('shipping_city'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('shipping_city') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12 {{ $errors->has('shipping_country_id') ? 'has-error' : '' }}">
|
||||
<label class="form-label">{{ __('Country') }}*</label>
|
||||
<select class="selectpicker" name="shipping_country_id" id="shipping_country_id" data-style="btn-light" data-live-search="true" required tabindex="24">
|
||||
{!! HTMLHelper::getContriesWithMore($shopping_user->shipping_country_id) !!}
|
||||
</select>
|
||||
@if ($errors->has('shipping_country_id'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('shipping_country_id') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12">
|
||||
<label class="form-label" for="shipping_phone">{{ __('Phone') }}</label>
|
||||
{{ Form::text('shipping_phone', $shopping_user->shipping_phone, array('placeholder'=>__('Phone'), 'class'=>'form-control', 'id'=>'shipping_phone', 'tabindex' => 26)) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="custom-control custom-checkbox m-0">
|
||||
<input type="checkbox" class="custom-control-input" name="same_as_billing" id="same_as_billing" @if($shopping_user->same_as_billing) checked="checked" @endif>
|
||||
<span class="custom-control-label">{{__('Shipping to the same address')}}</span>
|
||||
</label>
|
||||
</div>
|
||||
<hr>
|
||||
</div>
|
||||
</div>
|
||||
@if($isView === 'customer')
|
||||
|
||||
|
||||
|
||||
@endif
|
||||
|
||||
<div class="card mb-4">
|
||||
<div class="card-body">
|
||||
|
||||
<div class="form-group">
|
||||
<label class="custom-control custom-checkbox m-0">
|
||||
<input type="checkbox" class="custom-control-input" name="has_buyed" id="has_buyed" @if($shopping_user->has_buyed) checked="checked" @endif>
|
||||
<span class="custom-control-label">{{ __('customer.customer_has_already_buy') }}</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="alert alert-warning mt-3" id="show_has_buyed" style="display: @if($shopping_user->has_buyed) block @else none @endif;">
|
||||
<label class="custom-control custom-checkbox m-0">
|
||||
<input type="checkbox" class="custom-control-input" name="subscribed" id="subscribed" @if($shopping_user->subscribed) checked="checked" @endif >
|
||||
<span class="custom-control-label">{{ __('customer.newsletter_subscribed_copy1') }}</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12">
|
||||
<label class="form-label" for="remarks">{{ __('Comments') }}</label>
|
||||
{{ Form::textarea('remarks', $shopping_user->remarks, array('placeholder'=>__('Comments'), 'class'=>'form-control', 'rows'=>4, 'id'=>'remarks')) }}
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
{{ Form::hidden('faker_mail', $shopping_user->faker_mail) }}
|
||||
{{ Form::hidden('language', $shopping_user->language) }}
|
||||
|
||||
@if($isView === 'customer-add')
|
||||
{{ Form::hidden('billing_email_1', $billing_email) }}
|
||||
{{ Form::hidden('billing_email-confirm_1', $billing_email) }}
|
||||
@if($shopping_user->faker_mail)
|
||||
{{ Form::hidden('billing_email', $billing_email) }}
|
||||
{{ Form::hidden('billing_email-confirm', $billing_email) }}
|
||||
@else
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-6">
|
||||
<label class="form-label" for="billing_email">{{ __('E-Mail Address') }}*</label>
|
||||
{{ Form::text('billing_email', $billing_email, array('placeholder'=>'E-Mail', 'class'=>'form-control', 'id'=>'billing_email', 'readonly')) }}
|
||||
</div>
|
||||
<div class="form-group col-md-6">
|
||||
<label class="form-label" for="billing_email-confirm">{{ __('Confirm E-Mail') }}*</label>
|
||||
{{ Form::text('billing_email-confirm', $billing_email, array('placeholder'=>__('Confirm E-Mail'), 'class'=>'form-control', 'id'=>'billing_email-confirm', 'readonly')) }}
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
@else
|
||||
@if($shopping_user->faker_mail)
|
||||
{{ Form::hidden('billing_email', $shopping_user->billing_email) }}
|
||||
{{ Form::hidden('billing_email-confirm', $shopping_user->billing_email) }}
|
||||
|
||||
@if($isAdmin != 1)
|
||||
@if ($errors->has('email'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('email') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
<h6 class="card-header bg-light">
|
||||
<a href="#" class="" data-toggle="collapse" data-target="#collapseNewMailAddress" aria-expanded="@if($errors->has('new_email_address')) true @else false @endif" aria-controls="collapseNewMailAddress">
|
||||
<i class="fa fa-caret-expand"></i> {{ __('E-Mail Address') }} {{ __('add') }}
|
||||
</a>
|
||||
</h6>
|
||||
<div class="collapse @if($errors->has('new_email_address')) show @endif" id="collapseNewMailAddress">
|
||||
<div class="form-row mt-2 mb-0">
|
||||
<div class="form-group col-md-12 {{ $errors->has('new_email_address') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="new_email_address">{{ __('E-Mail Address') }}*</label>
|
||||
{{ Form::text('new_email_address', '', array('placeholder'=>__('E-Mail Address'), 'class'=>'form-control', 'id'=>'new_email_address', 'required'=>true ,'tabindex' => 1)) }}
|
||||
@if ($errors->has('new_email_address'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('new_email_address') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
<p class="mt-2">{{ __('customer.customer_sovereignty_info1') }}</p>
|
||||
<button type="submit" class="btn btn-secondary btn-sm" name="action" value="add-mail-shopping-user-store">{{ __('E-Mail Address') }} {{ __('customer.check_and_save') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
@else
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-6">
|
||||
<label class="form-label" for="billing_email">{{ __('E-Mail Address') }}*</label>
|
||||
{{ Form::text('billing_email', $shopping_user->billing_email, array('placeholder'=>'E-Mail', 'class'=>'form-control', 'id'=>'billing_email')) }}
|
||||
</div>
|
||||
<div class="form-group col-md-6">
|
||||
<label class="form-label" for="billing_email-confirm">{{ __('Confirm E-Mail') }}</label>
|
||||
{{ Form::text('billing_email-confirm', $shopping_user->billing_email, array('placeholder'=>__('Confirm E-Mail'), 'class'=>'form-control', 'id'=>'billing_email-confirm')) }}
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="application/javascript">
|
||||
$( document ).ready(function() {
|
||||
|
||||
$('input#has_buyed').on('change', function () {
|
||||
if($(this).prop('checked')){
|
||||
$('input#subscribed').prop('checked', true);
|
||||
$('#show_has_buyed').show('slow');
|
||||
}else{
|
||||
$('input#subscribed').prop('checked', false);
|
||||
$('#show_has_buyed').hide('slow');
|
||||
}
|
||||
});
|
||||
|
||||
// Shipping Address show|hide
|
||||
$("#same_as_billing").on("change", function () {
|
||||
$('#show_shipping_address').slideToggle(200, function () {
|
||||
|
||||
// scroll down to shipping area.
|
||||
if ($('#show_shipping_address').is(":visible")) {
|
||||
_scrollTo('#show_shipping_address', 20);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$.extend( $.validator.messages, {
|
||||
required: "{{__('account.validator_required')}}",
|
||||
maxlength: $.validator.format( "{{__('account.validator_maxlength')}}" ),
|
||||
minlength: $.validator.format( "{{__('account.validator_minlength')}}" ),
|
||||
rangelength: $.validator.format( "{{__('account.validator_rangelength')}}" ),
|
||||
email: "{{__('account.validator_email')}}",
|
||||
url: "{{__('account.validator_url')}}",
|
||||
date: "{{__('account.validator_date')}}",
|
||||
number: "{{__('account.validator_number')}}",
|
||||
digits: "{{__('account.validator_digits')}}",
|
||||
equalTo: "{{__('account.validator_equalTo')}}",
|
||||
range: $.validator.format( "{{__('account.validator_range')}}" ),
|
||||
max: $.validator.format( "{{__('account.validator_max')}}" ),
|
||||
min: $.validator.format( "{{__('account.validator_min')}}" ),
|
||||
creditcard: "{{__('account.validator_creditcard')}}"
|
||||
});
|
||||
|
||||
|
||||
// Set up validator
|
||||
$('#lead-form-validation').validate({
|
||||
rules: {
|
||||
'billing_email-confirm': {
|
||||
required: true,
|
||||
equalTo: "#billing_email"
|
||||
},
|
||||
},
|
||||
errorPlacement: function errorPlacement(error, element) {
|
||||
$(element).parents('.form-group').append(
|
||||
error.addClass('invalid-feedback small d-block')
|
||||
)
|
||||
},
|
||||
highlight: function (element) {
|
||||
if ($(element).hasClass('selectpicker')) {
|
||||
$(element).parent().addClass('is-invalid');
|
||||
}
|
||||
$(element).addClass('is-invalid');
|
||||
},
|
||||
unhighlight: function (element) {
|
||||
$(element).removeClass('is-invalid');
|
||||
$(element).parents('.form-group').find('.is-invalid').removeClass('is-invalid');
|
||||
},
|
||||
messages : {
|
||||
required: "{{__('This field is required.')}}",
|
||||
country_id : {
|
||||
required: "{{__('This field is required.')}}",
|
||||
},
|
||||
salutation : {
|
||||
required: "{{__('please specify')}}",
|
||||
},
|
||||
first_name : {
|
||||
required: "{{__('This field is required.')}}",
|
||||
},
|
||||
last_name : {
|
||||
required: "{{__('This field is required.')}}",
|
||||
},
|
||||
zipcode : {
|
||||
required: "{{__('This field is required.')}}",
|
||||
},
|
||||
address : {
|
||||
required: "{{__('This field is required.')}}",
|
||||
},
|
||||
city : {
|
||||
required: "{{__('This field is required.')}}",
|
||||
},
|
||||
equalTo : "{{__('Please enter the same value again.')}}",
|
||||
'billing_email-confirm' : {
|
||||
equalTo : "{{__('Please enter the same value again.')}}",
|
||||
required: "{{__('This field is required.')}}",
|
||||
},
|
||||
billing_email: {
|
||||
required : "{{__('This field is required.')}}",
|
||||
email: "{{ __('Please enter a valid email address.') }}",
|
||||
remote : "{{ __('This E-mail is already in use.') }}"
|
||||
},
|
||||
},
|
||||
onkeyup: false
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
328
resources/views/portal/customer/_edit_form.blade.php
Normal file
328
resources/views/portal/customer/_edit_form.blade.php
Normal file
|
|
@ -0,0 +1,328 @@
|
|||
<div class="card mb-4">
|
||||
<h5 class="card-header">
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-sm-6">
|
||||
{{ __('customer.customer_billing_address') }}
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-6">
|
||||
<span class="text-tiny float-right">* {{trans('register.required_fields')}}</span>
|
||||
<span class="d-none d-lg-inline">{{ __('Delivery address') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</h5>
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-12 col-lg-6">
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12">
|
||||
<label for="billing_company" class="form-label">{{ __('Company name') }} ({{__('optional')}})</label>
|
||||
{{ Form::text('billing_company', $shopping_user->billing_company, array('placeholder'=>__('Company name'), 'class'=>'form-control', 'id'=>'billing_company', 'tabindex' => 1)) }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-6 {{ $errors->has('billing_salutation') ? 'has-error' : '' }}">
|
||||
<label class="form-label">{{ __('Salutation') }}*</label>
|
||||
<select class="selectpicker" data-style="btn-light" name="billing_salutation" id="billing_salutation" required tabindex="2">
|
||||
{!! HTMLHelper::getSalutation($shopping_user->billing_salutation) !!}
|
||||
</select>
|
||||
@if ($errors->has('billing_salutation'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('billing_salutation') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-6 {{ $errors->has('billing_firstname') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="billing_firstname">{{ __('First name') }}*</label>
|
||||
{{ Form::text('billing_firstname', $shopping_user->billing_firstname, array('placeholder'=>__('First name'), 'class'=>'form-control', 'id'=>'billing_firstname', 'required'=>true, 'tabindex' => 4)) }}
|
||||
@if ($errors->has('billing_firstname'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('billing_firstname') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
|
||||
</div>
|
||||
<div class="form-group col-md-6 {{ $errors->has('billing_lastname') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="billing_lastname">{{ __('Last name') }}*</label>
|
||||
{{ Form::text('billing_lastname', $shopping_user->billing_lastname, array('placeholder'=>__('Last name'), 'class'=>'form-control', 'id'=>'billing_lastname', 'required'=>true, 'tabindex' => 5)) }}
|
||||
@if ($errors->has('billing_lastname'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('billing_lastname') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12 {{ $errors->has('billing_address') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="billing_address">{{ __('Street') }} / {{ __('House number') }}*</label>
|
||||
{{ Form::text('billing_address', $shopping_user->billing_address, array('placeholder'=>__('Street'), 'class'=>'form-control', 'required'=>true, 'id'=>'billing_address', 'tabindex' => 6)) }}
|
||||
@if ($errors->has('billing_address'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('billing_address') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12 {{ $errors->has('billing_address_2') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="billing_address_2">{{ __('Flat Building optional') }}</label>
|
||||
{{ Form::text('billing_address_2', $shopping_user->billing_address_2, array('placeholder'=>__('Flat Building optional'), 'class'=>'form-control', 'id'=>'billing_address_2', 'tabindex' => 6)) }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-6 {{ $errors->has('billing_zipcode') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="billing_zipcode">{{ __('Postcode') }}*</label>
|
||||
{{ Form::text('billing_zipcode', $shopping_user->billing_zipcode, array('placeholder'=>__('Postcode'), 'class'=>'form-control', 'required'=>true, 'id'=>'billing_zipcode', 'tabindex' => 7)) }}
|
||||
@if ($errors->has('billing_zipcode'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('billing_zipcode') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
<div class="form-group col-md-6 {{ $errors->has('billing_city') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="billing_city">{{ __('City') }}*</label>
|
||||
{{ Form::text('billing_city', $shopping_user->billing_city, array('placeholder'=>__('City'), 'class'=>'form-control', 'required'=>true, 'id'=>'billing_city', 'tabindex' => 8)) }}
|
||||
@if ($errors->has('billing_city'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('billing_city') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12 {{ $errors->has('billing_country_id') ? 'has-error' : '' }}">
|
||||
<label class="form-label">{{ __('Country') }}*</label>
|
||||
<select class="selectpicker" name="billing_country_id" id="billing_country_id" data-style="btn-light" data-live-search="true" required tabindex="9">
|
||||
{!! HTMLHelper::getContriesWithMore($shopping_user->billing_country_id) !!}
|
||||
</select>
|
||||
@if ($errors->has('billing_country_id'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('billing_country_id') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12 {{ $errors->has('billing_phone') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="billing_phone">{{ __('Phone') }}</label>
|
||||
{{ Form::text('billing_phone', $shopping_user->billing_phone, array('placeholder'=>__('Phone'), 'class'=>'form-control', 'id'=>'billing_phone', 'tabindex' => 11)) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-lg-6">
|
||||
<div class="d-md-block d-lg-none">
|
||||
<hr>
|
||||
<h5 class="mt-4">{{ __('Delivery address') }}</h5>
|
||||
</div>
|
||||
<div id="show_shipping_address" style="@if($shopping_user->same_as_billing) display:none @endif">
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12">
|
||||
<label for="shipping_company" class="form-label">{{ __('Company name') }} ({{__('optional')}})</label>
|
||||
{{ Form::text('shipping_company', $shopping_user->shipping_company, array('placeholder'=>__('Company name'), 'class'=>'form-control', 'id'=>'shipping_company', 'tabindex' => 16)) }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-6 {{ $errors->has('shipping_salutation') ? 'has-error' : '' }}">
|
||||
<label class="form-label">{{ __('Salutation') }}*</label>
|
||||
<select class="selectpicker" data-style="btn-light" name="shipping_salutation" id="shipping_salutation" required tabindex="17">
|
||||
{!! HTMLHelper::getSalutation($shopping_user->shipping_salutation) !!}
|
||||
</select>
|
||||
@if ($errors->has('shipping_salutation'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('shipping_salutation') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-6 {{ $errors->has('shipping_firstname') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="shipping_firstname">{{ __('First name') }}*</label>
|
||||
{{ Form::text('shipping_firstname', $shopping_user->shipping_firstname, array('placeholder'=>__('First name'), 'class'=>'form-control', 'required'=>true, 'id'=>'shipping_firstname', 'tabindex' => 18)) }}
|
||||
@if ($errors->has('shipping_firstname'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('shipping_firstname') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
<div class="form-group col-md-6 {{ $errors->has('shipping_lastname') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="shipping_lastname">{{ __('Last name') }}*</label>
|
||||
{{ Form::text('shipping_lastname', $shopping_user->shipping_lastname, array('placeholder'=>__('Last name'), 'class'=>'form-control', 'required'=>true, 'id'=>'shipping_lastname', 'tabindex' => 19)) }}
|
||||
@if ($errors->has('shipping_lastname'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('shipping_lastname') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12 {{ $errors->has('shipping_address') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="shipping_address">{{ __('Street') }} / {{ __('House number') }}*</label>
|
||||
{{ Form::text('shipping_address', $shopping_user->shipping_address, array('placeholder'=>__('Street'), 'class'=>'form-control', 'required'=>true, 'id'=>'shipping_address', 'tabindex' => 20)) }}
|
||||
@if ($errors->has('shipping_address'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('shipping_address') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12 {{ $errors->has('shipping_address_2') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="shipping_address_2">{{ __('Flat Building optional') }}</label>
|
||||
{{ Form::text('shipping_address_2', $shopping_user->shipping_address_2, array('placeholder'=>__('Flat Building optional'), 'class'=>'form-control', 'id'=>'shipping_address_2', 'tabindex' => 21)) }}
|
||||
@if ($errors->has('shipping_address_2'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('shipping_address_2') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-6 {{ $errors->has('shipping_zipcode') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="shipping_zipcode">{{ __('Postcode') }}*</label>
|
||||
{{ Form::text('shipping_zipcode', $shopping_user->shipping_zipcode, array('placeholder'=>__('Postcode'), 'class'=>'form-control', 'required'=>true, 'id'=>'shipping_zipcode', 'tabindex' => 22)) }}
|
||||
@if ($errors->has('shipping_zipcode'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('shipping_zipcode') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
|
||||
</div>
|
||||
<div class="form-group col-md-6 {{ $errors->has('shipping_city') ? 'has-error' : '' }}">
|
||||
<label class="form-label" for="shipping_city">{{ __('City') }}*</label>
|
||||
{{ Form::text('shipping_city', $shopping_user->shipping_city, array('placeholder'=>__('City'), 'class'=>'form-control', 'required'=>true, 'id'=>'shipping_city', 'tabindex' => 23)) }}
|
||||
@if ($errors->has('shipping_city'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('shipping_city') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12 {{ $errors->has('shipping_country_id') ? 'has-error' : '' }}">
|
||||
<label class="form-label">{{ __('Country') }}*</label>
|
||||
<select class="selectpicker" name="shipping_country_id" id="shipping_country_id" data-style="btn-light" data-live-search="true" required tabindex="24">
|
||||
{!! HTMLHelper::getContriesWithMore($shopping_user->shipping_country_id) !!}
|
||||
</select>
|
||||
@if ($errors->has('shipping_country_id'))
|
||||
<span class="help-block">
|
||||
<strong>{{ $errors->first('shipping_country_id') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12">
|
||||
<label class="form-label" for="shipping_phone">{{ __('Phone') }}</label>
|
||||
{{ Form::text('shipping_phone', $shopping_user->shipping_phone, array('placeholder'=>__('Phone'), 'class'=>'form-control', 'id'=>'shipping_phone', 'tabindex' => 26)) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="custom-control custom-checkbox m-0">
|
||||
<input type="checkbox" class="custom-control-input" name="same_as_billing" id="same_as_billing" @if($shopping_user->same_as_billing) checked="checked" @endif>
|
||||
<span class="custom-control-label">{{__('Shipping to the same address')}}</span>
|
||||
</label>
|
||||
</div>
|
||||
<hr>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="application/javascript">
|
||||
$( document ).ready(function() {
|
||||
|
||||
// Shipping Address show|hide
|
||||
$("#same_as_billing").on("change", function () {
|
||||
$('#show_shipping_address').slideToggle(200, function () {
|
||||
|
||||
// scroll down to shipping area.
|
||||
if ($('#show_shipping_address').is(":visible")) {
|
||||
_scrollTo('#show_shipping_address', 20);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$.extend( $.validator.messages, {
|
||||
required: "{{__('account.validator_required')}}",
|
||||
maxlength: $.validator.format( "{{__('account.validator_maxlength')}}" ),
|
||||
minlength: $.validator.format( "{{__('account.validator_minlength')}}" ),
|
||||
rangelength: $.validator.format( "{{__('account.validator_rangelength')}}" ),
|
||||
email: "{{__('account.validator_email')}}",
|
||||
url: "{{__('account.validator_url')}}",
|
||||
date: "{{__('account.validator_date')}}",
|
||||
number: "{{__('account.validator_number')}}",
|
||||
digits: "{{__('account.validator_digits')}}",
|
||||
equalTo: "{{__('account.validator_equalTo')}}",
|
||||
range: $.validator.format( "{{__('account.validator_range')}}" ),
|
||||
max: $.validator.format( "{{__('account.validator_max')}}" ),
|
||||
min: $.validator.format( "{{__('account.validator_min')}}" ),
|
||||
creditcard: "{{__('account.validator_creditcard')}}"
|
||||
});
|
||||
|
||||
|
||||
// Set up validator
|
||||
$('#lead-form-validation').validate({
|
||||
rules: {
|
||||
'billing_email-confirm': {
|
||||
required: true,
|
||||
equalTo: "#billing_email"
|
||||
},
|
||||
},
|
||||
errorPlacement: function errorPlacement(error, element) {
|
||||
$(element).parents('.form-group').append(
|
||||
error.addClass('invalid-feedback small d-block')
|
||||
)
|
||||
},
|
||||
highlight: function (element) {
|
||||
if ($(element).hasClass('selectpicker')) {
|
||||
$(element).parent().addClass('is-invalid');
|
||||
}
|
||||
$(element).addClass('is-invalid');
|
||||
},
|
||||
unhighlight: function (element) {
|
||||
$(element).removeClass('is-invalid');
|
||||
$(element).parents('.form-group').find('.is-invalid').removeClass('is-invalid');
|
||||
},
|
||||
messages : {
|
||||
required: "{{__('This field is required.')}}",
|
||||
country_id : {
|
||||
required: "{{__('This field is required.')}}",
|
||||
},
|
||||
salutation : {
|
||||
required: "{{__('please specify')}}",
|
||||
},
|
||||
first_name : {
|
||||
required: "{{__('This field is required.')}}",
|
||||
},
|
||||
last_name : {
|
||||
required: "{{__('This field is required.')}}",
|
||||
},
|
||||
zipcode : {
|
||||
required: "{{__('This field is required.')}}",
|
||||
},
|
||||
address : {
|
||||
required: "{{__('This field is required.')}}",
|
||||
},
|
||||
city : {
|
||||
required: "{{__('This field is required.')}}",
|
||||
},
|
||||
equalTo : "{{__('Please enter the same value again.')}}",
|
||||
'billing_email-confirm' : {
|
||||
equalTo : "{{__('Please enter the same value again.')}}",
|
||||
required: "{{__('This field is required.')}}",
|
||||
},
|
||||
billing_email: {
|
||||
required : "{{__('This field is required.')}}",
|
||||
email: "{{ __('Please enter a valid email address.') }}",
|
||||
remote : "{{ __('This E-mail is already in use.') }}"
|
||||
},
|
||||
},
|
||||
onkeyup: false
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
33
resources/views/portal/customer/edit.blade.php
Executable file
33
resources/views/portal/customer/edit.blade.php
Executable file
|
|
@ -0,0 +1,33 @@
|
|||
@extends('portal.layouts.layout-2')
|
||||
|
||||
@section('content')
|
||||
|
||||
@if ($errors->any())
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="alert alert-danger">
|
||||
<ul>
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<h4 class="font-weight-bold py-2 mb-2">
|
||||
{{ __('navigation.my_data') }}
|
||||
</h4>
|
||||
|
||||
{!! Form::open(['action' => route('portal.my_data.store'), 'method' => 'POST', 'class' => 'form-horizontal', 'id'=>'lead-form-validation']) !!}
|
||||
@include('portal.customer._edit_form')
|
||||
<div class="text-left mt-3">
|
||||
<button type="submit" class="btn btn-secondary" name="action" value="shopping-user-store">{{ __('save changes') }}</button>
|
||||
</div>
|
||||
{!! Form::close() !!}
|
||||
|
||||
|
||||
|
||||
|
||||
@endsection
|
||||
32
resources/views/portal/dashboard.blade.php
Executable file
32
resources/views/portal/dashboard.blade.php
Executable file
|
|
@ -0,0 +1,32 @@
|
|||
@extends('portal.layouts.layout-2')
|
||||
|
||||
@section('content')
|
||||
|
||||
@if ($errors->any())
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="alert alert-danger">
|
||||
<ul>
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
<h4 class="media align-items-center font-weight-bold py-3 mb-2">
|
||||
{{-- <img src="assets/img/avatars/1.png" alt="" class="ui-w-50 rounded-circle"> --}}
|
||||
<div class="media-body ml-3">
|
||||
{{ __('home.welcome_back') }}, @if($user->shopping_user_id) {{ $user->name }} @else {{ __('portal.guest') }} @endif
|
||||
<div class="text-muted text-tiny mt-1"><small class="font-weight-normal">{{ __('home.today_is') }} {{__('cal.weekdays.'.$now->format('l'))}}, {{$now->format('j')}}. {{__('cal.months.'.$now->format('F'))}} {{$now->format('Y')}}</small></div>
|
||||
</div>
|
||||
</h4>
|
||||
|
||||
|
||||
<hr class="container-m-nx mt-0 mb-4">
|
||||
|
||||
<div class="row">
|
||||
@include('portal.dashboard.settings')
|
||||
</div>
|
||||
@endsection
|
||||
66
resources/views/portal/dashboard/settings.blade.php
Normal file
66
resources/views/portal/dashboard/settings.blade.php
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
|
||||
<div class="col-md-6">
|
||||
<div class="card mb-4">
|
||||
<h5 class="card-header with-elements">
|
||||
<div class="card-header-title">{{ __('navigation.my_data') }}</div>
|
||||
</h5>
|
||||
<div class="card-body">
|
||||
@if (!$user->shopping_user_id)
|
||||
<p>{{ __('portal.change_my_data_empty') }}</p>
|
||||
@else
|
||||
<p>{{ __('portal.change_my_data') }}</p>
|
||||
@endif
|
||||
<a href="{{ route('portal.my_data.edit') }}" class="btn btn-secondary"><i
|
||||
class="ion ion-md-person text-default mr-1"></i> {{ __('navigation.my_data') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="card mb-4">
|
||||
<h5 class="card-header with-elements">
|
||||
<div class="card-header-title">{{ __('navigation.my_orders') }}</div>
|
||||
</h5>
|
||||
<div class="card-body">
|
||||
@if (!$user->shopping_user_id)
|
||||
<p>{{ __('portal.my_orders_empty') }}</p>
|
||||
@else
|
||||
<p>{{ __('portal.my_orders_info') }}</p>
|
||||
@endif
|
||||
<a href="{{ route('portal.my_orders') }}" class="btn btn-secondary"><i
|
||||
class="ion ion-md-cart text-default mr-1"></i> {{ __('navigation.my_orders') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="card mb-4">
|
||||
<h5 class="card-header with-elements">
|
||||
<div class="card-header-title">{{ __('navigation.myabo') }}</div>
|
||||
</h5>
|
||||
<div class="card-body">
|
||||
@if (!$user->shopping_user_id)
|
||||
<p>{{ __('portal.my_subscriptions_empty') }}</p>
|
||||
@else
|
||||
<p>{{ __('portal.my_subscriptions_info') }}</p>
|
||||
@endif
|
||||
<a href="{{ route('portal.my_subscriptions') }}" class="btn btn-secondary"><i
|
||||
class="ion ion-md-refresh-circle text-default mr-1"></i> {{ __('navigation.myabo') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="card mb-4">
|
||||
<h5 class="card-header with-elements">
|
||||
<div class="card-header-title">{{ __('navigation.logout') }}</div>
|
||||
</h5>
|
||||
<div class="card-body">
|
||||
<p> {{ __('home.log_out_and_see_you_soon') }}</p>
|
||||
<a href="{{ route('portal.logout') }}" class="btn btn-primary"><i
|
||||
class="ion ion-ios-power text-default mr-1"></i> {{ __('navigation.logout') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
192
resources/views/portal/layout/application.blade.php
Normal file
192
resources/views/portal/layout/application.blade.php
Normal file
|
|
@ -0,0 +1,192 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<html lang="{{ app()->getLocale() }}" class="default-style layout-collapsed">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="x-ua-compatible" content="IE=edge,chrome=1">
|
||||
<meta name="description" content="">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||
|
||||
<title>{{ config('app.name') }}</title>
|
||||
|
||||
<!-- Main font -->
|
||||
<link rel="stylesheet" href="{{ asset('/fonts/roboto-pacifico.css?v=1') }}">
|
||||
<!-- Icons. Uncomment required icon fonts -->
|
||||
<link rel="stylesheet" href="{{ mix('/vendor/fonts/fontawesome.css') }}">
|
||||
<link rel="stylesheet" href="{{ mix('/vendor/fonts/ionicons.css') }}">
|
||||
<link rel="stylesheet" href="{{ mix('/vendor/fonts/linearicons.css') }}">
|
||||
<link rel="stylesheet" href="{{ mix('/vendor/fonts/open-iconic.css') }}">
|
||||
<link rel="stylesheet" href="{{ mix('/vendor/fonts/pe-icon-7-stroke.css') }}">
|
||||
|
||||
<!-- Core stylesheets -->
|
||||
<link rel="stylesheet" href="{{ mix('/vendor/css/bootstrap.css') }}">
|
||||
<link rel="stylesheet" href="{{ mix('/vendor/css/appwork.css') }}">
|
||||
<link rel="stylesheet" href="{{ mix('/vendor/css/theme-corporate.css') }}">
|
||||
<link rel="stylesheet" href="{{ mix('/vendor/css/colors.css') }}">
|
||||
<link rel="stylesheet" href="{{ mix('/vendor/css/uikit.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/css/mycolors.css') }}">
|
||||
|
||||
<link rel="stylesheet" href="{{ mix('/vendor/libs/growl/growl.css') }}">
|
||||
<link rel="stylesheet" href="{{ mix('/vendor/libs/bootstrap-select/bootstrap-select.css') }}">
|
||||
<link rel="stylesheet" href="{{ mix('/vendor/libs/select2/select2.css') }}">
|
||||
<link rel="stylesheet" href="{{ mix('/vendor/libs/datatables/datatables.css') }}">
|
||||
<link rel="stylesheet" href="{{ mix('/vendor/libs/bootstrap-datepicker/bootstrap-datepicker.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/libs/bootstrap-material-datetimepicker/bootstrap-material-datetimepicker.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/libs/summernote/dist/summernote-bs4.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/libs/slim-image-cropper/slim/slim.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/libs/dropzone/dropzone.css?v=1') }}">
|
||||
|
||||
|
||||
<!-- Layout helpers -->
|
||||
<script src="{{ mix('/vendor/js/layout-helpers.js') }}"></script>
|
||||
|
||||
<!-- Libs -->
|
||||
|
||||
<!-- `perfect-scrollbar` library required by SideNav plugin -->
|
||||
<link rel="stylesheet" href="{{ mix('/vendor/libs/perfect-scrollbar/perfect-scrollbar.css') }}">
|
||||
|
||||
@yield('styles')
|
||||
|
||||
<!-- Application stylesheets -->
|
||||
<link rel="stylesheet" href="{{ mix('/css/application.css') }}?v=1{{ get_file_last_time('css/application.css') }}">
|
||||
<script src="{{ asset('/js/jquery.min.js') }}"></script>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="{{ asset('/css/cookieconsent.min.css') }}" />
|
||||
<script src="{{ asset('/js/cookieconsent.min.js') }}"></script>
|
||||
<script>
|
||||
window.addEventListener("load", function(){
|
||||
window.cookieconsent.initialise({
|
||||
"palette": {
|
||||
"popup": {
|
||||
"background": "#b5c49b",
|
||||
"text": "#ffffff"
|
||||
},
|
||||
"button": {
|
||||
"background": "#d7d700",
|
||||
"text": "#ffffff"
|
||||
}
|
||||
},
|
||||
"content": {
|
||||
"message": "{{__('This website uses cookies') }}",
|
||||
"dismiss": "{{__('OK')}}",
|
||||
"link": "{{__('register.data_protection')}}",
|
||||
"href": "{{ url('datenschutz') }}",
|
||||
"target": "_blank",
|
||||
}
|
||||
})});
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
@yield('layout-content')
|
||||
|
||||
<div class="modal fade" id="modals-load-content">
|
||||
<div class="modal-dialog modal-lg">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Core scripts -->
|
||||
<script src="{{ mix('/vendor/libs/popper/popper.js') }}"></script>
|
||||
<script src="{{ mix('/vendor/js/bootstrap.js') }}"></script>
|
||||
<script src="{{ mix('/vendor/js/sidenav.js') }}"></script>
|
||||
<script src="{{ mix('/vendor/libs/growl/growl.js') }}"></script>
|
||||
<script src="{{ asset('/vendor/libs/moment-develop/min/moment.min.js') }}"></script>
|
||||
<script src="{{ asset('/vendor/libs/moment-develop/locale/de.js') }}"></script>
|
||||
|
||||
<script src="{{ mix('/vendor/libs/validate/validate.js') }}"></script>
|
||||
|
||||
<script src="{{ mix('/vendor/libs/bootstrap-select/bootstrap-select.js') }}"></script>
|
||||
<script src="{{ mix('/vendor/libs/select2/select2.js') }}"></script>
|
||||
<script src="{{ mix('/vendor/libs/datatables/datatables.js') }}"></script>
|
||||
|
||||
<script src="{{ mix('/vendor/libs/bootstrap-datepicker/bootstrap-datepicker.js') }}"></script>
|
||||
<script src="{{asset('/js/bootstrap-datepicker.de.min.js')}}"></script>
|
||||
|
||||
<script src="{{ asset('/vendor/libs/bootstrap-material-datetimepicker/bootstrap-material-datetimepicker.js') }}"></script>
|
||||
|
||||
<script src="{{ asset('/vendor/libs/summernote/dist/summernote-bs4.min.js') }}"></script>
|
||||
<script src="{{ asset('/vendor/libs/summernote/lang/summernote-de-DE.js') }}"></script>
|
||||
<script src="{{ asset('/vendor/libs/summernote-cleaner/summernote-cleaner.js') }}"></script>
|
||||
|
||||
|
||||
<script src="{{ asset('/vendor/libs/slim-image-cropper/slim/slim.kickstart.min.js') }}"></script>
|
||||
<script src="{{ asset('/vendor/libs/dropzone/dropzone.js?v=1')}}"></script>
|
||||
<script src="{{ asset('/js/forms_file-upload.js?v=1') }}"></script>
|
||||
|
||||
<script src="{{ asset('/vendor/libs/clipboard/clipboard.min.js')}}"></script>
|
||||
|
||||
<!-- `perfect-scrollbar` library required by SideNav plugin -->
|
||||
<script src="{{ mix('/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') }}"></script>
|
||||
|
||||
<script src="{{ asset('/js/shopping_card.js') }}?v=1{{ get_file_last_time('/js/shopping_card.js') }}"></script>
|
||||
|
||||
<!-- Application javascripts -->
|
||||
<script src="{{ mix('/js/application.js') }}"></script>
|
||||
<script src="{{ asset('/js/custom.js') }}?v=1{{ get_file_last_time('/js/custom.js') }}"></script>
|
||||
|
||||
|
||||
@yield('scripts')
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
|
||||
$('.summernote').summernote({
|
||||
height: 140,
|
||||
lang: 'de-DE',
|
||||
cleaner:{
|
||||
action: 'both', // both|button|paste 'button' only cleans via toolbar button, 'paste' only clean when pasting content, both does both options.
|
||||
newline: '<br>', // Summernote's default is to use '<p><br></p>'
|
||||
notStyle: 'position:absolute;top:0;left:0;right:0', // Position of Notification
|
||||
icon: '<i class="note-icon">[Your Button]</i>',
|
||||
keepHtml: false, // Remove all Html formats
|
||||
keepOnlyTags: ['<p>', '<br>', '<ul>', '<li>', '<b>', '<strong>','<i>', '<a>'], // If keepHtml is true, remove all tags except these
|
||||
keepClasses: false, // Remove Classes
|
||||
badTags: ['style', 'script', 'applet', 'embed', 'noframes', 'noscript', 'html'], // Remove full tags with contents
|
||||
badAttributes: ['style', 'start'], // Remove attributes from remaining tags
|
||||
limitChars: false, // 0/false|# 0/false disables option
|
||||
limitDisplay: 'both', // text|html|both
|
||||
limitStop: false // true/false
|
||||
}
|
||||
});
|
||||
|
||||
$('.summernote-small').summernote({
|
||||
height: 140,
|
||||
lang: 'de-DE',
|
||||
toolbar: [
|
||||
// [groupName, [list of button]]
|
||||
['style', ['style']],
|
||||
['style', ['bold', 'italic', 'underline', 'clear']],
|
||||
['fontsize', ['fontsize']],
|
||||
['color', ['color']],
|
||||
['para', ['ul', 'ol', 'paragraph']],
|
||||
['height', ['height']],
|
||||
['view',['fullscreen','codeview']],
|
||||
|
||||
],
|
||||
cleaner:{
|
||||
action: 'both', // both|button|paste 'button' only cleans via toolbar button, 'paste' only clean when pasting content, both does both options.
|
||||
newline: '<br>', // Summernote's default is to use '<p><br></p>'
|
||||
notStyle: 'position:absolute;top:0;left:0;right:0', // Position of Notification
|
||||
icon: '<i class="note-icon">[Your Button]</i>',
|
||||
keepHtml: false, // Remove all Html formats
|
||||
keepOnlyTags: ['<p>', '<br>', '<ul>', '<li>', '<b>', '<strong>','<i>', '<a>'], // If keepHtml is true, remove all tags except these
|
||||
keepClasses: false, // Remove Classes
|
||||
badTags: ['style', 'script', 'applet', 'embed', 'noframes', 'noscript', 'html'], // Remove full tags with contents
|
||||
badAttributes: ['style', 'start'], // Remove attributes from remaining tags
|
||||
limitChars: false, // 0/false|# 0/false disables option
|
||||
limitDisplay: 'both', // text|html|both
|
||||
limitStop: false // true/false
|
||||
}
|
||||
});
|
||||
$('.note-status-output').hide();
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
136
resources/views/portal/layouts/application.blade.php
Normal file
136
resources/views/portal/layouts/application.blade.php
Normal file
|
|
@ -0,0 +1,136 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<html lang="{{ app()->getLocale() }}" class="default-style layout-collapsed">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="x-ua-compatible" content="IE=edge,chrome=1">
|
||||
<meta name="description" content="">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||
|
||||
<title>{{ config('app.name') }}</title>
|
||||
|
||||
<!-- Main font -->
|
||||
<link rel="stylesheet" href="{{ asset('/fonts/roboto-pacifico.css?v=1') }}">
|
||||
<!-- Icons. Uncomment required icon fonts -->
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/fonts/fontawesome.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/fonts/ionicons.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/fonts/linearicons.css') }}">
|
||||
|
||||
<!-- Core stylesheets -->
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/css/bootstrap.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/css/appwork.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/css/theme-corporate.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/css/colors.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/css/uikit.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/css/mycolors.css') }}">
|
||||
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/libs/growl/growl.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/libs/bootstrap-select/bootstrap-select.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/libs/select2/select2.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/libs/datatables/datatables.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/libs/bootstrap-datepicker/bootstrap-datepicker.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/libs/bootstrap-material-datetimepicker/bootstrap-material-datetimepicker.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/libs/summernote/dist/summernote-bs4.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/libs/slim-image-cropper/slim/slim.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/libs/dropzone/dropzone.css?v=1') }}">
|
||||
|
||||
|
||||
<!-- Layout helpers -->
|
||||
<script src="{{ asset('/vendor/js/layout-helpers.js') }}"></script>
|
||||
|
||||
<!-- Libs -->
|
||||
|
||||
<!-- `perfect-scrollbar` library required by SideNav plugin -->
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/libs/perfect-scrollbar/perfect-scrollbar.css') }}">
|
||||
|
||||
@yield('styles')
|
||||
|
||||
<!-- Application stylesheets -->
|
||||
<link rel="stylesheet" href="{{ asset('/css/application.css') }}?v=1{{ get_file_last_time('css/application.css') }}">
|
||||
<script src="{{ asset('/js/jquery.min.js') }}"></script>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="{{ asset('/css/cookieconsent.min.css') }}" />
|
||||
<script src="{{ asset('/js/cookieconsent.min.js') }}"></script>
|
||||
<script>
|
||||
window.addEventListener("load", function(){
|
||||
window.cookieconsent.initialise({
|
||||
"palette": {
|
||||
"popup": {
|
||||
"background": "#b5c49b",
|
||||
"text": "#ffffff"
|
||||
},
|
||||
"button": {
|
||||
"background": "#d7d700",
|
||||
"text": "#ffffff"
|
||||
}
|
||||
},
|
||||
"content": {
|
||||
"message": "{{__('This website uses cookies') }}",
|
||||
"dismiss": "{{__('OK')}}",
|
||||
"link": "{{__('register.data_protection')}}",
|
||||
"href": "{{ url('datenschutz') }}",
|
||||
"target": "_blank",
|
||||
}
|
||||
})});
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
@yield('layout-content')
|
||||
|
||||
<div class="modal fade" id="modals-load-content">
|
||||
<div class="modal-dialog modal-lg">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Core scripts -->
|
||||
<script src="{{ asset('/vendor/libs/popper/popper.js') }}"></script>
|
||||
<script src="{{ asset('/vendor/js/bootstrap.js') }}"></script>
|
||||
<script src="{{ asset('/vendor/js/sidenav.js') }}"></script>
|
||||
<script src="{{ asset('/vendor/libs/growl/growl.js') }}"></script>
|
||||
<script src="{{ asset('/vendor/libs/moment-develop/min/moment.min.js') }}"></script>
|
||||
<script src="{{ asset('/vendor/libs/moment-develop/locale/de.js') }}"></script>
|
||||
|
||||
<script src="{{ asset('/vendor/libs/validate/validate.js') }}"></script>
|
||||
|
||||
<script src="{{ asset('/vendor/libs/bootstrap-select/bootstrap-select.js') }}"></script>
|
||||
<script src="{{ asset('/vendor/libs/select2/select2.js') }}"></script>
|
||||
<script src="{{ asset('/vendor/libs/datatables/datatables.js') }}"></script>
|
||||
|
||||
<script src="{{ asset('/vendor/libs/bootstrap-datepicker/bootstrap-datepicker.js') }}"></script>
|
||||
<script src="{{asset('/js/bootstrap-datepicker.de.min.js')}}"></script>
|
||||
|
||||
<script src="{{ asset('/vendor/libs/bootstrap-material-datetimepicker/bootstrap-material-datetimepicker.js') }}"></script>
|
||||
|
||||
<script src="{{ asset('/vendor/libs/summernote/dist/summernote-bs4.min.js') }}"></script>
|
||||
<script src="{{ asset('/vendor/libs/summernote/lang/summernote-de-DE.js') }}"></script>
|
||||
<script src="{{ asset('/vendor/libs/summernote-cleaner/summernote-cleaner.js') }}"></script>
|
||||
|
||||
|
||||
<script src="{{ asset('/vendor/libs/slim-image-cropper/slim/slim.kickstart.min.js') }}"></script>
|
||||
<script src="{{ asset('/vendor/libs/dropzone/dropzone.js?v=1')}}"></script>
|
||||
<script src="{{ asset('/js/forms_file-upload.js?v=1') }}"></script>
|
||||
|
||||
<script src="{{ asset('/vendor/libs/clipboard/clipboard.min.js')}}"></script>
|
||||
|
||||
<!-- `perfect-scrollbar` library required by SideNav plugin -->
|
||||
<script src="{{ asset('/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') }}"></script>
|
||||
|
||||
<script src="{{ asset('/js/shopping_card.js') }}?v=1{{ get_file_last_time('/js/shopping_card.js') }}"></script>
|
||||
|
||||
<!-- Application javascripts -->
|
||||
<script src="{{ asset('/js/application.js') }}"></script>
|
||||
<script src="{{ asset('/js/custom.js') }}?v=1{{ get_file_last_time('/js/custom.js') }}"></script>
|
||||
|
||||
|
||||
@yield('scripts')
|
||||
|
||||
</body>
|
||||
</html>
|
||||
125
resources/views/portal/layouts/auth.blade.php
Executable file
125
resources/views/portal/layouts/auth.blade.php
Executable file
|
|
@ -0,0 +1,125 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en" class="default-style">
|
||||
|
||||
<head>
|
||||
<title>{{ config('app.name') }} Login</title>
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="x-ua-compatible" content="IE=edge,chrome=1">
|
||||
<meta name="description" content="">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
|
||||
<link rel="icon" type="image/x-icon" href="favicon.ico">
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||
|
||||
<link rel="stylesheet" href="{{ asset('/fonts/roboto-pacifico.css?v=1') }}">
|
||||
|
||||
<!-- Icons. Uncomment required icon fonts -->
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/fonts/fontawesome.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/fonts/ionicons.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/fonts/linearicons.css') }}">
|
||||
|
||||
<!-- Core stylesheets -->
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/css/bootstrap.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/css/appwork.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/css/theme-corporate.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/css/colors.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/css/uikit.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/css/mycolors.css') }}">
|
||||
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/libs/growl/growl.css') }}">
|
||||
|
||||
|
||||
|
||||
<!-- Layout helpers -->
|
||||
<script src="{{ asset('/vendor/js/layout-helpers.js') }}"></script>
|
||||
|
||||
|
||||
<!-- Core scripts -->
|
||||
<!-- Libs -->
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/libs/perfect-scrollbar/perfect-scrollbar.css') }}">
|
||||
<!-- Page -->
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/css/pages/authentication.css') }}">
|
||||
<script src="{{ asset('/js/jquery.min.js') }}"></script>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="{{ asset('/css/cookieconsent.min.css') }}" />
|
||||
<script src="{{ asset('/js/cookieconsent.min.js') }}"></script>
|
||||
<script>
|
||||
window.addEventListener("load", function(){
|
||||
window.cookieconsent.initialise({
|
||||
"palette": {
|
||||
"popup": {
|
||||
"background": "#b5c49b",
|
||||
"text": "#ffffff"
|
||||
},
|
||||
"button": {
|
||||
"background": "#d7d700",
|
||||
"text": "#ffffff"
|
||||
}
|
||||
},
|
||||
"content": {
|
||||
"message": "{{__('This website uses cookies') }}",
|
||||
"dismiss": "{{__('OK')}}",
|
||||
"link": "{{__('register.data_protection')}}",
|
||||
"href": "{{ url('datenschutz') }}",
|
||||
"target": "_blank",
|
||||
}
|
||||
})});
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="page-loader">
|
||||
<div class="bg-primary"></div>
|
||||
</div>
|
||||
|
||||
@if(Session::has('alert-error'))
|
||||
<script>
|
||||
$( document ).ready(function() {
|
||||
$.growl.error({
|
||||
title: "{{__('error')}}",
|
||||
message: '{{ Session::get('alert-error') }}',
|
||||
location: 'tr'
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endif
|
||||
|
||||
@if(Session::has('alert-success'))
|
||||
<script>
|
||||
$( document ).ready(function() {
|
||||
$.growl({
|
||||
title: "{{__('saved')}}",
|
||||
message: '{{ Session::get('alert-success') }}',
|
||||
location: 'tr'
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endif
|
||||
|
||||
<!-- / Styles -->
|
||||
|
||||
@yield('content')
|
||||
|
||||
<div class="modal fade" id="modal-loading" style="display: none;" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-content" id="modal-loading-response">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="{{ asset('/vendor/libs/popper/popper.js') }}"></script>
|
||||
<script src="{{ asset('/vendor/js/bootstrap.js') }}"></script>
|
||||
<script src="{{ asset('/vendor/js/sidenav.js') }}"></script>
|
||||
<script src="{{ asset('/vendor/libs/growl/growl.js') }}"></script>
|
||||
|
||||
|
||||
<script src="{{ asset('/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') }}"></script>
|
||||
<script src="{{ asset('/js/custom.js') }}"></script>
|
||||
|
||||
@yield('scripts')
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
<div id="topBar" class="pt-2">
|
||||
<div class="container">
|
||||
<ul class="top-links list-inline pull-right">
|
||||
<li>
|
||||
<a class="dropdown-toggle no-text-underline" data-toggle="dropdown" href="#"><span style="text-transform:none;">
|
||||
{{ __('website.language') }} :</span> <img style="height: 16px" width="16" src="{{ asset('images/flags/'.strtolower(\App::getLocale()).'.svg') }}" alt="lang">
|
||||
</a>
|
||||
<ul class="dropdown-menu pull-right">
|
||||
@foreach (\App\Services\UserService::getTransChange() as $code => $name)
|
||||
<li>
|
||||
<a @if(\App::getLocale() === $code) class="active" @endif tabindex="-1" href="{{ route('translation', [$code]) }}">
|
||||
<img style="height: 16px" width="16" src="{{ asset('images/flags/'.strtolower($code).'.svg') }}" alt="lang"> <span style="text-transform:none;">{{ $name }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
29
resources/views/portal/layouts/includes/layout-footer.blade.php
Executable file
29
resources/views/portal/layouts/includes/layout-footer.blade.php
Executable file
|
|
@ -0,0 +1,29 @@
|
|||
<nav class="layout-footer footer bg-footer-theme">
|
||||
<div class="container-fluid container-p-x pb-3">
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<nav class="layout-footer footer bg-footer-theme">
|
||||
<div class="container-fluid container-p-x pb-3 text-right">
|
||||
@if(Request::getHost() == config('app.pre_url_portal') . config('app.domain') . config('app.tld_care'))
|
||||
<button type="button" class="btn btn-outline-primary mt-2 btn-sm update_modal_data_load" data-url="{{ route('portal.loading_modal') }}" data-data="data_protection" data-target="#modal-loading">{{__('register.data_protection')}}</button>
|
||||
<button type="button" class="btn btn-outline-primary mt-2 btn-sm update_modal_data_load" data-url="{{ route('portal.loading_modal') }}" data-data="imprint" data-target="#modal-loading">{{__('imprint')}}</button>
|
||||
@else
|
||||
<button type="button" class="btn btn-outline-primary mt-2 btn-sm update_modal_data_load" data-url="{{ route('loading_modal') }}" data-data="data_protection" data-target="#modal-loading">{{__('register.data_protection')}}</button>
|
||||
<button type="button" class="btn btn-outline-primary mt-2 btn-sm update_modal_data_load" data-url="{{ route('loading_modal') }}" data-data="imprint" data-target="#modal-loading">{{__('imprint')}}</button>
|
||||
@endif
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="modal fade" id="modal-loading" style="display: none;" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-content" id="modal-loading-response">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
26
resources/views/portal/layouts/includes/layout-navbar-without.blade.php
Executable file
26
resources/views/portal/layouts/includes/layout-navbar-without.blade.php
Executable file
|
|
@ -0,0 +1,26 @@
|
|||
<nav class="layout-navbar navbar navbar-expand-lg align-items-lg-center bg-navbar-theme container-p-x" id="layout-navbar">
|
||||
|
||||
<!-- Brand -->
|
||||
<a href="https://www.mivita.care"><img src="{{ asset('/images/logo_mivita.png') }}" alt="mivita.care" style="width: 170px;"></a>
|
||||
|
||||
<div class="navbar-nav align-items-center ml-auto" style="flex-direction: row;-webkit-box-orient: horizontal;
|
||||
-webkit-box-direction: normal;">
|
||||
|
||||
<div class="demo-navbar-messages nav-item dropdown mr-1">
|
||||
<a class="nav-link dropdown-toggle hide-arrow text-right" href="#" data-toggle="dropdown">
|
||||
<i class="ion ion-ios-globe navbar-icon align-middle"></i>
|
||||
<div class="badge badge-default">{{ __('website.language') }} : <img style="height: 16px" width="16" src="{{ asset('images/flags/'.strtolower(\App::getLocale()).'.svg') }}" alt="lang">
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<div class="dropdown-menu dropdown-menu-right">
|
||||
@foreach (\App\Services\UserService::getTransChange() as $code => $name)
|
||||
<a href="{{ route('translation', [$code]) }}" class="dropdown-item @if(\App::getLocale() === $code) active @endif ">
|
||||
<img style="height: 16px" width="16" src="{{ asset('images/flags/'.strtolower($code).'.svg') }}" alt="lang"> {{ $name }}
|
||||
</a>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="ui-rect ui-bg-cover mb-2" style=" padding-top:15% !important; background-image: url('/assets/images/vision-min.jpg');"></div>
|
||||
53
resources/views/portal/layouts/includes/layout-navbar.blade.php
Executable file
53
resources/views/portal/layouts/includes/layout-navbar.blade.php
Executable file
|
|
@ -0,0 +1,53 @@
|
|||
<nav class="layout-navbar navbar navbar-expand-lg align-items-lg-center bg-navbar-theme container-p-x" id="layout-navbar">
|
||||
|
||||
@empty($hide_layout_sidenav_toggle)
|
||||
<div class="layout-sidenav-toggle navbar-nav align-items-lg-center mr-auto mr-lg-1-5">
|
||||
<a class="nav-item nav-link px-0 ml-2" href="javascript:void(0)">
|
||||
<i class="ion ion-md-menu text-large align-middle"></i>
|
||||
</a>
|
||||
</div>
|
||||
@endempty
|
||||
|
||||
<a href="https://www.mivita.care"><img src="{{ asset('/images/logo_mivita.png') }}" alt="mivita.care" style="width: 170px;"></a>
|
||||
|
||||
<div class="navbar-nav align-items-center ml-auto" style="flex-direction: row;-webkit-box-orient: horizontal;
|
||||
-webkit-box-direction: normal;">
|
||||
|
||||
|
||||
<div class="demo-navbar-messages nav-item dropdown mr-1">
|
||||
<a class="nav-link dropdown-toggle hide-arrow text-right" href="#" data-toggle="dropdown">
|
||||
<i class="ion ion-ios-globe navbar-icon align-middle"></i>
|
||||
<div class="badge badge-default">{{ __('website.language') }} : <img style="height: 16px" width="16" src="{{ asset('images/flags/'.strtolower(\App::getLocale()).'.svg') }}" alt="lang">
|
||||
</div>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<div class="dropdown-menu dropdown-menu-right">
|
||||
@foreach (\App\Services\UserService::getTransChange() as $code => $name)
|
||||
<a href="{{ route('translation', [$code]) }}" class="dropdown-item @if(\App::getLocale() === $code) active @endif ">
|
||||
<img style="height: 16px" width="16" src="{{ asset('images/flags/'.strtolower($code).'.svg') }}" alt="lang"> {{ $name }}
|
||||
</a>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="nav-item text-big font-weight-light line-height-1 opacity-25 mr-1 ml-1">|</div>
|
||||
|
||||
|
||||
<div class="demo-navbar-user nav-item dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown">
|
||||
<span class="d-inline-flex flex-row-reverse align-items-center align-middle">
|
||||
<span class="px-1 ml-0 ml-0">{{ Auth::user()->email }}</span>
|
||||
</span>
|
||||
</a>
|
||||
<div class="dropdown-menu dropdown-menu-right">
|
||||
<a href="{{ route('portal.logout') }}" class="dropdown-item">
|
||||
<i class="ion ion-ios-log-out text-danger"></i> {{ __('navigation.logout') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
47
resources/views/portal/layouts/includes/layout-sidenav.blade.php
Executable file
47
resources/views/portal/layouts/includes/layout-sidenav.blade.php
Executable file
|
|
@ -0,0 +1,47 @@
|
|||
|
||||
|
||||
|
||||
@if(Auth::check())
|
||||
|
||||
<div id="layout-sidenav" class="{{ isset($layout_sidenav_horizontal) ? 'layout-sidenav-horizontal sidenav-horizontal container-p-x flex-grow-0' : 'layout-sidenav sidenav-vertical' }} sidenav bg-sidenav-theme">
|
||||
|
||||
<!-- Inner -->
|
||||
<ul class="sidenav-inner{{ empty($layout_sidenav_horizontal) ? ' py-1' : '' }}">
|
||||
|
||||
|
||||
|
||||
@if(Auth::guard('customers')->check())
|
||||
|
||||
<li class="sidenav-item{{ Request::is('portal/dashboard') ? ' active' : '' }}">
|
||||
<a href="{{ route('portal.dashboard') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-home"></i><div>{{__('navigation.dashboard')}}</div></a>
|
||||
</li>
|
||||
<li class="sidenav-item{{ Request::is('portal/my-data/*') ? ' active' : '' }}">
|
||||
<a href="{{ route('portal.my_data.edit') }}" class="sidenav-link"><i class="sidenav-icon ion ion-md-person"></i><div>{{ __('navigation.my_data') }}</div></a>
|
||||
</li>
|
||||
<li class="sidenav-item{{ Request::is('portal/my-orders', 'portal/my-orders/*') ? ' active' : '' }}">
|
||||
<a href="{{ route('portal.my_orders') }}" class="sidenav-link"><i class="sidenav-icon ion ion-md-cart"></i><div>{{ __('navigation.my_orders') }}</div></a>
|
||||
</li>
|
||||
@if(Auth::user()->is_admin || Util::isTestSystem(true))
|
||||
<li class="sidenav-item{{ Request::is('portal/subscriptions') ? ' active' : '' }}">
|
||||
<a href="{{ route('portal.my_subscriptions') }}" class="sidenav-link"><i class="sidenav-icon ion ion-md-refresh-circle"></i><div>{{ __('navigation.myabo') }} <span class="badge badge-warning">DEV</span></div> </a>
|
||||
</li>
|
||||
@endif
|
||||
{{--
|
||||
<li class="sidenav-item{{ Request::is('portal/settings') ? ' active' : '' }}">
|
||||
<a href="{{ route('portal.settings') }}" class="sidenav-link"><i class="sidenav-icon ion ion-md-settings"></i><div>{{ __('navigation.settings') }}</div></a>
|
||||
</li>
|
||||
--}}
|
||||
@endif
|
||||
<li class="sidenav-divider mb-1"></li>
|
||||
@if(Auth::guard('customers')->check())
|
||||
<li class="sidenav-item">
|
||||
<a href="{{ Util::getMyMivitaShopUrl() }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-cart"></i><div>{{ __('navigation.to_shop') }}</div></a>
|
||||
</li>
|
||||
@endif
|
||||
<li class="sidenav-item">
|
||||
<a href="{{ route('portal.logout') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-power"></i><div>{{ __('navigation.logout') }}</div></a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@endif
|
||||
76
resources/views/portal/layouts/layout-2.blade.php
Executable file
76
resources/views/portal/layouts/layout-2.blade.php
Executable file
|
|
@ -0,0 +1,76 @@
|
|||
@extends('portal.layouts.application')
|
||||
|
||||
@section('layout-content')
|
||||
|
||||
@if(Session::has('alert-save'))
|
||||
<script>
|
||||
$( document ).ready(function() {
|
||||
$.growl({
|
||||
title: "{{__('saved')}}",
|
||||
message: "{{__('The changes have been saved.')}}",
|
||||
location: 'tr'
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endif
|
||||
|
||||
@if(Session::has('alert-error'))
|
||||
<script>
|
||||
$( document ).ready(function() {
|
||||
$.growl.error({
|
||||
title: "{{__('error')}}",
|
||||
message: '{{ Session::get('alert-error') }}',
|
||||
location: 'tr'
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endif
|
||||
|
||||
@if(Session::has('alert-success'))
|
||||
<script>
|
||||
$( document ).ready(function() {
|
||||
$.growl({
|
||||
title: "{{__('saved')}}",
|
||||
message: '{{ Session::get('alert-success') }}',
|
||||
location: 'tr'
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endif
|
||||
|
||||
<!-- Layout wrapper -->
|
||||
<div class="layout-wrapper layout-2">
|
||||
<div class="layout-inner">
|
||||
|
||||
<!-- Layout sidenav -->
|
||||
@include('portal.layouts.includes.layout-sidenav')
|
||||
|
||||
<!-- Layout container -->
|
||||
<div class="layout-container">
|
||||
<!-- Layout navbar -->
|
||||
@include('portal.layouts.includes.layout-navbar')
|
||||
|
||||
<!-- Layout content -->
|
||||
<div class="layout-content">
|
||||
|
||||
<!-- Content -->
|
||||
<div class="container-fluid flex-grow-1 container-p-y">
|
||||
@yield('content')
|
||||
</div>
|
||||
<!-- / Content -->
|
||||
|
||||
<!-- Layout footer -->
|
||||
@include('portal.layouts.includes.layout-footer')
|
||||
</div>
|
||||
<!-- Layout content -->
|
||||
|
||||
</div>
|
||||
<!-- / Layout container -->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Overlay -->
|
||||
<div class="layout-overlay layout-sidenav-toggle"></div>
|
||||
</div>
|
||||
<!-- / Layout wrapper -->
|
||||
@endsection
|
||||
97
resources/views/portal/my_orders.blade.php
Executable file
97
resources/views/portal/my_orders.blade.php
Executable file
|
|
@ -0,0 +1,97 @@
|
|||
@extends('portal.layouts.layout-2')
|
||||
|
||||
@section('content')
|
||||
|
||||
@if ($errors->any())
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="alert alert-danger">
|
||||
<ul>
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<h4 class="font-weight-bold py-2 mb-2">
|
||||
{{ __('navigation.my_orders') }}
|
||||
</h4>
|
||||
<div class="card">
|
||||
|
||||
<div class="card-datatable table-responsive">
|
||||
<table class="table table-striped table-bordered" style="min-width:550px;" id="datatables-orders">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>{{__('tables.date')}}</th>
|
||||
<th>{{__('tables.amount')}}</th>
|
||||
<th>{{__('tables.status')}}</th>
|
||||
<th>{{__('tables.shipping')}}</th>
|
||||
<th>{{__('tables.firstname')}}</th>
|
||||
<th>{{__('tables.lastname')}}</th>
|
||||
<th>{{__('tables.email')}}</th>
|
||||
<th>{{__('tables.invoice')}}</th>
|
||||
<th>{{__('tables.art')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@if($shopping_user->shopping_order)
|
||||
@forelse($shopping_user->getAllOrdersByMember() as $shopping_order)
|
||||
<tr>
|
||||
<td>
|
||||
<a href="{{ route('portal.my_orders.show', $shopping_order->id) }}"
|
||||
class="btn icon-btn btn-sm btn-primary">
|
||||
<span class="fa fa-eye"></span>
|
||||
</a>
|
||||
</td>
|
||||
<td>{{ $shopping_order->created_at->format('d.m.Y') }}</td>
|
||||
<td>
|
||||
<span class="no-line-break">
|
||||
{{ $shopping_order->getFormattedTotalShipping() }} €
|
||||
</span>
|
||||
</td>
|
||||
<td>{!! \App\Services\Payment::getShoppingOrderBadge($shopping_order) !!}</td>
|
||||
<td>
|
||||
<span class="badge badge-pill badge-{{ $shopping_order->getShippedColor() }}">
|
||||
{{ $shopping_order->getShippedType() }}
|
||||
</span>
|
||||
</td>
|
||||
<td>{{ $shopping_order->shopping_user->billing_firstname }}</td>
|
||||
<td>{{ $shopping_order->shopping_user->billing_lastname }}</td>
|
||||
<td>{{ $shopping_order->shopping_user->billing_email }}</td>
|
||||
<td>{{ $shopping_order->isInvoice() ? '<span class="no-line-break"><a href="'.route('storage_file', [$shopping_order->id, 'invoice', 'download']).'" class="btn btn-primary btn-xs"><i class="fa fa-download"></i></a>
|
||||
<a href="'.route('storage_file', [$ShoppingOrder->id, 'invoice', 'stream']).'" target="_blank" class="btn btn-warning btn-xs"><i class="fa fa-eye"></i></a></span>' : '-';
|
||||
}}</td>
|
||||
<td>{!! \App\Services\Payment::getPaymentForBadge($shopping_order) !!}</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="6" class="text-center">{{ __('order.no_orders_found') }}</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
@endif
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@endsection
|
||||
|
||||
@section('scripts')
|
||||
<script>
|
||||
$( document ).ready(function() {
|
||||
$('#datatables-orders').DataTable({
|
||||
"bLengthChange": false,
|
||||
"iDisplayLength": 50,
|
||||
"order": [[ 1, "desc" ]],
|
||||
"language": {
|
||||
"url": "/js/datatables-{{ \App::getLocale() }}.json"
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
317
resources/views/portal/order/_detail.blade.php
Normal file
317
resources/views/portal/order/_detail.blade.php
Normal file
|
|
@ -0,0 +1,317 @@
|
|||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-md-3 mb-1">
|
||||
<strong class="mr-2">{{ __('Status') }}:</strong>
|
||||
<span class="text-big">
|
||||
{!! \App\Services\Payment::getShoppingOrderBadge($shopping_order) !!}
|
||||
</span>
|
||||
</div>
|
||||
<div class="col-md-3 mb-1">
|
||||
<strong class="mr-2">{{ __('order.shipping') }}:</strong>
|
||||
@if($shopping_order->payment_for !== 8)
|
||||
<span class="text-big">
|
||||
<span
|
||||
class="badge badge-pill badge-{{ $shopping_order->getShippedColor() }}">{{ $shopping_order->getShippedType() }}</span>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-md-3 mb-1">
|
||||
<strong class="mr-2">{{ __('order.invoice') }}:</strong>
|
||||
|
||||
@if ($shopping_order->isInvoice())
|
||||
<a href="{{ route('storage_file', [$shopping_order->id, 'invoice', 'download']) }}"
|
||||
class="btn btn-primary btn-sm"><i class="fa fa-download"></i></a>
|
||||
<a href="{{ route('storage_file', [$shopping_order->id, 'invoice', 'stream']) }}"
|
||||
target="_blank" class="btn btn-warning btn-sm"><i class="fa fa-eye"></i></a>
|
||||
@endif
|
||||
|
||||
@if (($shopping_order->txaction === 'extern' || $shopping_order->txaction === 'extern_paid') && $shopping_order->wp_invoice_path)
|
||||
<a href="{{ $shopping_order->wp_invoice_path }}" class="btn btn-secondary btn-sm"><i
|
||||
class="fa fa-external-link-alt"></i> <i class="fa fa-download"></i></a>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<hr class="m-0">
|
||||
|
||||
<div class="card-body pb-1">
|
||||
<div class="row">
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">{{ __('order.order_date') }}</div>
|
||||
{{ $shopping_order->created_at->format('d.m.Y H:i') }}
|
||||
</div>
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">{{ __('order.number_of_items') }}</div>
|
||||
{{ $shopping_order->getItemsCount() }}
|
||||
</div>
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">{{ __('order.total_price') }}</div>
|
||||
{{ $shopping_order->getFormattedTotalShipping() }} €
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="m-0">
|
||||
|
||||
<div class="card-body">
|
||||
|
||||
<h6 class="font-weight-semibold">
|
||||
@if ($shopping_order->shopping_user->is_from === 'shopping' ||
|
||||
$shopping_order->shopping_user->is_from === 'extern')
|
||||
{{ __('order.billing_address_of_client') }}
|
||||
@else
|
||||
{{ __('order.billing_address_of_the_advisor') }}
|
||||
@endif
|
||||
</h6>
|
||||
<div class="row">
|
||||
@if ($shopping_order->shopping_user->billing_company)
|
||||
<div class="col-md-12 mb-3">
|
||||
<div class="text-muted small">{{ __('Company') }}</div>
|
||||
{{ $shopping_order->shopping_user->billing_company }}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">{{ __('Salutation') }}</div>
|
||||
{{ \App\Services\HTMLHelper::getSalutationLang($shopping_order->shopping_user->billing_salutation) }}
|
||||
</div>
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">{{ __('First name') }}</div>
|
||||
{{ $shopping_order->shopping_user->billing_firstname }}
|
||||
</div>
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">{{ __('Last name') }}</div>
|
||||
{{ $shopping_order->shopping_user->billing_lastname }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">{{ __('Street') }}</div>
|
||||
{{ $shopping_order->shopping_user->billing_address }}
|
||||
</div>
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">{{ __('Addition') }}</div>
|
||||
{{ $shopping_order->shopping_user->billing_address_2 }}
|
||||
</div>
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">{{ __('Postcode') }}</div>
|
||||
{{ $shopping_order->shopping_user->billing_zipcode }}
|
||||
</div>
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">{{ __('City') }}</div>
|
||||
{{ $shopping_order->shopping_user->billing_city }}
|
||||
</div>
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">{{ __('E-Mail') }}</div>
|
||||
{{ $shopping_order->shopping_user->billing_email }}
|
||||
</div>
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">{{ __('Phone') }}</div>
|
||||
{{ $shopping_order->shopping_user->billing_phone }}
|
||||
</div>
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">{{ __('Country') }}</div>
|
||||
{{ $shopping_order->shopping_user->billing_country->getLocated() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if ($shopping_order->shopping_user->is_from !== 'homeparty')
|
||||
<hr class="m-0">
|
||||
|
||||
<div class="card-body">
|
||||
<h6 class="font-weight-semibold">
|
||||
@if ($shopping_order->shopping_user->is_from === 'user_order' ||
|
||||
$shopping_order->shopping_user->is_from === 'extern')
|
||||
@if ($shopping_order->shopping_user->is_for === 'me')
|
||||
{{ __('order.delivery_address_of_the_consultant') }}
|
||||
@else
|
||||
{{ __('order.delivery_address_of_the_client') }}
|
||||
@endif
|
||||
@endif
|
||||
@if ($shopping_order->shopping_user->is_from === 'wizard')
|
||||
{{ __('order.delivery_address_of_the_consultant') }}
|
||||
@endif
|
||||
@if ($shopping_order->shopping_user->is_from === 'membership')
|
||||
{{ __('order.delivery_address_of_the_consultant') }}
|
||||
@endif
|
||||
@if ($shopping_order->shopping_user->is_from === 'shopping')
|
||||
{{ __('order.delivery_address_of_the_client') }}
|
||||
@endif
|
||||
</h6>
|
||||
@if ($shopping_order->shopping_user->same_as_billing)
|
||||
{{ __('email.checkout_mail_same_address') }}
|
||||
@else
|
||||
<div class="row">
|
||||
@if ($shopping_order->shopping_user->shipping_company)
|
||||
<div class="col-md-12 mb-3">
|
||||
<div class="text-muted small">{{ __('Company') }}</div>
|
||||
{{ $shopping_order->shopping_user->shipping_company }}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">{{ __('Salutation') }}</div>
|
||||
{{ \App\Services\HTMLHelper::getSalutationLang($shopping_order->shopping_user->shipping_salutation) }}
|
||||
</div>
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">{{ __('First name') }}</div>
|
||||
{{ $shopping_order->shopping_user->shipping_firstname }}
|
||||
</div>
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">{{ __('Last name') }}</div>
|
||||
{{ $shopping_order->shopping_user->shipping_lastname }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">{{ __('Street') }}</div>
|
||||
{{ $shopping_order->shopping_user->shipping_address }}
|
||||
</div>
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">{{ __('Addition') }}</div>
|
||||
{{ $shopping_order->shopping_user->shipping_address_2 }}
|
||||
</div>
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">{{ __('Postcode') }}</div>
|
||||
{{ $shopping_order->shopping_user->shipping_zipcode }}
|
||||
</div>
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">{{ __('City') }}</div>
|
||||
{{ $shopping_order->shopping_user->shipping_city }}
|
||||
</div>
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">{{ __('E-Mail') }}</div>
|
||||
{{ $shopping_order->shopping_user->shipping_email }}
|
||||
</div>
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">{{ __('Phone') }}</div>
|
||||
{{ $shopping_order->shopping_user->shipping_phone }}
|
||||
</div>
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">{{ __('Country') }}</div>
|
||||
{{ $shopping_order->shopping_user->shipping_country->getLocated() }}
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
@endif
|
||||
<hr class="m-0">
|
||||
|
||||
<div class="card-body">
|
||||
<h6 class="font-weight-semibold">
|
||||
@if ($shopping_order->shopping_user->is_from === 'user_order')
|
||||
@if ($shopping_order->shopping_user->is_for === 'me')
|
||||
{{ __('order.order_for_consultant') }}
|
||||
@else
|
||||
{{ __('order.order_for_client') }}
|
||||
@endif
|
||||
@endif
|
||||
@if ($shopping_order->shopping_user->is_from === 'wizard')
|
||||
{{ __('order.adviser_order_for_registration') }}
|
||||
@endif
|
||||
@if ($shopping_order->shopping_user->is_from === 'membership')
|
||||
{{ __('order.adviser_order_for_membership') }}
|
||||
@endif
|
||||
@if ($shopping_order->shopping_user->is_from === 'shopping')
|
||||
{{ __('order.client_order_via_shop') }}
|
||||
@endif
|
||||
@if ($shopping_order->shopping_user->is_from === 'homeparty')
|
||||
<h5>{{ __('order.consultant_order_for_home_party') }} </h5>
|
||||
<hr>
|
||||
@endif
|
||||
@if ($shopping_order->shopping_user->is_from === 'collection')
|
||||
<h5>{{ __('order.adviser_collective_invoice') }}</h5>
|
||||
<hr>
|
||||
@endif
|
||||
</h6>
|
||||
<style>
|
||||
table.table-product,
|
||||
table.table-product tr td,
|
||||
table.table-product tr th {
|
||||
border: none;
|
||||
}
|
||||
|
||||
table.table-product tr.border-top td {
|
||||
border-top: 1px solid #b8b8b9;
|
||||
}
|
||||
|
||||
table.table-product tr.border-bottom td,
|
||||
table.table-product tr.border-bottom th {
|
||||
border-bottom: 1px solid #b8b8b9;
|
||||
}
|
||||
</style>
|
||||
|
||||
@if ($shopping_order->shopping_user->is_from !== 'homeparty' && $shopping_order->shopping_user->is_from !== 'collection')
|
||||
@include('portal.order._detail_shopping_order')
|
||||
@endif
|
||||
</div>
|
||||
<hr class="m-0">
|
||||
<div class="card-body">
|
||||
<h6 class="font-weight-semibold">
|
||||
{{ __('order.reorder') }}
|
||||
</h6>
|
||||
<div class="row">
|
||||
<div class="col-md-12 mb-2">
|
||||
<p><em>{!! __('order.reorder_info') !!}</em></p>
|
||||
<p><a href="{{ route('portal.my_orders.create', ['id' => $shopping_order->id]) }}" class="btn btn-primary">
|
||||
{{ __('order.reorder') }}
|
||||
</a></p>
|
||||
<p>{!! __('order.reorder_info_2', ['country' => $shopping_user->getDeliveryCountry(), 'link' => route('portal.my_data.edit')]) !!}</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<hr class="m-0">
|
||||
|
||||
<div class="card-body">
|
||||
<h6 class="font-weight-semibold">
|
||||
{{ __('tables.payment') }}
|
||||
</h6>
|
||||
@if ($shopping_order->txaction !== 'extern')
|
||||
<div class="card-datatable table-responsive">
|
||||
<table class="table table-bordered table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="min-width: 60px">#</th>
|
||||
<th>{{ __('tables.payment_type') }}</th>
|
||||
<th>{{ __('tables.total') }}</th>
|
||||
<th>{{ __('tables.status') }}</th>
|
||||
<th>{{ __('tables.date') }}</th>
|
||||
<th>{{ __('tables.reference_number') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@php($count = 0)
|
||||
@if(isset($shopping_order->shopping_payments) && $shopping_order->shopping_payments)
|
||||
@foreach ($shopping_order->shopping_payments as $shopping_payment)
|
||||
@if(isset($shopping_payment) && $shopping_payment)
|
||||
<tr>
|
||||
<th scope="row">{{ ++$count }}</th>
|
||||
<td>{{ $shopping_payment->getPaymentType() }}</td>
|
||||
<td>{{ $shopping_payment->getPaymentAmount() }}</td>
|
||||
<td>{!! \App\Services\Payment::getShoppingPaymentBadge($shopping_payment) !!}</td>
|
||||
<td>{{ $shopping_payment->created_at->format('d.m.Y H:i') }}</td>
|
||||
<td>{{ $shopping_payment->reference }}</td>
|
||||
</tr>
|
||||
@endif
|
||||
@endforeach
|
||||
@endif
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@else
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="alert alert-info p-2 mt-2">
|
||||
<ul>
|
||||
<li>{{ __('order.order_via_external_shop') }} </li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
110
resources/views/portal/order/_detail_shopping_order.blade.php
Normal file
110
resources/views/portal/order/_detail_shopping_order.blade.php
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
|
||||
<div class="table-responsive">
|
||||
<table class="table table-product m-0" style="">
|
||||
<tbody>
|
||||
<tr class="border-bottom">
|
||||
<th>{{ __('tables.product') }}</th>
|
||||
<th class="text-right">
|
||||
@if($shopping_order->shopping_user->is_from === 'user_order')
|
||||
{{ __('tables.net_price') }}
|
||||
@else
|
||||
{{ __('tables.price') }}
|
||||
@endif
|
||||
</th>
|
||||
<th class="text-right">{{ __('tables.quantity') }}</th>
|
||||
<th class="text-right">{{ __('tables.sum') }}</th>
|
||||
</tr>
|
||||
@foreach($shopping_order->shopping_order_items as $shopping_order_item)
|
||||
<tr class="border-bottom">
|
||||
<td class="px-3 py-2">
|
||||
<div class="media align-items-center">
|
||||
@if($shopping_order_item->product)
|
||||
@if($shopping_order_item->product->images)
|
||||
@if($image = $shopping_order_item->product->images->first())
|
||||
<img src="{{ route('product_image', [$image->slug]) }}" class="d-block ui-w-80 mr-4" alt>
|
||||
@endif
|
||||
@endif
|
||||
|
||||
<div class="media-body">
|
||||
|
||||
<a href="{{route('admin_product_edit', [$shopping_order_item->product->id])}}" class="d-block"><strong>{{ $shopping_order_item->product->getLang('name') }} </strong>
|
||||
@if($shopping_order->is_abo)
|
||||
{!! get_abo_type_badge_by_product($shopping_order_item->product) !!}
|
||||
@endif
|
||||
</a>
|
||||
<small>
|
||||
<span class="text-muted">{{ __('order.content') }}: </span> {{ $shopping_order_item->product->contents }}<br>
|
||||
<span class="text-muted">{{ __('order.weight') }}: </span> {{ $shopping_order_item->product->weight }} g<br>
|
||||
<span class="text-muted">{{ __('order.number') }}: </span> {{ $shopping_order_item->product->number }}
|
||||
</small>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</td>
|
||||
<td class="align-middle px-3 py-2 nowrap text-right" style="min-width:100px;">
|
||||
@if($shopping_order->shopping_user->is_from === 'user_order')
|
||||
{{ $shopping_order_item->getFormattedPriceNet() }} €
|
||||
@else
|
||||
{{ $shopping_order_item->getFormattedPrice() }} €
|
||||
@endif
|
||||
</td>
|
||||
<!-- Set column width -->
|
||||
<td class="align-middle px-3 py-2 text-right" style="min-width: 60px;">
|
||||
{{ $shopping_order_item->qty }}
|
||||
</td>
|
||||
<!-- Set column width -->
|
||||
<td class="font-weight-semibold align-middle px-3 py-2 text-right" style="min-width:120px;">
|
||||
@if($shopping_order->shopping_user->is_from === 'user_order')
|
||||
{{ $shopping_order_item->getFormattedTotalPriceNet() }} €
|
||||
@else
|
||||
{{ $shopping_order_item->getFormattedTotalPrice() }} €
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr class="border-bottom">
|
||||
<td colspan="3">
|
||||
<span class="medium-text">{{__('email.checkout_mail_shipping')}}</span>
|
||||
</td>
|
||||
<td style="color:#37302d; text-align: right; vertical-align: top;line-height:1.3em;">
|
||||
<span class="medium-text">
|
||||
@if($shopping_order->tax > 0)
|
||||
{{ $shopping_order->getFormattedShipping() }} €
|
||||
@else
|
||||
{{ $shopping_order->getFormattedShippingNet() }} €
|
||||
@endif
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3" class="py-1">
|
||||
<span class="medium-text">{{__('email.checkout_mail_subtotal_ws')}}</span>
|
||||
</td>
|
||||
<td class="py-1" style="color:#37302d; text-align: right; vertical-align: top;line-height:1.3em;">
|
||||
<span class="medium-text">{{ $shopping_order->getFormattedSubtotalWs() }} €</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="border-bottom">
|
||||
<td colspan="3" class="py-1">
|
||||
<span class="medium-text">{{__('email.checkout_mail_tax')}}</span>
|
||||
</td>
|
||||
<td class="py-1" style="color:#37302d; text-align: right; vertical-align: top;line-height:1.3em;">
|
||||
<span class="medium-text">{{ $shopping_order->getFormattedTax() }} €</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
<b>{{__('email.checkout_mail_total')}}</b>
|
||||
</td>
|
||||
<td style="color:#37302d; text-align: right; vertical-align: top;line-height:1.6em;">
|
||||
<b>{{ $shopping_order->getFormattedTotalShipping() }} €</b>
|
||||
<br>
|
||||
<span style="font-size: 0.8em">{{__('email.checkout_mail_tax_info')}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</div>
|
||||
21
resources/views/portal/order/my_order_show.blade.php
Normal file
21
resources/views/portal/order/my_order_show.blade.php
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
@extends('portal.layouts.layout-2')
|
||||
|
||||
@section('content')
|
||||
<style>
|
||||
.medium, .medium-text {
|
||||
font-size: 93%;
|
||||
font-weight: 400;
|
||||
}
|
||||
.font-weight-semibold {
|
||||
font-weight: 600 !important;
|
||||
color: #6b7758;
|
||||
}
|
||||
</style>
|
||||
<h4 class="font-weight-bold py-2 mb-2">
|
||||
<a href="{{route('portal.my_orders')}}" class="btn btn-sm btn-default float-right">{{ __('back') }}</a>
|
||||
{{ __('shop.order_customer') }} <span class="text-muted">#{{$shopping_order->id}}</span>
|
||||
</h4>
|
||||
@include('portal.order._detail')
|
||||
<a href="{{route('portal.my_orders')}}" class="btn btn-sm btn-default mt-2 float-right">{{ __('back') }}</a>
|
||||
|
||||
@endsection
|
||||
97
resources/views/portal/order/my_orders.blade.php
Executable file
97
resources/views/portal/order/my_orders.blade.php
Executable file
|
|
@ -0,0 +1,97 @@
|
|||
@extends('portal.layouts.layout-2')
|
||||
|
||||
@section('content')
|
||||
|
||||
@if ($errors->any())
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="alert alert-danger">
|
||||
<ul>
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<h4 class="font-weight-bold py-2 mb-2">
|
||||
{{ __('navigation.my_orders') }}
|
||||
</h4>
|
||||
<div class="card">
|
||||
|
||||
<div class="card-datatable table-responsive">
|
||||
<table class="table table-striped table-bordered" style="min-width:550px;" id="datatables-orders">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>{{__('tables.date')}}</th>
|
||||
<th>{{__('tables.amount')}}</th>
|
||||
<th>{{__('tables.status')}}</th>
|
||||
<th>{{__('tables.shipping')}}</th>
|
||||
<th>{{__('tables.firstname')}}</th>
|
||||
<th>{{__('tables.lastname')}}</th>
|
||||
<th>{{__('tables.email')}}</th>
|
||||
<th>{{__('tables.invoice')}}</th>
|
||||
<th>{{__('tables.art')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@if($shopping_user->shopping_order)
|
||||
@forelse($shopping_user->getAllOrdersByMember() as $shopping_order)
|
||||
<tr>
|
||||
<td>
|
||||
<a href="{{ route('portal.my_orders.show', $shopping_order->id) }}"
|
||||
class="btn icon-btn btn-sm btn-primary">
|
||||
<span class="fa fa-eye"></span>
|
||||
</a>
|
||||
</td>
|
||||
<td>{{ $shopping_order->created_at->format('d.m.Y') }}</td>
|
||||
<td>
|
||||
<span class="no-line-break">
|
||||
{{ $shopping_order->getFormattedTotalShipping() }} €
|
||||
</span>
|
||||
</td>
|
||||
<td>{!! \App\Services\Payment::getShoppingOrderBadge($shopping_order) !!}</td>
|
||||
<td>
|
||||
<span class="badge badge-pill badge-{{ $shopping_order->getShippedColor() }}">
|
||||
{{ $shopping_order->getShippedType() }}
|
||||
</span>
|
||||
</td>
|
||||
<td>{{ $shopping_order->shopping_user->billing_firstname }}</td>
|
||||
<td>{{ $shopping_order->shopping_user->billing_lastname }}</td>
|
||||
<td>{{ $shopping_order->shopping_user->billing_email }}</td>
|
||||
<td>{{ $shopping_order->isInvoice() ? '<span class="no-line-break"><a href="'.route('storage_file', [$shopping_order->id, 'invoice', 'download']).'" class="btn btn-primary btn-xs"><i class="fa fa-download"></i></a>
|
||||
<a href="'.route('storage_file', [$shopping_order->id, 'invoice', 'stream']).'" target="_blank" class="btn btn-warning btn-xs"><i class="fa fa-eye"></i></a></span>' : '-';
|
||||
}}</td>
|
||||
<td>{!! \App\Services\Payment::getPaymentForBadge($shopping_order) !!}</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="6" class="text-center">{{ __('order.no_orders_found') }}</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
@endif
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@endsection
|
||||
|
||||
@section('scripts')
|
||||
<script>
|
||||
$( document ).ready(function() {
|
||||
$('#datatables-orders').DataTable({
|
||||
"bLengthChange": false,
|
||||
"iDisplayLength": 50,
|
||||
"order": [[ 1, "desc" ]],
|
||||
"language": {
|
||||
"url": "/js/datatables-{{ \App::getLocale() }}.json"
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
Loading…
Add table
Add a link
Reference in a new issue