Mehrere Tickets 49, 50, 51, 52, 53

This commit is contained in:
Kevin Adametz 2021-10-08 17:07:28 +02:00
parent ae70577289
commit e3495be8b8
61 changed files with 1904 additions and 344 deletions

View file

@ -2,7 +2,7 @@
@section('content')
<h4 class="font-weight-bold py-3 mb-1">
Leistungsträger-Zahlungen
Buchungen &amp; Leistungen
<a class="btn btn-default btn-sm float-right" href="{{ make_old_url('backend.php') }}" > zurück ins v1 CRM</a>
</h4>
<div class="card">
@ -11,8 +11,16 @@
<div class="ui-bordered px-4 pt-3 mb-0">
<div class="form-row align-items-center">
<div class="col-12 col-md-4 mb-2">
<label class="form-label" for="filter_lead_status_id">Filter Status</label>
<select class="selectpicker" data-style="btn-default" name="filter_lead_status_id[]" id="filter_lead_status_id" multiple>
@foreach($filter_lead_status as $id=>$name)
<option value="{{$id}}">{{$name}}</option>
@endforeach
</select>
</div>
<div class="col-12 col-md-4 mb-4">
<div class="col-12 col-md-3 mb-2">
<label class="form-label">Reisedatum</label>
<div class="row">
<div class="input-group col-6 pr-0">
@ -31,7 +39,7 @@
</div>
</div>
<div class="col-12 col-md-4 mb-4">
<div class="col-12 col-md-3 mb-2">
<label class="form-label">Buchungsdatum</label>
<div class="row">
<div class="input-group col-6 pr-0">
@ -50,8 +58,8 @@
</div>
</div>
<div class="col-6 col-md-1 mb-4 mt-4">
<a href="{{ route('admin_report_bookings') }}" class="btn icon-btn btn-sm btn-outline-dark float-right">
<div class="col-12 mb-4">
<a href="{{ route('admin_report_bookings') }}" class="btn icon-btn btn-sm btn-outline-dark">
<span class="fa fa-sync"></span>
</a>
</div>
@ -69,7 +77,8 @@
<th>{{__('Organisation')}}</th>
<th>{{__('Reisepreis')}}</th>
<th>{{__('Erlös')}}</th>
<th>{{__('Kunde')}}</th>
<th>{{__('Vorname')}}</th>
<th>{{__('Nachname')}}</th>
<th>{{__('Reisedatum')}}</th>
<th>{{__('bis')}}</th>
<th>{{__('Buchungsdatum')}}</th>
@ -107,6 +116,7 @@
d.filter_travel_date_to = $('input[name=filter_travel_date_to]').val();
d.filter_booking_date_from = $('input[name=filter_booking_date_from]').val();
d.filter_booking_date_to = $('input[name=filter_booking_date_to]').val();
d.filter_db_lead_status_id = $('#filter_lead_status_id').val();
}
},
"columns": [
@ -117,13 +127,14 @@
{ data: 'price', name: 'price' },
{ data: 'price_total', name: 'price_total' },
{ data: 'proceeds', name: 'proceeds', orderable: false },
{ data: 'customer.fullName', name: 'customer.fullName', orderable: false },
{ data: 'customer.firstname', name: 'customer.firstname', orderable: true },
{ data: 'customer.name', name: 'customer.name', orderable: true },
{ data: 'start_date', name: 'start_date' },
{ data: 'end_date', name: 'end_date' },
{ data: 'booking_date', name: 'booking_date' },
{ data: 'service_provider.names', name: 'service_provider.names', orderable: false },
],
"order": [[ 10, "desc" ]],
"order": [[ 11, "desc" ]],
"orderSequence": ["desc", "asc"],
"bLengthChange": false,
"iDisplayLength": 100,
@ -137,11 +148,11 @@
$('#proceed_total_sum').html(settings.json.proceed_total_sum);
}
});
$('#filter_service_provider_id, #filter_is_cleared, #filter_sort_by').on('change', function(){
table.order( [ 10, 'desc' ] ).draw();
$('#filter_service_provider_id, #filter_is_cleared, #filter_sort_by, #filter_lead_status_id').on('change', function(){
table.order( [ 11, 'desc' ] ).draw();
});
$('.datepicker-base').on('change', function(){
table.order( [ 10, 'desc' ] ).draw();
table.order( [ 11, 'desc' ] ).draw();
});
});
</script>

View file

@ -10,16 +10,24 @@
{!! Form::hidden('order', '[[8, "asc"]]', ['id'=>'order_table']) !!}
<div class="ui-bordered px-4 pt-3 mb-0">
<div class="form-row align-items-center">
<div class="col-12 col-md-4 mb-4">
<div class="col-12 col-md-4 mb-2">
<label class="form-label" for="filter_lead_status_id">Filter Status</label>
<select class="selectpicker" data-style="btn-default" name="filter_lead_status_id[]" id="filter_lead_status_id" multiple>
@foreach($filter_lead_status as $id=>$name)
<option value="{{$id}}">{{$name}}</option>
@endforeach
</select>
</div>
<div class="col-12 col-md-3 mb-2">
<label class="form-label" for="filter_service_provider_id">Leistungsträger</label>
<select class="custom-select" name="filter_service_provider_id" id="filter_service_provider_id">
<option value="">Filter aus</option>
@foreach($serviceProviders as $serviceProvider)
<option value="{{$serviceProvider->id}}">{{$serviceProvider->name}}</option>
@endforeach
</select>
</div>
<div class="col-12 col-md-4 mb-4">
<div class="col-12 col-md-3 mb-2">
<label class="form-label">Reisedatum</label>
<div class="row">
<div class="input-group col-6 pr-0">
@ -37,7 +45,7 @@
</div>
</div>
</div>
<div class="col-6 col-md-3 mb-4">
<div class="col-6 col-md-2 mb-2">
<label class="form-label" for="filter_is_cleared">Bezahlt</label>
<select class="custom-select" name="filter_is_cleared" id="filter_is_cleared">
<option value="">Filter aus</option>
@ -45,8 +53,8 @@
<option value="0">Nein</option>
</select>
</div>
<div class="col-6 col-md-1 mb-4 mt-4">
<a href="{{ route('admin_report_providers') }}" class="btn icon-btn btn-sm btn-outline-dark float-right">
<div class="col-12 mb-4">
<a href="{{ route('admin_report_providers') }}" class="btn icon-btn btn-sm btn-outline-dark">
<span class="fa fa-sync"></span>
</a>
</div>
@ -59,12 +67,14 @@
<tr>
<th>SPE ID</th>
<th>BuchungsID</th>
<th>{{__('Status')}}</th>
<th>{{__('Reiseveranstalter')}}</th>
<th>{{__('MyJack Nr.')}}</th>
<th>{{__('Organisation')}}</th>
<th>{{__('Reisepreis')}}</th>
<th>{{__('Erlös')}}</th>
<th>{{__('Kunde')}}</th>
<th>{{__('Vorname')}}</th>
<th>{{__('Nachname')}}</th>
<th>{{__('Reisedatum')}}</th>
<th>{{__('bis')}}</th>
<th>{{__('bezahlt')}}</th>
@ -103,22 +113,26 @@
d.filter_travel_date_from = $('input[name=filter_travel_date_from]').val();
d.filter_travel_date_to = $('input[name=filter_travel_date_to]').val();
d.filter_is_cleared = $('select[name=filter_is_cleared]').val();
d.filter_db_lead_status_id = $('#filter_lead_status_id').val();
}
},
"columns": [
{ data: 'id', name: 'id' },
{ data: 'booking.id', name: 'booking.id' },
{ data: 'booking.lead.status_id', name: 'booking.lead.status_id', orderable: false, searchable: false },
{ data: 'service_provider.name', name: 'service_provider.name', orderable: false },
{ data: 'booking.merlin_order_number', name: 'booking.merlin_order_number' },
{ data: 'booking.price', name: 'booking.price' },
{ data: 'booking.price_total', name: 'booking.price_total' },
{ data: 'booking.proceeds', name: 'booking.proceeds', orderable: false },
{ data: 'booking.customer.fullName', name: 'booking.customer.fullName' },
{ data: 'booking.customer.firstname', name: 'booking.customer.firstname' },
{ data: 'booking.customer.name', name: 'booking.customer.name' },
{ data: 'booking.start_date', name: 'booking.start_date' },
{ data: 'booking.end_date', name: 'booking.end_date' },
{ data: 'is_cleared', name: 'is_cleared' },
],
"order": [[ 8, "asc" ]],
"order": [[ 10, "asc" ]],
"orderSequence": ["desc", "asc"],
"bLengthChange": false,
"iDisplayLength": 100,
@ -133,12 +147,11 @@
}
});
$('#filter_service_provider_id, #filter_is_cleared, #filter_sort_by').on('change', function(){
table.order( [ 8, 'asc' ] ).draw();
$('#filter_service_provider_id, #filter_is_cleared, #filter_sort_by, #filter_lead_status_id').on('change', function(){
table.order( [ 10, 'asc' ] ).draw();
});
$('.datepicker-base').on('change', function(){
table.order( [ 8, 'asc' ] ).draw();
table.order( [ 10, 'asc' ] ).draw();
});
});
</script>

