224 lines
		
	
	
		
			7.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			224 lines
		
	
	
		
			7.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # laravel-filemanager
 | |
| 
 | |
| A files and images management user interface with file uploading support. (Works well with CKEditor and TinyMCE)
 | |
| 
 | |
| PR is welcome!
 | |
| 
 | |
| ## Overview
 | |
| 
 | |
|  * The project was forked from [tsawler/laravel-filemanager](http://packalyst.com/packages/package/tsawler/laravel-filemanager)
 | |
|  * Support public and private folders for multi users
 | |
|  * Customizable views, routes and middlewares
 | |
|  * Supported locales : en, fr, zh-TW, zh-CN, pt-BR
 | |
| 
 | |
| 
 | |
| ## Requirements
 | |
| 
 | |
|  * php >= 5.5
 | |
|  * Laravel 5
 | |
|  * requires [intervention/image](https://github.com/Intervention/image) (to make thumbs, crop and resize images).
 | |
| 
 | |
| ## Installation
 | |
| 
 | |
| 1. Install package 
 | |
| 
 | |
|     ```bash
 | |
|         composer require unisharp/laravel-filemanager
 | |
|     ```
 | |
| 
 | |
| 1. Edit `config/app.php` :
 | |
| 
 | |
|     Add service providers
 | |
| 
 | |
|     ```php
 | |
|         Unisharp\Laravelfilemanager\LaravelFilemanagerServiceProvider::class,
 | |
|         Intervention\Image\ImageServiceProvider::class,
 | |
|     ```
 | |
| 
 | |
|     And add class aliases
 | |
| 
 | |
|     ```php
 | |
|         'Image' => Intervention\Image\Facades\Image::class,
 | |
|     ```
 | |
| 
 | |
| 1. Publish the package's config and assets :
 | |
| 
 | |
|     ```bash
 | |
|         php artisan vendor:publish --tag=lfm_config
 | |
|         php artisan vendor:publish --tag=lfm_public
 | |
|     ```
 | |
|     
 | |
| 1. Ensure that the files & images directories (in `config/lfm.php`) are writable by your web server.
 | |
| 
 | |
| ## WYSIWYG Editor Integration:
 | |
| ### Option 1: CKEditor
 | |
| 
 | |
|   1. Install [laravel-ckeditor](https://github.com/UniSharp/laravel-ckeditor) package
 | |
| 
 | |
|   1. Modify the views
 | |
|       
 | |
|     Sample 1 - Replace by ID:
 | |
|     ```html
 | |
|     <script src="/vendor/unisharp/laravel-ckeditor/ckeditor.js"></script>
 | |
|     <textarea id="my-editor" name="content" class="form-control">{!! old('content', $content) !!}</textarea>
 | |
|     <script>
 | |
|       CKEDITOR.replace( 'my-editor', {
 | |
|         filebrowserImageBrowseUrl: '/laravel-filemanager?type=Images',
 | |
|         filebrowserImageUploadUrl: '/laravel-filemanager/upload?type=Images&_token={{csrf_token()}}',
 | |
|         filebrowserBrowseUrl: '/laravel-filemanager?type=Files',
 | |
|         filebrowserUploadUrl: '/laravel-filemanager/upload?type=Files&_token={{csrf_token()}}'
 | |
|       });
 | |
|     </script>
 | |
|     ```
 | |
|     
 | |
|     Sample 2 - With JQuery Selector:
 | |
|     
 | |
|     ```html
 | |
|     <script src="/vendor/unisharp/laravel-ckeditor/ckeditor.js"></script>
 | |
|     <script src="/vendor/unisharp/laravel-ckeditor/adapters/jquery.js"></script>
 | |
|     <textarea name="content" class="form-control my-editor">{!! old('content', $content) !!}</textarea>
 | |
|     <script>
 | |
|       $('textarea.my-editor').ckeditor({
 | |
|         filebrowserImageBrowseUrl: '/laravel-filemanager?type=Images',
 | |
|         filebrowserImageUploadUrl: '/laravel-filemanager/upload?type=Images&_token={{csrf_token()}}',
 | |
|         filebrowserBrowseUrl: '/laravel-filemanager?type=Files',
 | |
|         filebrowserUploadUrl: '/laravel-filemanager/upload?type=Files&_token={{csrf_token()}}'
 | |
|       });
 | |
|     </script>
 | |
|     ```
 | |
| 
 | |
| ### Option 2: TinyMCE4
 | |
| 
 | |
| ```html
 | |
| <script src="//cdn.tinymce.com/4/tinymce.min.js"></script>
 | |
| <textarea name="content" class="form-control my-editor">{!! old('content', $content) !!}</textarea>
 | |
| <script>
 | |
|   var editor_config = {
 | |
|     path_absolute : "/",
 | |
|     selector: "textarea",
 | |
|     plugins: [
 | |
|       "advlist autolink lists link image charmap print preview hr anchor pagebreak",
 | |
|       "searchreplace wordcount visualblocks visualchars code fullscreen",
 | |
|       "insertdatetime media nonbreaking save table contextmenu directionality",
 | |
|       "emoticons template paste textcolor colorpicker textpattern"
 | |
|     ],
 | |
|     toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image media",
 | |
|     relative_urls: false,
 | |
|     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 + 'laravel-filemanager?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>
 | |
| ```
 | |
| 
 | |
| ## Config
 | |
|     
 | |
| In `config/lfm.php` :
 | |
| 
 | |
| ```php
 | |
|     'rename_file'        => true,
 | |
|     // true : files will be renamed as uniqid
 | |
|     // false : files will remain original names
 | |
| 
 | |
|     'use_package_routes' => true,
 | |
|     // set this to false to customize route for file manager
 | |
| 
 | |
|     'middlewares'        => ['auth'],
 | |
|     // determine middlewares that apply to all file manager routes
 | |
| 
 | |
|     'allow_multi_user'   => true,
 | |
|     // true : user can upload files to shared folder and their own folder
 | |
|     // false : all files are put together in shared folder
 | |
| 
 | |
|     'user_field'         => 'id',
 | |
|     // determine which column of users table will be used as user's folder name
 | |
| 
 | |
|     'shared_folder_name' => 'shares',
 | |
|     // the name of shared folder
 | |
| 
 | |
|     'thumb_folder_name'  => 'thumbs',
 | |
|     // the name of thumb folder
 | |
| 
 | |
|     'images_dir'         => 'public/photos/',
 | |
|     'images_url'         => '/photos/',
 | |
|     // path and url of images
 | |
| 
 | |
|     'files_dir'          => 'public/files/',
 | |
|     'files_url'          => '/files/',
 | |
|     // path and url of files
 | |
| ```
 | |
| 
 | |
| ## Customization
 | |
| 
 | |
| 1. If the route is changed, make sure urls below is correspond to your route :
 | |
| 
 | |
|   CKEditor
 | |
|     ```javascript
 | |
|         <script>
 | |
|             CKEDITOR.replace( 'editor', {
 | |
|                 filebrowserImageBrowseUrl: '/your-custom-route?type=Images',
 | |
|                 filebrowserBrowseUrl: '/your-custom-route?type=Files',
 | |
|             });
 | |
|         </script>
 | |
|     ```
 | |
|     
 | |
|   And be sure to include the `?type=Images` or `?type=Files` parameter.
 | |
| 
 | |
|   TinyMCE
 | |
|     ```javascript
 | |
|         ...
 | |
|         var cmsURL = editor_config.path_absolute + 'your-custom-route?field_name='+field_name+'&lang='+ tinymce.settings.language;
 | |
|         if (type == 'image') {
 | |
|           cmsURL = cmsURL + "&type=Images";
 | |
|         } else {
 | |
|           cmsURL = cmsURL + "&type=Files";
 | |
|         }
 | |
|         ...
 | |
|     ```
 | |
|     
 | |
| 1. To customize the views :
 | |
| 
 | |
|     on Linux :
 | |
| 
 | |
|     ```bash
 | |
|     cp -rf vendor/unisharp/laravel-filemanager/src/views/* resources/views/vendor/laravel-filemanager/
 | |
|     ```
 | |
| 
 | |
|     on MAC :
 | |
| 
 | |
|     ```bash
 | |
|     cp -rf vendor/unisharp/laravel-filemanager/src/views/ resources/views/vendor/laravel-filemanager/
 | |
|     ```
 | |
| 
 | |
| ## Screenshots
 | |
| 
 | |
| 
 | |
| 
 | |
| ## Credits
 | |
|  * All contibutors from GitHub. (issues / PR)
 | |
|  * Special thanks to
 | |
|    * [@taswler](https://github.com/tsawler) the author.
 | |
|    * [@welcoMattic](https://github.com/welcoMattic) providing fr translations and lots of bugfixes.
 | |
|    * [@fraterblack](https://github.com/fraterblack) TinyMCE 4 support and pt-BR translations.
 | |
|    * [@olivervogel](https://github.com/olivervogel) for the awesome [image library](https://github.com/Intervention/image)
 | |
|    * [All @UniSharp members](https://github.com/UniSharp)
 | 
