123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- <?php
- /**
- * Created by PhpStorm.
- * User: NODELOG
- * Date: 16/7/16
- * Time: 上午1:57
- */
- namespace common\widgets\editor;
- use common\widgets\editor\editormd\Editormd;
- use common\widgets\editor\ueditor\UEditor;
- use vova07\imperavi\Widget;
- use yii\base\InvalidParamException;
- use yii\widgets\InputWidget;
- use yii\helpers\Url;
- class EditorWidget extends InputWidget
- {
- public $isMarkdown;
- public $typeEnum = ['redactor', 'markdown', 'ueditor'];
- protected $defaultRichType = 'ueditor';
- protected $defaultMarkdownType = 'markdown';
- /**
- * @var string 编辑器类型
- */
- public $type;
- public $inputOptions = ['rows' => 10];
- public function init()
- {
- if ($this->type === null) {
- if (isset($this->isMarkdown)) {
- if ($this->isMarkdown) {
- $this->type = $this->defaultMarkdownType;
- } else {
- $this->type = $this->defaultRichType;
- }
- } else {
- $this->type = $this->defaultRichType;
- }
- }
- if(!in_array($this->type, $this->typeEnum)) {
- throw new InvalidParamException('编辑器类型不存在');
- }
- $this->options = array_merge($this->inputOptions, $this->options);
- }
- public function run()
- {
- return call_user_func([$this, $this->type]);
- }
- protected function markdown()
- {
- if ($this->hasModel()) {
- return Editormd::widget([
- 'model' => $this->model,
- 'attribute' => $this->attribute,
- 'imageUploadRoute' => [
- '/upload/md-image-upload',
- 'fileparam' => 'editormd-image-file'
- ],
- 'options' => $this->options
- ]);
- } else {
- return Editormd::widget([
- 'name' => $this->name,
- 'value' => $this->value,
- 'imageUploadRoute' => [
- '/attachment/upload/md-image-upload',
- 'fileparam' => 'editormd-image-file'
- ],
- 'options' => $this->options
- ]);
- }
- }
- protected function redactor()
- {
- // $defaultOptions = [
- // 'lang' => 'zh_cn',
- // 'minHeight' => 200,
- // 'imageUpload' => Url::to(['/upload/redactor-image-upload']),
- // 'imageManagerJson' => Url::to(['/upload/redactor-images-get']),
- // 'fileManagerJson' => Url::to(['/upload/redactor-files-get']),
- // 'fileUpload' => Url::to(['/upload/redactor-file-upload']),
- // 'plugins' => [
- // 'clips',
- // 'fullscreen',
- // 'imagemanager',
- // 'filemanager'
- // ]
- // ];
- $defaultOptions = [
- 'lang' => 'zh_cn',
- 'minHeight' => 375,
- 'maxHeight' => 667,
- 'maxWidth' => 375,
- 'imageUpload' => Url::to(['/upload/redactor-image-upload']),
- 'imageManagerJson' => Url::to(['/upload/redactor-images-get']),
- // 'fileManagerJson' => Url::to(['/upload/redactor-files-get']),
- // 'fileUpload' => Url::to(['/upload/redactor-file-upload']),
- 'buttonsHide'=> ['html','link'],
- 'plugins' => [
- // 'fullscreen',
- 'imagemanager',
- 'fontsize',
- 'fontcolor',
- ],
- ];
- $options = array_merge($defaultOptions, $this->options);
- if ($this->hasModel()) {
- return Widget::widget([
- 'model' => $this->model,
- 'attribute' => $this->attribute,
- 'settings' => $options
- ]);
- } else {
- return Widget::widget([
- 'name' => $this->name,
- 'value' => $this->value,
- 'settings' => $options
- ]);
- }
- }
- protected function ueditor()
- {
- $clientOptions = [
- //定制菜单
- 'toolbars' => [
- [
- 'fullscreen', 'source', 'undo', 'redo', '|',
- 'fontsize', 'bold', 'italic', 'underline', 'fontborder', 'strikethrough', 'removeformat',
- 'formatmatch', 'autotypeset', 'blockquote', 'pasteplain', 'simpleupload', 'insertimage', '|',
- 'insertorderedlist', 'insertunorderedlist', 'link', 'forecolor', 'backcolor', '|',
- 'lineheight', '|',
- 'indent', '|'
- ],
- ]
- ];
- if ($this->hasModel()) {
- return UEditor::widget([
- 'model' => $this->model,
- 'attribute' => $this->attribute,
- 'saveUrl' => ['/upload/ueditor'],
- 'options' => $this->options,
- 'clientOptions' => $clientOptions
- ]);
- } else {
- return UEditor::widget([
- 'name' => $this->name,
- 'value' => $this->value,
- 'saveUrl' => ['/upload/ueditor'],
- 'options' => $this->options,
- 'clientOptions' => $clientOptions
- ]);
- }
- }
- }
|