View file

@ -6,11 +6,11 @@
<div class="card-body row">
<div class="form-group col-sm-6 col-md-4">
<div class="form-group col-sm-6 col-md-3">
<label for="sf_guard_user_id" class="form-label">{{ __('Sachbearbeiter') }}*</label>
{{ Form::select('sf_guard_user_id', \App\Services\Model::getSfGuardUserArray() , $booking->sf_guard_user_id, array('class'=>'custom-select', 'id'=>'sf_guard_user_id', 'required'=>true)) }}
</div>
<div class="form-group col-sm-6 col-md-4">
<div class="form-group col-sm-6 col-md-3">
<label class="form-label" for="booking_date">{{ __('Buchungsdatum') }}</label>
<div class="input-group">
<div class="input-group-prepend">
@ -19,25 +19,38 @@
{{ Form::text('booking_date', _format_date($booking->booking_date), array('placeholder'=>__('Buchungsdatum'), 'class'=>'form-control datepicker-base', 'id'=>'booking_date')) }}
</div>
</div>
<div class="form-group col-sm-6 col-md-4">
<div class="form-group col-sm-6 col-md-6">
<label class="form-label" for="travel_number">{{ __('Reisenummer') }}</label>
{{ Form::text('travel_number', $booking->travel_number, array('placeholder'=>__('Reisenummer'), 'class'=>'form-control', 'id'=>'travel_number')) }}
</div>
<div class="form-group col-sm-6 col-md-4">
<div class="form-group col-sm-6 col-md-3">
<label for="travel_country_id" class="form-label">{{ __('Reiseland') }}</label>
{{ Form::select('travel_country_id', \App\Services\Model::getSymTravelCountryArray(true) , $booking->travel_country_id, array('class'=>'custom-select', 'id'=>'travel_country_id')) }}
</div>
<div class="form-group col-sm-6 col-md-4">
<div class="form-group col-sm-6 col-md-3">
<label class="form-label" for="travelagenda_id">{{ __('Reiseprogramm') }}</label>
{{ Form::select('travelagenda_id', \App\Services\Model::getTravelAgendaArray(true, $booking->travel_country_id) , $booking->travelagenda_id, array('class'=>'custom-select', 'id'=>'travelagenda_id')) }}
</div>
<div class="form-group col-sm-6 col-md-4">
<div class="form-group col-sm-6 col-md-3">
<label class="form-label" for="travel_category_id">{{ __('Reiseart') }}</label>
{{ Form::select('travel_category_id', \App\Services\Model::getTravelCategoryArray(true) , $booking->travel_category_id, array('class'=>'custom-select', 'id'=>'travel_category_id')) }}
</div>
<div class="form-group col-sm-6 col-md-3">
<label class="form-label" for="travel_comfort">{{ __('Kategorie') }}</label>
<label class="custom-control custom-checkbox mt-2">
{!! Form::checkbox('travel_comfort', 1, $booking->comfort, ['class'=>'custom-control-input', 'id'=>'travel_comfort']) !!}
<span class="custom-control-label">Komfort</span>
</label>
</div>
<div class="form-group col-sm-6 col-md-4">
<div class="form-group col-sm-6 col-md-3">
<label for="airline_ids" class="form-label">{{ __('Airline:s') }}</label>
{{ Form::select('airline_ids[]', \App\Models\Airline::getAsNameIdArray() , $booking->airline_ids, array('class'=>'selectpicker', 'id'=>'airline_ids', 'data-style'=>"btn-default", 'multiple')) }}
</div>
<div class="form-group col-sm-6 col-md-3">
<label class="form-label" for="start_date">{{ __('Aufenthalt vom') }}</label>
<div class="input-group">
<div class="input-group-prepend">
@ -46,7 +59,7 @@
{{ Form::text('start_date', _format_date($booking->start_date), array('placeholder'=>__('Aufenthalt vom'), 'class'=>'form-control datepicker-base', 'id'=>'start_date')) }}
</div>
</div>
<div class="form-group col-sm-6 col-md-4">
<div class="form-group col-sm-6 col-md-3">
<label class="form-label" for="end_date">{{ __('Aufenthalt bis') }}</label>
<div class="input-group">
<div class="input-group-prepend">
@ -55,16 +68,16 @@
{{ Form::text('end_date', _format_date($booking->end_date), array('placeholder'=>__('Aufenthalt bis'), 'class'=>'form-control datepicker-base', 'id'=>'end_date')) }}
</div>
</div>
<div class="form-group col-sm-6 col-md-4">
<label class="form-label" for="title">{{ __('Reisetitel') }}</label>
{{ Form::text('title', $booking->title, array('placeholder'=>__('Reisetitel'), 'class'=>'form-control', 'id'=>'title')) }}
</div>
<div class="form-group col-sm-6 col-md-3">
<label class="form-label" for="pax">{{ __('Pax') }}</label>
{{ Form::select('pax', range(0, 80) , $booking->pax, array('class'=>'custom-select', 'id'=>'pax')) }}
</div>
<div class="form-group col-sm-6 col-md-3">
<label class="form-label" for="title">{{ __('Reisetitel') }}</label>
{{ Form::text('title', $booking->title, array('placeholder'=>__('Reisetitel'), 'class'=>'form-control', 'id'=>'title')) }}
</div>
<div class="form-group col-sm-6 col-md-3">
<label class="form-label" for="travel_documents">{{ __('Reiseunterlagen') }}</label>
{{ Form::select('travel_documents', [0=>'nicht vollständig', 1=>'vollständig'], $booking->travel_documents, array('class'=>'custom-select', 'id'=>'travel_documents')) }}
@ -122,14 +135,6 @@
<label class="form-label" for="hold">{{ __('Hold') }}</label>
{{ Form::select('hold', \App\Models\Booking::$hold_types , $booking->hold, array('class'=>'custom-select', 'id'=>'hold' )) }}
</div>
<div class="form-group col-sm-6 col-md-3">
<label class="form-label" for="airline_id">{{ __('Airline') }}</label>
{{ Form::select('airline_id', \App\Models\Airline::getAsNameIdArray() , $booking->airline_id, array('class'=>'custom-select', 'id'=>'airline_id' )) }}
</div>
<div class="form-group col-sm-6 col-md-3">
<label class="form-label" for="filekey">{{ __('Filekey') }}</label>
{{ Form::text('filekey', $booking->filekey, array('placeholder'=>__('Filekey'), 'class'=>'form-control', 'id'=>'filekey')) }}
</div>
<div class="form-group col-sm-6 col-md-3">
<label class="form-label" for="">&nbsp;</label>
<label class="custom-control custom-checkbox mt-2" style="margin-right: 20px;">
@ -137,6 +142,10 @@
<span class="custom-control-label">{{__('Rail & Fly')}}</span>
</label>
</div>
<div class="form-group col-sm-6 col-md-3">
<label class="form-label" for="filekey">{{ __('Filekey') }}</label>
{{ Form::text('filekey', $booking->filekey, array('placeholder'=>__('Filekey'), 'class'=>'form-control', 'id'=>'filekey')) }}
</div>
<div class="form-group col-sm-6 col-md-3">
<label class="form-label" for="lawyer_date">{{ __('Anwaltsfrist') }}</label>
<div class="input-group">

View file

@ -301,7 +301,6 @@
</div>
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal"
data-target="#modals-load-content"
data-id="new-file"

View file

@ -13,6 +13,7 @@
<th>Nachname</th>
<th>Geburtsdatum</th>
<th>Nationalität</th>
<th>Pass</th>
<th>Kind</th>
<th>&nbsp;</th>
</tr>
@ -37,7 +38,10 @@
{{ Form::select('nationality_id', \App\Services\Model::getTravelNationalityArray(false) , $booking->nationality_id, array('class'=>'custom-select', 'id'=>'nationality_id')) }}
</td>
<td>
&nbsp;
<label class="custom-control custom-checkbox mt-2">
{!! Form::checkbox('participant_pass', 1, $booking->participant_pass, ['class'=>'custom-control-input', 'id'=>'participant_pass']) !!}
<span class="custom-control-label"></span>
</label>
</td>
<td>
&nbsp;
@ -65,6 +69,12 @@
{{ Form::select('participant['.$item->id.'][nationality_id]', \App\Services\Model::getTravelNationalityArray(false) , $item->nationality_id, array('class'=>'custom-select', 'id'=>'participant_'.$item->id.'_nationality_id')) }}
</td>
<td>
<label class="custom-control custom-checkbox mt-2">
{!! Form::checkbox('participant['.$item->id.'][participant_pass]', 1, $item->participant_pass, ['class'=>'custom-control-input', 'id'=>'participant_'.$item->id.'_participant_pass']) !!}
<span class="custom-control-label"></span>
</label>
</td>
<td>
<label class="custom-control custom-checkbox mt-2">
{!! Form::checkbox('participant['.$item->id.'][participant_child]', 1, $item->participant_child, ['class'=>'custom-control-input', 'id'=>'participant_'.$item->id.'_participant_child']) !!}

