annotate media/js/tiny_mce/plugins/compat2x/editor_plugin_src.js @ 150:b43e1288ff80

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