<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Laravel Filemanager</title> <link rel="shortcut icon" type="image/png" href="{{ asset('vendor/laravel-filemanager/img/72px color.png') }}"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css"> <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css"> </head> <body> <div class="container"> <h1 class="page-header">Integration Demo Page</h1> <div class="row"> <div class="col-md-6"> <h2 class="mt-4">CKEditor</h2> <textarea name="ce" class="form-control"></textarea> </div> <div class="col-md-6"> <h2 class="mt-4">TinyMCE</h2> <textarea name="tm" class="form-control"></textarea> </div> </div> <div class="row"> <div class="col-md-6"> <h2 class="mt-4">Summernote</h2> <textarea id="summernote-editor" name="content"></textarea> </div> <div class="col-md-6"> <h2 class="mt-4">Standalone Image Button</h2> <div class="input-group"> <span class="input-group-btn"> <a id="lfm" data-input="thumbnail" data-preview="holder" class="btn btn-primary text-white"> <i class="fa fa-picture-o"></i> Choose </a> </span> <input id="thumbnail" class="form-control" type="text" name="filepath"> </div> <div id="holder" style="margin-top:15px;max-height:100px;"></div> <h2 class="mt-4">Standalone File Button</h2> <div class="input-group"> <span class="input-group-btn"> <a id="lfm2" data-input="thumbnail2" data-preview="holder2" class="btn btn-primary text-white"> <i class="fa fa-picture-o"></i> Choose </a> </span> <input id="thumbnail2" class="form-control" type="text" name="filepath"> </div> <div id="holder2" style="margin-top:15px;max-height:100px;"></div> </div> </div> <div class="row"> <div class="col-md-12"> <h2 class="mt-4">Embed file manager</h2> <iframe src="/filemanager" style="width: 100%; height: 500px; overflow: hidden; border: none;"></iframe> </div> </div> </div> <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js"></script> <script> var route_prefix = "{{env('APP_URL')}}/files"; </script> <!-- CKEditor init --> <script src="//cdnjs.cloudflare.com/ajax/libs/ckeditor/4.5.11/ckeditor.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/ckeditor/4.5.11/adapters/jquery.js"></script> <script> $('textarea[name=ce]').ckeditor({ height: 100, filebrowserImageBrowseUrl: route_prefix + '?type=Images', filebrowserImageUploadUrl: route_prefix + '/upload?type=Images&_token={{csrf_token()}}', filebrowserBrowseUrl: route_prefix + '?type=Files', filebrowserUploadUrl: route_prefix + '/upload?type=Files&_token={{csrf_token()}}' }); </script> <!-- TinyMCE init --> <script src="//cdn.tinymce.com/4/tinymce.min.js"></script> <script> var editor_config = { path_absolute : "", selector: "textarea[name=tm]", plugins: [ "link image" ], relative_urls: false, height: 129, file_browser_callback : function(field_name, url, type, win) { var x = window.innerWidth || document.documentElement.clientWidth || document.getElementsByTagName('body')[0].clientWidth; var y = window.innerHeight|| document.documentElement.clientHeight|| document.getElementsByTagName('body')[0].clientHeight; var cmsURL = editor_config.path_absolute + route_prefix + '?field_name=' + field_name; if (type == 'image') { cmsURL = cmsURL + "&type=Images"; } else { cmsURL = cmsURL + "&type=Files"; } tinyMCE.activeEditor.windowManager.open({ file : cmsURL, title : 'Filemanager', width : x * 0.8, height : y * 0.8, resizable : "yes", close_previous : "no" }); } }; tinymce.init(editor_config); </script> <script> {!! \File::get(base_path('vendor/unisharp/laravel-filemanager/public/js/stand-alone-button.js')) !!} </script> <script> $('#lfm').filemanager('image', {prefix: route_prefix}); // $('#lfm').filemanager('file', {prefix: route_prefix}); </script> <script> var lfm = function(id, type, options) { let button = document.getElementById(id); button.addEventListener('click', function () { var route_prefix = (options && options.prefix) ? options.prefix : '/filemanager'; var target_input = document.getElementById(button.getAttribute('data-input')); var target_preview = document.getElementById(button.getAttribute('data-preview')); window.open(route_prefix + '?type=' + options.type || 'file', 'FileManager', 'width=900,height=600'); window.SetUrl = function (items) { var file_path = items.map(function (item) { return item.url; }).join(','); // set the value of the desired input to image url target_input.value = file_path; target_input.dispatchEvent(new Event('change')); // clear previous preview target_preview.innerHtml = ''; // set or change the preview image src items.forEach(function (item) { let img = document.createElement('img') img.setAttribute('style', 'height: 5rem') img.setAttribute('src', item.thumb_url) target_preview.appendChild(img); }); // trigger change event target_preview.dispatchEvent(new Event('change')); }; }); }; lfm('lfm2', 'file', {prefix: route_prefix}); </script> <link href="http://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.8/summernote.css" rel="stylesheet"> <script src="http://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.8/summernote.js"></script> <style> .popover { top: auto; left: auto; } </style> <script> $(document).ready(function(){ // Define function to open filemanager window var lfm = function(options, cb) { var route_prefix = (options && options.prefix) ? options.prefix : '/filemanager'; window.open(route_prefix + '?type=' + options.type || 'file', 'FileManager', 'width=900,height=600'); window.SetUrl = cb; }; // Define LFM summernote button var LFMButton = function(context) { var ui = $.summernote.ui; var button = ui.button({ contents: '<i class="note-icon-picture"></i> ', tooltip: 'Insert image with filemanager', click: function() { lfm({type: 'image', prefix: '/filemanager'}, function(lfmItems, path) { lfmItems.forEach(function (lfmItem) { context.invoke('insertImage', lfmItem.url); }); }); } }); return button.render(); }; // Initialize summernote with LFM button in the popover button group // Please note that you can add this button to any other button group you'd like $('#summernote-editor').summernote({ toolbar: [ ['popovers', ['lfm']], ], buttons: { lfm: LFMButton } }) }); </script> </body> </html>