2017 © Pedro Peláez
 

yii2-extension yii2-elfinder

Yii2 ElFinder

image

mihaildev/yii2-elfinder

Yii2 ElFinder

  • Thursday, May 3, 2018
  • by mihaildev
  • Repository
  • 17 Watchers
  • 124 Stars
  • 131,337 Installations
  • PHP
  • 52 Dependents
  • 0 Suggesters
  • 66 Forks
  • 28 Open issues
  • 14 Versions
  • 6 % Grown

The README.md

ElFinder Расширение для Yii 2

ElFinder — файловый менеджер для сайта., (*1)

Поддерживаемые хранилища

mihaildev/yii2-elfinder-flysystem - https://github.com/MihailDev/yii2-elfinder-flysystem/, (*2)

    Local
    Azure
    AWS S3 V2
    AWS S3 V3
    Copy.com
    Dropbox
    FTP
    GridFS
    Memory
    Null / Test
    Rackspace
    ReplicateAdapter
    SFTP
    WebDAV
    PHPCR
    ZipArchive

Установка

Удобнее всего установить это расширение через composer., (*3)

Либо запустить, (*4)

php composer.phar require --prefer-dist mihaildev/yii2-elfinder "*"

или добавить, (*5)

"mihaildev/yii2-elfinder": "*"

в разделе require вашего composer.json файла., (*6)

Настройка

'controllerMap' => [
        'elfinder' => [
            'class' => 'mihaildev\elfinder\Controller',
            'access' => ['@'], //глобальный доступ к фаил менеджеру @ - для авторизорованных , ? - для гостей , чтоб открыть всем ['@', '?']
            'disabledCommands' => ['netmount'], //отключение ненужных команд https://github.com/Studio-42/elFinder/wiki/Client-configuration-options#commands
            'roots' => [
                [
                    'baseUrl'=>'@web',
                    'basePath'=>'@webroot',
                    'path' => 'files/global',
                    'name' => 'Global'
                ],
                [
                    'class' => 'mihaildev\elfinder\volume\UserPath',
                    'path'  => 'files/user_{id}',
                    'name'  => 'My Documents'
                ],
                [
                    'path' => 'files/some',
                    'name' => ['category' => 'my','message' => 'Some Name'] //перевод Yii::t($category, $message)
                ],
                [
                    'path'   => 'files/some',
                    'name'   => ['category' => 'my','message' => 'Some Name'], // Yii::t($category, $message)
                    'access' => ['read' => '*', 'write' => 'UserFilesAccess'] // * - для всех, иначе проверка доступа в даааном примере все могут видет а редактировать могут пользователи только с правами UserFilesAccess
                ]
            ],
            'watermark' => [
                    'source'         => __DIR__.'/logo.png', // Path to Water mark image
                     'marginRight'    => 5,          // Margin right pixel
                     'marginBottom'   => 5,          // Margin bottom pixel
                     'quality'        => 95,         // JPEG image save quality
                     'transparency'   => 70,         // Water mark image transparency ( other than PNG )
                     'targetType'     => IMG_GIF|IMG_JPG|IMG_PNG|IMG_WBMP, // Target image formats ( bit-field )
                     'targetMinPixel' => 200         // Target image minimum pixel size
            ]
        ]
    ],
'controllerMap' => [
        'elfinder' => [
            'class' => 'mihaildev\elfinder\PathController',
            'access' => ['@'],
            'root' => [
                'path' => 'files',
                'name' => 'Files'
            ],
            'watermark' => [
                        'source'         => __DIR__.'/logo.png', // Path to Water mark image
                         'marginRight'    => 5,          // Margin right pixel
                         'marginBottom'   => 5,          // Margin bottom pixel
                         'quality'        => 95,         // JPEG image save quality
                         'transparency'   => 70,         // Water mark image transparency ( other than PNG )
                         'targetType'     => IMG_GIF|IMG_JPG|IMG_PNG|IMG_WBMP, // Target image formats ( bit-field )
                         'targetMinPixel' => 200         // Target image minimum pixel size
            ]
        ]
    ],

