1+ <?php
2+
3+ namespace Encore \PHPEditor ;
4+
5+ use Encore \Admin \Form \Field ;
6+
7+ class Editor extends Field
8+ {
9+ /**
10+ * {@inheritdoc}
11+ */
12+ protected $ view = 'laravel-admin-code-mirror::editor ' ;
13+
14+ /**
15+ * {@inheritdoc}
16+ */
17+ protected static $ css = [
18+ 'vendor/laravel-admin-ext/code-mirror/codemirror-5.40.0/lib/codemirror.css ' ,
19+ ];
20+
21+ /**
22+ * {@inheritdoc}
23+ */
24+ protected static $ js = [
25+ 'vendor/laravel-admin-ext/code-mirror/codemirror-5.40.0/lib/codemirror.js ' ,
26+ // x-httpd-php mode
27+ 'vendor/laravel-admin-ext/code-mirror/codemirror-5.40.0/mode/htmlmixed/htmlmixed.js ' ,
28+ 'vendor/laravel-admin-ext/code-mirror/codemirror-5.40.0/mode/xml/xml.js ' ,
29+ 'vendor/laravel-admin-ext/code-mirror/codemirror-5.40.0/mode/javascript/javascript.js ' ,
30+ 'vendor/laravel-admin-ext/code-mirror/codemirror-5.40.0/mode/css/css.js ' ,
31+ 'vendor/laravel-admin-ext/code-mirror/codemirror-5.40.0/mode/clike/clike.js ' ,
32+ 'vendor/laravel-admin-ext/code-mirror/codemirror-5.40.0/mode/php/php.js ' ,
33+ ];
34+
35+ /**
36+ * Set editor height.
37+ *
38+ * @param int $height
39+ * @return $this
40+ */
41+ public function height ($ height = 10 )
42+ {
43+ return $ this ->addVariables (compact ('height ' ));
44+ }
45+
46+ /**
47+ * {@inheritdoc}
48+ */
49+ public function render ()
50+ {
51+ $ options = array_merge (
52+ [
53+ 'mode ' => 'application/x-httpd-php ' ,
54+ 'lineNumbers ' => true ,
55+ 'matchBrackets ' => true ,
56+ 'indentUnit ' => 4 ,
57+ 'indentWithTabs ' => true ,
58+ ],
59+ PHPEditor::config ('config ' , [])
60+ );
61+
62+ $ options = json_encode ($ options );
63+
64+ $ this ->script = <<<EOT
65+ CodeMirror.fromTextArea(document.getElementById(" {$ this ->id }"), $ options);
66+ EOT ;
67+
68+ return parent ::render ();
69+ }
70+ }
0 commit comments