View file

@ -129,7 +129,6 @@
</div>
</div>
</div>
</div>
</div>

View file

@ -0,0 +1,189 @@
@extends('layouts.layout-2')
@section('content')
<style>
/* body {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}*/
.btn-xs {
line-height: 1.3em;
}
.table tbody + tbody {
border-top: 1px solid #9c9c9c;
}
.table th, .table td {
border-top: none;
}
.table tr.border-none td, .table tr.border-none th {
border-top: none;
}
.table .thead-dark th {
color: #4E5155;
background-color: rgba(24, 28, 33, 0.1);
border-color: rgba(63, 69, 74, 0.1);
}
.input-group-text {
padding: 0.438rem 0.475rem;
}
.note-editing-area {
border-radius: 0.25rem;
border: 1px solid rgba(24, 28, 33, 0.1);
padding: 0.438rem 0.875rem;
color: #4E5155;
-webkit-transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
}
.note-editor.note-frame .note-editing-area .note-editable, .note-editor.note-airframe .note-editing-area .note-editable {
color: #000;
}
.note-editor.note-frame .note-editing-area:focus-within , .note-editor.note-airframe .note-editing-area:focus-within {
border-color: #648859;
}
.note-editing-area .note-editable li {
margin-bottom:0.5rem;
}
.note-editor.note-airframe .note-placeholder {
padding: 0;
}
.draft_item_tbody .form-control {
color: #000;
}
</style>
<h4 class="font-weight-bold py-3 mb-1">
Buchnungen PDF Vorlage / {{ $general_name->name }}
<div class="float-right">
<a href="{{ route('cms_booking_all') }}" class="btn btn-default btn-sm">zurück</a>
</div>
</h4>
<div class="card">
{!! Form::open(['url' => route('cms_booking_all_detail', [$general_name->id]), 'class' => 'form-horizontal']) !!}
@if(count($contents))
@php($i = 1)
<div class="table-responsive mb-4">
<table class="table mb-0" id="table_dragula_tbody" style="min-width: 1080px">
<thead class="thead-dark">
<tr>
<th style="width: 1em"></th>
<th style="width: 1em">#</th>
<th>Abschnitte</th>
<th style="width: 8em">#</th>
</tr>
</thead>
@foreach($contents as $content)
<tbody class="draft_item_tbody">
<tr>
<td>
<span class="handle ion ion-ios-move d-inline-block bg-primary text-white p-1"></span>
</td>
<td><span class="item_pos_number">{{ $i++ }}</span></td>
<td>
{{ Form::text('contents['.$content->id.'][name]', $content->name, array('placeholder'=>__('Abschnitt*'), 'class'=>'form-control', 'id'=>'contents_'.$content->id.'_name', 'required')) }}
</td>
<td>
<button type="button" name="" value="up_{{$content->id}}" class="btn btn-xs btn-default move-up-btn"><i class="fa fa-arrow-up"></i> </button>
<button type="button" name="" value="down_{{$content->id}}" class="btn btn-xs btn-default mr-2 move-down-btn"><i class="fa fa-arrow-down"></i> </button>
<a class="text-danger" href="{{ route('cms_booking_all_delete', [$content->id, 'item']) }}" onclick="return confirm('{{__('Wirklich löschen?')}}');"><i class="fa fa-trash-alt"></i></a>
</td>
</tr>
<tr class="border-none">
<td colspan="2" style="vertical-align: bottom">
<button type="submit" name="action" value="saveAll" class="btn btn-secondary btn-sm" title="speichern"><i class="ion ion-ios-save"></i></button>&nbsp;
</td>
<td>
{{ Form::textarea('contents['.$content->id.'][full_text]', $content->getContent(), array('class'=>'form-control autoExpand summernote-air', 'id'=>'contents_'.$content->id.'_name', 'rows'=>'1', 'data-min-rows'=>'1')) }}
</td>
<td>
<label class="custom-control custom-checkbox mt-2" style="margin-right: 20px;">
{!! Form::checkbox('contents['.$content->id.'][in_pdf]', 1, ($content->decimal > 0), ['class'=>'custom-control-input']) !!}
<span class="custom-control-label">{{__('in PDF')}}</span>
</label>
<label class="custom-control custom-checkbox mt-2" style="margin-right: 20px;">
{!! Form::checkbox('contents['.$content->id.'][page-break]', 1, ($content->getObjectBy('page-break') > 0), ['class'=>'custom-control-input']) !!}
<span class="custom-control-label" style="white-space: nowrap;">{{__('Neue Seite')}}</span>
</label>
</td>
</tr>
</tbody>
@endforeach
<tfoot>
<tr>
<td colspan="4"></td>
</tr>
</tfoot>
</table>
</div>
@endif
<div class="text-left mt-3 m-2">
<button type="submit" name="action" value="saveAll" class="btn btn-submit btn-sm">{{ __('save changes') }}</button>&nbsp;
<div class="float-right">
<button type="submit" name="action" value="addItem" class="btn btn-sm btn-primary"><i class="fa fa-plus"></i> Neuen Abschnitt hinzufügen</button>
</div>
</div>
{!! Form::close() !!}
<script>
$(document).ready(function() {
$.dragYScroll();
var sort_item_pos_number = function(){
var index = 1;
$('#table_dragula_tbody .draft_item_tbody').each(function () {
$(this).find('.item_pos_number').html(index);
$(this).data('rowPosition', index);
index++;
});
};
$(function() {
// Drag handle
var sortableItems = dragula([$('#table_dragula_tbody')[0]], {
moves: function (el, container, handle) {
return handle.classList.contains('handle');
}
});
sortableItems.on('dragend', function() {
//sort new
sort_item_pos_number();
});
});
$('table .move-up-btn').on('click', function () {
var thisRow = $(this).closest('tbody');
var prevRow = thisRow.prev();
if (prevRow.length) {
prevRow.before(thisRow);
sort_item_pos_number()
}
});
$('table .move-down-btn').on('click', function () {
var thisRow = $(this).closest('tbody');
var nextRow = thisRow.next();
if (nextRow.length) {
nextRow.after(thisRow);
sort_item_pos_number()
}
});
});
</script>
</div>
@endsection

View file

@ -0,0 +1,113 @@
@extends('layouts.layout-2')
@section('content')
<h4 class="font-weight-bold py-3 mb-1">
Buchnungen PDF Vorlagen
</h4>
@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
<div class="card">
<div class="card-datatable table-responsive">
<table class="datatables-feedbacks table table-striped table-bordered">
<thead>
<tr>
<th style="max-width: 60px;">&nbsp;</th>
<th>{{__('Name')}}</th>
<th>{{__('')}}</th>
</tr>
</thead>
<tbody>
@foreach($values as $value)
<tr>
<td data-sort="{{ $value->id }}">
<a href="{{ route('cms_booking_all_detail', [$value->id]) }}" class="btn icon-btn btn-sm btn-primary">
<span class="fa fa-edit"></span>
</a>
</td>
<td>
{{ $value->name }} &nbsp;
<a href="#" class="text-primary" data-toggle="modal" data-target="#modals-default"
data-id="{{ $value->id }}"
data-name="{{ $value->name }}">
<span class="fa fa-edit"></span>
</a>
</td>
<td>
<a class="text-danger" href="{{ route('cms_booking_all_delete', [$value->id, 'name']) }}" onclick="return confirm('{{__('Wirklich löschen?')}}');"><i class="fa fa-trash-alt"></i></a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<div class="ml-3 mb-2">
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-default"
data-id="new"
data-name=""
>Neue PDF Vorlage anlegen</button>
</div>
<!-- Modal template -->
<div class="modal fade" id="modals-default">
<div class="modal-dialog">
<form class="modal-content" action="{{ route('cms_booking_all_detail') }}" method="post">
@csrf
<input type="hidden" name="id" value="">
<div class="modal-header">
<h5 class="modal-title">Buchnungen PDF Vorlagen <span class="font-weight-light">anlegen/bearbeiten</span></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
</div>
<div class="modal-body">
<div class="form-row">
<div class="form-group col">
<label for="name" class="form-label">Name*</label>
<input type="text" class="form-control" name="name" placeholder="{{__('Name')}}" required>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">{{__('close')}}</button>
<button type="submit" class="btn btn-primary" name="action" value="newOrSaveName" >{{__('save')}}</button>
</div>
</form>
</div>
</div>
<script>
$('#modals-default').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget);
$(this).find(".modal-content input[name='id']").val(button.data('id'));
$(this).find(".modal-body input[name='name']").val(button.data('name'));
});
$( document ).ready(function() {
$('.datatables-feedbacks').dataTable({
"bLengthChange": false,
"iDisplayLength": 50,
"language": {
"url": "/js/German.json"
},
});
});
</script>
</div>
@endsection

View file

