On 1/17/2011 3:17 PM, Alex wrote:
On 1/17/2011 2:02 PM, Roan Kattouw wrote:
2011/1/16 Alex <mrzmanwiki(a)gmail.com>om>:
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
--
Alex (wikipedia:en:User:Mr.Z-man)