Разница между PathController и Controller в том что PathController работает только с одной папкой также имеет доп возможность передать в запросе на открытие под деритории, (*7)

На данный момент реализованно использование только LocalFileSystem хранилища (mihaildev\elfinder\volume\Local и mihaildev\elfinder\volume\UserPath) для использования остальных вам прийдётся всё настраивать через mihaildev\elfinder\volume\Base также добавленно расширение https://github.com/MihailDev/yii2-elfinder-flysystem/ это дополнение позволяет интегрировать Flysystem хранилища такие как Local Azure AWS S3 V2 AWS S3 V3 Copy.com Dropbox FTP GridFS Memory Null / Test Rackspace ReplicateAdapter SFTP WebDAV PHPCR ZipArchive, (*8)

Настройка callback-ов для событий

'controllerMap' => [
        'elfinder' => [
            ...            
            'managerOptions' => [
                ...
                'handlers' => [
                    'select' => 'function(event, elfinderInstance) {
                                    console.log(event.data);
                                    console.log(event.data.selected);
                                }', 
                    'open' => 'function(event, elfinderInstance) {...}',
                ],
                ...
            ],
            ...
        ]
    ],

список событий - https://github.com/Studio-42/elFinder/wiki/Client-event-API#event-list, (*9)

Настройка Плагинов

Изза сложной настройки была переделанна работа плагинов но возможность использовать старые плагины присутствует, (*10)

