run:R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:51
R W Run
10.3 KB
2026-03-11 16:18:51
R W Run
3.41 KB
2026-03-11 16:18:51
R W Run
3.25 KB
2026-03-11 16:18:51
R W Run
1023 By
2026-03-11 16:18:51
R W Run
21.95 KB
2026-03-11 16:18:51
R W Run
5.67 KB
2026-03-11 16:18:51
R W Run
78.51 KB
2026-03-11 16:18:51
R W Run
23.73 KB
2026-03-11 16:18:51
R W Run
26.18 KB
2026-03-11 16:18:51
R W Run
8.8 KB
2026-03-11 16:18:51
R W Run
28.4 KB
2026-03-11 16:18:51
R W Run
16.11 KB
2026-03-11 16:18:51
R W Run
12.22 KB
2026-03-11 16:18:51
R W Run
2.96 KB
2026-03-11 16:18:51
R W Run
25.22 KB
2026-03-11 16:18:51
R W Run
7.67 KB
2026-03-11 16:18:51
R W Run
7.72 KB
2026-03-11 16:18:51
R W Run
3.47 KB
2026-03-11 16:18:51
R W Run
6.66 KB
2026-03-11 16:18:51
R W Run
3.59 KB
2026-03-11 16:18:51
R W Run
14.67 KB
2026-03-11 16:18:51
R W Run
4.92 KB
2026-03-11 16:18:51
R W Run
22.71 KB
2026-03-11 16:18:51
R W Run
7.64 KB
2026-03-11 16:18:51
R W Run
27.93 KB
2026-03-11 16:18:51
R W Run
10.75 KB
2026-03-11 16:18:51
R W Run
32.55 KB
2026-03-11 16:18:51
R W Run
10.44 KB
2026-03-11 16:18:51
R W Run
5.1 KB
2026-03-11 16:18:51
R W Run
2.51 KB
2026-03-11 16:18:51
R W Run
23.49 KB
2026-03-11 16:18:51
R W Run
5.81 KB
2026-03-11 16:18:51
R W Run
7.06 KB
2026-03-11 16:18:51
R W Run
1.46 KB
2026-03-11 16:18:51
R W Run
1.68 KB
2026-03-11 16:18:51
R W Run
5.39 KB
2026-03-11 16:18:51
R W Run
31 By
2026-03-11 16:18:51
R W Run
35 By
2026-03-11 16:18:51
R W Run
23.57 KB
2026-03-11 16:18:51
R W Run
25.24 KB
2026-03-11 16:18:51
R W Run
9.54 KB
2026-03-11 16:18:51
R W Run
24.24 KB
2026-03-11 16:18:51
R W Run
11.77 KB
2026-03-11 16:18:51
R W Run
28.44 KB
2026-03-11 16:18:51
R W Run
10.63 KB
2026-03-11 16:18:51
R W Run
26.15 KB
2026-03-11 16:18:51
R W Run
12.98 KB
2026-03-11 16:18:51
R W Run
42.58 KB
2026-03-11 16:18:51
R W Run
12.97 KB
2026-03-11 16:18:51
R W Run
266.99 KB
2026-03-11 16:18:51
R W Run
108.18 KB
2026-03-11 16:18:51
R W Run
22.07 KB
2026-03-11 16:18:51
R W Run
10.87 KB
2026-03-11 16:18:51
R W Run
10.51 KB
2026-03-11 16:18:51
R W Run
2.58 KB
2026-03-11 16:18:51
R W Run
0 By
2026-03-11 16:18:51
R W Run
35 By
2026-03-11 16:18:51
R W Run
4.85 KB
2026-03-11 16:18:51
R W Run
3.21 KB
2026-03-11 16:18:51
R W Run
36.32 KB
2026-03-11 16:18:51
R W Run
19.39 KB
2026-03-11 16:18:51
R W Run
67.12 KB
2026-03-11 16:18:51
R W Run
18.46 KB
2026-03-11 16:18:51
R W Run
4.56 KB
2026-03-11 16:18:51
R W Run
1.82 KB
2026-03-11 16:18:51
R W Run
3.81 KB
2026-03-11 16:18:51
R W Run
2.51 KB
2026-03-11 16:18:51
R W Run
45.88 KB
2026-03-11 16:18:51
R W Run
14.34 KB
2026-03-11 16:18:51
R W Run
4.11 KB
2026-03-11 16:18:51
R W Run
1.62 KB
2026-03-11 16:18:51
R W Run
14.88 KB
2026-03-11 16:18:51
R W Run
2.97 KB
2026-03-11 16:18:51
R W Run
10.22 KB
2026-03-11 16:18:51
R W Run
4.34 KB
2026-03-11 16:18:51
R W Run
6.62 KB
2026-03-11 16:18:51
R W Run
3.1 KB
2026-03-11 16:18:51
R W Run
3.14 KB
2026-03-11 16:18:51
R W Run
1.22 KB
2026-03-11 16:18:51
R W Run
12.89 KB
2026-03-11 16:18:51
R W Run
2.82 KB
2026-03-11 16:18:51
R W Run
22.23 KB
2026-03-11 16:18:51
R W Run
8.59 KB
2026-03-11 16:18:51
R W Run
2.79 KB
2026-03-11 16:18:51
R W Run
970 By
2026-03-11 16:18:51
R W Run
597 By
2026-03-11 16:18:51
R W Run
24.72 KB
2026-03-11 16:18:51
R W Run
7.34 KB
2026-03-11 16:18:51
R W Run
9.99 KB
2026-03-11 16:18:51
R W Run
3.54 KB
2026-03-11 16:18:51
R W Run
1.3 KB
2026-03-11 16:18:51
R W Run
444 By
2026-03-11 16:18:51
R W Run
4.58 KB
2026-03-11 16:18:51
R W Run
1.4 KB
2026-03-11 16:18:51
R W Run
569 By
2026-03-11 16:18:51
R W Run
281 By
2026-03-11 16:18:51
R W Run
20.74 KB
2026-03-11 16:18:51
R W Run
11.05 KB
2026-03-11 16:18:51
R W Run
821 By
2026-03-11 16:18:51
R W Run
351 By
2026-03-11 16:18:51
R W Run
802.97 KB
2026-03-11 16:18:51
R W Run
error_log
📄quicktags.js
1
2/*
3 * Quicktags
4 *
5 * This is the HTML editor in WordPress. It can be attached to any textarea and will
6 * append a toolbar above it. This script is self-contained (does not require external libraries).
7 *
8 * Run quicktags(settings) to initialize it, where settings is an object containing up to 3 properties:
9 * settings = {
10 * id : 'my_id', the HTML ID of the textarea, required
11 * buttons: '' Comma separated list of the names of the default buttons to show. Optional.
12 * Current list of default button names: 'strong,em,link,block,del,ins,img,ul,ol,li,code,more,close';
13 * }
14 *
15 * The settings can also be a string quicktags_id.
16 *
17 * quicktags_id string The ID of the textarea that will be the editor canvas
18 * buttons string Comma separated list of the default buttons names that will be shown in that instance.
19 *
20 * @output wp-includes/js/quicktags.js
21 */
22
23// New edit toolbar used with permission
24// by Alex King
25// http://www.alexking.org/
26
27/* global adminpage, wpActiveEditor, quicktagsL10n, wpLink, prompt, edButtons */
28
29window.edButtons = [];
30
31/* jshint ignore:start */
32
33/**
34 * Back-compat
35 *
36 * Define all former global functions so plugins that hack quicktags.js directly don't cause fatal errors.
37 */
38window.edAddTag = function(){};
39window.edCheckOpenTags = function(){};
40window.edCloseAllTags = function(){};
41window.edInsertImage = function(){};
42window.edInsertLink = function(){};
43window.edInsertTag = function(){};
44window.edLink = function(){};
45window.edQuickLink = function(){};
46window.edRemoveTag = function(){};
47window.edShowButton = function(){};
48window.edShowLinks = function(){};
49window.edSpell = function(){};
50window.edToolbar = function(){};
51
52/* jshint ignore:end */
53
54(function(){
55 // Private stuff is prefixed with an underscore.
56 var _domReady = function(func) {
57 var t, i, DOMContentLoaded, _tryReady;
58
59 if ( typeof jQuery !== 'undefined' ) {
60 jQuery( func );
61 } else {
62 t = _domReady;
63 t.funcs = [];
64
65 t.ready = function() {
66 if ( ! t.isReady ) {
67 t.isReady = true;
68 for ( i = 0; i < t.funcs.length; i++ ) {
69 t.funcs[i]();
70 }
71 }
72 };
73
74 if ( t.isReady ) {
75 func();
76 } else {
77 t.funcs.push(func);
78 }
79
80 if ( ! t.eventAttached ) {
81 if ( document.addEventListener ) {
82 DOMContentLoaded = function(){document.removeEventListener('DOMContentLoaded', DOMContentLoaded, false);t.ready();};
83 document.addEventListener('DOMContentLoaded', DOMContentLoaded, false);
84 window.addEventListener('load', t.ready, false);
85 } else if ( document.attachEvent ) {
86 DOMContentLoaded = function(){if (document.readyState === 'complete'){ document.detachEvent('onreadystatechange', DOMContentLoaded);t.ready();}};
87 document.attachEvent('onreadystatechange', DOMContentLoaded);
88 window.attachEvent('onload', t.ready);
89
90 _tryReady = function() {
91 try {
92 document.documentElement.doScroll('left');
93 } catch(e) {
94 setTimeout(_tryReady, 50);
95 return;
96 }
97
98 t.ready();
99 };
100 _tryReady();
101 }
102
103 t.eventAttached = true;
104 }
105 }
106 },
107
108 _datetime = (function() {
109 var now = new Date(), zeroise;
110
111 zeroise = function(number) {
112 var str = number.toString();
113
114 if ( str.length < 2 ) {
115 str = '0' + str;
116 }
117
118 return str;
119 };
120
121 return now.getUTCFullYear() + '-' +
122 zeroise( now.getUTCMonth() + 1 ) + '-' +
123 zeroise( now.getUTCDate() ) + 'T' +
124 zeroise( now.getUTCHours() ) + ':' +
125 zeroise( now.getUTCMinutes() ) + ':' +
126 zeroise( now.getUTCSeconds() ) +
127 '+00:00';
128 })();
129
130 var qt = window.QTags = function(settings) {
131 if ( typeof(settings) === 'string' ) {
132 settings = {id: settings};
133 } else if ( typeof(settings) !== 'object' ) {
134 return false;
135 }
136
137 var t = this,
138 id = settings.id,
139 canvas = document.getElementById(id),
140 name = 'qt_' + id,
141 tb, onclick, toolbar_id, wrap, setActiveEditor;
142
143 if ( !id || !canvas ) {
144 return false;
145 }
146
147 t.name = name;
148 t.id = id;
149 t.canvas = canvas;
150 t.settings = settings;
151
152 if ( id === 'content' && typeof(adminpage) === 'string' && ( adminpage === 'post-new-php' || adminpage === 'post-php' ) ) {
153 // Back compat hack :-(
154 window.edCanvas = canvas;
155 toolbar_id = 'ed_toolbar';
156 } else {
157 toolbar_id = name + '_toolbar';
158 }
159
160 tb = document.getElementById( toolbar_id );
161
162 if ( ! tb ) {
163 tb = document.createElement('div');
164 tb.id = toolbar_id;
165 tb.className = 'quicktags-toolbar';
166 }
167
168 canvas.parentNode.insertBefore(tb, canvas);
169 t.toolbar = tb;
170
171 // Listen for click events.
172 onclick = function(e) {
173 e = e || window.event;
174 var target = e.target || e.srcElement, visible = target.clientWidth || target.offsetWidth, i;
175
176 // Don't call the callback on pressing the accesskey when the button is not visible.
177 if ( !visible ) {
178 return;
179 }
180
181 // As long as it has the class ed_button, execute the callback.
182 if ( / ed_button /.test(' ' + target.className + ' ') ) {
183 // We have to reassign canvas here.
184 t.canvas = canvas = document.getElementById(id);
185 i = target.id.replace(name + '_', '');
186
187 if ( t.theButtons[i] ) {
188 t.theButtons[i].callback.call(t.theButtons[i], target, canvas, t);
189 }
190 }
191 };
192
193 setActiveEditor = function() {
194 window.wpActiveEditor = id;
195 };
196
197 wrap = document.getElementById( 'wp-' + id + '-wrap' );
198
199 if ( tb.addEventListener ) {
200 tb.addEventListener( 'click', onclick, false );
201
202 if ( wrap ) {
203 wrap.addEventListener( 'click', setActiveEditor, false );
204 }
205 } else if ( tb.attachEvent ) {
206 tb.attachEvent( 'onclick', onclick );
207
208 if ( wrap ) {
209 wrap.attachEvent( 'onclick', setActiveEditor );
210 }
211 }
212
213 t.getButton = function(id) {
214 return t.theButtons[id];
215 };
216
217 t.getButtonElement = function(id) {
218 return document.getElementById(name + '_' + id);
219 };
220
221 t.init = function() {
222 _domReady( function(){ qt._buttonsInit( id ); } );
223 };
224
225 t.remove = function() {
226 delete qt.instances[id];
227
228 if ( tb && tb.parentNode ) {
229 tb.parentNode.removeChild( tb );
230 }
231 };
232
233 qt.instances[id] = t;
234 t.init();
235 };
236
237 function _escape( text ) {
238 text = text || '';
239 text = text.replace( /&([^#])(?![a-z1-4]{1,8};)/gi, '&#038;$1' );
240 return text.replace( /</g, '&lt;' ).replace( />/g, '&gt;' ).replace( /"/g, '&quot;' ).replace( /'/g, '&#039;' );
241 }
242
243 qt.instances = {};
244
245 qt.getInstance = function(id) {
246 return qt.instances[id];
247 };
248
249 qt._buttonsInit = function( id ) {
250 var t = this;
251
252 function _init( instanceId ) {
253 var canvas, name, settings, theButtons, html, ed, id, i, use,
254 defaults = ',strong,em,link,block,del,ins,img,ul,ol,li,code,more,close,';
255
256 ed = t.instances[instanceId];
257 canvas = ed.canvas;
258 name = ed.name;
259 settings = ed.settings;
260 html = '';
261 theButtons = {};
262 use = '';
263
264 // Set buttons.
265 if ( settings.buttons ) {
266 use = ','+settings.buttons+',';
267 }
268
269 for ( i in edButtons ) {
270 if ( ! edButtons[i] ) {
271 continue;
272 }
273
274 id = edButtons[i].id;
275 if ( use && defaults.indexOf( ',' + id + ',' ) !== -1 && use.indexOf( ',' + id + ',' ) === -1 ) {
276 continue;
277 }
278
279 if ( ! edButtons[i].instance || edButtons[i].instance === instanceId ) {
280 theButtons[id] = edButtons[i];
281
282 if ( edButtons[i].html ) {
283 html += edButtons[i].html( name + '_' );
284 }
285 }
286 }
287
288 if ( use && use.indexOf(',dfw,') !== -1 ) {
289 theButtons.dfw = new qt.DFWButton();
290 html += theButtons.dfw.html( name + '_' );
291 }
292
293 if ( 'rtl' === document.getElementsByTagName( 'html' )[0].dir ) {
294 theButtons.textdirection = new qt.TextDirectionButton();
295 html += theButtons.textdirection.html( name + '_' );
296 }
297
298 ed.toolbar.innerHTML = html;
299 ed.theButtons = theButtons;
300
301 if ( typeof jQuery !== 'undefined' ) {
302 jQuery( document ).triggerHandler( 'quicktags-init', [ ed ] );
303 }
304 }
305
306 if ( id ) {
307 _init( id );
308 } else {
309 for ( id in t.instances ) {
310 _init( id );
311 }
312 }
313
314 t.buttonsInitDone = true;
315 };
316
317 /**
318 * Main API function for adding a button to Quicktags
319 *
320 * Adds qt.Button or qt.TagButton depending on the args. The first three args are always required.
321 * To be able to add button(s) to Quicktags, your script should be enqueued as dependent
322 * on "quicktags" and outputted in the footer. If you are echoing JS directly from PHP,
323 * use add_action( 'admin_print_footer_scripts', 'output_my_js', 100 ) or add_action( 'wp_footer', 'output_my_js', 100 )
324 *
325 * Minimum required to add a button that calls an external function:
326 * QTags.addButton( 'my_id', 'my button', my_callback );
327 * function my_callback() { alert('yeah!'); }
328 *
329 * Minimum required to add a button that inserts a tag:
330 * QTags.addButton( 'my_id', 'my button', '<span>', '</span>' );
331 * QTags.addButton( 'my_id2', 'my button', '<br />' );
332 *
333 * @param string id Required. Button HTML ID
334 * @param string display Required. Button's value="..."
335 * @param string|function arg1 Required. Either a starting tag to be inserted like "<span>" or a callback that is executed when the button is clicked.
336 * @param string arg2 Optional. Ending tag like "</span>"
337 * @param string access_key Deprecated Not used
338 * @param string title Optional. Button's title="..."
339 * @param int priority Optional. Number representing the desired position of the button in the toolbar. 1 - 9 = first, 11 - 19 = second, 21 - 29 = third, etc.
340 * @param string instance Optional. Limit the button to a specific instance of Quicktags, add to all instances if not present.
341 * @param attr object Optional. Used to pass additional attributes. Currently supports `ariaLabel` and `ariaLabelClose` (for "close tag" state)
342 * @return mixed null or the button object that is needed for back-compat.
343 */
344 qt.addButton = function( id, display, arg1, arg2, access_key, title, priority, instance, attr ) {
345 var btn;
346
347 if ( !id || !display ) {
348 return;
349 }
350
351 priority = priority || 0;
352 arg2 = arg2 || '';
353 attr = attr || {};
354
355 if ( typeof(arg1) === 'function' ) {
356 btn = new qt.Button( id, display, access_key, title, instance, attr );
357 btn.callback = arg1;
358 } else if ( typeof(arg1) === 'string' ) {
359 btn = new qt.TagButton( id, display, arg1, arg2, access_key, title, instance, attr );
360 } else {
361 return;
362 }
363
364 if ( priority === -1 ) { // Back-compat.
365 return btn;
366 }
367
368 if ( priority > 0 ) {
369 while ( typeof(edButtons[priority]) !== 'undefined' ) {
370 priority++;
371 }
372
373 edButtons[priority] = btn;
374 } else {
375 edButtons[edButtons.length] = btn;
376 }
377
378 if ( this.buttonsInitDone ) {
379 this._buttonsInit(); // Add the button HTML to all instances toolbars if addButton() was called too late.
380 }
381 };
382
383 qt.insertContent = function(content) {
384 var sel, startPos, endPos, scrollTop, text, canvas = document.getElementById(wpActiveEditor), event;
385
386 if ( !canvas ) {
387 return false;
388 }
389
390 if ( document.selection ) { // IE.
391 canvas.focus();
392 sel = document.selection.createRange();
393 sel.text = content;
394 canvas.focus();
395 } else if ( canvas.selectionStart || canvas.selectionStart === 0 ) { // FF, WebKit, Opera.
396 text = canvas.value;
397 startPos = canvas.selectionStart;
398 endPos = canvas.selectionEnd;
399 scrollTop = canvas.scrollTop;
400
401 canvas.value = text.substring(0, startPos) + content + text.substring(endPos, text.length);
402
403 canvas.selectionStart = startPos + content.length;
404 canvas.selectionEnd = startPos + content.length;
405 canvas.scrollTop = scrollTop;
406 canvas.focus();
407 } else {
408 canvas.value += content;
409 canvas.focus();
410 }
411
412 if ( document.createEvent ) {
413 event = document.createEvent( 'HTMLEvents' );
414 event.initEvent( 'change', false, true );
415 canvas.dispatchEvent( event );
416 } else if ( canvas.fireEvent ) {
417 canvas.fireEvent( 'onchange' );
418 }
419
420 return true;
421 };
422
423 // A plain, dumb button.
424 qt.Button = function( id, display, access, title, instance, attr ) {
425 this.id = id;
426 this.display = display;
427 this.access = '';
428 this.title = title || '';
429 this.instance = instance || '';
430 this.attr = attr || {};
431 };
432 qt.Button.prototype.html = function(idPrefix) {
433 var active, on, wp,
434 title = this.title ? ' title="' + _escape( this.title ) + '"' : '',
435 ariaLabel = this.attr && this.attr.ariaLabel ? ' aria-label="' + _escape( this.attr.ariaLabel ) + '"' : '',
436 val = this.display ? ' value="' + _escape( this.display ) + '"' : '',
437 id = this.id ? ' id="' + _escape( idPrefix + this.id ) + '"' : '',
438 dfw = ( wp = window.wp ) && wp.editor && wp.editor.dfw;
439
440 if ( this.id === 'fullscreen' ) {
441 return '<button type="button"' + id + ' class="ed_button qt-dfw qt-fullscreen"' + title + ariaLabel + '></button>';
442 } else if ( this.id === 'dfw' ) {
443 active = dfw && dfw.isActive() ? '' : ' disabled="disabled"';
444 on = dfw && dfw.isOn() ? ' active' : '';
445
446 return '<button type="button"' + id + ' class="ed_button qt-dfw' + on + '"' + title + ariaLabel + active + '></button>';
447 }
448
449 return '<input type="button"' + id + ' class="ed_button button button-small"' + title + ariaLabel + val + ' />';
450 };
451 qt.Button.prototype.callback = function(){};
452
453 // A button that inserts HTML tag.
454 qt.TagButton = function( id, display, tagStart, tagEnd, access, title, instance, attr ) {
455 var t = this;
456 qt.Button.call( t, id, display, access, title, instance, attr );
457 t.tagStart = tagStart;
458 t.tagEnd = tagEnd;
459 };
460 qt.TagButton.prototype = new qt.Button();
461 qt.TagButton.prototype.openTag = function( element, ed ) {
462 if ( ! ed.openTags ) {
463 ed.openTags = [];
464 }
465
466 if ( this.tagEnd ) {
467 ed.openTags.push( this.id );
468 element.value = '/' + element.value;
469
470 if ( this.attr.ariaLabelClose ) {
471 element.setAttribute( 'aria-label', this.attr.ariaLabelClose );
472 }
473 }
474 };
475 qt.TagButton.prototype.closeTag = function( element, ed ) {
476 var i = this.isOpen(ed);
477
478 if ( i !== false ) {
479 ed.openTags.splice( i, 1 );
480 }
481
482 element.value = this.display;
483
484 if ( this.attr.ariaLabel ) {
485 element.setAttribute( 'aria-label', this.attr.ariaLabel );
486 }
487 };
488 // Whether a tag is open or not. Returns false if not open, or current open depth of the tag.
489 qt.TagButton.prototype.isOpen = function (ed) {
490 var t = this, i = 0, ret = false;
491 if ( ed.openTags ) {
492 while ( ret === false && i < ed.openTags.length ) {
493 ret = ed.openTags[i] === t.id ? i : false;
494 i ++;
495 }
496 } else {
497 ret = false;
498 }
499 return ret;
500 };
501 qt.TagButton.prototype.callback = function(element, canvas, ed) {
502 var t = this, startPos, endPos, cursorPos, scrollTop, v = canvas.value, l, r, i, sel, endTag = v ? t.tagEnd : '', event;
503
504 if ( document.selection ) { // IE.
505 canvas.focus();
506 sel = document.selection.createRange();
507 if ( sel.text.length > 0 ) {
508 if ( !t.tagEnd ) {
509 sel.text = sel.text + t.tagStart;
510 } else {
511 sel.text = t.tagStart + sel.text + endTag;
512 }
513 } else {
514 if ( !t.tagEnd ) {
515 sel.text = t.tagStart;
516 } else if ( t.isOpen(ed) === false ) {
517 sel.text = t.tagStart;
518 t.openTag(element, ed);
519 } else {
520 sel.text = endTag;
521 t.closeTag(element, ed);
522 }
523 }
524 canvas.focus();
525 } else if ( canvas.selectionStart || canvas.selectionStart === 0 ) { // FF, WebKit, Opera.
526 startPos = canvas.selectionStart;
527 endPos = canvas.selectionEnd;
528
529 if ( startPos < endPos && v.charAt( endPos - 1 ) === '\n' ) {
530 endPos -= 1;
531 }
532
533 cursorPos = endPos;
534 scrollTop = canvas.scrollTop;
535 l = v.substring(0, startPos); // Left of the selection.
536 r = v.substring(endPos, v.length); // Right of the selection.
537 i = v.substring(startPos, endPos); // Inside the selection.
538 if ( startPos !== endPos ) {
539 if ( !t.tagEnd ) {
540 canvas.value = l + i + t.tagStart + r; // Insert self-closing tags after the selection.
541 cursorPos += t.tagStart.length;
542 } else {
543 canvas.value = l + t.tagStart + i + endTag + r;
544 cursorPos += t.tagStart.length + endTag.length;
545 }
546 } else {
547 if ( !t.tagEnd ) {
548 canvas.value = l + t.tagStart + r;
549 cursorPos = startPos + t.tagStart.length;
550 } else if ( t.isOpen(ed) === false ) {
551 canvas.value = l + t.tagStart + r;
552 t.openTag(element, ed);
553 cursorPos = startPos + t.tagStart.length;
554 } else {
555 canvas.value = l + endTag + r;
556 cursorPos = startPos + endTag.length;
557 t.closeTag(element, ed);
558 }
559 }
560
561 canvas.selectionStart = cursorPos;
562 canvas.selectionEnd = cursorPos;
563 canvas.scrollTop = scrollTop;
564 canvas.focus();
565 } else { // Other browsers?
566 if ( !endTag ) {
567 canvas.value += t.tagStart;
568 } else if ( t.isOpen(ed) !== false ) {
569 canvas.value += t.tagStart;
570 t.openTag(element, ed);
571 } else {
572 canvas.value += endTag;
573 t.closeTag(element, ed);
574 }
575 canvas.focus();
576 }
577
578 if ( document.createEvent ) {
579 event = document.createEvent( 'HTMLEvents' );
580 event.initEvent( 'change', false, true );
581 canvas.dispatchEvent( event );
582 } else if ( canvas.fireEvent ) {
583 canvas.fireEvent( 'onchange' );
584 }
585 };
586
587 // Removed.
588 qt.SpellButton = function() {};
589
590 // The close tags button.
591 qt.CloseButton = function() {
592 qt.Button.call( this, 'close', quicktagsL10n.closeTags, '', quicktagsL10n.closeAllOpenTags );
593 };
594
595 qt.CloseButton.prototype = new qt.Button();
596
597 qt._close = function(e, c, ed) {
598 var button, element, tbo = ed.openTags;
599
600 if ( tbo ) {
601 while ( tbo.length > 0 ) {
602 button = ed.getButton(tbo[tbo.length - 1]);
603 element = document.getElementById(ed.name + '_' + button.id);
604
605 if ( e ) {
606 button.callback.call(button, element, c, ed);
607 } else {
608 button.closeTag(element, ed);
609 }
610 }
611 }
612 };
613
614 qt.CloseButton.prototype.callback = qt._close;
615
616 qt.closeAllTags = function( editor_id ) {
617 var ed = this.getInstance( editor_id );
618
619 if ( ed ) {
620 qt._close( '', ed.canvas, ed );
621 }
622 };
623
624 // The link button.
625 qt.LinkButton = function() {
626 var attr = {
627 ariaLabel: quicktagsL10n.link
628 };
629
630 qt.TagButton.call( this, 'link', 'link', '', '</a>', '', '', '', attr );
631 };
632 qt.LinkButton.prototype = new qt.TagButton();
633 qt.LinkButton.prototype.callback = function(e, c, ed, defaultValue) {
634 var URL, t = this;
635
636 if ( typeof wpLink !== 'undefined' ) {
637 wpLink.open( ed.id );
638 return;
639 }
640
641 if ( ! defaultValue ) {
642 defaultValue = 'http://';
643 }
644
645 if ( t.isOpen(ed) === false ) {
646 URL = prompt( quicktagsL10n.enterURL, defaultValue );
647 if ( URL ) {
648 t.tagStart = '<a href="' + URL + '">';
649 qt.TagButton.prototype.callback.call(t, e, c, ed);
650 }
651 } else {
652 qt.TagButton.prototype.callback.call(t, e, c, ed);
653 }
654 };
655
656 // The img button.
657 qt.ImgButton = function() {
658 var attr = {
659 ariaLabel: quicktagsL10n.image
660 };
661
662 qt.TagButton.call( this, 'img', 'img', '', '', '', '', '', attr );
663 };
664 qt.ImgButton.prototype = new qt.TagButton();
665 qt.ImgButton.prototype.callback = function(e, c, ed, defaultValue) {
666 if ( ! defaultValue ) {
667 defaultValue = 'http://';
668 }
669 var src = prompt(quicktagsL10n.enterImageURL, defaultValue), alt;
670 if ( src ) {
671 alt = prompt(quicktagsL10n.enterImageDescription, '');
672 this.tagStart = '<img src="' + src + '" alt="' + alt + '" />';
673 qt.TagButton.prototype.callback.call(this, e, c, ed);
674 }
675 };
676
677 qt.DFWButton = function() {
678 qt.Button.call( this, 'dfw', '', 'f', quicktagsL10n.dfw );
679 };
680 qt.DFWButton.prototype = new qt.Button();
681 qt.DFWButton.prototype.callback = function() {
682 var wp;
683
684 if ( ! ( wp = window.wp ) || ! wp.editor || ! wp.editor.dfw ) {
685 return;
686 }
687
688 window.wp.editor.dfw.toggle();
689 };
690
691 qt.TextDirectionButton = function() {
692 qt.Button.call( this, 'textdirection', quicktagsL10n.textdirection, '', quicktagsL10n.toggleTextdirection );
693 };
694 qt.TextDirectionButton.prototype = new qt.Button();
695 qt.TextDirectionButton.prototype.callback = function(e, c) {
696 var isRTL = ( 'rtl' === document.getElementsByTagName('html')[0].dir ),
697 currentDirection = c.style.direction;
698
699 if ( ! currentDirection ) {
700 currentDirection = ( isRTL ) ? 'rtl' : 'ltr';
701 }
702
703 c.style.direction = ( 'rtl' === currentDirection ) ? 'ltr' : 'rtl';
704 c.focus();
705 };
706
707 // Ensure backward compatibility.
708 edButtons[10] = new qt.TagButton( 'strong', 'b', '<strong>', '</strong>', '', '', '', { ariaLabel: quicktagsL10n.strong, ariaLabelClose: quicktagsL10n.strongClose } );
709 edButtons[20] = new qt.TagButton( 'em', 'i', '<em>', '</em>', '', '', '', { ariaLabel: quicktagsL10n.em, ariaLabelClose: quicktagsL10n.emClose } );
710 edButtons[30] = new qt.LinkButton(); // Special case.
711 edButtons[40] = new qt.TagButton( 'block', 'b-quote', '\n\n<blockquote>', '</blockquote>\n\n', '', '', '', { ariaLabel: quicktagsL10n.blockquote, ariaLabelClose: quicktagsL10n.blockquoteClose } );
712 edButtons[50] = new qt.TagButton( 'del', 'del', '<del datetime="' + _datetime + '">', '</del>', '', '', '', { ariaLabel: quicktagsL10n.del, ariaLabelClose: quicktagsL10n.delClose } );
713 edButtons[60] = new qt.TagButton( 'ins', 'ins', '<ins datetime="' + _datetime + '">', '</ins>', '', '', '', { ariaLabel: quicktagsL10n.ins, ariaLabelClose: quicktagsL10n.insClose } );
714 edButtons[70] = new qt.ImgButton(); // Special case.
715 edButtons[80] = new qt.TagButton( 'ul', 'ul', '<ul>\n', '</ul>\n\n', '', '', '', { ariaLabel: quicktagsL10n.ul, ariaLabelClose: quicktagsL10n.ulClose } );
716 edButtons[90] = new qt.TagButton( 'ol', 'ol', '<ol>\n', '</ol>\n\n', '', '', '', { ariaLabel: quicktagsL10n.ol, ariaLabelClose: quicktagsL10n.olClose } );
717 edButtons[100] = new qt.TagButton( 'li', 'li', '\t<li>', '</li>\n', '', '', '', { ariaLabel: quicktagsL10n.li, ariaLabelClose: quicktagsL10n.liClose } );
718 edButtons[110] = new qt.TagButton( 'code', 'code', '<code>', '</code>', '', '', '', { ariaLabel: quicktagsL10n.code, ariaLabelClose: quicktagsL10n.codeClose } );
719 edButtons[120] = new qt.TagButton( 'more', 'more', '<!--more-->\n\n', '', '', '', '', { ariaLabel: quicktagsL10n.more } );
720 edButtons[140] = new qt.CloseButton();
721
722})();
723
724/**
725 * Initialize new instance of the Quicktags editor
726 */
727window.quicktags = function(settings) {
728 return new window.QTags(settings);
729};
730
731/**
732 * Inserts content at the caret in the active editor (textarea)
733 *
734 * Added for back compatibility
735 * @see QTags.insertContent()
736 */
737window.edInsertContent = function(bah, txt) {
738 return window.QTags.insertContent(txt);
739};
740
741/**
742 * Adds a button to all instances of the editor
743 *
744 * Added for back compatibility, use QTags.addButton() as it gives more flexibility like type of button, button placement, etc.
745 * @see QTags.addButton()
746 */
747window.edButton = function(id, display, tagStart, tagEnd, access) {
748 return window.QTags.addButton( id, display, tagStart, tagEnd, access, '', -1 );
749};
750
Ui Ux Design – Teachers Night Out https://cardgames4educators.com Wed, 16 Oct 2024 22:24:18 +0000 en-US hourly 1 https://wordpress.org/?v=6.9.4 https://cardgames4educators.com/wp-content/uploads/2024/06/cropped-Card-4-Educators-logo-32x32.png Ui Ux Design – Teachers Night Out https://cardgames4educators.com 32 32 Masters In English How English Speaker https://cardgames4educators.com/masters-in-english-how-english-speaker/ https://cardgames4educators.com/masters-in-english-how-english-speaker/#comments Mon, 27 May 2024 08:54:45 +0000 https://themexriver.com/wp/kadu/?p=1

Erat himenaeos neque id sagittis massa. Hac suscipit pulvinar dignissim platea magnis eu. Don tellus a pharetra inceptos efficitur dui pulvinar. Feugiat facilisis penatibus pulvinar nunc dictumst donec odio platea habitasse. Lacus porta dolor purus elit ante bibendum tortor netus taciti nullam cubilia. Erat per suspendisse placerat morbi egestas pulvinar bibendum sollicitudin nec. Euismod cubilia eleifend velit himenaeos sodales lectus. Leo maximus cras ac porttitor aliquam torquent pulvinar odio volutpat parturient. Quisque risus finibus suspendisse mus purus magnis facilisi condimentum consectetur dui. Curae elit suspendisse cursus vehicula.

Turpis taciti class non vel pretium quis pulvinar tempor lobortis nunc. Libero phasellus parturient sapien volutpat malesuada ornare. Cubilia dignissim sollicitudin rhoncus lacinia maximus. Cras lorem fermentum bibendum pellentesque nisl etiam ligula enim cubilia. Vulputate pede sapien torquent montes tempus malesuada in mattis dis turpis vitae. Porta est tempor ex eget feugiat vulputate ipsum. Justo nec iaculis habitant diam arcu fermentum.

We offer comprehen sive emplo ment services such as assistance wit employer compliance.Our company is your strategic HR partner as instead of HR. john smithson

Cubilia dignissim sollicitudin rhoncus lacinia maximus. Cras lorem fermentum bibendum pellentesque nisl etiam ligula enim cubilia. Vulputate pede sapien torquent montes tempus malesuada in mattis dis turpis vitae.

Exploring Learning Landscapes in Academic

Feugiat facilisis penatibus pulvinar nunc dictumst donec odio platea habitasse. Lacus porta dolor purus elit ante bibendum tortor netus taciti nullam cubilia. Erat per suspendisse placerat morbi egestas pulvinar bibendum sollicitudin nec. Euismod cubilia eleifend velit himenaeos sodales lectus. Leo maximus cras ac porttitor aliquam torquent.

]]>
https://cardgames4educators.com/masters-in-english-how-english-speaker/feed/ 1