vova07 / yii2-imperavi-widget
The imperavi redactor widget for Yii 2 framework.
Installs: 822 258
Dependents: 81
Suggesters: 2
Security: 0
Stars: 247
Watchers: 24
Forks: 99
Open Issues: 20
Language:JavaScript
Type:yii2-extension
Requires
- yiisoft/yii2: *
Requires (Dev)
- mikey179/vfsstream: ~1
- phpunit/phpunit: 4.*
- scrutinizer/ocular: ~1.1
This package is auto-updated.
Last update: 2024-10-28 10:12:59 UTC
README
Imperavi Redactor Widget
is a wrapper for Imperavi Redactor 10.2.5,
a high quality WYSIWYG editor.
Note that Imperavi Redactor itself is a proprietary commercial copyrighted software but since Yii community bought OEM license you can use it for free with Yii.
Install
The preferred way to install this extension is through composer.
Either run
$ php composer.phar require --prefer-dist vova07/yii2-imperavi-widget "*"
or add
"vova07/yii2-imperavi-widget": "*"
to the require
section of your composer.json
file.
Usage
Once the extension is installed, simply use it in your code:
Like a widget
echo \vova07\imperavi\Widget::widget([ 'name' => 'redactor', 'settings' => [ 'lang' => 'ru', 'minHeight' => 200, 'plugins' => [ 'clips', 'fullscreen', ], 'clips' => [ ['Lorem ipsum...', 'Lorem...'], ['red', '<span class="label-red">red</span>'], ['green', '<span class="label-green">green</span>'], ['blue', '<span class="label-blue">blue</span>'], ], ], ]);
Like an ActiveForm widget
use vova07\imperavi\Widget; echo $form->field($model, 'content')->widget(Widget::className(), [ 'settings' => [ 'lang' => 'ru', 'minHeight' => 200, 'plugins' => [ 'clips', 'fullscreen', ], 'clips' => [ ['Lorem ipsum...', 'Lorem...'], ['red', '<span class="label-red">red</span>'], ['green', '<span class="label-green">green</span>'], ['blue', '<span class="label-blue">blue</span>'], ], ], ]);
Like a widget for a predefined textarea
echo \vova07\imperavi\Widget::widget([ 'selector' => '#my-textarea-id', 'settings' => [ 'lang' => 'ru', 'minHeight' => 200, 'plugins' => [ 'clips', 'fullscreen', ], 'clips' => [ ['Lorem ipsum...', 'Lorem...'], ['red', '<span class="label-red">red</span>'], ['green', '<span class="label-green">green</span>'], ['blue', '<span class="label-blue">blue</span>'], ], ], ]);
Add images that have already been uploaded
// DefaultController.php public function actions() { return [ 'images-get' => [ 'class' => 'vova07\imperavi\actions\GetImagesAction', 'url' => 'http://my-site.com/images/', // Directory URL address, where files are stored. 'path' => '@alias/to/my/path', // Or absolute path to directory where files are stored. 'options' => ['only' => ['*.jpg', '*.jpeg', '*.png', '*.gif', '*.ico']], // These options are by default. ], ]; } // View.php echo \vova07\imperavi\Widget::widget([ 'selector' => '#my-textarea-id', 'settings' => [ 'lang' => 'ru', 'minHeight' => 200, 'imageUpload' => Url::to(['default/image-upload']), 'imageManagerJson' => Url::to(['/default/images-get']), 'plugins' => [ 'imagemanager', ], ], ]);
Add files that have already been uploaded
// DefaultController.php public function actions() { return [ 'files-get' => [ 'class' => 'vova07\imperavi\actions\GetFilesAction', 'url' => 'http://my-site.com/files/', // Directory URL address, where files are stored. 'path' => '@alias/to/my/path', // Or absolute path to directory where files are stored. 'options' => ['only' => ['*.txt', '*.md']], // These options are by default. ], ]; } // View.php echo \vova07\imperavi\Widget::widget([ 'selector' => '#my-textarea-id', 'settings' => [ 'lang' => 'ru', 'minHeight' => 200, 'fileUpload' => Url::to(['default/file-upload']), 'fileManagerJson' => Url::to(['/default/files-get']), 'plugins' => [ 'filemanager', ], ], ]);
Upload image
// DefaultController.php public function actions() { return [ 'image-upload' => [ 'class' => 'vova07\imperavi\actions\UploadFileAction', 'url' => 'http://my-site.com/images/', // Directory URL address, where files are stored. 'path' => '@alias/to/my/path', // Or absolute path to directory where files are stored. ], ]; } // View.php echo \vova07\imperavi\Widget::widget([ 'selector' => '#my-textarea-id', 'settings' => [ 'lang' => 'ru', 'minHeight' => 200, 'imageUpload' => Url::to(['/default/image-upload']), 'plugins' => [ 'imagemanager', ], ], ]);
Upload file
// DefaultController.php public function actions() { return [ 'file-upload' => [ 'class' => 'vova07\imperavi\actions\UploadFileAction', 'url' => 'http://my-site.com/files/', // Directory URL address, where files are stored. 'path' => '@alias/to/my/path', // Or absolute path to directory where files are stored. 'uploadOnlyImage' => false, // For any kind of files uploading. ], ]; } // View.php echo \vova07\imperavi\Widget::widget([ 'selector' => '#my-textarea-id', 'settings' => [ 'lang' => 'ru', 'minHeight' => 200, 'fileUpload' => Url::to(['/default/file-upload']), 'plugins' => [ 'filemanager', ], ], ]);
Upload and replace a file with the same name
// DefaultController.php public function actions() { return [ 'file-upload' => [ 'class' => 'vova07\imperavi\actions\UploadFileAction', 'url' => 'http://my-site.com/files/', // Directory URL address, where files are stored. 'path' => '@alias/to/my/path', // Or absolute path to directory where files are stored. 'uploadOnlyImage' => false, // For any kind of files uploading. 'unique' => false, 'replace' => true, // By default it throw an excepiton instead. ], ]; } // View.php echo \vova07\imperavi\Widget::widget([ 'selector' => '#my-textarea-id', 'settings' => [ 'lang' => 'ru', 'minHeight' => 200, 'fileUpload' => Url::to(['/default/file-upload']), 'plugins' => [ 'filemanager', ], ], ]);
Upload file and translit its name
// DefaultController.php public function actions() { return [ 'file-upload' => [ 'class' => 'vova07\imperavi\actions\UploadFileAction', 'url' => 'http://my-site.com/files/', // Directory URL address, where files are stored. 'path' => '@alias/to/my/path', // Or absolute path to directory where files are stored. 'uploadOnlyImage' => false, // For any kind of files uploading. 'unique' => false, 'translit' => true, ], ]; } // View.php echo \vova07\imperavi\Widget::widget([ 'selector' => '#my-textarea-id', 'settings' => [ 'lang' => 'ru', 'minHeight' => 200, 'fileUpload' => Url::to(['/default/file-upload']), 'plugins' => [ 'filemanager', ], ] ]);
Add custom plugins
echo \vova07\imperavi\Widget::widget([ 'selector' => '#my-textarea-id', 'settings' => [ 'lang' => 'ru', 'minHeight' => 200, 'plugins' => [ 'clips', 'fullscreen' ] ], 'plugins' => [ 'my-custom-plugin' => 'app\assets\MyPluginBundle', ], ]);
Enable custom image manager with delete functionality
// DefaultController.php public function actions() { return [ 'images-get' => [ 'class' => 'vova07\imperavi\actions\GetImagesAction', 'url' => 'http://my-site.com/images/', // Directory URL address, where files are stored. 'path' => '@alias/to/my/path', // Or absolute path to directory where files are stored. ], 'image-upload' => [ 'class' => 'vova07\imperavi\actions\UploadFileAction', 'url' => 'http://my-site.com/images/', // Directory URL address, where files are stored. 'path' => '@alias/to/my/path', // Or absolute path to directory where files are stored. ], 'file-delete' => [ 'class' => 'vova07\imperavi\actions\DeleteFileAction', 'url' => 'http://my-site.com/statics/', // Directory URL address, where files are stored. 'path' => '/var/www/my-site.com/web/statics', // Or absolute path to directory where files are stored. ], ]; } // View.php echo \vova07\imperavi\Widget::widget([ 'selector' => '#my-textarea-id', 'settings' => [ 'lang' => 'ru', 'minHeight' => 200, 'imageUpload' => Url::to(['/default/image-upload']), 'imageDelete' => Url::to(['/default/file-delete']), 'imageManagerJson' => Url::to(['/default/images-get']), ], 'plugins' => [ 'imagemanager' => 'vova07\imperavi\bundles\ImageManagerAsset', ], ]);
Enable custom file manager with delete functionality
// DefaultController.php public function actions() { return [ 'files-get' => [ 'class' => 'vova07\imperavi\actions\GetFilesAction', 'url' => 'http://my-site.com/images/', // Directory URL address, where files are stored. 'path' => '@alias/to/my/path', // Or absolute path to directory where files are stored. ], 'file-upload' => [ 'class' => 'vova07\imperavi\actions\UploadFileAction', 'url' => 'http://my-site.com/files/', // Directory URL address, where files are stored. 'path' => '@alias/to/my/path', // Or absolute path to directory where files are stored. 'uploadOnlyImage' => false, // For any kind of files uploading. ], 'file-delete' => [ 'class' => 'vova07\imperavi\actions\DeleteFileAction', 'url' => 'http://my-site.com/statics/', // Directory URL address, where files are stored. 'path' => '/var/www/my-site.com/web/statics', // Or absolute path to directory where files are stored. ], ]; } // View.php echo \vova07\imperavi\Widget::widget([ 'selector' => '#my-textarea-id', 'settings' => [ 'lang' => 'ru', 'minHeight' => 200, 'fileUpload' => Url::to(['/default/file-upload']), 'fileDelete' => Url::to(['/default/file-delete']), 'fileManagerJson' => Url::to(['/default/files-get']), ], 'plugins' => [ 'filemanager' => 'vova07\imperavi\bundles\FileManagerAsset', ], ]);
Testing
$ phpunit
Further Information
Please, check the Imperavi Redactor v10 documentation for further information about its configuration options.
Contributing
Please see CONTRIBUTING for details.
Credits
License
The BSD License (BSD). Please see License File for more information.
Upgrade guide
Please check the UPGRADE GUIDE for details.