@ -0,0 +1,249 @@
@extends('layouts.layout-2')
@section('content')
<style>
/* body {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}*/
.btn-xs {
line-height: 1.3em;
}
.table tbody + tbody {
border-top: 1px solid #9c9c9c;
}
.table th, .table td {
border-top: none;
}
.table tr.border-none td, .table tr.border-none th {
border-top: none;
}
.table .thead-dark th {
color: #4E5155;
background-color: rgba(24, 28, 33, 0.1);
border-color: rgba(63, 69, 74, 0.1);
}
.input-group-text {
padding: 0.438rem 0.475rem;
}
.note-editing-area {
border-radius: 0.25rem;
border: 1px solid rgba(24, 28, 33, 0.1);
padding: 0.438rem 0.875rem;
color: #4E5155;
-webkit-transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
}
.note-editor.note-frame .note-editing-area .note-editable, .note-editor.note-airframe .note-editing-area .note-editable {
color: #000;
}
.note-editor.note-frame .note-editing-area:focus-within , .note-editor.note-airframe .note-editing-area:focus-within {
border-color: #648859;
}
.note-editing-area .note-editable li {
margin-bottom:0.5rem;
}
.note-editor.note-airframe .note-placeholder {
padding: 0;
}
.draft_item_tbody .form-control {
color: #000;
}
</style>
<h4 class="font-weight-bold py-3 mb-1">
Buchnungen PDF Inhalte / {{ $content_name->name }}
<div class="float-right">
<a href="{{ route('cms_booking_content') }}" class="btn btn-default btn-sm">zurück</a>
</div>
</h4>
<div class="card">
{!! Form::open(['url' => route('cms_booking_content_detail', [$content_name->id]), 'class' => 'form-horizontal', 'id'=>'booking-content-detail-form']) !!}
{{ Form::hidden('content_pos_id', '') }}
{{ Form::hidden('action', '') }}
@if(count($contents))
@php($i = 1)
<div class="table-responsive mb-4">
<table class="table mb-0" id="table_dragula_tbody" style="min-width: 1080px">
<thead class="thead-dark">
<tr>
<th style="width: 1em"></th>
<th style="width: 1em">#</th>
<th>Abschnitte</th>
<th style="width: 8em">#</th>
</tr>
</thead>
@foreach($contents as $content)
@if($content->decimal > 0)
<tbody class="draft_item_tbody">
<tr>
<td>
<span class="ion ion-ios-lock d-inline-block bg-dark text-white p-1 px-2"></span>
{{-- <span class="handle ion ion-ios-move d-inline-block bg-primary text-white p-1"></span> --}}
</td>
<td><span class="item_pos_number">{{ $i++ }}</span></td>
<td>
{{ Form::text('contents['.$content->id.'][name]', $content->name, array('placeholder'=>__('Abschnitt*'), 'class'=>'form-control', 'id'=>'contents_'.$content->id.'_name', 'readonly')) }}
{{ Form::hidden('contents['.$content->id.'][identifier]', $identifier_general) }}
</td>
<td>
{{--
<button type="button" name="" value="up_{{$content->id}}" class="btn btn-xs btn-default move-up-btn"><i class="fa fa-arrow-up"></i> </button>
<button type="button" name="" value="down_{{$content->id}}" class="btn btn-xs btn-default mr-2 move-down-btn"><i class="fa fa-arrow-down"></i> </button>
<a class="text-danger" href="{{ route('cms_fewo_all_delete', [$content->id]) }}" onclick="return confirm('{{__('Wirklich löschen?')}}');"><i class="fa fa-trash-alt"></i></a>
--}}
</td>
</tr>
<tr class="border-none">
<td colspan="2" style="vertical-align: bottom">
<button type="button" name="action" value="addItem" class="btn btn-xs btn-primary btn-add-item" title="Abschnitt hinzufügen" data-pos-id="{{$content->id}}"><i class="fa fa-plus"></i> <i class="fa fa-arrow-down"></i></button>
</td>
<td>
<div class="note-editing-area readonly">
{!! $content->getContent() !!}
</div>
</td>
<td>
{{-- --}}
<label class="custom-control custom-checkbox mt-2" style="margin-right: 20px;">
{!! Form::checkbox('contents['.$content->id.'][in_pdf]', 1, ($content->decimal > 0), ['class'=>'custom-control-input', 'disabled']) !!}
<span class="custom-control-label">{{__('in PDF')}}</span>
</label>
<label class="custom-control custom-checkbox mt-2" style="margin-right: 20px;">
{!! Form::checkbox('contents['.$content->id.'][page-break]', 1, ($content->getObjectBy('page-break') > 0), ['class'=>'custom-control-input', 'disabled']) !!}
<span class="custom-control-label" style="white-space: nowrap;">{{__('Neue Seite')}}</span>
</label>
</td>
</tr>
</tbody>
@endif
@if($booking_contents = \App\Services\Booking::getBookingCMSContent($content, $identifier_content))
@foreach($booking_contents as $content)
<tbody class="draft_item_tbody">
<tr>
<td>
<span class="handle ion ion-ios-move d-inline-block bg-primary text-white p-1"></span>
</td>
<td><span class="item_pos_number">{{ $i++ }}</span></td>
<td>
{{ Form::text('contents['.$content->id.'][name]', $content->name, array('placeholder'=>__('Abschnitt*'), 'class'=>'form-control', 'id'=>'contents_'.$content->id.'_name', 'required')) }}
{{ Form::hidden('contents['.$content->id.'][identifier]', $identifier_content) }}
</td>
<td>
<button type="button" name="" value="up_{{$content->id}}" class="btn btn-xs btn-default move-up-btn"><i class="fa fa-arrow-up"></i> </button>
<button type="button" name="" value="down_{{$content->id}}" class="btn btn-xs btn-default mr-2 move-down-btn"><i class="fa fa-arrow-down"></i> </button>
<a class="text-danger" href="{{ route('cms_booking_content_delete', [$content->id, 'item']) }}" onclick="return confirm('{{__('Wirklich löschen?')}}');"><i class="fa fa-trash-alt"></i></a>
</td>
</tr>
<tr class="border-none">
<td colspan="2" style="vertical-align: bottom">
<button type="submit" name="action" value="saveAll" class="btn btn-secondary btn-sm" title="speichern"><i class="ion ion-ios-save"></i></button>&nbsp;
</td>
<td>
{{ Form::textarea('contents['.$content->id.'][full_text]', $content->getContent(), array('class'=>'form-control autoExpand summernote-air', 'id'=>'contents_'.$content->id.'_name', 'rows'=>'1', 'data-min-rows'=>'1')) }}
</td>
<td>
<label class="custom-control custom-checkbox mt-2" style="margin-right: 20px;">
{!! Form::checkbox('contents['.$content->id.'][in_pdf]', 1, ($content->decimal > 0), ['class'=>'custom-control-input']) !!}
<span class="custom-control-label">{{__('in PDF')}}</span>
</label>
<label class="custom-control custom-checkbox mt-2" style="margin-right: 20px;">
{!! Form::checkbox('contents['.$content->id.'][page-break]', 1, ($content->getObjectBy('page-break') > 0), ['class'=>'custom-control-input']) !!}
<span class="custom-control-label" style="white-space: nowrap;">{{__('Neue Seite')}}</span>
</label>
</td>
</tr>
</tbody>
@endforeach
@endif
@endforeach
<tfoot>
<tr>
<td colspan="4"></td>
</tr>
</tfoot>
</table>
</div>
@endif
<div class="text-left mt-3 m-2">
<button type="submit" name="action" value="saveAll" class="btn btn-submit btn-sm">{{ __('save changes') }}</button>&nbsp;
<div class="float-right">
<button type="submit" name="action" value="previewPDF" class="btn btn-sm btn-info"><i class="fa fa-file-pdf"></i> Vorschau PDF</button>
</div>
</div>
{!! Form::close() !!}
<script>
$(document).ready(function() {
$('.btn-add-item').on('click', function () {
$('input[name=content_pos_id]').val($(this).data('pos-id'));
$('input[name=action]').val('addItem');
$("#booking-content-detail-form").submit();
});
$.dragYScroll();
var sort_item_pos_number = function(){
var index = 1;
$('#table_dragula_tbody .draft_item_tbody').each(function () {
$(this).find('.item_pos_number').html(index);
$(this).data('rowPosition', index);
index++;
});
};
$(function() {
// Drag handle
var sortableItems = dragula([$('#table_dragula_tbody')[0]], {
moves: function (el, container, handle) {
return handle.classList.contains('handle');
}
});
sortableItems.on('dragend', function() {
//sort new
sort_item_pos_number();
});
});
$('table .move-up-btn').on('click', function () {
var thisRow = $(this).closest('tbody');
var prevRow = thisRow.prev();
if (prevRow.length) {
prevRow.before(thisRow);
sort_item_pos_number()
}
});
$('table .move-down-btn').on('click', function () {
var thisRow = $(this).closest('tbody');
var nextRow = thisRow.next();
if (nextRow.length) {
nextRow.after(thisRow);
sort_item_pos_number()
}
});
});
</script>
</div>
@endsection

View file

