Index: editors/js/nicedit.js =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/wysiwyg/editors/js/nicedit.js,v retrieving revision 1.3 diff -u -p -r1.3 nicedit.js --- editors/js/nicedit.js 1 Dec 2008 14:14:41 -0000 1.3 +++ editors/js/nicedit.js 7 Oct 2009 00:29:20 -0000 @@ -7,6 +7,9 @@ Drupal.wysiwyg.editor.attach.nicedit = f // Attach editor. var editor = new nicEditor(settings); editor.panelInstance(params.field); + editor.addEvent('focus', function () { + Drupal.wysiwyg.activeId = params.field; + }); }; /** @@ -35,3 +38,43 @@ Drupal.wysiwyg.editor.detach.nicedit = f } }; +/* + * Instance methods for nicEdit. + */ +Drupal.wysiwyg.editor.instance.nicedit = { + insert: function(content) { + var editor = nicEditors.findEditor(this.field); + var editingArea = editor.getElm(); + var userSelection = editor.getSel(); + // IE. + if (document.selection) { + editingArea.focus(); + userSelection.createRange().text = content; + } + else { + // Convert selection to range. + var range; + // W3C compatible. + if (userSelection.getRangeAt) { + range = userSelection.getRangeAt(0); + } + // Safari. + else { + range = editingArea.ownerDocument.createRange(); + range.setStart(userSelection.anchorNode, userSelection.anchorOffset); + range.setEnd(userSelection.focusNode, userSeletion.focusOffset); + } + // The code below doesn't work in IE, but it never gets here. + var fragment = editingArea.ownerDocument.createDocumentFragment(); + // Fragments don't support innerHTML. + var wrapper = editingArea.ownerDocument.createElement('div'); + wrapper.innerHTML = content; + while (wrapper.firstChild) { + fragment.appendChild(wrapper.firstChild); + } + range.deleteContents(); + // Only fragment children are inserted. + range.insertNode(fragment); + } + } +};