KCFinder for Yii2.
WIP...
The preferred way to install this helper is through composer.
Since kcfinder package do not have stable release on packagist, you should use these settings in your composer.json
file :
"minimum-stability": "dev",
"prefer-stable": true,
After, either run
php composer.phar require "iutbay/yii2-kcfinder" "*"
or add
"iutbay/yii2-kcfinder" : "*"
to the require section of your application's composer.json
file.
Without model :
use iutbay\yii2kcfinder\KCFinderInputWidget;
echo KCFinderInputWidget::widget([
'name' => 'image',
]);
With model and ActiveForm :
use iutbay\yii2kcfinder\KCFinderInputWidget;
echo $form->field($model, 'images')->widget(KCFinderInputWidget::className(), [
'multiple' => true,
]);
You should extend \dosamigos\ckeditor\CKEditor
, e.g. :
namespace app\widgets;
use yii\helpers\ArrayHelper;
use iutbay\yii2kcfinder\KCFinderAsset;
class CKEditor extends \dosamigos\ckeditor\CKEditor
{
public $enableKCFinder = true;
/**
* Registers CKEditor plugin
*/
protected function registerPlugin()
{
if ($this->enableKCFinder)
{
$this->registerKCFinder();
}
parent::registerPlugin();
}
/**
* Registers KCFinder
*/
protected function registerKCFinder()
{
$register = KCFinderAsset::register($this->view);
$kcfinderUrl = $register->baseUrl;
$browseOptions = [
'filebrowserBrowseUrl' => $kcfinderUrl . '/browse.php?opener=ckeditor&type=files',
'filebrowserUploadUrl' => $kcfinderUrl . '/upload.php?opener=ckeditor&type=files',
];
$this->clientOptions = ArrayHelper::merge($browseOptions, $this->clientOptions);
}
}
You should then set KCFinder options using session var, e.g. :
// kcfinder options
// http://kcfinder.sunhater.com/install#dynamic
$kcfOptions = array_merge(KCFinder::$kcfDefaultOptions, [
'uploadURL' => Yii::getAlias('@web').'/upload',
'access' => [
'files' => [
'upload' => true,
'delete' => false,
'copy' => false,
'move' => false,
'rename' => false,
],
'dirs' => [
'create' => true,
'delete' => false,
'rename' => false,
],
],
]);
// Set kcfinder session options
Yii::$app->session->set('KCFINDER', $kcfOptions);