@ -0,0 +1,124 @@
@extends('layouts.layout-2')
@section('content')
<h4 class="font-weight-bold py-3 mb-1">
Buchnungen PDF Inhalte
</h4>
@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
<div class="card">
<div class="card-datatable table-responsive">
<table class="datatables-feedbacks table table-striped table-bordered">
<thead>
<tr>
<th style="max-width: 60px;">&nbsp;</th>
<th>{{__('Name')}}</th>
<th>{{__('Vorlage')}}</th>
<th>{{__('')}}</th>
</tr>
</thead>
<tbody>
@foreach($values as $value)
<tr>
<td data-sort="{{ $value->id }}">
<a href="{{ route('cms_booking_content_detail', [$value->id]) }}" class="btn icon-btn btn-sm btn-primary">
<span class="fa fa-edit"></span>
</a>
</td>
<td>
{{ $value->name }} &nbsp;
<a href="#" class="text-primary" data-toggle="modal" data-target="#modals-default"
data-id="{{ $value->id }}"
data-name="{{ $value->name }}"
data-general_id="{{ $value->getObjectBy('general_id') }}">
<span class="fa fa-edit"></span>
</a>
</td>
<td>{{ \App\Services\Model::getCMSContentGeneralNameById($value->getObjectBy('general_id')) }}</td>
<td>
<a class="text-danger" href="{{ route('cms_booking_content_delete', [$value->id, 'name']) }}" onclick="return confirm('{{__('Wirklich löschen?')}}');"><i class="fa fa-trash-alt"></i></a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<div class="ml-3 mb-2">
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-default"
data-id="new"
data-name=""
data-general_id=""
>Neue PDF Vorlage anlegen</button>
</div>
<!-- Modal template -->
<div class="modal fade" id="modals-default">
<div class="modal-dialog">
<form class="modal-content" action="{{ route('cms_booking_content_detail') }}" method="post">
@csrf
<input type="hidden" name="id" value="">
<div class="modal-header">
<h5 class="modal-title">Buchnungen PDF Inhalte <span class="font-weight-light">anlegen/bearbeiten</span></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
</div>
<div class="modal-body">
<div class="form-row">
<div class="form-group col">
<label for="name" class="form-label">Name*</label>
<input type="text" class="form-control" name="name" placeholder="{{__('Name')}}" required>
</div>
</div>
<div class="form-group">
<label for="general_id" class="form-label">{{__('Vorlage')}}*</label>
<select class="selectpicker" data-style="btn-default" name="general_id" data-live-search="true" required>
{!! HTMLHelper::getCMSContentOptions($identifier_general_name, false, false) !!}
</select>
<i>Ein PDF Inhalt benötigt eine Vorlage mit min einen Eintrag.</i>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">{{__('close')}}</button>
<button type="submit" class="btn btn-primary" name="action" value="newOrSaveName" >{{__('save')}}</button>
</div>
</form>
</div>
</div>
<script>
$('#modals-default').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget);
$(this).find(".modal-content input[name='id']").val(button.data('id'));
$(this).find(".modal-body input[name='name']").val(button.data('name'));
$(this).find(".modal-body select[name='general_id']").val(button.data('general_id'));
$('.selectpicker').selectpicker('refresh');
});
$( document ).ready(function() {
$('.datatables-feedbacks').dataTable({
"bLengthChange": false,
"iDisplayLength": 50,
"language": {
"url": "/js/German.json"
},
});
});
</script>
</div>
@endsection

View file

@ -206,7 +206,6 @@
<div class="float-right">
<button type="submit" name="action" value="previewPDF" class="btn btn-sm btn-info"><i class="fa fa-file-pdf"></i> Vorschau PDF</button>
</div>
</div>
{!! Form::close() !!}
<script>

View file

@ -107,7 +107,7 @@
<div class="form-row">
<div class="form-group col">
<label for="mail_from" class="form-label">E-Mail von:</label>
{{ Form::text('mail_from', $value->booking->customer ? $value->booking->customer->email : '', array('placeholder'=>'E-Mail Adresse von', 'id'=>'mail_from', 'class'=>'form-control', 'required')) }}
{{ Form::text('mail_from', isset($value->replay_email) ? $value->replay_email : '', array('placeholder'=>'E-Mail Adresse von', 'id'=>'mail_from', 'class'=>'form-control', 'required')) }}
</div>
</div>
<div class="form-row">
@ -156,20 +156,26 @@
<span class="ql-formats">
<select class="ql-align"></select>
</span>
<span class="ql-formats">
<button class="ql-link"></button>
</span>
<span class="ql-formats">
<button class="ql-clean"></button>
</span>
<span class="ql-formats">
<span class="ql-formats">
<select class="ql-placeholder">
{!! \App\Services\Placeholder::getBookingOptions() !!}
</select>
</span>
@if(isset($value->booking))
<span class="ql-formats">
<button class="ql-preview" id="open_modal_quill_preview"
data-route="{{ route('customer_mail_ajax') }}"
data-booking_id="{{ $value->booking->id }}"
data-action="load_preview_mail"><i class="fa fa-eye"></i></button>
</span>
</span>
@endif
</div>
<div id="message-editor" style="height: 400px">{!! $value->message !!}</div>
{{ Form::textarea('message', $value->message, array('placeholder'=>$value->m_placeholder, 'id'=>'message-editor-fallback', 'class'=>'form-control d-none', 'rows'=>15)) }}

View file

@ -8,7 +8,7 @@
</div>
<div class="modal-body">
@include('customer.mail.modal-show-mail-inner', ['customer_mail' => $customer_mail, 'show_move_dirs' => true])
@include('customer.mail.modal-show-mail-inner', ['customer_mail' => $customer_mail, 'show_move_dirs' => $value->show_move_dirs])
</div>
<div class="modal-footer">

View file