'controllerMap' => [
        'elfinder' => [
            'class' => 'mihaildev\elfinder\Controller',
            //'plugin' => ['\mihaildev\elfinder\plugin\Sluggable'],
            'plugin' => [
                [
                    'class'=>'\mihaildev\elfinder\plugin\Sluggable',
                    'lowercase' => true,
                    'replacement' => '-'
                ]
             ],
             'roots' => [
                             [
                                 'baseUrl'=>'@web',
                                 'basePath'=>'@webroot',
                                 'path' => 'files/global',
                                 'name' => 'Global',
                                 'plugin' => [
                                        'Sluggable' => [
                                            'lowercase' => false,
                                        ]
                                 ]
                             ],
                         ]

Настройка старого плагина (на примере плагина Sanitizer), (*11)

'controllerMap' => [
        'elfinder' => [
            'class' => 'mihaildev\elfinder\Controller',
            'connectOptions' => [
                'bind' => [
                    'upload.pre mkdir.pre mkfile.pre rename.pre archive.pre ls.pre' => array(
                        'Plugin.Sanitizer.cmdPreprocess'
                    ),
                    'ls' => array(
                        'Plugin.Sanitizer.cmdPostprocess'
                    ),
                    'upload.presave' => array(
                        'Plugin.Sanitizer.onUpLoadPreSave'
                    )
                ],
                'plugin' => [
                    'Sanitizer' => array(
                        'enable' => true,
                        'targets'  => array('\\','/',':','*','?','"','<','>','|'), // target chars
                        'replace'  => '_'    // replace to this
                    )
                ],
            ],


             'roots' => [
                             [
                                 'baseUrl'=>'@web',
                                 'basePath'=>'@webroot',
                                 'path' => 'files/global',
                                 'name' => 'Global',
                                 'plugin' => [
                                        'Sanitizer' => array(
                                                                'enable' => true,
                                                                'targets'  => array('\\','/',':','*','?','"','<','>','|'), // target chars
                                                                'replace'  => '_'    // replace to this
                                                            )
                                 ]
                             ],
                         ]

Использование

use mihaildev\elfinder\InputFile;
use mihaildev\elfinder\ElFinder;
use yii\web\JsExpression;

echo InputFile::widget([
    'language'   => 'ru',
    'controller' => 'elfinder', // вставляем название контроллера, по умолчанию равен elfinder
    'filter'     => 'image',    // фильтр файлов, можно задать массив фильтров https://github.com/Studio-42/elFinder/wiki/Client-configuration-options#wiki-onlyMimes
    'name'       => 'myinput',
    'value'      => '',
]);

echo $form->field($model, 'attribute')->widget(InputFile::className(), [
    'language'      => 'ru',
    'controller'    => 'elfinder', // вставляем название контроллера, по умолчанию равен elfinder
    'filter'        => 'image',    // фильтр файлов, можно задать массив фильтров https://github.com/Studio-42/elFinder/wiki/Client-configuration-options#wiki-onlyMimes
    'template'      => '

{input}{button}
', 'options' => ['class' => 'form-control'], 'buttonOptions' => ['class' => 'btn btn-default'], 'multiple' => false // возможность выбора нескольких файлов ]); echo ElFinder::widget([ 'language' => 'ru', 'controller' => 'elfinder', // вставляем название контроллера, по умолчанию равен elfinder 'filter' => 'image', // фильтр файлов, можно задать массив фильтров https://github.com/Studio-42/elFinder/wiki/Client-configuration-options#wiki-onlyMimes 'callbackFunction' => new JsExpression('function(file, id){}') // id - id виджета ]);

Использование при работе с PathController

use mihaildev\elfinder\InputFile;
use mihaildev\elfinder\ElFinder;
use yii\web\JsExpression;

echo InputFile::widget([
    'language'   => 'ru',
    'controller' => 'elfinder', // вставляем название контроллера, по умолчанию равен elfinder
    'path' => 'image', // будет открыта папка из настроек контроллера с добавлением указанной под деритории  
    'filter'     => 'image',    // фильтр файлов, можно задать массив фильтров https://github.com/Studio-42/elFinder/wiki/Client-configuration-options#wiki-onlyMimes
    'name'       => 'myinput',
    'value'      => '',
]);

echo $form->field($model, 'attribute')->widget(InputFile::className(), [
    'language'      => 'ru',
    'controller'    => 'elfinder', // вставляем название контроллера, по умолчанию равен elfinder
    'path' => 'image', // будет открыта папка из настроек контроллера с добавлением указанной под деритории 
    'filter'        => 'image',    // фильтр файлов, можно задать массив фильтров https://github.com/Studio-42/elFinder/wiki/Client-configuration-options#wiki-onlyMimes
    'template'      => '

{input}{button}
', 'options' => ['class' => 'form-control'], 'buttonOptions' => ['class' => 'btn btn-default'], 'multiple' => false // возможность выбора нескольких файлов ]); echo ElFinder::widget([ 'language' => 'ru', 'controller' => 'elfinder', // вставляем название контроллера, по умолчанию равен elfinder 'path' => 'image', // будет открыта папка из настроек контроллера с добавлением указанной под деритории 'filter' => 'image', // фильтр файлов, можно задать массив фильтров https://github.com/Studio-42/elFinder/wiki/Client-configuration-options#wiki-onlyMimes 'callbackFunction' => new JsExpression('function(file, id){}') // id - id виджета ]);

CKEditor

use mihaildev\elfinder\ElFinder;

$ckeditorOptions = ElFinder::ckeditorOptions($controller,[/* Some CKEditor Options */]);

Для указания подкаталога (при использовании PathController), (*12)

use mihaildev\elfinder\ElFinder;

$ckeditorOptions = ElFinder::ckeditorOptions([$controller, 'path' => 'some/sub/path'],[/* Some CKEditor Options */]);

Использование совместно с приложением "mihaildev/yii2-ckeditor" (https://github.com/MihailDev/yii2-ckeditor), (*13)

use mihaildev\ckeditor\CKEditor;
use mihaildev\elfinder\ElFinder;

$form->field($model, 'attribute')->widget(CKEditor::className(), [
  ...
  'editorOptions' => ElFinder::ckeditorOptions('elfinder',[/* Some CKEditor Options */]),
  ...
]);

Для указания подкаталога (при использовании PathController), (*14)

use mihaildev\ckeditor\CKEditor;
use mihaildev\elfinder\ElFinder;

$form->field($model, 'attribute')->widget(CKEditor::className(), [
  ...
  'editorOptions' => ElFinder::ckeditorOptions(['elfinder', 'path' => 'some/sub/path'],[/* Some CKEditor Options */]),
  ...
]);

Проблемы

При встраивание без iframe возможен конфликт с bootstrap.js. Studio-42/elFinder#740 Решение - добавляем в шаблон запись, (*15)


mihaildev\elfinder\Assets::noConflict($this);

Полезные ссылки

ElFinder Wiki - https://github.com/Studio-42/elFinder/wiki, (*16)

Flysystem, (*17)

https://github.com/MihailDev/yii2-elfinder-flysystem/, (*18)

https://github.com/barryvdh/elfinder-flysystem-driver, (*19)

https://github.com/creocoder/yii2-flysystem, (*20)

http://flysystem.thephpleague.com/, (*21)

The Versions

03/05 2018

dev-master

9999999-dev https://github.com/MihailDev/yii2-elfinder

Yii2 ElFinder

  Sources   Download

BSD-3-Clause

The Requires

 

yii elfinder filemanager

07/01 2017

1.2.2

1.2.2.0 https://github.com/MihailDev/yii2-elfinder

Yii2 ElFinder

  Sources   Download

BSD-3-Clause

The Requires

 

yii elfinder filemanager

30/06 2016

1.2.1

1.2.1.0 https://github.com/MihailDev/yii2-elfinder

Yii2 ElFinder

  Sources   Download

BSD-3-Clause

The Requires

 

yii elfinder filemanager

11/05 2016

1.2.0

1.2.0.0 https://github.com/MihailDev/yii2-elfinder

Yii2 ElFinder

  Sources   Download

BSD-3-Clause

The Requires

 

yii elfinder filemanager

03/07 2015

1.1.3

1.1.3.0 https://github.com/MihailDev/yii2-elfinder

Yii2 ElFinder

  Sources   Download

BSD-3-Clause

The Requires

 

yii elfinder filemanager

28/11 2014

1.1.2

1.1.2.0 https://github.com/MihailDev/yii2-elfinder

Yii2 ElFinder

  Sources   Download

BSD-3-Clause

The Requires

 

yii elfinder filemanager

28/11 2014

1.1.1

1.1.1.0 https://github.com/MihailDev/yii2-elfinder

Yii2 ElFinder

  Sources   Download

BSD-3-Clause

The Requires

 

yii elfinder filemanager

28/11 2014

1.1.0

1.1.0.0 https://github.com/MihailDev/yii2-elfinder

Yii2 ElFinder

  Sources   Download

BSD-3-Clause

The Requires

 

yii elfinder filemanager

22/11 2014

1.0.5

1.0.5.0 https://github.com/MihailDev/yii2-elfinder

Yii2 ElFinder

  Sources   Download

BSD-3-Clause

The Requires

 

yii elfinder filemanager

26/10 2014

1.0.4

1.0.4.0 https://github.com/MihailDev/yii2-elfinder

Yii2 ElFinder

  Sources   Download

BSD-3-Clause

The Requires

 

yii elfinder filemanager

23/10 2014

1.0.3

1.0.3.0 https://github.com/MihailDev/yii2-elfinder

Yii2 ElFinder

  Sources   Download

BSD-3-Clause

The Requires

 

yii elfinder filemanager

15/10 2014

1.0.2

1.0.2.0 https://github.com/MihailDev/yii2-elfinder

Yii2 ElFinder

  Sources   Download

BSD-3-Clause

The Requires

 

yii elfinder filemanager

23/02 2014

1.0.1

1.0.1.0 https://github.com/MihailDev/yii2-elfinder

Yii2 ElFinder

  Sources   Download

BSD-3-Clause

The Requires

 

yii elfinder filemanager

25/01 2014

1.0.0

1.0.0.0 https://github.com/MihailDev/yii2-elfinder

Yii2 ElFinder

  Sources   Download

BSD-3-Clause

The Requires

 

yii elfinder filemanager