1 | /** |
---|
2 | * $Id: editor_plugin_src.js 264 2007-04-26 20:53:09Z spocke $ |
---|
3 | * |
---|
4 | * @author Moxiecode |
---|
5 | * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved. |
---|
6 | */ |
---|
7 | |
---|
8 | (function() { |
---|
9 | var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, is = tinymce.is; |
---|
10 | |
---|
11 | tinymce.create('tinymce.plugins.Compat2x', { |
---|
12 | getInfo : function() { |
---|
13 | return { |
---|
14 | longname : 'Compat2x', |
---|
15 | author : 'Moxiecode Systems AB', |
---|
16 | authorurl : 'http://tinymce.moxiecode.com', |
---|
17 | infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/compat2x', |
---|
18 | version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion |
---|
19 | }; |
---|
20 | } |
---|
21 | }); |
---|
22 | |
---|
23 | (function() { |
---|
24 | // Extend tinyMCE/EditorManager |
---|
25 | tinymce.extend(tinyMCE, { |
---|
26 | addToLang : function(p, l) { |
---|
27 | each(l, function(v, k) { |
---|
28 | tinyMCE.i18n[(tinyMCE.settings.language || 'en') + '.' + (p ? p + '_' : '') + k] = v; |
---|
29 | }); |
---|
30 | }, |
---|
31 | |
---|
32 | getInstanceById : function(n) { |
---|
33 | return this.get(n); |
---|
34 | } |
---|
35 | }); |
---|
36 | })(); |
---|
37 | |
---|
38 | (function() { |
---|
39 | var EditorManager = tinymce.EditorManager; |
---|
40 | |
---|
41 | tinyMCE.instances = {}; |
---|
42 | tinyMCE.plugins = {}; |
---|
43 | tinymce.PluginManager.onAdd.add(function(pm, n, p) { |
---|
44 | tinyMCE.plugins[n] = p; |
---|
45 | }); |
---|
46 | |
---|
47 | tinyMCE.majorVersion = tinymce.majorVersion; |
---|
48 | tinyMCE.minorVersion = tinymce.minorVersion; |
---|
49 | tinyMCE.releaseDate = tinymce.releaseDate; |
---|
50 | tinyMCE.baseURL = tinymce.baseURL; |
---|
51 | tinyMCE.isIE = tinyMCE.isMSIE = tinymce.isIE || tinymce.isOpera; |
---|
52 | tinyMCE.isMSIE5 = tinymce.isIE; |
---|
53 | tinyMCE.isMSIE5_0 = tinymce.isIE; |
---|
54 | tinyMCE.isMSIE7 = tinymce.isIE; |
---|
55 | tinyMCE.isGecko = tinymce.isGecko; |
---|
56 | tinyMCE.isSafari = tinymce.isWebKit; |
---|
57 | tinyMCE.isOpera = tinymce.isOpera; |
---|
58 | tinyMCE.isMac = false; |
---|
59 | tinyMCE.isNS7 = false; |
---|
60 | tinyMCE.isNS71 = false; |
---|
61 | tinyMCE.compat = true; |
---|
62 | |
---|
63 | // Extend tinyMCE class |
---|
64 | TinyMCE_Engine = tinyMCE; |
---|
65 | tinymce.extend(tinyMCE, { |
---|
66 | getParam : function(n, dv) { |
---|
67 | return this.activeEditor.getParam(n, dv); |
---|
68 | }, |
---|
69 | |
---|
70 | addEvent : function(e, na, f, sc) { |
---|
71 | tinymce.dom.Event.add(e, na, f, sc || this); |
---|
72 | }, |
---|
73 | |
---|
74 | getControlHTML : function(n) { |
---|
75 | return EditorManager.activeEditor.controlManager.createControl(n); |
---|
76 | }, |
---|
77 | |
---|
78 | loadCSS : function(u) { |
---|
79 | tinymce.DOM.loadCSS(u); |
---|
80 | }, |
---|
81 | |
---|
82 | importCSS : function(doc, u) { |
---|
83 | if (doc == document) |
---|
84 | this.loadCSS(u); |
---|
85 | else |
---|
86 | new tinymce.dom.DOMUtils(doc).loadCSS(u); |
---|
87 | }, |
---|
88 | |
---|
89 | log : function() { |
---|
90 | console.debug.apply(console, arguments); |
---|
91 | }, |
---|
92 | |
---|
93 | getLang : function(n, dv) { |
---|
94 | var v = EditorManager.activeEditor.getLang(n.replace(/^lang_/g, ''), dv); |
---|
95 | |
---|
96 | // Is number |
---|
97 | if (/^[0-9\-.]+$/g.test(v)) |
---|
98 | return parseInt(v); |
---|
99 | |
---|
100 | return v; |
---|
101 | }, |
---|
102 | |
---|
103 | isInstance : function(o) { |
---|
104 | return o != null && typeof(o) == "object" && o.execCommand; |
---|
105 | }, |
---|
106 | |
---|
107 | triggerNodeChange : function() { |
---|
108 | EditorManager.activeEditor.nodeChanged(); |
---|
109 | }, |
---|
110 | |
---|
111 | regexpReplace : function(in_str, reg_exp, replace_str, opts) { |
---|
112 | var re; |
---|
113 | |
---|
114 | if (in_str == null) |
---|
115 | return in_str; |
---|
116 | |
---|
117 | if (typeof(opts) == "undefined") |
---|
118 | opts = 'g'; |
---|
119 | |
---|
120 | re = new RegExp(reg_exp, opts); |
---|
121 | |
---|
122 | return in_str.replace(re, replace_str); |
---|
123 | }, |
---|
124 | |
---|
125 | trim : function(s) { |
---|
126 | return tinymce.trim(s); |
---|
127 | }, |
---|
128 | |
---|
129 | xmlEncode : function(s) { |
---|
130 | return tinymce.DOM.encode(s); |
---|
131 | }, |
---|
132 | |
---|
133 | explode : function(s, d) { |
---|
134 | var o = []; |
---|
135 | |
---|
136 | tinymce.each(s.split(d), function(v) { |
---|
137 | if (v != '') |
---|
138 | o.push(v); |
---|
139 | }); |
---|
140 | |
---|
141 | return o; |
---|
142 | }, |
---|
143 | |
---|
144 | switchClass : function(id, cls) { |
---|
145 | var b; |
---|
146 | |
---|
147 | if (/^mceButton/.test(cls)) { |
---|
148 | b = EditorManager.activeEditor.controlManager.get(id); |
---|
149 | |
---|
150 | if (!b) |
---|
151 | return; |
---|
152 | |
---|
153 | switch (cls) { |
---|
154 | case "mceButtonNormal": |
---|
155 | b.setDisabled(false); |
---|
156 | b.setActive(false); |
---|
157 | return; |
---|
158 | |
---|
159 | case "mceButtonDisabled": |
---|
160 | b.setDisabled(true); |
---|
161 | return; |
---|
162 | |
---|
163 | case "mceButtonSelected": |
---|
164 | b.setActive(true); |
---|
165 | b.setDisabled(false); |
---|
166 | return; |
---|
167 | } |
---|
168 | } |
---|
169 | }, |
---|
170 | |
---|
171 | addCSSClass : function(e, n, b) { |
---|
172 | return tinymce.DOM.addClass(e, n, b); |
---|
173 | }, |
---|
174 | |
---|
175 | hasCSSClass : function(e, n) { |
---|
176 | return tinymce.DOM.hasClass(e, n); |
---|
177 | }, |
---|
178 | |
---|
179 | removeCSSClass : function(e, n) { |
---|
180 | return tinymce.DOM.removeClass(e, n); |
---|
181 | }, |
---|
182 | |
---|
183 | getCSSClasses : function() { |
---|
184 | var cl = EditorManager.activeEditor.dom.getClasses(), o = []; |
---|
185 | |
---|
186 | each(cl, function(c) { |
---|
187 | o.push(c['class']); |
---|
188 | }); |
---|
189 | |
---|
190 | return o; |
---|
191 | }, |
---|
192 | |
---|
193 | setWindowArg : function(n, v) { |
---|
194 | EditorManager.activeEditor.windowManager.params[n] = v; |
---|
195 | }, |
---|
196 | |
---|
197 | getWindowArg : function(n, dv) { |
---|
198 | var wm = EditorManager.activeEditor.windowManager, v; |
---|
199 | |
---|
200 | v = wm.getParam(n); |
---|
201 | if (v === '') |
---|
202 | return ''; |
---|
203 | |
---|
204 | return v || wm.getFeature(n) || dv; |
---|
205 | }, |
---|
206 | |
---|
207 | getParentNode : function(n, f) { |
---|
208 | return this._getDOM().getParent(n, f); |
---|
209 | }, |
---|
210 | |
---|
211 | selectElements : function(n, na, f) { |
---|
212 | var i, a = [], nl, x; |
---|
213 | |
---|
214 | for (x=0, na = na.split(','); x<na.length; x++) |
---|
215 | for (i=0, nl = n.getElementsByTagName(na[x]); i<nl.length; i++) |
---|
216 | (!f || f(nl[i])) && a.push(nl[i]); |
---|
217 | |
---|
218 | return a; |
---|
219 | }, |
---|
220 | |
---|
221 | getNodeTree : function(n, na, t, nn) { |
---|
222 | return this.selectNodes(n, function(n) { |
---|
223 | return (!t || n.nodeType == t) && (!nn || n.nodeName == nn); |
---|
224 | }, na ? na : []); |
---|
225 | }, |
---|
226 | |
---|
227 | getAttrib : function(e, n, dv) { |
---|
228 | return this._getDOM().getAttrib(e, n, dv); |
---|
229 | }, |
---|
230 | |
---|
231 | setAttrib : function(e, n, v) { |
---|
232 | return this._getDOM().setAttrib(e, n, v); |
---|
233 | }, |
---|
234 | |
---|
235 | getElementsByAttributeValue : function(n, e, a, v) { |
---|
236 | var i, nl = n.getElementsByTagName(e), o = []; |
---|
237 | |
---|
238 | for (i=0; i<nl.length; i++) { |
---|
239 | if (tinyMCE.getAttrib(nl[i], a).indexOf(v) != -1) |
---|
240 | o[o.length] = nl[i]; |
---|
241 | } |
---|
242 | |
---|
243 | return o; |
---|
244 | }, |
---|
245 | |
---|
246 | selectNodes : function(n, f, a) { |
---|
247 | var i; |
---|
248 | |
---|
249 | if (!a) |
---|
250 | a = []; |
---|
251 | |
---|
252 | if (f(n)) |
---|
253 | a[a.length] = n; |
---|
254 | |
---|
255 | if (n.hasChildNodes()) { |
---|
256 | for (i=0; i<n.childNodes.length; i++) |
---|
257 | tinyMCE.selectNodes(n.childNodes[i], f, a); |
---|
258 | } |
---|
259 | |
---|
260 | return a; |
---|
261 | }, |
---|
262 | |
---|
263 | getContent : function() { |
---|
264 | return EditorManager.activeEditor.getContent(); |
---|
265 | }, |
---|
266 | |
---|
267 | getParentElement : function(n, na, f) { |
---|
268 | if (na) |
---|
269 | na = new RegExp('^(' + na.toUpperCase().replace(/,/g, '|') + ')$', 'g'); |
---|
270 | |
---|
271 | return this._getDOM().getParent(n, function(n) { |
---|
272 | return n.nodeType == 1 && (!na || na.test(n.nodeName)) && (!f || f(n)); |
---|
273 | }, this.activeEditor.getBody()); |
---|
274 | }, |
---|
275 | |
---|
276 | importPluginLanguagePack : function(n) { |
---|
277 | tinymce.PluginManager.requireLangPack(n); |
---|
278 | }, |
---|
279 | |
---|
280 | getButtonHTML : function(cn, lang, img, c, u, v) { |
---|
281 | var ed = EditorManager.activeEditor; |
---|
282 | |
---|
283 | img = img.replace(/\{\$pluginurl\}/g, tinyMCE.pluginURL); |
---|
284 | img = img.replace(/\{\$themeurl\}/g, tinyMCE.themeURL); |
---|
285 | lang = lang.replace(/^lang_/g, ''); |
---|
286 | |
---|
287 | return ed.controlManager.createButton(cn, { |
---|
288 | title : lang, |
---|
289 | command : c, |
---|
290 | ui : u, |
---|
291 | value : v, |
---|
292 | scope : this, |
---|
293 | 'class' : 'compat', |
---|
294 | image : img |
---|
295 | }); |
---|
296 | }, |
---|
297 | |
---|
298 | addSelectAccessibility : function(e, s, w) { |
---|
299 | // Add event handlers |
---|
300 | if (!s._isAccessible) { |
---|
301 | s.onkeydown = tinyMCE.accessibleEventHandler; |
---|
302 | s.onblur = tinyMCE.accessibleEventHandler; |
---|
303 | s._isAccessible = true; |
---|
304 | s._win = w; |
---|
305 | } |
---|
306 | |
---|
307 | return false; |
---|
308 | }, |
---|
309 | |
---|
310 | accessibleEventHandler : function(e) { |
---|
311 | var elm, win = this._win; |
---|
312 | |
---|
313 | e = tinymce.isIE ? win.event : e; |
---|
314 | elm = tinymce.isIE ? e.srcElement : e.target; |
---|
315 | |
---|
316 | // Unpiggyback onchange on blur |
---|
317 | if (e.type == "blur") { |
---|
318 | if (elm.oldonchange) { |
---|
319 | elm.onchange = elm.oldonchange; |
---|
320 | elm.oldonchange = null; |
---|
321 | } |
---|
322 | |
---|
323 | return true; |
---|
324 | } |
---|
325 | |
---|
326 | // Piggyback onchange |
---|
327 | if (elm.nodeName == "SELECT" && !elm.oldonchange) { |
---|
328 | elm.oldonchange = elm.onchange; |
---|
329 | elm.onchange = null; |
---|
330 | } |
---|
331 | |
---|
332 | // Execute onchange and remove piggyback |
---|
333 | if (e.keyCode == 13 || e.keyCode == 32) { |
---|
334 | elm.onchange = elm.oldonchange; |
---|
335 | elm.onchange(); |
---|
336 | elm.oldonchange = null; |
---|
337 | |
---|
338 | tinyMCE.cancelEvent(e); |
---|
339 | return false; |
---|
340 | } |
---|
341 | |
---|
342 | return true; |
---|
343 | }, |
---|
344 | |
---|
345 | cancelEvent : function(e) { |
---|
346 | return tinymce.dom.Event.cancel(e); |
---|
347 | }, |
---|
348 | |
---|
349 | handleVisualAid : function(e) { |
---|
350 | EditorManager.activeEditor.addVisual(e); |
---|
351 | }, |
---|
352 | |
---|
353 | getAbsPosition : function(n, r) { |
---|
354 | return tinymce.DOM.getPos(n, r); |
---|
355 | }, |
---|
356 | |
---|
357 | cleanupEventStr : function(s) { |
---|
358 | s = "" + s; |
---|
359 | s = s.replace('function anonymous()\n{\n', ''); |
---|
360 | s = s.replace('\n}', ''); |
---|
361 | s = s.replace(/^return true;/gi, ''); // Remove event blocker |
---|
362 | |
---|
363 | return s; |
---|
364 | }, |
---|
365 | |
---|
366 | getVisualAidClass : function(s) { |
---|
367 | // TODO: Implement |
---|
368 | return s; |
---|
369 | }, |
---|
370 | |
---|
371 | parseStyle : function(s) { |
---|
372 | return this._getDOM().parseStyle(s); |
---|
373 | }, |
---|
374 | |
---|
375 | serializeStyle : function(s) { |
---|
376 | return this._getDOM().serializeStyle(s); |
---|
377 | }, |
---|
378 | |
---|
379 | openWindow : function(tpl, args) { |
---|
380 | var ed = EditorManager.activeEditor, o = {}, n; |
---|
381 | |
---|
382 | // Convert name/value array to object |
---|
383 | for (n in tpl) |
---|
384 | o[n] = tpl[n]; |
---|
385 | |
---|
386 | tpl = o; |
---|
387 | |
---|
388 | args = args || {}; |
---|
389 | tpl.url = new tinymce.util.URI(tinymce.ThemeManager.themeURLs[ed.settings.theme]).toAbsolute(tpl.file); |
---|
390 | tpl.inline = tpl.inline || args.inline; |
---|
391 | |
---|
392 | ed.windowManager.open(tpl, args); |
---|
393 | }, |
---|
394 | |
---|
395 | closeWindow : function(win) { |
---|
396 | EditorManager.activeEditor.windowManager.close(win); |
---|
397 | }, |
---|
398 | |
---|
399 | getOuterHTML : function(e) { |
---|
400 | return tinymce.DOM.getOuterHTML(e); |
---|
401 | }, |
---|
402 | |
---|
403 | setOuterHTML : function(e, h, d) { |
---|
404 | return tinymce.DOM.setOuterHTML(e, h, d); |
---|
405 | }, |
---|
406 | |
---|
407 | hasPlugin : function(n) { |
---|
408 | return tinymce.PluginManager.get(n) != null; |
---|
409 | }, |
---|
410 | |
---|
411 | _setEventsEnabled : function() { |
---|
412 | // Ignore it!! |
---|
413 | }, |
---|
414 | |
---|
415 | addPlugin : function(pn, f) { |
---|
416 | var t = this; |
---|
417 | |
---|
418 | function PluginWrapper(ed) { |
---|
419 | tinyMCE.selectedInstance = ed; |
---|
420 | |
---|
421 | ed.onInit.add(function() { |
---|
422 | t.settings = ed.settings; |
---|
423 | t.settings['base_href'] = tinyMCE.documentBasePath; |
---|
424 | tinyMCE.settings = t.settings; |
---|
425 | tinyMCE.documentBasePath = ed.documentBasePath; |
---|
426 | //ed.formElement = DOM.get(ed.id); |
---|
427 | |
---|
428 | if (f.initInstance) |
---|
429 | f.initInstance(ed); |
---|
430 | |
---|
431 | ed.contentDocument = ed.getDoc(); |
---|
432 | ed.contentWindow = ed.getWin(); |
---|
433 | ed.undoRedo = ed.undoManager; |
---|
434 | ed.startContent = ed.getContent({format : 'raw'}); |
---|
435 | |
---|
436 | tinyMCE.instances[ed.id] = ed; |
---|
437 | tinyMCE.loadedFiles = []; |
---|
438 | }); |
---|
439 | |
---|
440 | ed.onActivate.add(function() { |
---|
441 | tinyMCE.settings = ed.settings; |
---|
442 | tinyMCE.selectedInstance = ed; |
---|
443 | }); |
---|
444 | |
---|
445 | /* if (f.removeInstance) { |
---|
446 | ed.onDestroy.add(function() { |
---|
447 | return f.removeInstance(ed.id); |
---|
448 | }); |
---|
449 | }*/ |
---|
450 | |
---|
451 | if (f.handleNodeChange) { |
---|
452 | ed.onNodeChange.add(function(ed, cm, n) { |
---|
453 | f.handleNodeChange(ed.id, n, 0, 0, false, !ed.selection.isCollapsed()); |
---|
454 | }); |
---|
455 | } |
---|
456 | |
---|
457 | if (f.onChange) { |
---|
458 | ed.onChange.add(function(ed, n) { |
---|
459 | return f.onChange(ed); |
---|
460 | }); |
---|
461 | } |
---|
462 | |
---|
463 | if (f.cleanup) { |
---|
464 | ed.onGetContent.add(function() { |
---|
465 | //f.cleanup(type, content, inst); |
---|
466 | }); |
---|
467 | } |
---|
468 | |
---|
469 | this.getInfo = function() { |
---|
470 | return f.getInfo(); |
---|
471 | }; |
---|
472 | |
---|
473 | this.createControl = function(n) { |
---|
474 | tinyMCE.pluginURL = tinymce.baseURL + '/plugins/' + pn; |
---|
475 | tinyMCE.themeURL = tinymce.baseURL + '/themes/' + tinyMCE.activeEditor.settings.theme; |
---|
476 | |
---|
477 | if (f.getControlHTML) |
---|
478 | return f.getControlHTML(n); |
---|
479 | |
---|
480 | return null; |
---|
481 | }; |
---|
482 | |
---|
483 | this.execCommand = function(cmd, ui, val) { |
---|
484 | if (f.execCommand) |
---|
485 | return f.execCommand(ed.id, ed.getBody(), cmd, ui, val); |
---|
486 | |
---|
487 | return false; |
---|
488 | }; |
---|
489 | }; |
---|
490 | |
---|
491 | tinymce.PluginManager.add(pn, PluginWrapper); |
---|
492 | }, |
---|
493 | |
---|
494 | _getDOM : function() { |
---|
495 | return tinyMCE.activeEditor ? tinyMCE.activeEditor.dom : tinymce.DOM; |
---|
496 | }, |
---|
497 | |
---|
498 | convertRelativeToAbsoluteURL : function(b, u) { |
---|
499 | return new tinymce.util.URI(b).toAbsolute(u); |
---|
500 | }, |
---|
501 | |
---|
502 | convertAbsoluteURLToRelativeURL : function(b, u) { |
---|
503 | return new tinymce.util.URI(b).toRelative(u); |
---|
504 | } |
---|
505 | }); |
---|
506 | |
---|
507 | // Extend Editor class |
---|
508 | tinymce.extend(tinymce.Editor.prototype, { |
---|
509 | getFocusElement : function() { |
---|
510 | return this.selection.getNode(); |
---|
511 | }, |
---|
512 | |
---|
513 | getData : function(n) { |
---|
514 | if (!this.data) |
---|
515 | this.data = []; |
---|
516 | |
---|
517 | if (!this.data[n]) |
---|
518 | this.data[n] = []; |
---|
519 | |
---|
520 | return this.data[n]; |
---|
521 | }, |
---|
522 | |
---|
523 | hasPlugin : function(n) { |
---|
524 | return this.plugins[n] != null; |
---|
525 | }, |
---|
526 | |
---|
527 | getContainerWin : function() { |
---|
528 | return window; |
---|
529 | }, |
---|
530 | |
---|
531 | getHTML : function(raw) { |
---|
532 | return this.getContent({ format : raw ? 'raw' : 'html'}); |
---|
533 | }, |
---|
534 | |
---|
535 | setHTML : function(h) { |
---|
536 | this.setContent(h); |
---|
537 | }, |
---|
538 | |
---|
539 | getSel : function() { |
---|
540 | return this.selection.getSel(); |
---|
541 | }, |
---|
542 | |
---|
543 | getRng : function() { |
---|
544 | return this.selection.getRng(); |
---|
545 | }, |
---|
546 | |
---|
547 | isHidden : function() { |
---|
548 | var s; |
---|
549 | |
---|
550 | if (!tinymce.isGecko) |
---|
551 | return false; |
---|
552 | |
---|
553 | s = this.getSel(); |
---|
554 | |
---|
555 | // Weird, wheres that cursor selection? |
---|
556 | return (!s || !s.rangeCount || s.rangeCount == 0); |
---|
557 | }, |
---|
558 | |
---|
559 | translate : function(s) { |
---|
560 | var c = this.settings.language, o; |
---|
561 | |
---|
562 | o = tinymce.EditorManager.i18n[c + '.' + s] || s.replace(/{\#([^}]+)\}/g, function(a, b) { |
---|
563 | return tinymce.EditorManager.i18n[c + '.' + b] || '{#' + b + '}'; |
---|
564 | }); |
---|
565 | |
---|
566 | o = o.replace(/{\$lang_([^}]+)\}/g, function(a, b) { |
---|
567 | return tinymce.EditorManager.i18n[c + '.' + b] || '{$lang_' + b + '}'; |
---|
568 | }); |
---|
569 | |
---|
570 | return o; |
---|
571 | }, |
---|
572 | |
---|
573 | repaint : function() { |
---|
574 | this.execCommand('mceRepaint'); |
---|
575 | } |
---|
576 | }); |
---|
577 | |
---|
578 | // Extend selection |
---|
579 | tinymce.extend(tinymce.dom.Selection.prototype, { |
---|
580 | getSelectedText : function() { |
---|
581 | return this.getContent({format : 'text'}); |
---|
582 | }, |
---|
583 | |
---|
584 | getSelectedHTML : function() { |
---|
585 | return this.getContent({format : 'html'}); |
---|
586 | }, |
---|
587 | |
---|
588 | getFocusElement : function() { |
---|
589 | return this.getNode(); |
---|
590 | }, |
---|
591 | |
---|
592 | selectNode : function(node, collapse, select_text_node, to_start) { |
---|
593 | var t = this; |
---|
594 | |
---|
595 | t.select(node, select_text_node || 0); |
---|
596 | |
---|
597 | if (!is(collapse)) |
---|
598 | collapse = true; |
---|
599 | |
---|
600 | if (collapse) { |
---|
601 | if (!is(to_start)) |
---|
602 | to_start = true; |
---|
603 | |
---|
604 | t.collapse(to_start); |
---|
605 | } |
---|
606 | } |
---|
607 | }); |
---|
608 | }).call(this); |
---|
609 | |
---|
610 | // Register plugin |
---|
611 | tinymce.PluginManager.add('compat2x', tinymce.plugins.Compat2x); |
---|
612 | })(); |
---|
613 | |
---|