PluginProbe
VikBooking Hotel Booking Engine & PMS / trunk
VikBooking Hotel Booking Engine & PMS vtrunk
1.8.15 1.8.14 1.8.13 1.8.12 1.8.11 1.8.10 1.8.9 1.8.6 1.8.7 1.8.8 trunk 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.7.3 All 36 releases
vikbooking / libraries / adapter / editor / classes / tinymce.php

tinymce.php in VikBooking Hotel Booking Engine & PMS trunk, at libraries/adapter/editor/classes/tinymce.php

159 lines 4.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * @package VikWP - Libraries
4 * @subpackage adapter.editor
5 * @author E4J s.r.l.
6 * @copyright Copyright (C) 2023 E4J s.r.l. All Rights Reserved.
7 * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
8 * @link https://vikwp.com
9 */
10
11 // No direct access
12 defined('ABSPATH') or die('No script kiddies please!');
13
14 JLoader::import('adapter.editor.editor');
15
16 /**
17 * Editor class to handle a TinyMCE editor.
18 *
19 * @since 10.0
20 */
21 class JEditorTinyMCE extends JEditor
22 {
23 /**
24 * @override
25 * Renders the editor area.
26 *
27 * @param string $name The control name.
28 * @param string $html The contents of the text area.
29 * @param string $width The width of the text area (px or %).
30 * @param string $height The height of the text area (px or %).
31 * @param integer $col The number of columns for the textarea.
32 * @param integer $row The number of rows for the textarea.
33 * @param boolean $buttons True and the editor buttons will be displayed.
34 * @param string $id An optional ID for the textarea (@since 10.1.20).
35 * @param array $params Associative array of editor parameters (@since 10.1.35).
36 *
37 * @return string The editor.
38 *
39 * @link https://codex.wordpress.org/Function_Reference/wp_editor
40 */
41 protected function render($name, $html, $width, $height, $col, $row, $buttons, $id, $params)
42 {
43 $editor = [
44 'resize' => true,
45 'wp_autoresize_on' => true,
46 'add_unload_trigger' => false,
47 'wp_keep_scroll_position' => true,
48 ];
49
50 /**
51 * It is now possible to override the parameters sent to the
52 * TinyMCE JS editor instance.
53 *
54 * @since 10.1.37
55 */
56 if (isset($params['tinymce']))
57 {
58 // merge settings
59 $editor = array_merge($editor, $params['tinymce']);
60 // unset to avoid replacing the whole attribute while
61 // merging the global settings
62 unset($params['tinymce']);
63 }
64
65 $settings = array(
66 'media_buttons' => $buttons,
67 '_content_editor_dfw' => true,
68 'drag_drop_upload' => true,
69 'tabfocus_elements' => 'content-html,save-post',
70 'editor_height' => $height,
71 'tinymce' => $editor,
72 'textarea_name' => $name,
73 );
74
75 /**
76 * It is now possible to override the parameters sent to the
77 * WordPress TinyMCE editor instance.
78 *
79 * @since 10.1.37
80 */
81 $settings = array_merge($settings, $params);
82
83 // init editor
84 wp_editor($html, $id, $settings);
85
86 $document = JFactory::getDocument();
87
88 /**
89 * Inject TinyMCE instance within Joomla.editors pool.
90 *
91 * @since 10.1.17
92 */
93 $document->addScriptDeclaration(
94 <<<JS
95 (function($) {
96 'use strict';
97
98 $(function() {
99 if (Joomla.editors.instances.$id) {
100 tinyMCE.get('$id').remove();
101 }
102
103 Joomla.editors.instances['$id'] = {
104 id: '$id',
105 instance: null,
106 getValue: function() {
107 // get TinyMCE editor
108 var _e = tinyMCE.get(this.id);
109 if (_e) {
110 // editor exists, get contents
111 return _e.getContent();
112 }
113 // get value from plain textarea
114 return $('textarea#' + this.id).val();
115 },
116 setValue: function(text) {
117 // get TinyMCE editor
118 var _e = tinyMCE.get(this.id);
119 if (_e) {
120 // editor exists, set contents
121 return _e.setContent(text);
122 }
123 // set value to plain textarea
124 return $('textarea#' + this.id).val(text);
125 },
126 getSelection: function() {
127 return this.instance.selection.getContent({
128 format: 'text'
129 });
130 },
131 replaceSelection: function(text) {
132 this.instance.execCommand('mceInsertContent', false, text);
133 },
134 };
135
136 __isReady(() => {
137 // once the tinyMCE instance is ready...
138 return tinyMCE.get('$id');
139 }).then((editor) => {
140 // ...register it into the CMS editors pool
141 Joomla.editors.instances['$id'].instance = editor;
142 });
143 });
144 })(jQuery);
145 JS
146 );
147
148 // if we are doing AJAX, render the editor via javascript
149 if (wp_doing_ajax())
150 {
151 $document->addScriptDeclaration(
152 <<<JS
153 tinyMCE.execCommand('mceAddEditor', true, '$id');
154 JS
155 );
156 }
157 }
158 }
159