[1] | 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 | |
---|