@ -317,6 +317,18 @@
});
$('.summernote-exsmall').summernote({
height: 100,
tabsize: 2,
followingToolbar: true,
toolbar: [
['font', ['bold', 'italic', 'underline', 'clear']],
['para', ['ul', 'ol']],
['insert', ['link', 'hr']],
['view', ['fullscreen', 'codeview']],
],
});
$('.summernote-air').summernote({
airMode: true,
lang: 'de-DE',

View file

@ -211,6 +211,22 @@
</ul>
</li>
@endif
@if(Auth::user()->isPermission('cms-book'))
<li class="sidenav-item{{ Request::is('cms/booking/*') ? ' open' : '' }}">
<a href="javascript:void(0)" class="sidenav-link sidenav-toggle">
<i class="sidenav-icon ion ion-md-bed"></i>
<div>Buchungen</div>
</a>
<ul class="sidenav-menu">
<li class="sidenav-item{{ Request::is(['cms/booking/all', 'cms/booking/all/*']) ? ' active' : '' }}">
<a href="{{ route('cms_booking_all') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-paper"></i><div>PDF Vorlagen</div></a>
</li>
<li class="sidenav-item{{ Request::is(['cms/booking/content', 'cms/booking/content/*']) ? ' active' : '' }}">
<a href="{{ route('cms_booking_content') }}" class="sidenav-link"><i class="sidenav-icon ion ion-md-paper"></i><div>PDF Inhalte</div></a>
</li>
</ul>
</li>
@endif
@if(Auth::user()->isPermission('cms-fewo'))
<li class="sidenav-item{{ Request::is('cms/fewo/*') ? ' open' : '' }}">
<a href="javascript:void(0)" class="sidenav-link sidenav-toggle">
@ -219,7 +235,7 @@
</a>
<ul class="sidenav-menu">
<li class="sidenav-item{{ Request::is(['cms/fewo/all', 'cms/fewo/all/*']) ? ' active' : '' }}">
<a href="{{ route('cms_fewo_all') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-paper"></i><div>FeWo Allgemein</div></a>
<a href="{{ route('cms_fewo_all') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-paper"></i><div>FeWo Vorlage</div></a>
</li>
<li class="sidenav-item{{ Request::is(['cms/fewo/content', 'cms/fewo/content/*']) ? ' active' : '' }}">
<a href="{{ route('cms_fewo_content') }}" class="sidenav-link"><i class="sidenav-icon ion ion-md-paper"></i><div>FeWo Inhalte</div></a>

View file

@ -100,8 +100,9 @@
<div class="form-row">
<div class="form-group col">
<label for="mail_from" class="form-label">E-Mail von:</label>
{{ Form::text('mail_from', $value->lead->customer ? $value->lead->customer->email : '', array('placeholder'=>'E-Mail Adresse von', 'id'=>'mail_from', 'class'=>'form-control', 'required')) }}
{{ Form::text('mail_from', isset($value->replay_email) ? $value->replay_email : '', array('placeholder'=>'E-Mail Adresse von', 'id'=>'mail_from', 'class'=>'form-control', 'required')) }}
</div>
</div>
<div class="form-row">
<div class="form-group col">
@ -148,6 +149,9 @@
<span class="ql-formats">
<select class="ql-align"></select>
</span>
<span class="ql-formats">
<button class="ql-link"></button>
</span>
<span class="ql-formats">
<button class="ql-clean"></button>
</span>
@ -215,20 +219,20 @@
<div class="col-sm-6">
<label for="subdir" class="form-label">&nbsp;</label>
{{-- TODO load subdirs by pos id --}}
{{-- @if(isset($value->booking))
@foreach(\App\Services\Booking::getCustomerMailDirs() as $lead_mail_dir)
@if(isset($value->lead) && $value->lead->travel_country)
@foreach(\App\Services\Lead::getCustomerMailDirs() as $lead_mail_dir)
@if($lead_mail_dir->pos > 0)
<select class="custom-select send_mail_subdir" name="subdir" id="send_mail_subdir_{{$lead_mail_dir->pos}}">
<option value="0">keinen Unterordner</option>
@foreach($value->booking->travel_country->getMailDirs($lead_mail_dir->pos) as $mail_dir_id)
@php ($mail_dir_name = \App\Services\Booking::getCustomerMailName($lead_mail_dir, $mail_dir_id))
<option value="{{$mail_dir_id}}" @if($value->customer_mail_subdir == $mail_dir_id) selected @endif>{{$mail_dir_name}}</option>
@endforeach
@foreach($value->lead->travel_country->getMailDirs($lead_mail_dir->pos) as $mail_dir_id)
@php ($mail_dir_name = \App\Services\Lead::getCustomerMailName($lead_mail_dir, $mail_dir_id))
<option value="{{$mail_dir_id}}" @if($value->lead_mail_subdir == $mail_dir_id) selected @endif>{{$mail_dir_name}}</option>
@endforeach
</select>
@endif
@endforeach
@endif
--}}
</div>
</div>
@endif

View file

@ -100,7 +100,6 @@
</div>
<div class="col-sm-6">
<button type="submit" class="btn btn-xs btn-default float-right mt-1"><i class="ion ion-ios-redo"></i>&nbsp; verschieben</button>
<label for="subdir" class="form-label">&nbsp;</label>
@if($lead_mail->lead->travel_country)
@foreach(\App\Services\Lead::getCustomerMailDirs() as $lead_mail_dir)

View file

@ -8,7 +8,7 @@
</div>
<div class="modal-body">
@include('lead.modal-show-mail-inner', ['lead_mail' => $lead_mail, 'show_move_dirs' => true])
@include('lead.modal-show-mail-inner', ['lead_mail' => $lead_mail, 'show_move_dirs' => $value->show_move_dirs])
</div>
<div class="modal-footer">

View file

@ -10,6 +10,7 @@
<thead>
<tr>
<th style="max-width: 60px;">&nbsp;</th>
<th style="max-width: 60px;"><i class="fa fa-eye"></i></th>
<th>{{__('BuchungID')}}</th>
<th>{{__('Vorname')}}</th>
<th>{{__('Nachname')}}</th>
@ -32,6 +33,7 @@
"order": [[ 8, "desc" ]],
"columns": [
{ data: 'action_edit', orderable: false, searchable: false},
{ data: 'action_see', orderable: false, searchable: false},
{ data: 'booking_id', name: 'booking_id' },
{ data: 'customer.firstname', name: 'customer.firstname' },
{ data: 'customer.name', name: 'customer.name' },

View file

@ -10,6 +10,7 @@
<thead>
<tr>
<th style="max-width: 60px;">&nbsp;</th>
<th style="max-width: 60px;"><i class="fa fa-eye"></i></th>
<th>{{__('BuchnungID')}}</th>
<th>{{__('Vorname')}}</th>
<th>{{__('Nachname')}}</th>
@ -32,6 +33,7 @@
"order": [[ 8, "desc" ]],
"columns": [
{ data: 'action_edit', orderable: false, searchable: false},
{ data: 'action_see', orderable: false, searchable: false},
{ data: 'booking_id', name: 'booking_id' },
{ data: 'customer.first_name', name: 'customer.first_name' },
{ data: 'customer.last_name', last_name: 'customer.name' },

View file

@ -10,6 +10,7 @@
<thead>
<tr>
<th style="max-width: 60px;">&nbsp;</th>
<th style="max-width: 60px;"><i class="fa fa-eye"></i></th>
<th>{{__('AnfrageID')}}</th>
<th>{{__('Vorname')}}</th>
<th>{{__('Nachname')}}</th>
@ -31,6 +32,7 @@
"order": [[ 7, "desc" ]],
"columns": [
{ data: 'action_edit', orderable: false, searchable: false},
{ data: 'action_see', orderable: false, searchable: false},
{ data: 'lead_id', name: 'lead_id' },
{ data: 'customer.firstname', name: 'customer.firstname' },
{ data: 'customer.name', name: 'customer.name' },

View file

@ -2,7 +2,7 @@
@section('content')
<h4 class="font-weight-bold py-3 mb-1">
{{ __('Anfragen') }}
{{ __('Buchungen') }}
</h4>
<div class="card">
@ -140,15 +140,12 @@
</div>
</div>
<div class="form-row align-items-center">
<div class="col-5 col-sm-2 mb-2">
<label class="form-label">AnfrageID</label>
<input class="form-control full_search" name="full_lead_id_search" placeholder="suche" type="text" value="">
</div>
<div class="col-6 col-sm-3 mb-2">
<div class="col-6 col-md-3 mb-2">
<label class="form-label">Vorname</label>
<input class="form-control full_search" name="full_firstname_search" placeholder="suche" type="text" value="">
</div>
<div class="col-6 col-sm-3 mb-2">
<div class="col-6 col-md-3 mb-2">
<label class="form-label">Nachname</label>
<input class="form-control full_search" name="full_lastname_search" placeholder="suche" type="text" value="">
</div>
@ -157,6 +154,15 @@
<label class="form-label">BuchungsID</label>
<input class="form-control full_search" name="full_booking_id_search" placeholder="suche" type="text" value="">
</div>
<div class="col-5 col-sm-2 mb-2">
<label class="form-label" for="sort_sf_guard_user_id">Filter Sachbearbeiter</label>
<select class="custom-select" name="sort_sf_guard_user_id" id="sort_sf_guard_user_id">
<option value="">Filter aus</option>
@foreach($filter_sf_guard_user as $id=>$name)
<option value="{{$id}}">{{$name}}</option>
@endforeach
</select>
</div>
<div class="col-2 col-sm-2 mb-2 mt-4">
<a href="{{ route('requests') }}" class="btn icon-btn btn-sm btn-outline-dark float-right">
<span class="fa fa-sync"></span>
@ -169,18 +175,15 @@
<input type="hidden" name="sort_travel_country_id" value="">
<input type="hidden" name="sort_travelagenda_id" value="">
<input type="hidden" name="sort_travel_documents" value="">
<input type="hidden" name="sort_sf_guard_user_id" value="">
<input type="hidden" name="sort_lead_status_id" value="">
<table id="datatables-requests" class="table table-striped table-bordered">
<thead>
<tr>
<th style="max-width: 10px;">&nbsp;</th>
<th>{{__('AnfrageID')}}</th>
<th>{{__('BuchungsID')}}</th>
<th>{{__('Vorname')}}</th>
<th>{{__('Nachname')}}</th>
<th style="max-width: 10px;">&nbsp;</th>
<th>{{__('BuchungsID')}}</th>
<th>{{__('Reiseland')}}</th>
<th>{{__('Programm')}}</th>
<th>{{__('Komfort')}}</th>
@ -190,8 +193,9 @@
<th>{{__('Abreise')}}</th>
<th>{{__('U.')}}</th>
<th>{{__('L.')}}</th>
<th>{{__('P.')}}</th>
<th>{{__('N.')}}</th>
<th>{{__('Sachbearbeiter')}}</th>
<th>{{__('Sb.')}}</th>
<th>{{__('Status')}}</th>
<th>{{__('E-Mail')}}</th>
<th>{{__('K-Wunsch')}}</th>
@ -238,7 +242,7 @@
d.sort_travel_country_id = $('input[name=sort_travel_country_id]').val();
d.sort_travelagenda_id = $('input[name=sort_travelagenda_id]').val();
d.sort_travel_documents = $('input[name=sort_travel_documents]').val();
d.sort_sf_guard_user_id = $('input[name=sort_sf_guard_user_id]').val();
d.sort_sf_guard_user_id = $('select[name=sort_sf_guard_user_id]').val();
d.sort_lead_status_id = $('input[name=sort_lead_status_id]').val();
d.full_firstname_search = $('input[name=full_firstname_search]').val();
d.full_lastname_search = $('input[name=full_lastname_search]').val();
@ -257,12 +261,10 @@
}
},
"columns": [
{ data: 'action_lead_edit', orderable: false, searchable: false},
{ data: 'lead_id', name: 'lead_id' },
{ data: 'customer.firstname', name: 'customer.firstname' },
{ data: 'customer.name', name: 'customer.name' },
{ data: 'action_booking_edit', orderable: false, searchable: false},
{ data: 'id', name: 'id' },
{ data: 'customer.firstname', name: 'customer.firstname' },
{ data: 'customer.name', name: 'customer.name' },
{ data: 'travel_country_id', name: 'travel_country_id', orderable: false },
{ data: 'travelagenda_id', name: 'travelagenda_id', orderable: false },
{ data: 'comfort', name: 'comfort', orderable: true },
@ -271,13 +273,14 @@
{ data: 'end_date', name: 'end_date' },
{ data: 'travel_documents', name: 'travel_documents', orderable: false },
{ data: 'booking_services', name: 'booking_services', orderable: false },
{ data: 'booking_participants_pass', name: 'booking_participants_pass', orderable: false },
{ data: 'booking_notice', name: 'booking_notice', orderable: false },
{ data: 'sf_guard_user_id', name: 'sf_guard_user_id', orderable: false },
{ data: 'lead.status_id', name: 'lead.status_id', orderable: false },
{ data: 'last_customer_email', name: 'last_customer_email', orderable: true },
{ data: 'paying_out', name: 'paying_out' },
{ data: 'paying_out_status', name: 'paying_out_status' },
{ data: 'airline_id', name: 'airline_id' },
{ data: 'airline_ids', name: 'airline_ids', orderable: false },
{ data: 'refund', name: 'refund' },
{ data: 'hold', name: 'hold' },
{ data: 'xx_tkt', name: 'xx_tkt' },
@ -285,7 +288,7 @@
"bLengthChange": false,
"iDisplayLength": 50,
"orderSequence": ["desc", "asc"],
"order": [[ 5, "desc" ]],
"order": [[ 1, "desc" ]],
"language": {
"url": "/js/German.json"
},
@ -308,7 +311,7 @@
}
} );
} );*/
this.api().columns(15).every( function () {
/*this.api().columns(14).every( function () {
var column = this;
var title = $(column.header()).html();
var select = $('<select class="selectpicker"><option value="">'+title+'</option></select>')
@ -325,7 +328,7 @@
}
}
} );
} );
} );*/
/* this.api().columns(12).every( function () {
var column = this;
var title = $(column.header()).html();
@ -467,7 +470,9 @@
$('#travel_option_airline_id').on('change', function(){
table.draw();
});
$('#sort_sf_guard_user_id').on('change', function(){
table.draw();
});
$('#travel_option_paying_out').on('change', function(){
table.draw();
});

View file

@ -0,0 +1,71 @@
@extends('layouts.layout-2')
@section('content')
{!! Form::open(['url' => route('admin_settings_airline_update', [$id]), 'class' => 'form-horizontal']) !!}
<h4 class="font-weight-bold py-3 mb-1">
Airline Inhalte
<div class="float-right">
<a href="{{route('admin_settings_airline')}}" class="btn btn-default btn-sm">{{ __('back') }}</a>
</div>
</h4>
<div class="card">
<div class="card-body">
<div class="form-row">
<div class="form-group col-sm-12">
<label class="form-label" for="name">{{ __('Kürzel') }} *</label>
{{ Form::text('name', $model->name, array('placeholder'=>__('Name'), 'class'=>'form-control', 'id'=>'name', 'required'=>true)) }}
</div>
<div class="form-group col-sm-12">
<label class="form-label" for="name_full">{{ __('Name') }} *</label>
{{ Form::text('name_full', $model->name_full, array('placeholder'=>__('Code'), 'class'=>'form-control', 'id'=>'name_full', 'required'=>true)) }}
</div>
</div>
<hr>
<h4>Vordefinierte E-Mail-Adressen <span class="text-muted">für diese Airline</span></h4>
<div class="form-row">
<div class="form-group col-sm-12">
<div class="form-group col-sm-">
<label class="form-label" for="contact_emails">Für interene Mails <span class="text-muted">(jede E-Mail in eine extra Zeile)</span></label>
{{ Form::textarea('contact_emails', \App\Services\Util::_implodeLines($model->contact_emails), ['class' => 'form-control', 'rows'=>4]) }}
</div>
</div>
</div>
<hr>
<h4>Buchungs-Vorlagen/Inhalte <span class="text-muted">für die PDFs</span></h4>
<div class="form-row">
<div class="form-group col-sm-12">
<label class="form-label" for="flight_info">Fluginfo (Platzhalter für die PDFs ist #Airline_Fluginfo#)</label>
{{ Form::textarea('flight_info', $model->flight_info, ['class' => 'form-control summernote-exsmall', 'rows'=>4]) }}
</div>
</div>
<div class="form-row">
<div class="form-group col-sm-12">
<label class="form-label" for="check_in">Checkin (Platzhalter für die PDFs ist #Airline_Checkin#)</label>
{{ Form::textarea('check_in', $model->check_in, ['class' => 'form-control summernote-exsmall', 'rows'=>4]) }}
</div>
</div>
<div class="form-row">
<div class="form-group col-sm-12">
<label class="form-label" for="baggage">Gepäck (Platzhalter für die PDFs ist #Airline_Gepaeck#)</label>
{{ Form::textarea('baggage', $model->baggage, ['class' => 'form-control summernote-exsmall', 'rows'=>4]) }}
</div>
</div>
<button type="submit" name="action" value="" class="btn btn-submit">{{ __('save changes') }}</button>&nbsp;
</div>
</div>
<div class="text-left mt-3">
<a href="{{route('admin_settings_airline')}}" class="btn btn-default">{{ __('back') }}</a>
</div>
{!! Form::close() !!}
<script>
$( document ).ready(function() {
});
</script>
@endsection

View file

@ -19,14 +19,10 @@
<tbody>
@foreach($airline as $value)
<tr>
<td>
<button type="button" class="btn icon-btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-default"
data-id="{{ $value->id }}"
data-name="{{ $value->name }}"
data-name_full="{{ $value->name_full }}"
data-contact_emails="{{\App\Services\Util::_implodeLines($value->contact_emails)}}">
<td data-sort="{{ $value->id }}">
<a href="{{ route('admin_settings_airline_detail', [$value->id]) }}" class="btn icon-btn btn-sm btn-primary">
<span class="fa fa-edit"></span>
</button>
</a>
</td>
<td data-sort="{{ $value->name }}">{{ $value->name }}</td>
<td data-sort="{{ $value->name_full }}">{{ $value->name_full }}</td>
@ -37,64 +33,14 @@
</tbody>
</table>
<div class="mt-4 col">
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-default"
data-id="new"
data-name=""
data-name_full=""
data-contact_emails=""
>Neue Airline anlegen</button>
<a href="{{ route('admin_settings_airline_detail', ['new']) }}" class="btn btn-sm btn-primary">Neues Airline anlegen</a>
</div>
</div>
</div>
<!-- Modal template -->
<div class="modal fade" id="modals-default">
<div class="modal-dialog">
<form class="modal-content" action="{{ route('admin_settings_airline_update') }}" method="post">
@csrf
<input type="hidden" class="form-control" name="id">
<div class="modal-header">
<h5 class="modal-title">Airline <span class="font-weight-light">anlegen/bearbeiten</span></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
</div>
<div class="modal-body">
<div class="form-row">
<div class="form-group col">
<label for="name" class="form-label">Kürzel*</label>
<input type="text" class="form-control" name="name" placeholder="{{__('Kürzel')}}" required>
</div>
</div>
<div class="form-row">
<div class="form-group col">
<label for="name_full" class="form-label">Name*</label>
<input type="text" class="form-control" name="name_full" placeholder="{{__('Name')}}" required>
</div>
</div>
<div class="form-row">
<div class="form-group col">
<label class="form-label" for="contact_emails">Für interene Mails <span class="text-muted">(jede E-Mail in eine extra Zeile)</span></label>
<textarea class="form-control" rows="4" name="contact_emails" cols="50"></textarea>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">{{__('close')}}</button>
<button type="submit" class="btn btn-primary">{{__('save')}}</button>
</div>
</form>
</div>
</div>
<script>
$( document ).ready(function() {
$('#modals-default').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget);
$(this).find(".modal-content input[name='id']").val(button.data('id'));
$(this).find(".modal-body input[name='name']").val(button.data('name'));
$(this).find(".modal-body input[name='name_full']").val(button.data('name_full'));
$(this).find(".modal-body textarea[name='contact_emails']").val(button.data('contact_emails'));
});
$('.datatables-default').dataTable({
"bLengthChange": false,
"iDisplayLength": 50,

View file

@ -38,29 +38,29 @@
<label class="form-label" for="message">Nachricht</label>
<div id="message-editor-toolbar">
<span class="ql-formats">
<button class="ql-bold"></button>
<button class="ql-italic"></button>
<button class="ql-underline"></button>
<button class="ql-strike"></button>
</span>
<button class="ql-bold"></button>
<button class="ql-italic"></button>
<button class="ql-underline"></button>
<button class="ql-strike"></button>
</span>
<span class="ql-formats">
<button class="ql-header" value="1"></button>
<button class="ql-header" value="2"></button>
<button class="ql-blockquote"></button>
<button class="ql-code-block"></button>
</span>
<button class="ql-header" value="1"></button>
<button class="ql-header" value="2"></button>
<button class="ql-blockquote"></button>
<button class="ql-code-block"></button>
</span>
<span class="ql-formats">
<button class="ql-list" value="ordered"></button>
<button class="ql-list" value="bullet"></button>
<button class="ql-indent" value="-1"></button>
<button class="ql-indent" value="+1"></button>
</span>
<button class="ql-list" value="ordered"></button>
<button class="ql-list" value="bullet"></button>
<button class="ql-indent" value="-1"></button>
<button class="ql-indent" value="+1"></button>
</span>
<span class="ql-formats">
<select class="ql-align"></select>
</span>
<select class="ql-align"></select>
</span>
<span class="ql-formats">
<button class="ql-clean"></button>
</span>
<button class="ql-clean"></button>
</span>
<span class="ql-formats">
<select class="ql-placeholder">
{!! \App\Services\Placeholder::getBookingOptions() !!}

View file

@ -20,7 +20,7 @@
<a class="nav-link @if($step === 'form') active show @endif" data-toggle="tab" href="#navs-form">Formular</a>
</li>
<li class="nav-item">
<a class="nav-link @if($step === 'contact') active show @endif" data-toggle="tab" href="#navs-contact">Kontaktdaten</a>
<a class="nav-link @if($step === 'contact') active show @endif" data-toggle="tab" href="#navs-contact">Kontaktdaten/Visum</a>
</li>
<li class="nav-item">
<a class="nav-link @if($step === 'emails') active show @endif" data-toggle="tab" href="#navs-emails">E-Mails</a>
@ -60,8 +60,6 @@
{{ Form::textarea('html_information', $model->html_information, ['class' => 'form-control summernote']) }}
</div>
</div>
<div class="form-row">
<div class="col-12 py-2">
<label class="switcher switcher-on-off">
@ -135,11 +133,13 @@
<select class="selectpicker" data-style="btn-default" name="contact_lands[]" multiple>
{!! HTMLHelper::getTravelCountriesOptions($model->contact_lands) !!}
</select>
<em>Das Land selbst muss auch hier selbst aufgeführt werden, wenn es angezeicht werden soll. Die Kontaktdaten der definierten Länder (Reiselandes) werden nacheinander am Ende des PDFs (RA, RB, Voucher) eingefügt.</em>
<em>Das Land selbst muss auch hier selbst aufgeführt werden, wenn es angezeicht werden soll. Die Kontaktdaten der definierten Länder (Reiselandes) werden nacheinander am Ende des PDFs (RA, RB, Voucher, Reisedokumente, ) eingefügt.</em>
</div>
</div>
<hr>
<h4>Kontaktdaten im PDF</h4>
<p>Die Kontaktdaten werden automatisch in den Buchnungsdokumente wie RA, RB, Voucher engesetzt.<br>
Für die Buchnungs- Vorlagen/Inhalte ist der Platzhalter #Reiseland_Kontakt#)</p>
<div class="form-row">
<div class="form-group col-sm-12">
<label class="form-label" for="contact_headline">Überschrift</label>
@ -148,19 +148,19 @@
<div class="form-group col-sm-6">
<label class="form-label" for="contact_text_1">Kontaktfeld 1 </label>
{{ Form::textarea('contact_text_1', $model->contact_text_1, ['class' => 'form-control', 'rows'=>4]) }}
{{ Form::textarea('contact_text_1', $model->contact_text_1, ['class' => 'form-control summernote-exsmall', 'rows'=>4]) }}
</div>
<div class="form-group col-sm-6">
<label class="form-label" for="contact_text_2">Kontaktfeld 2 </label>
{{ Form::textarea('contact_text_2', $model->contact_text_2, ['class' => 'form-control', 'rows'=>4]) }}
{{ Form::textarea('contact_text_2', $model->contact_text_2, ['class' => 'form-control summernote-exsmall', 'rows'=>4]) }}
</div>
<div class="form-group col-sm-6">
<label class="form-label" for="contact_text_3">Kontaktfeld 3 </label>
{{ Form::textarea('contact_text_3', $model->contact_text_3, ['class' => 'form-control', 'rows'=>4]) }}
{{ Form::textarea('contact_text_3', $model->contact_text_3, ['class' => 'form-control summernote-exsmall', 'rows'=>4]) }}
</div>
<div class="form-group col-sm-6">
<label class="form-label" for="contact_text_4">Kontaktfeld 4</label>
{{ Form::textarea('contact_text_4', $model->contact_text_4, ['class' => 'form-control', 'rows'=>4]) }}
{{ Form::textarea('contact_text_4', $model->contact_text_4, ['class' => 'form-control summernote-exsmall', 'rows'=>4]) }}
</div>
</div>
<hr>
@ -173,7 +173,15 @@
<div class="form-row">
<div class="form-group col-sm-12">
<label class="form-label" for="contact_text_4">Kontakt Footer</label>
{{ Form::textarea('contact_footer', $model->contact_footer, ['class' => 'form-control', 'rows'=>4]) }}
{{ Form::textarea('contact_footer', $model->contact_footer, ['class' => 'form-control summernote-exsmall', 'rows'=>4]) }}
</div>
</div>
<hr>
<h4>Buchungs-Vorlagen/Inhalte <span class="text-muted">für die PDFs</span></h4>
<div class="form-row">
<div class="form-group col-sm-12">
<label class="form-label" for="visum_text">Visum (Platzhalter für die PDFs ist #Reiseland_Visum#)</label>
{{ Form::textarea('visum_text', $model->visum_text, ['class' => 'form-control summernote-exsmall', 'rows'=>4]) }}
</div>
</div>
<button type="submit" name="action" value="contact" class="btn btn-submit">{{ __('save changes') }}</button>&nbsp;
@ -196,7 +204,7 @@
<div class="form-row">
<div class="form-group col-sm-12">
<div class="form-group col-sm-">
<label class="form-label" for="contact_headline">der Agenturen für interene Mails <span class="text-muted">(jede E-Mail in eine extra Zeile)</span></label>
<label class="form-label" for="contact_emails">der Agenturen für interene Mails <span class="text-muted">(jede E-Mail in eine extra Zeile)</span></label>
{{ Form::textarea('contact_emails', \App\Services\Util::_implodeLines($model->contact_emails), ['class' => 'form-control', 'rows'=>4]) }}
</div>
</div>
@ -349,7 +357,7 @@
<div class="form-row">
<div class="form-group col-sm-12">
<label class="form-label" for="travel_nationality_requirement_{{$travel_nationality->id}}">{{ $travel_nationality->name }}{{ __('(HTML)') }} </label>
{{ Form::textarea('travel_nationality_requirement['.$travel_nationality->id.']', $model->getNationalityRequirement($travel_nationality->id), ['class' => 'form-control summernote-small', 'id'=>'travel_nationality_requirement_'.$travel_nationality->id]) }}
{{ Form::textarea('travel_nationality_requirement['.$travel_nationality->id.']', $model->getNationalityRequirement($travel_nationality->id), ['class' => 'form-control summernote-exsmall', 'id'=>'travel_nationality_requirement_'.$travel_nationality->id]) }}
</div>
</div>
@endforeach

View file

@ -135,29 +135,32 @@
@endif
<div id="message-editor-toolbar">
<span class="ql-formats">
<button class="ql-bold"></button>
<button class="ql-italic"></button>
<button class="ql-underline"></button>
<button class="ql-strike"></button>
</span>
<button class="ql-bold"></button>
<button class="ql-italic"></button>
<button class="ql-underline"></button>
<button class="ql-strike"></button>
</span>
<span class="ql-formats">
<button class="ql-header" value="1"></button>
<button class="ql-header" value="2"></button>
<button class="ql-blockquote"></button>
<button class="ql-code-block"></button>
</span>
<button class="ql-header" value="1"></button>
<button class="ql-header" value="2"></button>
<button class="ql-blockquote"></button>
<button class="ql-code-block"></button>
</span>
<span class="ql-formats">
<button class="ql-list" value="ordered"></button>
<button class="ql-list" value="bullet"></button>
<button class="ql-indent" value="-1"></button>
<button class="ql-indent" value="+1"></button>
</span>
<button class="ql-list" value="ordered"></button>
<button class="ql-list" value="bullet"></button>
<button class="ql-indent" value="-1"></button>
<button class="ql-indent" value="+1"></button>
</span>
<span class="ql-formats">
<select class="ql-align"></select>
</span>
<select class="ql-align"></select>
</span>
<span class="ql-formats">
<button class="ql-clean"></button>
</span>
<button class="ql-link"></button>
</span>
<span class="ql-formats">
<button class="ql-clean"></button>
</span>
<span class="ql-formats">
<select class="ql-placeholder">
{!! \App\Services\Placeholder::getFewoOptions() !!}

View file

@ -8,7 +8,7 @@
</div>
<div class="modal-body">
@include('travel.user.booking.mail.modal-show-mail-inner', ['customer_mail' => $customer_mail, 'show_move_dirs' => true])
@include('travel.user.booking.mail.modal-show-mail-inner', ['customer_mail' => $customer_mail, 'show_move_dirs' => $value->show_move_dirs])
{{-- @if($customer_mail->customer_fewo_mail)
@include('travel.user.booking.mail.modal-show-mail-inner', ['customer_fewo_mail' => $customer_mail->customer_mail])