This repository has been archived by the owner on Jun 14, 2024. It is now read-only.
forked from stkevich/yii2-ckeditor5
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CKEditor5.php
80 lines (68 loc) · 1.6 KB
/
CKEditor5.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<?php
/**
* Created by PhpStorm.
* User: st.kevich
* Date: 25.03.18
* Time: 18:05
*/
namespace stkevich\ckeditor5;
use yii\helpers\Json;
use yii\web\JsExpression;
use yii\widgets\InputWidget;
abstract class CKEditor5 extends InputWidget
{
/**
* @var string
*/
public $editorType = 'Classic';
/**
* @var array
*/
public $clientOptions = [];
/**
* @var array Toolbar options array
*/
public $toolbar = [];
/**
* @var string Url to image upload
*/
public $uploadUrl = '';
/**
* @var array
*/
public $options = [];
/**
* @inheritdoc
*/
public function run()
{
$this->registerAssets($this->getView());
$this->registerEditorJS();
$this->printEditorTag();
}
/**
* Registration JS
*/
protected function registerEditorJS()
{
if (!empty($this->toolbar)) {
$this->clientOptions['toolbar'] = $this->toolbar;
}
if (!empty($this->uploadUrl)) {
$this->clientOptions['ckfinder'] = ['uploadUrl' => $this->uploadUrl];
}
$clientOptions = Json::encode($this->clientOptions);
$js = new JsExpression(
$this->editorType . "Editor.create( document.querySelector( '#{$this->options['id']}' ), {$clientOptions} ).catch( error => {console.error( error );} );"
);
$this->view->registerJs($js);
}
/**
* @param \yii\web\View $view
*/
protected function registerAssets($view){}
/**
* View tag for editor
*/
protected function printEditorTag(){}
}