WIP: Sicherheitsnetz vor Phase-1-R\u00fcckbau
Enth\u00e4lt gemischt: Laravel-10-Upgrade + Phase 1 (Contacts-Modul, Duplicats-Commands, Soft-Delete+Merge-Fields) + Phase 2 Code-Umstellungen (inquiry_id, $table='contacts'/'inquiries') + Offers-Modul (Migrationen, Models, offer_id in Booking, offer-Disk in filesystems.php). Phase 2 + Offers werden im folgenden Commit nach dev/backups/phase2-offers-2026-04-17/ verschoben, damit der Workspace auf Phase-1-only (= Test-System-Stand) reduziert ist und direkt auf Live deploybar wird. Tarball-Backup zus\u00e4tzlich unter: ../backups-safety/workspace-pre-phase1-rollback-2026-04-17.tar.gz Made-with: Cursor
This commit is contained in:
parent
389d5d1820
commit
e3dc1afd8e
165 changed files with 21914 additions and 3516 deletions
|
|
@ -1,11 +1,13 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<html lang="{{ app()->getLocale() }}" class="default-style layout-collapsed">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="x-ua-compatible" content="IE=edge,chrome=1">
|
||||
<meta name="description" content="">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
|
||||
<meta name="viewport"
|
||||
content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||
|
||||
<title>{{ config('app.name') }}</title>
|
||||
|
|
@ -32,9 +34,9 @@
|
|||
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/laravel-filemanager/css/dropzone.min.css') }}">
|
||||
|
||||
@if(isset($lfm_helper))
|
||||
@if (isset($lfm_helper))
|
||||
@else
|
||||
{{-- <link rel="stylesheet" href="{{ asset('/vendor/libs/dropzone/dropzone.css') }}"> --}}
|
||||
{{-- <link rel="stylesheet" href="{{ asset('/vendor/libs/dropzone/dropzone.css') }}"> --}}
|
||||
@endif
|
||||
|
||||
<link rel="stylesheet" href="{{ mix('/vendor/libs/bootstrap-select/bootstrap-select.css') }}">
|
||||
|
|
@ -42,7 +44,8 @@
|
|||
<link rel="stylesheet" href="{{ mix('/vendor/libs/datatables/datatables.css') }}">
|
||||
|
||||
<link rel="stylesheet" href="{{ mix('/vendor/libs/bootstrap-datepicker/bootstrap-datepicker.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('/vendor/libs/bootstrap-material-datetimepicker/bootstrap-material-datetimepicker.css') }}">
|
||||
<link rel="stylesheet"
|
||||
href="{{ asset('/vendor/libs/bootstrap-material-datetimepicker/bootstrap-material-datetimepicker.css') }}">
|
||||
<!--
|
||||
<link rel="stylesheet" href="{{ mix('/vendor/libs/bootstrap-daterangepicker/bootstrap-daterangepicker.css') }}">
|
||||
-->
|
||||
|
|
@ -65,16 +68,16 @@
|
|||
<!-- `perfect-scrollbar` library required by SideNav plugin -->
|
||||
<link rel="stylesheet" href="{{ mix('/vendor/libs/perfect-scrollbar/perfect-scrollbar.css') }}">
|
||||
|
||||
@yield('styles')
|
||||
@yield('styles')
|
||||
|
||||
<!-- Application stylesheets -->
|
||||
<!-- Application stylesheets -->
|
||||
<link rel="stylesheet" href="{{ mix('/css/application.css') }}?v=9{{ get_file_last_time('js/application.css') }}">
|
||||
<script src="{{ asset('/js/jquery.min.js') }}"></script>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="{{ asset('/css/cookieconsent.min.css') }}" />
|
||||
<script src="{{ asset('/js/cookieconsent.min.js') }}"></script>
|
||||
<script>
|
||||
window.addEventListener("load", function(){
|
||||
window.addEventListener("load", function() {
|
||||
window.cookieconsent.initialise({
|
||||
"palette": {
|
||||
"popup": {
|
||||
|
|
@ -87,109 +90,138 @@
|
|||
}
|
||||
},
|
||||
"content": {
|
||||
"message": "{{__('This website uses cookies in order to guarantee the best possible service. With your visit to this site you agree to our use of cookies.') }}",
|
||||
"dismiss": "{{__('OK')}}",
|
||||
"link": "{{__('data protection')}}",
|
||||
"message": "{{ __('This website uses cookies in order to guarantee the best possible service. With your visit to this site you agree to our use of cookies.') }}",
|
||||
"dismiss": "{{ __('OK') }}",
|
||||
"link": "{{ __('data protection') }}",
|
||||
"href": "{{ route('data_protected') }}",
|
||||
"target": "_blank",
|
||||
}
|
||||
})});
|
||||
})
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
@yield('layout-content')
|
||||
@yield('layout-content')
|
||||
|
||||
@include('iq.content.assets.modals')
|
||||
@include('iq.content.assets.modals')
|
||||
|
||||
<!-- Core scripts -->
|
||||
<script src="{{ mix('/vendor/libs/popper/popper.js') }}"></script>
|
||||
<script src="{{ mix('/vendor/js/bootstrap.js') }}"></script>
|
||||
<script src="{{ mix('/vendor/js/sidenav.js') }}"></script>
|
||||
<script src="{{ mix('/vendor/libs/growl/growl.js') }}"></script>
|
||||
<script src="{{ asset('/vendor/libs/js-cookie/src/js.cookie.js') }}"></script>
|
||||
<script src="{{ asset('/vendor/libs/moment-develop/min/moment.min.js') }}"></script>
|
||||
<script src="{{ asset('/vendor/libs/moment-develop/locale/de.js') }}"></script>
|
||||
<!-- Core scripts -->
|
||||
<script src="{{ mix('/vendor/libs/popper/popper.js') }}"></script>
|
||||
<script src="{{ mix('/vendor/js/bootstrap.js') }}"></script>
|
||||
<script src="{{ mix('/vendor/js/sidenav.js') }}"></script>
|
||||
<script src="{{ mix('/vendor/libs/growl/growl.js') }}"></script>
|
||||
<script src="{{ asset('/vendor/libs/js-cookie/src/js.cookie.js') }}"></script>
|
||||
<script src="{{ asset('/vendor/libs/moment-develop/min/moment.min.js') }}"></script>
|
||||
<script src="{{ asset('/vendor/libs/moment-develop/locale/de.js') }}"></script>
|
||||
|
||||
<script src="{{ asset('/vendor/laravel-filemanager/js/dropzone.min.js') }}"></script>
|
||||
<script src="{{ asset('/vendor/laravel-filemanager/js/dropzone.min.js') }}"></script>
|
||||
|
||||
@if(isset($lfm_helper))
|
||||
@else
|
||||
{{-- <script src="{{asset('/vendor/libs/dropzone/dropzone.js')}}"></script>--}}
|
||||
@endif
|
||||
@if (isset($lfm_helper))
|
||||
@else
|
||||
{{-- <script src="{{asset('/vendor/libs/dropzone/dropzone.js')}}"></script> --}}
|
||||
@endif
|
||||
|
||||
<script src="{{ mix('/vendor/libs/validate/validate.js') }}"></script>
|
||||
<script src="{{ mix('/vendor/libs/validate/validate.js') }}"></script>
|
||||
|
||||
<script src="{{ mix('/vendor/libs/bootstrap-select/bootstrap-select.js') }}"></script>
|
||||
<script src="{{ mix('/vendor/libs/select2/select2.js') }}"></script>
|
||||
<script src="{{ mix('/vendor/libs/datatables/datatables.js') }}"></script>
|
||||
<script src="{{ mix('/vendor/libs/bootstrap-select/bootstrap-select.js') }}"></script>
|
||||
<script src="{{ mix('/vendor/libs/select2/select2.js') }}"></script>
|
||||
<script src="{{ mix('/vendor/libs/datatables/datatables.js') }}"></script>
|
||||
|
||||
<script src="{{ mix('/vendor/libs/bootstrap-datepicker/bootstrap-datepicker.js') }}"></script>
|
||||
<!--
|
||||
<script src="{{ mix('/vendor/libs/bootstrap-datepicker/bootstrap-datepicker.js') }}"></script>
|
||||
<!--
|
||||
<script src="{{ mix('/vendor/libs/bootstrap-daterangepicker/bootstrap-daterangepicker.js') }}"></script>
|
||||
-->
|
||||
<script src="{{ asset('/vendor/libs/bootstrap-material-datetimepicker/bootstrap-material-datetimepicker.js') }}"></script>
|
||||
<script src="{{ asset('/vendor/libs/bootstrap-material-datetimepicker/bootstrap-material-datetimepicker.js') }}">
|
||||
</script>
|
||||
|
||||
|
||||
<script src="{{asset('/js/bootstrap-datepicker.de.min.js')}}"></script>
|
||||
<script src="{{ mix('/vendor/libs/dragula/dragula.js') }}"></script>
|
||||
<script src="{{asset('/vendor/libs/nestable/my-nestable.js')}}"></script>
|
||||
<script src="{{ mix('/vendor/libs/minicolors/minicolors.js') }}"></script>
|
||||
<script src="{{ asset('/vendor/libs/summernote/dist/summernote-bs4.js?v=0.8.16') }}"></script>
|
||||
<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('/js/bootstrap-datepicker.de.min.js') }}"></script>
|
||||
<script src="{{ mix('/vendor/libs/dragula/dragula.js') }}"></script>
|
||||
<script src="{{ asset('/vendor/libs/nestable/my-nestable.js') }}"></script>
|
||||
<script src="{{ mix('/vendor/libs/minicolors/minicolors.js') }}"></script>
|
||||
<script src="{{ asset('/vendor/libs/summernote/dist/summernote-bs4.js?v=0.8.16') }}"></script>
|
||||
<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>
|
||||
<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>
|
||||
|
||||
@if(isset($lfm_helper))
|
||||
<script src="{{ asset('/js/summernote-iq-content-extension.js?v=6') }}"></script>
|
||||
<script src="{{ asset('/js/summernote-image-title.js?v=2') }}"></script>
|
||||
<script src="{{ asset('/vendor/laravel-filemanager/js/cropper.min.js') }}"></script>
|
||||
<script src="{{ asset('/js/filemanager.js') }}?v=6"></script>
|
||||
<script src="{{ asset('/js/pages_file-manager.js') }}?v=6"></script>
|
||||
@if (isset($lfm_helper))
|
||||
<script src="{{ asset('/js/summernote-iq-content-extension.js?v=6') }}"></script>
|
||||
<script src="{{ asset('/js/summernote-image-title.js?v=2') }}"></script>
|
||||
<script src="{{ asset('/vendor/laravel-filemanager/js/cropper.min.js') }}"></script>
|
||||
<script src="{{ asset('/js/filemanager.js') }}?v=6"></script>
|
||||
<script src="{{ asset('/js/pages_file-manager.js') }}?v=6"></script>
|
||||
@endif
|
||||
|
||||
@endif
|
||||
<!-- Libs -->
|
||||
<!-- `perfect-scrollbar` library required by SideNav plugin -->
|
||||
<script src="{{ mix('/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') }}"></script>
|
||||
|
||||
<!-- Libs -->
|
||||
<!-- `perfect-scrollbar` library required by SideNav plugin -->
|
||||
<script src="{{ mix('/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') }}"></script>
|
||||
@yield('scripts')
|
||||
|
||||
@yield('scripts')
|
||||
|
||||
<!-- Application javascripts -->
|
||||
<script src="{{ mix('/js/application.js') }}"></script>
|
||||
<script src="{{ asset('/js/custom.js') }}?v=11{{ get_file_last_time('/js/custom.js') }}"></script>
|
||||
<!-- Application javascripts -->
|
||||
<script src="{{ mix('/js/application.js') }}"></script>
|
||||
<script src="{{ asset('/js/custom.js') }}?v=11{{ get_file_last_time('/js/custom.js') }}"></script>
|
||||
|
||||
|
||||
@include('asset.js')
|
||||
@include('asset.js')
|
||||
|
||||
<script>
|
||||
// Dragula
|
||||
$(function() {
|
||||
// Drag handle
|
||||
dragula([$('#dragula-drag-handles')[0]], {
|
||||
moves: function (el, container, handle) {
|
||||
return handle.classList.contains('handle');
|
||||
}
|
||||
<script>
|
||||
// Dragula
|
||||
$(function() {
|
||||
// Drag handle
|
||||
dragula([$('#dragula-drag-handles')[0]], {
|
||||
moves: function(el, container, handle) {
|
||||
return handle.classList.contains('handle');
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Dropzone.autoDiscover = false;
|
||||
Dropzone.autoDiscover = false;
|
||||
|
||||
@if(isset($lfm_helper))
|
||||
$("#uploadForm").dropzone({
|
||||
@if (isset($lfm_helper))
|
||||
$("#uploadForm").dropzone({
|
||||
paramName: "upload[]", // The name that will be used to transfer the file
|
||||
uploadMultiple: false,
|
||||
parallelUploads: 10,
|
||||
clickable: '#upload-button',
|
||||
dictDefaultMessage: '<i class="ion ion-ios-cloud-upload "></i>Hier klicken, oder Datei hier reinziehen (Drag&Drop)',
|
||||
init: function() {
|
||||
var _this = this; // For the closure
|
||||
this.on('success', function(file, response) {
|
||||
//console.log(response);
|
||||
if (response === 'OK') {
|
||||
LFileManager.loadItems();
|
||||
} else {
|
||||
_this.defaultOptions.error(file, response); //response.join('\n')
|
||||
}
|
||||
});
|
||||
},
|
||||
headers: {
|
||||
'Authorization': 'Bearer ' + LFileManager.getUrlParam('token'),
|
||||
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
|
||||
},
|
||||
// acceptedFiles: LFileManager.lfm_config['lfm_availableMimeTypes'] ,
|
||||
maxFilesize: (LFileManager.lfm_config['lfm_maxUploadSize'] / 1000),
|
||||
});
|
||||
@endif
|
||||
|
||||
/*Dropzone.options.uploadForm = {
|
||||
paramName: "upload[]", // The name that will be used to transfer the file
|
||||
uploadMultiple: false,
|
||||
parallelUploads: 10,
|
||||
clickable: '#upload-button',
|
||||
dictDefaultMessage: '<i class="ion ion-ios-cloud-upload "></i>Hier klicken, oder Datei hier reinziehen (Drag&Drop)',
|
||||
init: function () {
|
||||
//dictDefaultMessage: LFileManager.lfm_config['lfm_lang']['message-drop'],
|
||||
init: function() {
|
||||
console.log("Dinit")
|
||||
var _this = this; // For the closure
|
||||
this.on('success', function (file, response) {
|
||||
//console.log(response);
|
||||
this.on('success', function(file, response) {
|
||||
console.log(response);
|
||||
if (response === 'OK') {
|
||||
LFileManager.loadItems();
|
||||
} else {
|
||||
|
|
@ -202,170 +234,150 @@
|
|||
},
|
||||
// acceptedFiles: LFileManager.lfm_config['lfm_availableMimeTypes'] ,
|
||||
maxFilesize: (LFileManager.lfm_config['lfm_maxUploadSize'] / 1000),
|
||||
});
|
||||
@endif
|
||||
};*/
|
||||
|
||||
/*Dropzone.options.uploadForm = {
|
||||
paramName: "upload[]", // The name that will be used to transfer the file
|
||||
uploadMultiple: false,
|
||||
parallelUploads: 10,
|
||||
clickable: '#upload-button',
|
||||
//dictDefaultMessage: LFileManager.lfm_config['lfm_lang']['message-drop'],
|
||||
init: function() {
|
||||
console.log("Dinit")
|
||||
var _this = this; // For the closure
|
||||
this.on('success', function(file, response) {
|
||||
console.log(response);
|
||||
if (response === 'OK') {
|
||||
LFileManager.loadItems();
|
||||
} else {
|
||||
_this.defaultOptions.error(file, response); //response.join('\n')
|
||||
}
|
||||
});
|
||||
},
|
||||
headers: {
|
||||
'Authorization': 'Bearer ' + LFileManager.getUrlParam('token')
|
||||
},
|
||||
// acceptedFiles: LFileManager.lfm_config['lfm_availableMimeTypes'] ,
|
||||
maxFilesize: (LFileManager.lfm_config['lfm_maxUploadSize'] / 1000),
|
||||
};*/
|
||||
$(document).ready(function() {
|
||||
|
||||
$(document).ready(function() {
|
||||
|
||||
$('.summernote').summernote({
|
||||
height: 400,
|
||||
tabsize: 2,
|
||||
followingToolbar: true,
|
||||
imageTitle: {
|
||||
specificAltField: true,
|
||||
},
|
||||
lang: 'de-DE',
|
||||
toolbar: [
|
||||
['style', ['style']],
|
||||
['font', ['bold', 'italic', 'underline', 'clear']],
|
||||
['color', ['color']],
|
||||
['para', ['ul', 'ol', 'paragraph']],
|
||||
['extensions', ['gallery']],
|
||||
['insert', ['link', 'picture', 'video', 'hr']],
|
||||
['view', ['fullscreen', 'codeview']],
|
||||
['help', ['help']]
|
||||
],
|
||||
popover: {
|
||||
image: [
|
||||
['image', ['resizeFull', 'resizeHalf', 'resizeQuarter', 'resizeNone']],
|
||||
['float', ['floatLeft', 'floatRight', 'floatNone']],
|
||||
['remove', ['removeMedia']],
|
||||
['custom', ['imageTitle']],
|
||||
],
|
||||
},
|
||||
callbacks :{
|
||||
onInit: function() {
|
||||
// $(this).data('image_dialog_images_html', '<div class="row"..');
|
||||
$(this).data('image_dialog_images_url', "/iq/content/assets/modal");
|
||||
$(this).data('image_dialog_title', "Medien");
|
||||
$(this).data('image_dialog_close_btn_text', "schließen");
|
||||
$(this).data('image_dialog_ok_btn_text', "Einfügen");
|
||||
}
|
||||
},
|
||||
/*
|
||||
callbacks: {
|
||||
onPaste: function (e) {
|
||||
var bufferText = ((e.originalEvent || e).clipboardData || window.clipboardData).getData('Text');
|
||||
e.preventDefault();
|
||||
document.execCommand('insertText', false, bufferText);
|
||||
}
|
||||
}
|
||||
*/
|
||||
});
|
||||
|
||||
$('.summernote-small').summernote({
|
||||
height: 150,
|
||||
tabsize: 2,
|
||||
followingToolbar: true,
|
||||
imageTitle: {
|
||||
specificAltField: true,
|
||||
},
|
||||
toolbar: [
|
||||
['style', ['style']],
|
||||
['font', ['bold', 'italic', 'underline', 'clear']],
|
||||
['color', ['color']],
|
||||
['para', ['ul', 'ol', 'paragraph']],
|
||||
['extensions', ['gallery']],
|
||||
['insert', ['link', 'picture', 'video', 'hr']],
|
||||
['view', ['fullscreen', 'codeview']],
|
||||
['help', ['help']]
|
||||
],
|
||||
popover: {
|
||||
image: [
|
||||
['imagesize', ['imageSize100', 'imageSize50', 'imageSize25']],
|
||||
['float', ['floatLeft', 'floatRight', 'floatNone']],
|
||||
['remove', ['removeMedia']],
|
||||
['custom', ['imageTitle']],
|
||||
],
|
||||
},
|
||||
callbacks :{
|
||||
onInit: function() {
|
||||
// $(this).data('image_dialog_images_html', '<div class="row"..');
|
||||
$(this).data('image_dialog_images_url', "/iq/content/assets/modal");
|
||||
$(this).data('image_dialog_title', "Medien");
|
||||
$(this).data('image_dialog_close_btn_text', "schließen");
|
||||
$(this).data('image_dialog_ok_btn_text', "Einfügen");
|
||||
}
|
||||
},
|
||||
|
||||
});
|
||||
|
||||
$('.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',
|
||||
placeholder: 'Text ...',
|
||||
tabsize: 2,
|
||||
popover: { air:[
|
||||
$('.summernote').summernote({
|
||||
height: 400,
|
||||
tabsize: 2,
|
||||
followingToolbar: true,
|
||||
imageTitle: {
|
||||
specificAltField: true,
|
||||
},
|
||||
lang: 'de-DE',
|
||||
toolbar: [
|
||||
['style', ['style']],
|
||||
['font', ['bold', 'italic', 'underline', 'clear']],
|
||||
['font', ['strikethrough']],
|
||||
['para', ['ul', 'ol', 'paragraph']],
|
||||
['insert', ['link']],
|
||||
['color', ['color']],
|
||||
['view', ['codeview']],
|
||||
] },
|
||||
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
|
||||
}
|
||||
});
|
||||
//save in the codeview
|
||||
$('.note-codable').on('blur', function() {
|
||||
var codeviewHtml = $(this).val();
|
||||
var $summernoteTextarea = $(this).closest('.note-editor').siblings('textarea');
|
||||
$summernoteTextarea.val(codeviewHtml);
|
||||
});
|
||||
});
|
||||
['para', ['ul', 'ol', 'paragraph']],
|
||||
['extensions', ['gallery']],
|
||||
['insert', ['link', 'picture', 'video', 'hr']],
|
||||
['view', ['fullscreen', 'codeview']],
|
||||
['help', ['help']]
|
||||
],
|
||||
popover: {
|
||||
image: [
|
||||
['image', ['resizeFull', 'resizeHalf', 'resizeQuarter', 'resizeNone']],
|
||||
['float', ['floatLeft', 'floatRight', 'floatNone']],
|
||||
['remove', ['removeMedia']],
|
||||
['custom', ['imageTitle']],
|
||||
],
|
||||
},
|
||||
callbacks: {
|
||||
onInit: function() {
|
||||
// $(this).data('image_dialog_images_html', '<div class="row"..');
|
||||
$(this).data('image_dialog_images_url', "/iq/content/assets/modal");
|
||||
$(this).data('image_dialog_title', "Medien");
|
||||
$(this).data('image_dialog_close_btn_text', "schließen");
|
||||
$(this).data('image_dialog_ok_btn_text', "Einfügen");
|
||||
}
|
||||
},
|
||||
/*
|
||||
callbacks: {
|
||||
onPaste: function (e) {
|
||||
var bufferText = ((e.originalEvent || e).clipboardData || window.clipboardData).getData('Text');
|
||||
e.preventDefault();
|
||||
document.execCommand('insertText', false, bufferText);
|
||||
}
|
||||
}
|
||||
*/
|
||||
});
|
||||
|
||||
</script>
|
||||
$('.summernote-small').summernote({
|
||||
height: 150,
|
||||
tabsize: 2,
|
||||
followingToolbar: true,
|
||||
imageTitle: {
|
||||
specificAltField: true,
|
||||
},
|
||||
toolbar: [
|
||||
['style', ['style']],
|
||||
['font', ['bold', 'italic', 'underline', 'clear']],
|
||||
['color', ['color']],
|
||||
['para', ['ul', 'ol', 'paragraph']],
|
||||
['extensions', ['gallery']],
|
||||
['insert', ['link', 'picture', 'video', 'hr']],
|
||||
['view', ['fullscreen', 'codeview']],
|
||||
['help', ['help']]
|
||||
],
|
||||
popover: {
|
||||
image: [
|
||||
['imagesize', ['imageSize100', 'imageSize50', 'imageSize25']],
|
||||
['float', ['floatLeft', 'floatRight', 'floatNone']],
|
||||
['remove', ['removeMedia']],
|
||||
['custom', ['imageTitle']],
|
||||
],
|
||||
},
|
||||
callbacks: {
|
||||
onInit: function() {
|
||||
// $(this).data('image_dialog_images_html', '<div class="row"..');
|
||||
$(this).data('image_dialog_images_url', "/iq/content/assets/modal");
|
||||
$(this).data('image_dialog_title', "Medien");
|
||||
$(this).data('image_dialog_close_btn_text', "schließen");
|
||||
$(this).data('image_dialog_ok_btn_text', "Einfügen");
|
||||
}
|
||||
},
|
||||
|
||||
});
|
||||
|
||||
$('.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',
|
||||
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']],
|
||||
]
|
||||
},
|
||||
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
|
||||
}
|
||||
});
|
||||
//save in the codeview
|
||||
$('.note-codable').on('blur', function() {
|
||||
var codeviewHtml = $(this).val();
|
||||
var $summernoteTextarea = $(this).closest('.note-editor').siblings('textarea');
|
||||
$summernoteTextarea.val(codeviewHtml);
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
</html>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue