ElFinder РаÑÑиÑение Ð´Ð»Ñ Yii 2 ¶
- ÐоддеÑживаемÑе Ñ ÑанилиÑа
- УÑÑановка
- ÐаÑÑÑойка
- ÐаÑÑÑойка callback-ов Ð´Ð»Ñ ÑобÑÑий
- ÐаÑÑÑойка Ðлагинов
- ÐÑполÑзование
- ÐÑполÑзование пÑи ÑабоÑе Ñ PathController
- CKEditor
- ÐÑоблемÑ
ElFinder â ÑайловÑй Ð¼ÐµÐ½ÐµÐ´Ð¶ÐµÑ Ð´Ð»Ñ ÑайÑа.
ÐоддеÑживаемÑе Ñ ÑанилиÑа ¶
mihaildev/yii2-elfinder-flysystem - https://github.com/MihailDev/yii2-elfinder-flysystem/
Local
Azure
AWS S3 V2
AWS S3 V3
Copy.com
Dropbox
FTP
GridFS
Memory
Null / Test
Rackspace
ReplicateAdapter
SFTP
WebDAV
PHPCR
ZipArchive
УÑÑановка ¶
Удобнее вÑего ÑÑÑановиÑÑ ÑÑо ÑаÑÑиÑение ÑеÑез composer.
Ðибо запÑÑÑиÑÑ
php composer.phar require --prefer-dist mihaildev/yii2-elfinder "*"
или добавиÑÑ
"mihaildev/yii2-elfinder": "*"
в Ñазделе require
ваÑего composer.json Ñайла.
ÐаÑÑÑойка ¶
'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 ÑабоÑÐ°ÐµÑ ÑолÑко Ñ Ð¾Ð´Ð½Ð¾Ð¹ папкой Ñакже Ð¸Ð¼ÐµÐµÑ Ð´Ð¾Ð¿ возможноÑÑÑ Ð¿ÐµÑедаÑÑ Ð² запÑоÑе на оÑкÑÑÑие под деÑиÑоÑии
Ðа даннÑй Ð¼Ð¾Ð¼ÐµÐ½Ñ Ñеализованно иÑполÑзование ÑолÑко 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
ÐаÑÑÑойка 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
ÐаÑÑÑойка Ðлагинов ¶
Ðзза Ñложной наÑÑÑойки бÑла пеÑеделанна ÑабоÑа плагинов но возможноÑÑÑ Ð¸ÑполÑзоваÑÑ ÑÑаÑÑе Ð¿Ð»Ð°Ð³Ð¸Ð½Ñ Ð¿ÑиÑÑÑÑÑвÑеÑ
`
php
'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,
]
]
],
]
ÐаÑÑÑойка'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' => '<div class="input-group">{input}<span class="input-group-btn">{button}</span></div>',
'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' => '<div class="input-group">{input}<span class="input-group-btn">{button}</span></div>',
'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)
`
php
use mihaildev\elfinder\ElFinder;
$ckeditorOptions = ElFinder::ckeditorOptions([$controller, 'path' => 'some/sub/path'],[/* Some CKEditor Options */]);
ÐÑполÑзование"mihaildev/yii2-ckeditor" (https://github.com/MihailDev/yii2-ckeditor)
```php
use mihaildev\ckeditor\CKEditor;
use mihaildev\elfinder\ElFinder;
$form->field($model, 'attribute')->widget(CKEditor::className(), [
...
'editorOptions' => ElFinder::ckeditorOptions('elfinder',[/* Some CKEditor Options */]),
...
]);
ÐÐ»Ñ ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð´ÐºÐ°Ñалога (пÑи иÑполÑзовании PathController)
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
РеÑение - добавлÑем в Ñаблон запиÑÑ
`
php
mihaildev\elfinder\Assets::noConflict($this);
## ÐолезнÑе ÑÑÑлки
ElFinder Wiki - https://github.com/Studio-42/elFinder/wiki
Flysystem
https://github.com/MihailDev/yii2-elfinder-flysystem/
https://github.com/barryvdh/elfinder-flysystem-driver
https://github.com/creocoder/yii2-flysystem
http://flysystem.thephpleague.com/
If you have any questions, please ask in the forum instead.
Signup or Login in order to comment.