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
|
||||
Loading…
Add table
Add a link
Reference in a new issue