On 1/17/2011 3:17 PM, Alex wrote:
On 1/17/2011 2:02 PM, Roan Kattouw wrote:
2011/1/16 Alex mrzmanwiki@gmail.com:
I tried to integrate it as neatly as possible, though the lack of documentation hasn't helped. Everything works fine, except when using IE. In IE, it just inserts the ref in some random location on the page, sometimes *near* where the cursor/highlight is, but sometimes its not even close. It seems to work differently with different compatibility mode settings, but even that isn't consistent. I've looked at some of the WikiEditor code and can't figure out why it isn't working, when the other dialogs in the standard toolbar work just fine.
Yeah IE has some nasty issues with selections.
Have you tried calling .dialog( 'close' ) before doAction() instead of after? That's the only difference I can find between your code and the built-in dialogs.
No, that still didn't fix it. From some further testing, it looks like the regular dialogs are also broken in the current IE9 beta when using IE9 standards document mode.
However, I found my dialogs do work in IE (except in IE9 standards mode) if some text is actually selected. It seems to forget the cursor position if nothing is selected and just places it randomly.
Based on this discovery, I tested a complete shot in the dark, and managed to fix it (or at least work around it). Before inserting the actual content, I have it insert a single space. Why it works I'm not entirely sure, but it does. The code is now:
buttons: { 'cite-form-submit': function() { $j.wikiEditor.modules.toolbar.fn.doAction( $j(this).data( 'context' ), { type: 'encapsulate', options: { peri: ' ' } }, $j(this) ); var ref = CiteTB.getRef(false, true); $j(this).dialog( 'close' ); $j.wikiEditor.modules.toolbar.fn.doAction( $j(this).data( 'context' ), { type: 'encapsulate', options: { pre: ref } }, $j(this) ); },
I've filed a bug for the IE9 standards mode issue that affects all the dialogs (not just mine). https://bugzilla.wikimedia.org/show_bug.cgi?id=26785