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;
-}
-
function update_modal_data_load(e, $ele) {
var ele = $ele,
url = ele.data('url'),
diff --git a/public/js/summernote-iq-content-placeholders.js b/public/js/summernote-iq-content-placeholders.js
new file mode 100644
index 0000000..c2080e2
--- /dev/null
+++ b/public/js/summernote-iq-content-placeholders.js
@@ -0,0 +1,269 @@
+(function(factory)
+{
+ /* global define */
+ if (typeof define === 'function' && define.amd)
+ {
+ // AMD. Register as an anonymous module.
+ define(['jquery'], factory);
+ }
+ else if (typeof module === 'object' && module.exports)
+ {
+ // Node/CommonJS
+ module.exports = factory(require('jquery'));
+ }
+ else
+ {
+ // Browser globals
+ factory(window.jQuery);
+ }
+}(function($)
+{
+
+ // Extends plugins for adding gallery.
+ // - plugin is external module for customizing.
+ $.extend($.summernote.plugins,
+ {
+ /**
+ * @param {Object} context - context object has status of editor.
+ */
+ 'gallery': function(context)
+ {
+ var self = this;
+
+ // ui has renders to build ui elements.
+ // - you can create a button with `ui.button`
+ var ui = $.summernote.ui;
+
+ // add gallery button
+ context.memo('button.gallery', function()
+ {
+ // create button
+ var button = ui.button(
+ {
+ contents: '
',
+ tooltip: 'Medien',
+ click: function()
+ {
+ self.fillModal();
+ self.$modal.modal();
+ }
+ });
+
+ // create jQuery object from button instance.
+ $gallery = button.render();
+ return $gallery;
+ });
+
+ // This events will be attached when editor is initialized.
+ this.events = {
+ // This will be called after modules are initialized.
+ 'summernote.init': function(we, e)
+ {
+ self.editable = context.layoutInfo.editable; //contentEditable element
+ self.editor = this;
+ // get summernote onInit set parameters
+ self.image_dialog_images_url = $(this).data('image_dialog_images_url');
+ self.image_dialog_images_html = $(this).data('image_dialog_images_html');
+ self.image_dialog_title = $(this).data('image_dialog_title');
+ self.image_dialog_close_btn_text = $(this).data('image_dialog_close_btn_text');
+ self.image_dialog_ok_btn_text = $(this).data('image_dialog_ok_btn_text');
+
+ self.fillModal = function()
+ {
+ //fill modal with images whether from url or given html
+ if (typeof self.image_dialog_images_html !== "undefined")
+ {
+ self.setModalHtml(self.image_dialog_images_html)
+ self.setEvents();
+ }
+ else if (typeof self.image_dialog_images_url !== "undefined")
+ {
+ var next = self.setEvents;
+ self.getImagesFromUrl(next);
+ }
+ else
+ {
+ console.error("options image_dialog_images_html or image_dialog_images_url must be set");
+ }
+
+ };
+ self.setModalHtml = function(html)
+ { // set variabl parts to modal html
+ var title = self.image_dialog_title;
+ var close = self.image_dialog_close_btn_text;
+ var ok = self.image_dialog_ok_btn_text;
+
+ if (self.image_dialog_title !== "undefined") self.$modal.find('.modal-title').html(title);
+ if (self.image_dialog_close_btn_text !== "undefined") self.$modal.find('#modal_iq_close').html(close);
+ if (self.image_dialog_ok_btn_text !== "undefined") self.$modal.find('#modal_iq_save').html(ok);
+
+ self.$modal.find('.modal-body').html(html);
+ LFileManager.initFileManager(true);
+
+ };
+ self.getImagesFromUrl = function(callback)
+ {
+ // get images html from url
+ $.get(self.image_dialog_images_url, function(html)
+ {
+ self.setModalHtml(html);
+ callback();
+
+ }).fail(function()
+ {
+ console.error("error loading from "+self.image_dialog_images_url);
+ })
+ };
+ self.setEvents = function()
+ {
+ // images click event to select image
+ /*self.$modal.find('img').click(function(event)
+ {
+ // $(this).toggleClass(self.select_class);
+ });*/
+ };
+ // set the focus to the last focused element in the editor
+ self.recoverEditorFocus = function ()
+ {
+ var last_focused_el = $(self.editor).data('last_focused_element');
+ if(typeof last_focused_el !== "undefined")
+ {
+ var editor = self.editable;
+ var range = document.createRange();
+ var sel = window.getSelection();
+ var cursor_position = last_focused_el.length;
+
+ range.setStart(last_focused_el, cursor_position);
+ range.collapse(true);
+ sel.removeAllRanges();
+ sel.addRange(range);
+ editor.focus();
+ }
+ };
+ self.saveLastFocusedElement = function()
+ {
+ var focused_element = window.getSelection().focusNode;
+ var parent = $(self.editable).get(0);
+ if ($.contains(parent, focused_element))
+ {
+ $(self.editor).data('last_focused_element', focused_element)
+ }
+ };
+ self.editorEvents = function () {
+ $(self.editable).on('keypress, mousemove', function()
+ {
+ self.saveLastFocusedElement();
+ })
+ };
+ self.editorEvents();
+ self.fillModal();
+ },
+ // This will be called when user releases a key on editable.
+ 'summernote.keyup': function(we, e)
+ {
+ self.saveLastFocusedElement();
+ }
+ };
+
+ // This method will be called when editor is initialized by $('..').summernote();
+ // You can create elements for plugin
+ this.initialize = function()
+ {
+ var $modal = this.$modal = $('#modal_iq_assets').hide();
+ // add selected images to summernote editor
+ $modal.find("button#modal_iq_save").click(function(event)
+ {
+ var items = LFileManager.getSelectedItems();
+
+ $modal.modal('hide');
+
+ self.recoverEditorFocus();
+
+ items.forEach(function (item, index) {
+ var insert = self.insertHTML(item);
+ if(insert){
+ context.invoke('editor.pasteHTML', insert);
+ }
+ });
+ });
+
+ };
+
+
+ this.insertHTML = function(item){
+ var title = 'Bildtitel ...';
+ var description = '';
+ var author_name = '';
+ var img_title = '';
+
+ if(item.content !== null){
+ if(item.content.title !== undefined && item.content.title){
+ title = item.content.title;
+ img_title = item.content.title;
+ }
+ if(item.content.description !== undefined && item.content.description){
+ description = ' ' + item.content.description;
+ }
+ if(item.content.author_name !== undefined && item.content.author_name){
+ author_name = 'Bildquelle: ' + item.content.author_name;
+ if(img_title !== ''){
+ img_title = img_title + " | " + author_name;
+ }else{
+ img_title = author_name;
+ }
+
+ }
+ }
+ // console.log(item)
+ var insert = '';
+
+ if(item.is_file && item.is_image){
+ insert += '
';
+ return insert;
+ }
+ if(item.icon === "fab fa-youtube-square"){
+
+
+ insert += '
';
+
+ return insert;
+ }
+ if(item.is_file){
+ insert += '
'+item.name+' ';
+ if(description !== ''){
+ insert += '
'+description+'
';
+ }
+ return insert;
+ }
+
+ return false;
+ };
+
+ // This methods will be called when editor is destroyed by $('..').summernote('destroy');
+ // You should remove elements on `initialize`.
+ this.destroy = function()
+ {
+ console.log("destroy");
+ // this.$panel.remove();
+ // this.$panel = null;
+ };
+ }
+ });
+}));
diff --git a/public/js/summernote-placeholders.js b/public/js/summernote-placeholders.js
new file mode 100644
index 0000000..301a291
--- /dev/null
+++ b/public/js/summernote-placeholders.js
@@ -0,0 +1,112 @@
+(function(factory)
+{
+ /* global define */
+ if (typeof define === 'function' && define.amd)
+ {
+ // AMD. Register as an anonymous module.
+ define(['jquery'], factory);
+ }
+ else if (typeof module === 'object' && module.exports)
+ {
+ // Node/CommonJS
+ module.exports = factory(require('jquery'));
+ }
+ else
+ {
+ // Browser globals
+ factory(window.jQuery);
+ }
+}(function($)
+{
+
+ // Extends plugins for adding gallery.
+ // - plugin is external module for customizing.
+ $.extend($.summernote.plugins,
+ {
+ /**
+ * @param {Object} context - context object has status of editor.
+ */
+ 'placeholders': function(context)
+ {
+ var self = this;
+
+ var options = context.options.placeholderList;
+ var defaultOptions = {
+ label: "Platzhalter",
+ tooltip: "Platzhalter einfügen",
+ blockChar : '#',
+ };
+ for (var propertyName in defaultOptions) {
+ if (options && propertyName && options.hasOwnProperty(propertyName) === false) {
+ options[propertyName] = defaultOptions[propertyName];
+ }
+ }
+ var ui = $.summernote.ui;
+
+ // add gallery button
+ context.memo('button.placeholders', function()
+ {
+
+ var placeholdersButton = ui.buttonGroup([
+ ui.button({
+ className: 'dropdown-toggle',
+ contents: '
' + options.label + '
',
+ tooltip: options.tooltip,
+ data: {
+ toggle: 'dropdown'
+ },
+ click: function () {
+ console.log('placeholders button click');
+ context.invoke('editor.saveRange');
+ }
+ }),
+ ui.dropdown({
+ className: 'dropdown-style',
+ items: options.items,
+ callback: function($dropdown) {
+ //console.log('$dropdown callback');
+ },
+ click: function (event) {
+ event.preventDefault();
+ var $button = $(event.target);
+ var value = $button.data('value');
+ var text = options.blockChar + value + options.blockChar;
+ context.invoke('editor.insertText', text);
+ //console.log('$dropdown click : ' + options.blockChar + value + options.blockChar);
+ },
+ template: function(item)
+ {
+ var content = (typeof item === 'string') ? item : (item.content || item.value || '');
+ return content;
+ }
+ })
+ ]).render();
+ return placeholdersButton;
+ });
+
+ // This events will be attached when editor is initialized.
+ this.events = {
+ // This will be called after modules are initialized.
+ 'summernote.init': function(we, e) {
+
+ //console.log('summernote initialized', we, e);
+ },
+ // This will be called when user releases a key on editable.
+ 'summernote.keyup': function(we, e) {
+
+ //console.log('summernote keyup', we, e);
+ }
+
+ };
+
+ // This methods will be called when editor is destroyed by $('..').summernote('destroy');
+ // You should remove elements on `initialize`.
+ this.destroy = function()
+ {
+ console.log("destroy");
+ // this.$panel.remove();
+ // this.$panel = null;
+ };
+ }
+ });
+}));
diff --git a/resources/lang/de/validation.php b/resources/lang/de/validation.php
index 791d09e..bcf5258 100755
--- a/resources/lang/de/validation.php
+++ b/resources/lang/de/validation.php
@@ -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',
/*
|--------------------------------------------------------------------------
diff --git a/resources/views/admin/active_modal.blade.php b/resources/views/admin/active_modal.blade.php
new file mode 100644
index 0000000..84864b8
--- /dev/null
+++ b/resources/views/admin/active_modal.blade.php
@@ -0,0 +1,31 @@
+
+
+{!! Form::open(['url' => route('admin_user_update_modal', [$action]), 'class' => 'form-horizontal']) !!}
+
+
+
+
+
+
+
+
+
+ {!! Form::checkbox('active', 1, $user->active, ['class'=>'custom-control-input']) !!}
+ User aktiv
+
+
+
+
+
+{!! Form::close() !!}
\ No newline at end of file
diff --git a/resources/views/admin/google2fa__modal.blade.php b/resources/views/admin/google2fa__modal.blade.php
new file mode 100644
index 0000000..8927c08
--- /dev/null
+++ b/resources/views/admin/google2fa__modal.blade.php
@@ -0,0 +1,60 @@
+
+
+{!! Form::open(['url' => route('admin_user_update_modal', [$action]), 'class' => 'form-horizontal']) !!}
+
+
+
+
+
+
+
+
+
+ @foreach($groups as $role_id => $permissions)
+
{{$roles[$role_id]}}
+ @foreach($permissions as $key=>$val)
+
+
+ {!! Form::checkbox('permissions['.$key.']', 1, $user->isPermission($key), ['class'=>'custom-control-input']) !!}
+ {{$val['name']}}
+
+
+ @endforeach
+
+ @endforeach
+
+
+
+ {!! Form::checkbox('confirmed', 1, $user->confirmed, ['class'=>'custom-control-input']) !!}
+ {{__('verified')}}
+
+
+
+
+
+ {!! Form::checkbox('active', 1, $user->active, ['class'=>'custom-control-input']) !!}
+ {{__('active')}}
+
+
+
+
+
+{!! Form::close() !!}
\ No newline at end of file
diff --git a/resources/views/admin/google2fa_delete_modal.blade.php b/resources/views/admin/google2fa_delete_modal.blade.php
new file mode 100644
index 0000000..0275552
--- /dev/null
+++ b/resources/views/admin/google2fa_delete_modal.blade.php
@@ -0,0 +1,35 @@
+
+
+{!! Form::open(['url' => route('admin_user_update_modal', [$action]), 'class' => 'form-horizontal']) !!}
+
+
+
+
+
+
+
{{ $MyGoogle2FA->getBy('name') }} | {{ $MyGoogle2FA->getBy('email') }}
+
Zwei-Faktor-Authentifizierung zurücksetzen.
+
+
+
+
Vor der Aktivierung wird beim Login er QR-Code und Secret Key angezeigt, um die Google2FA einzurichten.
+
Nach der Aktivierung wird beim Login die Google2FA abgefragt.
+
Zurücksetzen eines aktivierten Codes erzeugt einen neuen Google2FA Code der erneut in die Google Authenticator App hinzugefügt werden muss.
+
+
+{!! Form::close() !!}
\ No newline at end of file
diff --git a/resources/views/admin/google2fa_modal.blade.php b/resources/views/admin/google2fa_modal.blade.php
new file mode 100644
index 0000000..07fc81f
--- /dev/null
+++ b/resources/views/admin/google2fa_modal.blade.php
@@ -0,0 +1,41 @@
+
+
+{!! Form::open(['url' => route('admin_user_update_modal', [$action]), 'class' => 'form-horizontal']) !!}
+
+
+
+
+
+
+
{{ $MyGoogle2FA->getBy('name') }} | {{ $MyGoogle2FA->getBy('email') }}
+
Richten Sie Ihre Zwei-Faktor-Authentifizierung ein, indem Sie mit der Google Authenticator App den Barcode unten scannen.
+
+
Secret Key
+
{{ $MyGoogle2FA->getBy('secretKey') }}
+
+
+ {!! $MyGoogle2FA->getBy('inlineUrl') !!}
+
+
+
+
Vor der Aktivierung wird beim Login er QR-Code und Secret Key angezeigt, um die Google2FA einzurichten.
+
Nach der Aktivierung wird beim Login die Google2FA abgefragt.
+
Zurücksetzen eines aktivierten Codes erzeugt einen neuen Google2FA Code der erneut in die Google Authenticator App hinzugefügt werden muss.
+
+
+{!! Form::close() !!}
\ No newline at end of file
diff --git a/resources/views/admin/modal/cms_booking_content_edit.blade.php b/resources/views/admin/modal/cms_booking_content_edit.blade.php
new file mode 100644
index 0000000..4dc8238
--- /dev/null
+++ b/resources/views/admin/modal/cms_booking_content_edit.blade.php
@@ -0,0 +1,57 @@
+
+{!! Form::open(['url' => $data['url'], 'class' => '', 'enctype' => 'multipart/form-data']) !!}
+{{ Form::hidden('id', $data['id']) }}
+{{ Form::hidden('back', $data['back']) }}
+
+
+
+
+
+ {{__('Vorlage')}}*
+
+ {!! HTMLHelper::getCMSContentOptions($data['identifier'], $value->getObjectBy('general_id'), false) !!}
+
+ Ein PDF Inhalt benötigt eine Vorlage mit min einen Eintrag.
+
+
+
+ für folgende Länder benutzen (Mehrfachauswahl möglich)
+ {{ Form::select('country_ids[]', \App\Models\TravelCountry::getAsNameIdArray() , [], array('class'=>'selectpicker', 'id'=>'country_ids', 'data-style'=>"btn-default", 'multiple')) }}
+
+
+
+ {!! Form::checkbox('content[page-break]', 1, 1, ['class'=>'custom-control-input']) !!}
+ Bei jeder Buchung automatisch erstellen (sonst kann es manuell in der Buchung erstellt werden)
+
+
+
+
+
+ {!! Form::checkbox('content[page-break]', 1, 1, ['class'=>'custom-control-input']) !!}
+ PDF Inhalt aktiv (nicht aktive Inhalte werden nicht angezeigt und nicht automatisch erstellt)
+
+
+
+
+
+ {!! Form::close() !!}
+
+
+
diff --git a/resources/views/admin/user_form.blade.php b/resources/views/admin/user_form.blade.php
index 1a0fa9b..802302a 100644
--- a/resources/views/admin/user_form.blade.php
+++ b/resources/views/admin/user_form.blade.php
@@ -22,14 +22,6 @@
{{ Form::text('email-confirm', $user->email, array('placeholder'=>__('Confirm E-Mail'), 'class'=>'form-control', 'id'=>'email-confirm', 'readonly'=>true)) }}
- @if(isset($isFromAdmin))
- @if(count($user->user_update_email) > 0)
- {{ $user->user_update_email->first()->email }} {{__('waiting for activation since')}} | {{ $user->user_update_email->first()->created_at->format('d.m.Y H:i') }}
- Neue PDF Vorlage anlegen
+ Neue PDF Vorlage anlegen
-
-
-
-
-
-
diff --git a/resources/views/lead/modal-show-mail-inner.blade.php b/resources/views/lead/modal-show-mail-inner.blade.php
index 4b99764..16dfda2 100644
--- a/resources/views/lead/modal-show-mail-inner.blade.php
+++ b/resources/views/lead/modal-show-mail-inner.blade.php
@@ -11,8 +11,12 @@
@if($lead_mail->is_answer)
Antwort von:
@else
- Gesendet an:
+ @if($lead_mail->send)
+ Gesendet an:
+ @else
+ (nicht gesendet) an:
@endif
+ @endif
<
{{$lead_mail->email}} > {{$lead_mail->sent_at }}
@if($lead_mail->recipient)
TO: {{\App\Services\Util::_implodeLines($lead_mail->recipient, ', ')}}
diff --git a/resources/views/mails/booking.blade.php b/resources/views/mails/booking.blade.php
index a821e93..15c6c62 100644
--- a/resources/views/mails/booking.blade.php
+++ b/resources/views/mails/booking.blade.php
@@ -10,14 +10,12 @@
-
{{__('BuchungID')}}
{{__('Vorname')}}
{{__('Nachname')}}
{{__('E-Mail')}}
{{__('Betreff')}}
{{__('Buchung')}}
- {{__('gesendet')}}
{{__('Datum')}}
@@ -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,
diff --git a/resources/views/mails/booking_fewo.blade.php b/resources/views/mails/booking_fewo.blade.php
index 6dc2edc..6add11f 100644
--- a/resources/views/mails/booking_fewo.blade.php
+++ b/resources/views/mails/booking_fewo.blade.php
@@ -10,14 +10,12 @@
-
{{__('BuchnungID')}}
{{__('Vorname')}}
{{__('Nachname')}}
{{__('E-Mail')}}
{{__('Betreff')}}
{{__('Buchung')}}
- {{__('gesendet')}}
{{__('Datum')}}
@@ -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,
diff --git a/resources/views/mails/lead.blade.php b/resources/views/mails/lead.blade.php
index 2126aeb..1c00a9f 100644
--- a/resources/views/mails/lead.blade.php
+++ b/resources/views/mails/lead.blade.php
@@ -10,13 +10,11 @@
-
{{__('AnfrageID')}}
{{__('Vorname')}}
{{__('Nachname')}}
{{__('E-Mail')}}
{{__('Betreff')}}
- {{__('gesendet')}}
{{__('Datum')}}
@@ -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,
diff --git a/resources/views/request/index.blade.php b/resources/views/request/index.blade.php
index 8958c2d..d64a76f 100755
--- a/resources/views/request/index.blade.php
+++ b/resources/views/request/index.blade.php
@@ -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){
diff --git a/resources/views/travel/user/booking/mail/modal-show-mail-inner.blade.php b/resources/views/travel/user/booking/mail/modal-show-mail-inner.blade.php
index dac459e..454c026 100644
--- a/resources/views/travel/user/booking/mail/modal-show-mail-inner.blade.php
+++ b/resources/views/travel/user/booking/mail/modal-show-mail-inner.blade.php
@@ -11,8 +11,12 @@
@if($customer_mail->is_answer)
Antwort von:
@else
- Gesendet an:
+ @if($customer_mail->send)
+ Gesendet an:
+ @else
+ (nicht gesendet) an:
@endif
+ @endif
<
{{$customer_mail->email}} > {{$customer_mail->sent_at }}
@if($customer_mail->recipient)
TO: {{\App\Services\Util::_implodeLines($customer_mail->recipient, ', ')}}
diff --git a/routes/web.php b/routes/web.php
index 62184bf..bb81dc2 100755
--- a/routes/web.php
+++ b/routes/web.php
@@ -16,26 +16,13 @@ Auth::routes();
Route::get('/logout', function(){
Auth::logout();
+ \App\Services\MyGoogle2FA::logout();
return Redirect::to('login');
})->name('logout');
-/*
-Route::get('locale/{locale}', function ($locale) {
- \Session::put('locale', $locale);
- if(Auth::check()){
- $user = Auth::user();
- $user->lang = $locale;
- $user->save();
- }
- return redirect()->back();
-})->name('locale');
-*/
-
-//Route::get('/', 'HomeController@index')->name('/');
-
-/*Route::post('/register/data', 'HomeController@register')->name('register_data');
-Route::post('/user/check/mail', 'HomeController@checkMail')->name('user_check_mail');
-*/
+Route::post('/2fa', function () {
+ return Redirect::to('home');
+})->name('2fa')->middleware('2fa');
Route::get('/register/verify/{confirmationCode?}', 'HomeController@verify')->name('register_verify');
Route::get('/register/active/{confirmationCode?}', 'HomeController@active')->name('register_active');
@@ -51,7 +38,6 @@ Route::get('/imprint', 'HomeController@legalImprint')->name('imprint');
Route::post('/loading/modal', 'HomeController@loadingModal')->name('loading_modal');
-
Route::get('/', 'HomeController@index')->name('home');
Route::get('/check/login/{identify}/{token}/{show?}', 'HomeController@checkLogin')->name('check_login');
@@ -60,7 +46,10 @@ Route::get('/user/update_email_confirm/{token}', 'UserUpdateEmailController@acti
Route::get('/storage/file/{id}/{disk}/{do?}', 'FileController@show')->name('storage_file');
Route::get('customer_file/show/{model}/{id}/{cd?}', 'CustomerFileController@show')->name('customer_file_show');
-Route::group(['middleware' => ['auth']], function()
+
+
+
+Route::group(['middleware' => ['auth', '2fa']], function()
{
Route::get('storage/{type?}/{class?}/{year?}/{file?}/{do?}', 'FileController@showExpert')->name('storage');
Route::get('/home', 'HomeController@show')->name('home');
@@ -84,10 +73,9 @@ Route::group(['middleware' => ['auth']], function()
Route::post('/user/data/accepted/form', 'UserDataController@userDataAcceptedForm')->name('user_data_accepted_form');
});
-
});
-Route::group(['middleware' => ['admin']], function()
+Route::group(['middleware' => ['admin', '2fa']], function()
{
Route::post('/modal/load', 'ModalController@load')->name('modal_load');
@@ -346,13 +334,10 @@ Route::group(['middleware' => ['admin']], function()
Route::post('/cms/sidebar/detail/{id}', 'CMS\CMSSidebarController@store')->name('cms_sidebar_detail');
Route::get('/cms/sidebar/delete/{id}', 'CMS\CMSSidebarController@delete')->name('cms_sidebar_delete');
});
-
-
-
});
//login pages for worker
-Route::group(['middleware' => ['superadmin']], function() {
+Route::group(['middleware' => ['superadmin', '2fa']], function() {
Route::get('data_table', 'DataTableController@datatable')->name('data_table');
// Route::get('datatables/leads', 'DataTableController@getLeads')->name('datatables-leads');
@@ -476,7 +461,7 @@ Route::group(['middleware' => ['superadmin']], function() {
});
//login pages for sysadmin
-Route::group(['middleware' => ['sysadmin']], function() {
+Route::group(['middleware' => ['sysadmin', '2fa']], function() {
Route::get('/sysadmin/tools/content_links', 'SyS\Tools\ContentLinkController@index')->name('sysadmin_tools_content_links');
Route::post('/sysadmin/tools/content_links', 'SyS\Tools\ContentLinkController@store')->name('sysadmin_tools_content_links');
@@ -495,9 +480,7 @@ Route::group(['middleware' => ['sysadmin']], function() {
});
-
-
-
+/*
use App\Mail\MailResetPassword;
Route::get('/send_test_email', function() {
try {
@@ -506,17 +489,13 @@ Route::get('/send_test_email', function() {
Mail::to('kevin.adametz@t-online.de')->send(new MailResetPassword('asdasd', Auth::user()));
- /* Mail::raw('Sending clean email', function($message) {
- $message->to('kevin.adametz@t-online.de', 'Kevin Adametz');
- $message->subject('test');
- });
- */
} catch (\Exception $e) {
var_dump($e->getMessage());
$fail = Mail::failures();
dd($fail);
}
});
+*/
diff --git a/storage/app/google2fasecret.key b/storage/app/google2fasecret.key
new file mode 100644
index 0000000..1f6c1a2
--- /dev/null
+++ b/storage/app/google2fasecret.key
@@ -0,0 +1 @@
+QPQFA625AU3D3CNFX6KX7Q5XISEDANIH
\ No newline at end of file
diff --git a/storage/app/public/pdf/passolution/Einreisebestimmungen_de_de-MA.pdf b/storage/app/public/pdf/passolution/Einreisebestimmungen_de_de-MA.pdf
new file mode 100644
index 0000000..957f993
Binary files /dev/null and b/storage/app/public/pdf/passolution/Einreisebestimmungen_de_de-MA.pdf differ