Based on https://bitbucket.org/z_bodya/yii-elfinder with updated elFinder and some code improvements.
-
Checkout source code to your project to ext.elFinder. You can use custom elFinder code, just set
elFindervendor
alias to point your elFinder code directory.'aliases' => [ 'elFindervendor' => 'vendor.myCystomElFinder', ],
You can get elFinder from https://github.com/Studio-42/elFinder/releases - remember to move
css
,img
,js
andsounds
directories toassets
directory, so elFinder source will look like: -
Create controller for connector action, and configure it params
class ElfinderController extends Controller { // don't forget configure access rules public function actions() { return [ // main action for elFinder connector 'connector' => [ 'class' => 'ext.elFinder.ElFinderConnectorAction', // elFinder connector configuration // https://github.com/Studio-42/elFinder/wiki/Connector-configuration-options 'settings' => [ 'roots' => [ [ 'driver' => 'LocalFileSystem', 'path' => Yii::getPathOfAlias('webroot') . '/files/', 'URL' => Yii::app()->baseUrl . '/files/', 'alias' => 'Root Alias', 'acceptedName' => '/^[^\.].*$/', // disable creating dotfiles 'attributes' => [ [ 'pattern' => '/\/[.].*$/', // hide dotfiles 'read' => false, 'write' => false, 'hidden' => true, ], ], ], ], ], ], // action for TinyMCE popup with elFinder widget 'elfinderTinyMce' => [ 'class' => 'ext.elFinder.TinyMceElFinderPopupAction', 'connectorRoute' => 'connector', // main connector action id ], // action for file input popup with elFinder widget 'elfinderFileInput' => [ 'class' => 'ext.elFinder.ServerFileInputElFinderPopupAction', 'connectorRoute' => 'connector', // main connector action id ], ]; } }
-
ServerFileInput - use this widget to choose file on server using elFinder pop-up
$this->widget('ext.elFinder.ServerFileInput', [ 'model' => $model, 'attribute' => 'field_name', 'popupConnectorRoute' => 'elfinder/elfinderFileInput', // relative route for file input action // ability to customize "Browse" button // 'customButton' => CHtml::button('Browse images', [ // 'id' => CHtml::getIdByName(CHtml::activeName($model, 'field_name')) . 'browse', // 'class' => 'btn', 'style' => 'margin-left:10px', // ]), // title for popup window (optional) 'popupTitle' => 'Files', ]);
-
ElFinderWidget - use this widget to manage files
$this->widget('ext.elFinder.ElFinderWidget', [ 'connectorRoute' => 'elfinder/connector', // relative route for elFinder connector action ]);
-
TinyMceElFinder - use this widget to integrate elFinder with yii-tinymce
$this->widget('ext.tinymce.TinyMce', [ 'model' => $model, 'attribute' => 'content', 'fileManager' => [ 'class' => 'ext.elFinder.TinyMceElFinder', 'popupConnectorRoute' => 'elfinder/elfinderTinyMce', // relative route for TinyMCE popup action // title for popup window (optional) 'popupTitle' => 'Files', ], ]);