zanysoft/laravel-responsive-filemanager

Integrate Alberto Peripolli's Responsive File Manager with Laravel

3.0.0 2024-09-15 10:14 UTC

This package is auto-updated.

Last update: 2024-10-15 10:38:58 UTC


README

Downloads GitHub license GitHub license Maintenance GitHub tag

This software includes a modified version of Responsive File Manager see official website

Responsive File Manager (RFM) is licenced under CC BY-NC 3.0 which means software can't be redistributed for a commercial use.

CC BY-NC 3.0

If you wan't to use it for comercial purpose take a look on the author (Alberto Peripolli ) website

This repo is under MIT Licence except parts where antoher licence is mentioned in file.

The Laravel plugin code part here is under MIT Licence.

The RFM author delivers a commercial version of his code (a modified include.js). You will need to modify this file if you use CSRF check on your laravel app by adding _token: jQuery('meta[name="csrf-token"]').attr('content') on ajax calls. You can use www.diffchecker.com to check modifications you will have to apply to your include.commercial.js file. I can't deliver myself a licence to use RFM for commercial purpose

If you have some corrections, recommendations or anything else to say please let me know.

Read Responsive File Manager Documentation

How to Install ?

Install in your project

composer require zanysoft/laravel-responsive-filemanager

Now there is a new configuration file rfm.php

Install in config/app.php

'providers' => [
        /*
         * Laravel Framework Service Providers...
         */
        ...
        // Responsive File Manager
        ZanySoft\ResponsiveFileManager\FileManagerServiceProvider::class
],

In app/Http/Kernel.php need to use StartSession, can also use and is recommended CSRF Token

protected $middlewareGroups = [
    ...
    'web' => [
        ...
        \Illuminate\Session\Middleware\StartSession::class,
        // Responsive File Manager supports CSRF Token usage
        \App\Http\Middleware\VerifyCsrfToken::class
    ]
    ...
];

then do

php artisan vendor:publish --provider="ZanySoft\ResponsiveFileManager\FileManagerServiceProvider"

Generate private key for url identification

php artisan rfm:generate

All configs included to work out of the box. Files are meant to be stored in public folder.

Don't forget to set upload dir in config file

$upload_dir = 'media/';
$thumbs_upload_dir = 'thumbs/'; //this will create inside upload directory

Set route prefix in config file

'route_prefix' => 'filemanager/',
//or
'route_prefix' => 'admin/filemanager/',  

Set middleware in config file for security purpose

'middleware' => 'auth', //defaualt is web

Use as StandAlone

Use helpers to write filemanager url

<a href="@filemanager_get_resource(dialog.php)?field_id=imgField&lang=en_EN&akey=@filemanager_get_key()">Open RFM</a>
// OR
<a href="@filemanager_dialog(['field_id'=>'imgField'])">Open RFM</a>    
// OR
<a href="@filemanager_dialog()">Open RFM</a>

see USE AS STAND-ALONE FILE MANAGER in Responsible File Manager Doc

Include in TinyMCE or CKEDITOR

Include JS

  • For CKEditor

Replace #MYTEXTAREAJS with your textarea input

<script src='{{ asset('/vendor/unisharp/laravel-ckeditor/ckeditor.js') }}'></script>
<script>
    $(document).ready(function() {
        if($("#MYTEXTAREAID").length) {
            CKEDITOR.replace( 'postBody', {
                filebrowserBrowseUrl : '@filemanager_get_resource(dialog.php)?akey=@filemanager_get_key()&type=2&editor=ckeditor&fldr=',
                filebrowserUploadUrl : '@filemanager_get_resource(dialog.php)?akey=@filemanager_get_key()&type=2&editor=ckeditor&fldr=',
                filebrowserImageBrowseUrl : '@filemanager_get_resource(dialog.php)?akey=@filemanager_get_key()&type=1&editor=ckeditor&fldr=',
                language : '<?php App::getLocale() ?>'
            });
        }
    })
</script>
  • For TinyMCE

with tinymce parameters

$(document).ready(() => {
    $('textarea').first().tinymce({
        script_url : '/tinymce/tinymce.min.js',
        width: 680,height: 300,
        plugins: [
            "advlist autolink link image lists charmap print preview hr anchor pagebreak",
            "searchreplace wordcount visualblocks visualchars insertdatetime media nonbreaking",
            "table contextmenu directionality emoticons paste textcolor filemanager code"
    ],
    toolbar1: "undo redo | bold italic underline | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | styleselect",
    toolbar2: "| responsivefilemanager | link unlink anchor | image media | forecolor backcolor  | print preview code ",
    image_advtab: true ,
    filemanager_access_key: '@filemanager_get_key()',
    filemanager_relative_url: true,
    filemanager_sort_by: '',
    filemanager_descending: '',
    filemanager_basefolder: '',
    filemanager_subfolder: '',
    filemanager_crossdomain: '',
    external_filemanager_path: '@external_filemanager_path()',
    filemanager_title:"Responsive Filemanager" ,
    external_plugins: { "filemanager" : "/vendor/responsivefilemanager/plugin.min.js"}
    });
});

To make private folder use .htaccess with Deny from all