Google2Fa ready to upload

This commit is contained in:
Kevin Adametz 2021-11-09 18:38:44 +01:00
parent e3495be8b8
commit 73e38a006e
127 changed files with 2637 additions and 589 deletions

View file

@ -113,6 +113,7 @@ return [
'url' => ':attribute muss eine URL sein.',
'old_password' => 'Passwort ist nicht gültig',
'users_update_email' => 'Die E-Mail ist schon zur Änderung eingetragen',
'usernotactive' => 'Konto ist nicht aktiv',
/*
|--------------------------------------------------------------------------

View file

@ -0,0 +1,31 @@
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h5 class="modal-title">{{__('User')}} <span class="font-weight-light">{{__('create/edit')}}</span></h5>
</div>
{!! Form::open(['url' => route('admin_user_update_modal', [$action]), 'class' => 'form-horizontal']) !!}
<div class="modal-body">
<input type="hidden" name="id" id="id" value="{{ $user->id }}">
<input type="hidden" name="action" id="action" value="{{ $action }}">
<div class="form-row">
<div class="form-group col">
<label for="email" class="form-label">{{__('E-Mail')}}</label>
{{ Form::text('email', $user->email, array('placeholder'=>__('E-Mail'), 'class'=>'form-control', 'readonly')) }}
</div>
</div>
<hr>
<div class="form-group">
<label class="custom-control custom-checkbox m-0">
{!! Form::checkbox('active', 1, $user->active, ['class'=>'custom-control-input']) !!}
<span class="custom-control-label">User aktiv</span>
</label>
</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::close() !!}

View file

@ -0,0 +1,60 @@
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h5 class="modal-title">{{__('User')}}<span class="font-weight-light">{{__('create/edit')}}</span></h5>
</div>
{!! Form::open(['url' => route('admin_user_update_modal', [$action]), 'class' => 'form-horizontal']) !!}
<div class="modal-body">
<input type="hidden" name="id" id="id" value="{{ $user->id }}">
<input type="hidden" name="action" id="action" value="{{ $action }}">
<div class="form-row">
<div class="form-group col">
<label for="email" class="form-label">{{__('E-Mail')}}</label>
{{ Form::text('email', $user->email, array('placeholder'=>__('E-Mail'), 'class'=>'form-control', 'readonly')) }}
</div>
</div>
<hr>
<div class="form-row">
<div class="form-group col">
<label for="admin" class="form-label">{{__('Role')}}</label>
<select class="selectpicker" data-style="btn-default" name="admin">
{!! HTMLHelper::getRolesOptions($user->admin) !!}
</select>
</div>
</div>
<hr>
@foreach($groups as $role_id => $permissions)
<h6>{{$roles[$role_id]}}</h6>
@foreach($permissions as $key=>$val)
<div class="form-group">
<label class="custom-control custom-checkbox m-0">
{!! Form::checkbox('permissions['.$key.']', 1, $user->isPermission($key), ['class'=>'custom-control-input']) !!}
<span class="custom-control-label custom-control-label-{{$val['color']}}">{{$val['name']}}</span>
</label>
</div>
@endforeach
<hr>
@endforeach
<hr>
<div class="form-group">
<label class="custom-control custom-checkbox m-0">
{!! Form::checkbox('confirmed', 1, $user->confirmed, ['class'=>'custom-control-input']) !!}
<span class="custom-control-label">{{__('verified')}}</span>
</label>
</div>
<div class="form-group">
<label class="custom-control custom-checkbox m-0">
{!! Form::checkbox('active', 1, $user->active, ['class'=>'custom-control-input']) !!}
<span class="custom-control-label">{{__('active')}}</span>
</label>
</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::close() !!}

View file

@ -0,0 +1,35 @@
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h5 class="modal-title">Google2Fa</h5>
</div>
{!! Form::open(['url' => route('admin_user_update_modal', [$action]), 'class' => 'form-horizontal']) !!}
<div class="modal-body">
<input type="hidden" name="id" id="id" value="{{ $user->id }}">
<input type="hidden" name="action" id="action" value="{{ $action }}">
<style>
.qrcode {
display: inline-block;
width: 280px;
margin: 20px 0px 25px 0px;
padding: 15px;
border: 1px solid black;
text-align: center;
}
</style>
<div class="text-center">
<h5>{{ $MyGoogle2FA->getBy('name') }} | {{ $MyGoogle2FA->getBy('email') }}</h5>
<p>Zwei-Faktor-Authentifizierung zurücksetzen.</p>
<br>
</div>
<hr>
<p><strong>Vor</strong> der Aktivierung wird beim Login er QR-Code und Secret Key angezeigt, um die Google2FA einzurichten.</p>
<p><strong>Nach</strong> der Aktivierung wird beim Login die Google2FA abgefragt.</p>
<p><strong>Zurücksetzen</strong> eines aktivierten Codes erzeugt einen neuen Google2FA Code der erneut in die Google Authenticator App hinzugefügt werden muss.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">{{__('close')}}</button>
<button type="submit" class="btn btn-danger">{{__('Google2FA jetzt zurücksetzen')}}</button>
</div>
{!! Form::close() !!}

View file

@ -0,0 +1,41 @@
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h5 class="modal-title">Google2Fa</h5>
</div>
{!! Form::open(['url' => route('admin_user_update_modal', [$action]), 'class' => 'form-horizontal']) !!}
<div class="modal-body">
<input type="hidden" name="id" id="id" value="{{ $user->id }}">
<input type="hidden" name="action" id="action" value="{{ $action }}">
<style>
.qrcode {
display: inline-block;
width: 280px;
margin: 20px 0px 25px 0px;
padding: 15px;
border: 1px solid black;
text-align: center;
}
</style>
<div class="text-center">
<h5>{{ $MyGoogle2FA->getBy('name') }} | {{ $MyGoogle2FA->getBy('email') }}</h5>
<p>Richten Sie Ihre Zwei-Faktor-Authentifizierung ein, indem Sie mit der Google Authenticator App den Barcode unten scannen.</p>
<br>
<div><strong>Secret Key</strong></div>
<div class="key">{{ $MyGoogle2FA->getBy('secretKey') }}</div>
<div class="qrcode">
{!! $MyGoogle2FA->getBy('inlineUrl') !!}
</div>
</div>
<hr>
<p><strong>Vor</strong> der Aktivierung wird beim Login er QR-Code und Secret Key angezeigt, um die Google2FA einzurichten.</p>
<p><strong>Nach</strong> der Aktivierung wird beim Login die Google2FA abgefragt.</p>
<p><strong>Zurücksetzen</strong> eines aktivierten Codes erzeugt einen neuen Google2FA Code der erneut in die Google Authenticator App hinzugefügt werden muss.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">{{__('close')}}</button>
<button type="submit" class="btn btn-primary">{{__('Google2FA jetzt aktivieren')}}</button>
</div>
{!! Form::close() !!}

View file

@ -0,0 +1,57 @@
<div class="modal-content">
{!! Form::open(['url' => $data['url'], 'class' => '', 'enctype' => 'multipart/form-data']) !!}
{{ Form::hidden('id', $data['id']) }}
{{ Form::hidden('back', $data['back']) }}
<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>
{{ Form::text('name', $value->name, array('placeholder'=>__('Name'), 'class'=>'form-control', '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($data['identifier'], $value->getObjectBy('general_id'), false) !!}
</select>
<i>Ein PDF Inhalt benötigt eine Vorlage mit min einen Eintrag.</i>
</div>
<hr>
<div class="form-group">
<label for="country_ids" class="form-label">für folgende Länder benutzen (Mehrfachauswahl möglich)</label>
{{ Form::select('country_ids[]', \App\Models\TravelCountry::getAsNameIdArray() , [], array('class'=>'selectpicker', 'id'=>'country_ids', 'data-style'=>"btn-default", 'multiple')) }}
</div>
<div class="form-group">
<label class="custom-control custom-checkbox mt-2" style="margin-right: 20px;">
{!! Form::checkbox('content[page-break]', 1, 1, ['class'=>'custom-control-input']) !!}
<span class="custom-control-label" style="white-space: nowrap;">Bei jeder Buchung automatisch erstellen (sonst kann es manuell in der Buchung erstellt werden)</span>
</label>
</div>
<div class="form-group">
<label class="custom-control custom-checkbox mt-2" style="margin-right: 20px;">
{!! Form::checkbox('content[page-break]', 1, 1, ['class'=>'custom-control-input']) !!}
<span class="custom-control-label" style="white-space: nowrap;">PDF Inhalt aktiv (nicht aktive Inhalte werden nicht angezeigt und nicht automatisch erstellt)</span>
</label>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">schließen</button>
<button type="submit" class="btn btn-primary" name="action" value="newOrSaveName">hinzufügen</button>
</div>
{!! Form::close() !!}
</div>
<script type="text/javascript">
</script>

View file

@ -22,14 +22,6 @@
{{ Form::text('email-confirm', $user->email, array('placeholder'=>__('Confirm E-Mail'), 'class'=>'form-control', 'id'=>'email-confirm', 'readonly'=>true)) }}
</div>
</div>
@if(isset($isFromAdmin))
@if(count($user->user_update_email) > 0)
<p class="badge badge-primary" style=" color:#fff;">{{ $user->user_update_email->first()->email }} {{__('waiting for activation since')}} | {{ $user->user_update_email->first()->created_at->format('d.m.Y H:i') }}</p><br>
@endif
<a href="{{ route('admin_user_change_mail', [$user->id]) }}" class="btn btn-default btn-sm"> {{ __('Contact') }} {{__('Change E-Mail')}}</a>
@else
<a href="{{ route('user_update_email', [$user->id]) }}" class="btn btn-default btn-sm">{{__('Change E-Mail')}}</a>
@endif
@else
<div class="form-row">
<div class="form-group col-md-6">

View file

@ -1,12 +1,13 @@
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h5 class="modal-title">{{__('User')}}<span class="font-weight-light">{{__('create/edit')}}</span></h5>
<h5 class="modal-title">{{__('User')}} <span class="font-weight-light">{{__('create/edit')}}</span></h5>
</div>
{!! Form::open(['url' => route('admin_user_update_modal', ['user']), 'class' => 'form-horizontal']) !!}
{!! Form::open(['url' => route('admin_user_update_modal', [$action]), 'class' => 'form-horizontal']) !!}
<div class="modal-body">
<input type="hidden" name="id" id="id" value="{{ $user->id }}">
<input type="hidden" name="action" id="action" value="{{ $action }}">
<div class="form-row">
<div class="form-group col">
@ -37,13 +38,6 @@
<hr>
@endforeach
<hr>
<div class="form-group">
<label class="custom-control custom-checkbox m-0">
{!! Form::checkbox('confirmed', 1, $user->confirmed, ['class'=>'custom-control-input']) !!}
<span class="custom-control-label">{{__('verified')}}</span>
</label>
</div>
<div class="form-group">
<label class="custom-control custom-checkbox m-0">
{!! Form::checkbox('active', 1, $user->active, ['class'=>'custom-control-input']) !!}

View file

@ -20,7 +20,7 @@
<th>{{__('Name')}}</th>
<th>{{__('E-Mail')}}</th>
<th>{{__('Zugang')}}</th>
<th>{{__('verified')}}</th>
<th>{{__('Google2FA')}}</th>
<th>{{__('active')}}</th>
<th>{{__('delete')}}</th>
</tr>
@ -42,6 +42,46 @@
<script>
function update_modal_data_show(e, $ele) {
e.preventDefault();
var ele = $ele,
url = ele.data('url'),
data = {id:ele.data('data'), action:ele.data('action')};
console.log(data);
console.log(url);
$.ajax({
url: url,
data: data,
type: "POST",
dataType: "html",
cache: false,
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
encode: true,
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
success: function(data) {
// do what ever you want here. add content to <div> if it was not 1 .
//console.log(data);
$('#update-modal-content').html(data);
$('.selectpicker').selectpicker(["refresh"]);
$('.input-daterange').datepicker({toggleActive: true,format: 'dd.mm.yyyy'});
// $.Nestable.init();
$('#updateModalShow').modal('show');
},
error: function(xhr, status, errorThrown) {
console.log(xhr);
console.log(xhr.responseText);
console.log(status);
console.log("Sorry, there was a problem!");
}
});
return false;
}
$( document ).ready(function() {
$('.datatables-users').dataTable({
"processing": true,
@ -52,7 +92,7 @@
{ data: 'name', name: 'name' },
{ data: 'email', name: 'email' },
{ data: 'admin', name: 'admin' },
{ data: 'confirmed', name: 'confirmed' },
{ data: 'google2fa', name: 'google2fa' },
{ data: 'active', name: 'active' },
{ data: 'action_delete', orderable: false, searchable: false},
],

View file

@ -0,0 +1,58 @@
@extends('layouts.auth')
@section('content')
<!-- Content -->
<div class="authentication-wrapper authentication-2 ui-bg-cover ui-bg-overlay-container px-4" style="background-image: url({{asset('images/sphinx.jpg')}});">
<div class="ui-bg-overlay bg-dark opacity-25"></div>
<div class="authentication-inner py-5">
<div class="card">
<div class="p-4 p-sm-5" style="padding-bottom: 1.5rem !important;">
<!-- Logo -->
<div class="d-flex justify-content-center align-items-center pb-2 mb-2">
<div class="">
<div class="w-100 position-relative">
<a href="https://www.sterntours.de"><img src="{{ asset('/images/stern-tours-logo.png') }}" alt="STERN TOURS" class=""></a>
</div>
</div>
</div>
<!-- / Logo -->
<h5 class="text-center text-muted font-weight-normal mb-4">{{ __('Login to your account') }}</h5>
<p class="text-center text-muted font-weight-normal">Bitte geben Sie das auf Ihrer Authentificator-App generierte One Time Password ein.
Stellen Sie sicher, dass Sie den Aktuellen einreichen, da er alle 30 Sekunden aktualisiert.</p>
<form method="POST" class="my-5" action="{{ route('2fa') }}" aria-label="OTP">
@csrf
<div class="form-group">
<label class="form-label">One Time Password</label>
<input id="one_time_password" type="text" class="form-control {{ $errors->any() ? ' is-invalid' : '' }}" name="one_time_password" value="" required autofocus>
@if ($errors->any())
<span class="invalid-feedback" role="alert">
<strong>{{ $errors->first() }}</strong>
</span>
@endif
</div>
<div class="d-flex justify-content-between align-items-center m-0">
<button type="submit" class="btn btn-primary">{{ __('Login') }}</button>
<a href="{{ route('logout') }}" class="btn btn-default">{{ __('Logout') }}</a>
</div>
</form>
<!-- / Form -->
<div class="mt-5">
<a class="update_modal_data_load" href="{{ route('data_protected') }}" data-url="{{ route('loading_modal') }}" data-data="data_protection" data-target="#modal-loading">{{ __('data protection') }}</a>
<a class="update_modal_data_load float-right" href="{{ route('imprint') }}" data-url="{{ route('loading_modal') }}" data-data="imprint" data-target="#modal-loading">{{ __('imprint') }}</a>
</div>
</div>
</div>
</div>
</div>
@endsection

View file

@ -0,0 +1,73 @@
@extends('layouts.auth')
@section('content')
<!-- Content -->
<div class="authentication-wrapper authentication-2 ui-bg-cover ui-bg-overlay-container px-4" style="background-image: url({{asset('images/sphinx.jpg')}});">
<div class="ui-bg-overlay bg-dark opacity-25"></div>
<div class="authentication-inner py-5">
<div class="card">
<div class="p-4 p-sm-5" style="padding-bottom: 1.5rem !important;">
<!-- Logo -->
<div class="d-flex justify-content-center align-items-center pb-2 mb-2">
<div class="">
<div class="w-100 position-relative">
<a href="https://www.sterntours.de"><img src="{{ asset('/images/stern-tours-logo.png') }}" alt="STERN TOURS" class=""></a>
</div>
</div>
</div>
<p class="text-center text-muted font-weight-normal">Richten Sie Ihre Zwei-Faktor-Authentifizierung ein, indem Sie mit der Google Authenticator App den Barcode unten scannen.</p>
<style>
.qrcode {
display: inline-block;
width: 280px;
margin: 20px 0px 25px 0px;
padding: 15px;
border: 1px solid black;
text-align: center;
}
</style>
<div class="text-center">
<div><strong>Secret Key</strong></div>
<div class="key">{{ $MyGoogle2FA->getBy('secretKey') }}</div>
<div class="qrcode">
{!! $MyGoogle2FA->getBy('inlineUrl') !!}
</div>
</div>
<hr>
<p class="text-muted"><strong>Vor</strong> der Aktivierung wird beim Login er QR-Code und Secret Key angezeigt, um die Google2FA einzurichten.</p>
<p class="text-muted"><strong>Nach</strong> der Aktivierung wird beim Login die Google2FA abgefragt.</p>
<p class="text-muted"><strong>Zurücksetzen</strong> eines aktivierten Codes erzeugt einen neuen Google2FA Code der erneut in die Google Authenticator App hinzugefügt werden muss.</p>
<form method="POST" class="my-5" action="{{ route('2fa') }}" aria-label="OTP">
@csrf
<input type="hidden" name="action" id="action" value="activate_user_one_time_password">
<div class="text-center">
<button type="submit" class="btn btn-primary">{{__('Google2FA jetzt aktivieren')}}</button>
</div>
<div class="text-center mt-2">
<a href="{{ route('logout') }}" class="btn btn-default">{{ __('Logout') }}</a>
</div>
</form>
<!-- / Form -->
<div class="mt-5">
<a class="update_modal_data_load" href="{{ route('data_protected') }}" data-url="{{ route('loading_modal') }}" data-data="data_protection" data-target="#modal-loading">{{ __('data protection') }}</a>
<a class="update_modal_data_load float-right" href="{{ route('imprint') }}" data-url="{{ route('loading_modal') }}" data-data="imprint" data-target="#modal-loading">{{ __('imprint') }}</a>
</div>
</div>
</div>
</div>
</div>
@endsection

View file

@ -15,6 +15,7 @@
<th>Nationalität</th>
<th>Pass</th>
<th>Kind</th>
<th>Storno</th>
<th>&nbsp;</th>
</tr>
</thead>
@ -81,6 +82,12 @@
<span class="custom-control-label"></span>
</label>
</td>
<td>
<label class="custom-control custom-checkbox mt-2">
{!! Form::checkbox('participant['.$item->id.'][participant_storno]', 1, $item->participant_storno, ['class'=>'custom-control-input', 'id'=>'participant_'.$item->id.'_participant_storno']) !!}
<span class="custom-control-label"></span>
</label>
</td>
<td>
<a class="btn btn-sm text-danger" href="{{ route('booking_delete', [$item->id, 'participant']) }}" onclick="return confirm('{{__('Wirklich löschen?')}}');"><i class="fa fa-trash-alt"></i></a>
</td>

View file

@ -94,7 +94,7 @@
</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::text('contents['.$content->id.'][name]', $content->getNameWithEmpty(), array('placeholder'=>__('Abschnitt'), 'class'=>'form-control', 'id'=>'contents_'.$content->id.'_name')) }}
</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>
@ -103,11 +103,12 @@
</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 colspan="2" style="vertical-align: top">
<button type="button" class="btn btn-default btn-sm mb-2 openSummernoteAir" data-id="#contents_{{ $content->id }}_text"><i class="ion ion-md-color-palette"></i></button>&nbsp;
<button type="submit" name="action" value="saveAll" class="btn btn-secondary btn-sm mt-2" 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')) }}
{{ Form::textarea('contents['.$content->id.'][full_text]', $content->getContent(), array('class'=>'form-control autoExpand summernote-air-placeholder', 'id'=>'contents_'.$content->id.'_text', 'rows'=>'1', 'data-min-rows'=>'1')) }}
</td>
<td>
<label class="custom-control custom-checkbox mt-2" style="margin-right: 20px;">
@ -118,6 +119,14 @@
{!! 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>
<label class="custom-control custom-checkbox mt-2" style="margin-right: 20px;">
{!! Form::checkbox('contents['.$content->id.'][repeat-country]', 1, ($content->getObjectBy('repeat-country') > 0), ['class'=>'custom-control-input']) !!}
<span class="custom-control-label" style="white-space: nowrap;"><i class="ion ion-ios-repeat"></i> {{ __('Länder')}}</span>
</label>
<label class="custom-control custom-checkbox mt-2" style="margin-right: 20px;">
{!! Form::checkbox('contents['.$content->id.'][repeat-airline]', 1, ($content->getObjectBy('repeat-airline') > 0), ['class'=>'custom-control-input']) !!}
<span class="custom-control-label" style="white-space: nowrap;"><i class="ion ion-ios-repeat"></i> {{__('Airline')}}</span>
</label>
</td>
</tr>
</tbody>
@ -139,51 +148,111 @@
</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
@section('scripts')
<script src="{{ asset('/js/summernote-placeholders.js?v=1') }}"></script>
<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()
}
});
$('.summernote-air-placeholder').summernote({
airMode: true,
lang: 'de-DE',
placeholder: 'Text ...',
tabsize: 2,
popover: { air:[
['style', ['style']],
['font', ['bold', 'italic', 'underline', 'clear']],
['font', ['strikethrough']],
['para', ['ul', 'ol', 'paragraph']],
['insert', ['link']],
['color', ['color']],
['view', ['codeview']],
['extensions', ['placeholders']]
] },
placeholderList:
{
blockChar : '#',
items: [{!! \App\Services\Placeholder::getOptionsSummernote('booking') !!}],
},
callbacks: {
onFocus: function(e) {
},
onBlur: function (e) {
},
},
cleaner:{
action: 'paste', // both|button|paste 'button' only cleans via toolbar button, 'paste' only clean when pasting content, both does both options.
newline: '<br>', // Summernote's default is to use '<p><br></p>'
notStyle: 'position:absolute;top:0;left:0;right:0', // Position of Notification
icon: '<i class="note-icon">[Your Button]</i>',
keepHtml: false, // Remove all Html formats
keepOnlyTags: ['<p>', '<br>', '<ul>', '<li>', '<b>', '<strong>','<i>', '<a>'], // If keepHtml is true, remove all tags except these
keepClasses: false, // Remove Classes
badTags: ['style', 'script', 'applet', 'embed', 'noframes', 'noscript', 'html'], // Remove full tags with contents
badAttributes: ['style', 'start'], // Remove attributes from remaining tags
limitChars: false, // 0/false|# 0/false disables option
limitDisplay: false, // text|html|both
limitStop: false // true/false
}
});
$('.openSummernoteAir').on('click', function(){
$($(this).data('id')).parent().find('.note-editable').focus();
popover = $($(this).data('id')).parent().children('.note-editor').children('.note-popover');
if(popover.css('display') == 'none'){
popover.css("display", "block");
}else{
popover.css("display", "none");
}
});
});
</script>
@endsection

View file

@ -44,8 +44,6 @@
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;
}
@ -100,7 +98,7 @@
</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::text('contents['.$content->id.'][name]', $content->getNameWithEmpty(), array('placeholder'=>__('Abschnitt'), 'class'=>'form-control', 'id'=>'contents_'.$content->id.'_name', 'readonly')) }}
{{ Form::hidden('contents['.$content->id.'][identifier]', $identifier_general) }}
</td>
<td>
@ -130,6 +128,14 @@
{!! 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>
<label class="custom-control custom-checkbox mt-2" style="margin-right: 20px;">
{!! Form::checkbox('contents['.$content->id.'][repeat-country]', 1, ($content->getObjectBy('repeat-country') > 0), ['class'=>'custom-control-input', 'disabled']) !!}
<span class="custom-control-label" style="white-space: nowrap;"><i class="ion ion-ios-repeat"></i> {{ __('Länder')}}</span>
</label>
<label class="custom-control custom-checkbox mt-2" style="margin-right: 20px;">
{!! Form::checkbox('contents['.$content->id.'][repeat-airline]', 1, ($content->getObjectBy('repeat-airline') > 0), ['class'=>'custom-control-input', 'disabled']) !!}
<span class="custom-control-label" style="white-space: nowrap;"><i class="ion ion-ios-repeat"></i> {{__('Airline')}}</span>
</label>
</td>
</tr>
@ -144,7 +150,7 @@
</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::text('contents['.$content->id.'][name]', $content->getNameWithEmpty(), array('placeholder'=>__('Abschnitt'), 'class'=>'form-control', 'id'=>'contents_'.$content->id.'_name', 'required')) }}
{{ Form::hidden('contents['.$content->id.'][identifier]', $identifier_content) }}
</td>
<td>
@ -154,11 +160,12 @@
</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 colspan="2" style="vertical-align: top">
<button type="button" class="btn btn-default btn-sm mb-2 openSummernoteAir" data-id="#contents_{{ $content->id }}_text"><i class="ion ion-md-color-palette"></i></button>&nbsp;
<button type="submit" name="action" value="saveAll" class="btn btn-secondary btn-sm mt-2" 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')) }}
{{ Form::textarea('contents['.$content->id.'][full_text]', $content->getContent(), array('class'=>'form-control autoExpand summernote-air-placeholder', 'id'=>'contents_'.$content->id.'_text', 'rows'=>'1', 'data-min-rows'=>'1')) }}
</td>
<td>
<label class="custom-control custom-checkbox mt-2" style="margin-right: 20px;">
@ -169,6 +176,14 @@
{!! 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>
<label class="custom-control custom-checkbox mt-2" style="margin-right: 20px;">
{!! Form::checkbox('contents['.$content->id.'][repeat-country]', 1, ($content->getObjectBy('repeat-country') > 0), ['class'=>'custom-control-input']) !!}
<span class="custom-control-label" style="white-space: nowrap;"><i class="ion ion-ios-repeat"></i> {{ __('Länder')}}</span>
</label>
<label class="custom-control custom-checkbox mt-2" style="margin-right: 20px;">
{!! Form::checkbox('contents['.$content->id.'][repeat-airline]', 1, ($content->getObjectBy('repeat-airline') > 0), ['class'=>'custom-control-input']) !!}
<span class="custom-control-label" style="white-space: nowrap;"><i class="ion ion-ios-repeat"></i> {{__('Airline')}}</span>
</label>
</td>
</tr>
</tbody>
@ -193,57 +208,112 @@
</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
@section('scripts')
<script src="{{ asset('/js/summernote-placeholders.js?v=1') }}"></script>
<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()
}
});
$('.summernote-air-placeholder').summernote({
airMode: true,
lang: 'de-DE',
placeholder: 'Text ...',
tabsize: 2,
popover: { air:[
['style', ['style']],
['font', ['bold', 'italic', 'underline', 'clear']],
['font', ['strikethrough']],
['para', ['ul', 'ol', 'paragraph']],
['insert', ['link']],
['color', ['color']],
['view', ['codeview']],
['extensions', ['placeholders']]
] },
placeholderList:
{
blockChar : '#',
items: [{!! \App\Services\Placeholder::getOptionsSummernote('booking') !!}],
},
callbacks: {
onFocus: function(e) {
},
onBlur: function (e) {
},
},
cleaner:{
action: 'paste', // both|button|paste 'button' only cleans via toolbar button, 'paste' only clean when pasting content, both does both options.
newline: '<br>', // Summernote's default is to use '<p><br></p>'
notStyle: 'position:absolute;top:0;left:0;right:0', // Position of Notification
icon: '<i class="note-icon">[Your Button]</i>',
keepHtml: false, // Remove all Html formats
keepOnlyTags: ['<p>', '<br>', '<ul>', '<li>', '<b>', '<strong>','<i>', '<a>'], // If keepHtml is true, remove all tags except these
keepClasses: false, // Remove Classes
badTags: ['style', 'script', 'applet', 'embed', 'noframes', 'noscript', 'html'], // Remove full tags with contents
badAttributes: ['style', 'start'], // Remove attributes from remaining tags
limitChars: false, // 0/false|# 0/false disables option
limitDisplay: false, // text|html|both
limitStop: false // true/false
}
});
$('.openSummernoteAir').on('click', function(){
$($(this).data('id')).parent().find('.note-editable').focus();
popover = $($(this).data('id')).parent().children('.note-editor').children('.note-popover');
if(popover.css('display') == 'none'){
popover.css("display", "block");
}else{
popover.css("display", "none");
}
});
});
</script>
@endsection

View file

@ -27,6 +27,9 @@
<th style="max-width: 60px;">&nbsp;</th>
<th>{{__('Name')}}</th>
<th>{{__('Vorlage')}}</th>
<th>{{__('Länder')}}</th>
<th>{{__('auto')}}</th>
<th>{{__('aktiv')}}</th>
<th>{{__('')}}</th>
</tr>
</thead>
@ -39,15 +42,19 @@
</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>
<button type="button" class="btn icon-btn btn-sm btn-secondary" data-toggle="modal" data-target="#modals-load-content"
data-id="{{$value->id}}"
data-model="CMSContent"
data-action="modal-cms_booking_content_edit"
data-back="{{route('cms_booking_content')}}"
data-url="{{ route('cms_booking_content_detail', [$value->id]) }}"
data-identifier="{{ $identifier_general_name }}"
data-route="{{ route('modal_load') }}"><span class="fa fa-edit"></span></button> &nbsp;{{ $value->name }}
</td>
<td>{{ \App\Services\Model::getCMSContentGeneralNameById($value->getObjectBy('general_id')) }}</td>
<td>x</td>
<td>x</td>
<td>x</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>
@ -58,50 +65,17 @@
</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>
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-load-content"
data-id="new"
data-model="CMSContent"
data-action="modal-cms_booking_content_edit"
data-back="{{route('cms_booking_content')}}"
data-url="{{ route('cms_booking_content_detail', [$value->id]) }}"
data-identifier="{{ $identifier_general_name }}"
data-route="{{ route('modal_load') }}">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'));

View file

@ -118,7 +118,7 @@
<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')) }}
{{ Form::textarea('contents['.$content->id.'][full_text]', $content->getContent(), array('class'=>'form-control autoExpand summernote-air', 'id'=>'contents_'.$content->id.'_text', 'rows'=>'1', 'data-min-rows'=>'1')) }}
</td>
<td>
<label class="custom-control custom-checkbox mt-2" style="margin-right: 20px;">

View file

@ -172,7 +172,7 @@
<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')) }}
{{ Form::textarea('contents['.$content->id.'][full_text]', $content->getContent(), array('class'=>'form-control autoExpand summernote-air', 'id'=>'contents_'.$content->id.'_text', 'rows'=>'1', 'data-min-rows'=>'1')) }}
</td>
<td>
<label class="custom-control custom-checkbox mt-2" style="margin-right: 20px;">

View file

@ -11,8 +11,12 @@
@if($customer_mail->is_answer)
Antwort von:<br>
@else
@if($customer_mail->send)
Gesendet an:<br>
@else
(nicht gesendet) an:<br>
@endif
@endif
&lt;<a href="mailto:{{$customer_mail->email}}">{{$customer_mail->email}}</a>&gt; {{$customer_mail->sent_at }}
@if($customer_mail->recipient)
<div>TO: {{\App\Services\Util::_implodeLines($customer_mail->recipient, ', ')}}</div>

View file

@ -141,8 +141,6 @@
<script src="{{ asset('/vendor/libs/summernote/dist/lang/summernote-de-DE.js?v=0.8.16') }}"></script>
<script src="{{ asset('/js/summernote-cleaner.js?v=1') }}"></script>
<script src="{{ asset('/vendor/libs/quill/quill.min.js?v=1.3.6') }}"></script>
<script src="{{ asset('/vendor/libs/quill-placeholder-module/dist/placeholder-module.js?v=1') }}"></script>

View file

@ -11,8 +11,12 @@
@if($lead_mail->is_answer)
Antwort von:<br>
@else
Gesendet an:<br>
@if($lead_mail->send)
Gesendet an:<br>
@else
(nicht gesendet) an:<br>
@endif
@endif
&lt;<a href="mailto:{{$lead_mail->email}}">{{$lead_mail->email}}</a>&gt; {{$lead_mail->sent_at }}
@if($lead_mail->recipient)
<div>TO: {{\App\Services\Util::_implodeLines($lead_mail->recipient, ', ')}}</div>

View file

@ -10,14 +10,12 @@
<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>
<th>{{__('E-Mail')}}</th>
<th>{{__('Betreff')}}</th>
<th>{{__('Buchung')}}</th>
<th>{{__('gesendet')}}</th>
<th>{{__('Datum')}}</th>
</tr>
</thead>
@ -30,17 +28,15 @@
"processing": true,
"serverSide": true,
"ajax": '{!! route('mail_booking_datatable') !!}',
"order": [[ 8, "desc" ]],
"order": [[ 7, "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' },
{ data: 'email', name: 'email' },
{ data: 'subject', name: 'subject' },
{ data: 'booking', name: 'booking', searchable: false },
{ data: 'send', name: 'send', searchable: false },
{ data: 'date', name: 'date' },
],
"bLengthChange": false,

View file

@ -10,14 +10,12 @@
<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>
<th>{{__('E-Mail')}}</th>
<th>{{__('Betreff')}}</th>
<th>{{__('Buchung')}}</th>
<th>{{__('gesendet')}}</th>
<th>{{__('Datum')}}</th>
</tr>
</thead>
@ -30,17 +28,15 @@
"processing": true,
"serverSide": true,
"ajax": '{!! route('mail_booking_fewo_datatable') !!}',
"order": [[ 8, "desc" ]],
"order": [[ 7, "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' },
{ data: 'email', name: 'email' },
{ data: 'subject', name: 'subject' },
{ data: 'booking', name: 'booking' },
{ data: 'send', name: 'send', searchable: false },
{ data: 'date', name: 'date' },
],
"bLengthChange": false,

View file

@ -10,13 +10,11 @@
<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>
<th>{{__('E-Mail')}}</th>
<th>{{__('Betreff')}}</th>
<th>{{__('gesendet')}}</th>
<th>{{__('Datum')}}</th>
</tr>
</thead>
@ -29,16 +27,14 @@
"processing": true,
"serverSide": true,
"ajax": '{!! route('mail_lead_datatable') !!}',
"order": [[ 7, "desc" ]],
"order": [[ 6, "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' },
{ data: 'email', name: 'email' },
{ data: 'subject', name: 'subject' },
{ data: 'send', name: 'send', searchable: false },
{ data: 'date', name: 'date' },
],
"bLengthChange": false,

View file

@ -440,6 +440,10 @@
function clearTravelOptionAgenda(){
$('#travel_option_agenda_id').empty().prop('disabled', true);
}
function orderDrawTable($order = 1){
table.order( [$order, 'desc' ] ).draw();
}
$('#travel_option_search').on('change', function(){
if($(this).val() !== ""){
$('.datepicker-base').removeClass('active');
@ -452,38 +456,38 @@
$(this).removeClass('active');
}
clearTravelOptionAgenda();
table.draw();
orderDrawTable();
});
$('#travel_option_country_id').on('change', function(){
clearTravelOptionAgenda();
table.draw();
orderDrawTable();
});
$('#travel_option_agenda_id').on('change', function(){
table.draw();
orderDrawTable();
});
$('#travel_option_company_id').on('change', function(){
table.draw();
orderDrawTable();
});
$('#travel_option_lead_status_id').on('change', function(){
table.draw();
orderDrawTable();
});
$('#travel_option_airline_id').on('change', function(){
table.draw();
orderDrawTable();
});
$('#sort_sf_guard_user_id').on('change', function(){
table.draw();
orderDrawTable();
});
$('#travel_option_paying_out').on('change', function(){
table.draw();
orderDrawTable();
});
$('#travel_option_paying_out_status').on('change', function(){
table.draw();
orderDrawTable();
});
$('#travel_option_refund').on('change', function(){
table.draw();
orderDrawTable();
});
$('#travel_option_xx_tkt').on('change', function(){
table.draw();
orderDrawTable();
});
$('.datepicker-base').on('change', function(){
@ -498,11 +502,10 @@
$('#travel_option_search').removeClass('deactive');
}
clearTravelOptionAgenda();
table.order( [ 5, 'desc' ] ).draw();
});
$('.full_search').on('keyup', function(){
clearTravelOptionAgenda();
table.order( [ 5, 'desc' ] ).draw();
orderDrawTable();
});
function loadModalInner(self, data){

View file

@ -11,8 +11,12 @@
@if($customer_mail->is_answer)
Antwort von:<br>
@else
Gesendet an:<br>
@if($customer_mail->send)
Gesendet an:<br>
@else
(nicht gesendet) an:<br>
@endif
@endif
&lt;<a href="mailto:{{$customer_mail->email}}">{{$customer_mail->email}}</a>&gt; {{$customer_mail->sent_at }}
@if($customer_mail->recipient)
<div>TO: {{\App\Services\Util::_implodeLines($customer_mail->recipient, ', ')}}</div>