Ok I wanted to leave the QuickStart the last resort. I'll get right on it. Jira + QuickStart.
We must all contribute. :-) f(t) On 10/31/07, Matej Knopp <[EMAIL PROTECTED]> wrote: > > So even better than html page would be a quickstart attched to jira > issue that you create about this problem :-) > > Cheers, > -Matej > > On 10/31/07, Matej Knopp <[EMAIL PROTECTED]> wrote: > > Hi, > > > > I got your point. But I need a complete html file to be able to > > reproduce it with as little effort as possible :) My time is quite > > limited lately :( > > > > I don't mind fixing this in wicket, but I need to make sure that this > > is the right fix and has no side-effect. > > > > -Matej > > > > On 10/31/07, Francisco Diaz Trepat - gmail > > <[EMAIL PROTECTED]> wrote: > > > Hi Matej. Have you read the the forwarded part of the last message? > > > > > > Because that is where I explained the behavior. Basically in Firefox > if I > > > replace a panel with two subpanels the second subpanel doesn't get > replaced. > > > Please check out the message bellow, the one I forwarded. > > > > > > If you see the org/apache/wicket/ajax/wicket-ajax.js in > > > wicket-1.3.0-beta4.jar. You will see the code for the * > > > Wicket.replaceOuterHtml* > > > > > > In there, I understand that there are two main things going on: > > > > > > 1) There is some code that it is not used and so, in our version we > > > commented it. > > > > > > 2) And most important, we fixed a the issue for us by moving the nodes > in > > > the tree herarchy that appears wrongly in the get * > > > range.createContextualFragment*() function from the Gecko (firefox) > engine. > > > If there are many subpanels, the range uncorrectly parses the content, > > > resulting in a fragment that contains many childs instead of one. > > > > > > The HTML is explained bellow, if that explanation fails I'll try to > send you > > > a file. ok? > > > > > > Our function basically call the *Wicket.replaceOuterHtml=function(){ > blah, > > > blah* to replace the one in the framework with the fixed one. And we > call > > > the replacement on a window.setTimeOut() on the specific page in which > we > > > have the panel with subpanels. > > > > > > thanks, > > > > > > f(t) > > > > > > > > > > > > On 10/30/07, Matej Knopp <[EMAIL PROTECTED]> wrote: > > > > > > > > Sorry, I'm not sure I follow. > > > > > > > > there is some code in replaceOuterHtml that seems redundant so it > could > > > > be like this: > > > > > > > > Wicket.replaceOuterHtml = function(element, text) { > > > > > > > > if (Wicket.Browser.isIE()) { > > > > Wicket.replaceOuterHtmlIE(element, text); > > > > } else if (Wicket.Browser.isSafari() || Wicket.Browser.isOpera()) > { > > > > Wicket.replaceOuterHtmlSafari(element, text); > > > > } else /* GECKO */ { > > > > // create range and fragment > > > > var range = element.ownerDocument.createRange(); > > > > range.selectNode(element); > > > > var fragment = range.createContextualFragment(text); > > > > > > > > element.parentNode.replaceChild(fragment, element); > > > > } > > > > } > > > > > > > > Still I'm not sure what the problem is that your code solves. Can > you > > > > please provide me a html file where the replaceOuterHtml call fails? > > > > > > > > -Matej > > > > > > > > > > > > Francisco Diaz Trepat - gmail wrote / napĂsal(a): > > > > > Hi a cowerker here might have found something here. We have fix > the > > > > issue by > > > > > replacing the *Wicket.replaceOuterHtml* function. > > > > > > > > > > Could this be a BUG? > > > > > > > > > > I have forwarded the initial message that explains the behavior. > > > > > > > > > > Here is the code that fixed our problem: > > > > > > > > > > f(t) > > > > > > > > > > > > > > > > > > > > // > > > > > > > > > > -------------------------------------------------------------------------------- > > > > > // Hack that demonstrates a possible fix for a problem with Gecko > based > > > > > browsers. > > > > > // The problem happens in this line: > > > > > // var fragment = range.createContextualFragment(text); > > > > > // If there are many subpanels, the range uncorrectly parses the > > > > content, > > > > > resulting > > > > > // in a fragment that contains many childs instead of one. > > > > > // The first child is the first subpanel, and the rest are the > other > > > > > subpanels, > > > > > // which are incorrectly hang at the same level as the main panel, > > > > instead > > > > > of being > > > > > // childs of it. > > > > > > > > > > function replaceWicketReplaceOuterHtml() { > > > > > Wicket.replaceOuterHtml = function(element, text) { > > > > > if (Wicket.Browser.isIE()) { > > > > > Wicket.replaceOuterHtmlIE(element, text); > > > > > } else if (Wicket.Browser.isSafari() || Wicket.Browser.isOpera()) > { > > > > > Wicket.replaceOuterHtmlSafari(element, text); > > > > > } else /* GECKO */ { > > > > > // create range and fragment > > > > > var range = element.ownerDocument.createRange(); > > > > > range.selectNode(element); > > > > > var fragment = range.createContextualFragment(text); > > > > > > > > > > // The following code seems useless, and then is commented > out > > > > > // get the elements to be added > > > > > //var elements = new Array(); > > > > > //for (var i = 0; i < fragment.childNodes.length; ++i) > > > > > //elements.push(fragment.childNodes[i]); > > > > > > > > > > // move additional subnodes to the correct place in the dom > > > > > if (fragment.childNodes.length > 1) { > > > > > // the for clause intentionally starts from 1, > > > > > // to fix only the wrongly hanging subnodes. > > > > > for (var i = 1; i < fragment.childNodes.length; ++i) { > > > > > var otherNode = fragment.childNodes[i]; > > > > > > > > > > fragment.childNodes > [0].childNodes[0].appendChild(otherNode); > > > > > } > > > > > } > > > > > > > > > > element.parentNode.replaceChild(fragment, element); > > > > > } > > > > > } > > > > > } > > > > > > > > > > window.setTimeout(replaceWicketReplaceOuterHtml, 1000); > > > > > // > > > > > > > > > > -------------------------------------------------------------------------------- > > > > > > > > > > > > > > > ---------- Forwarded message ---------- > > > > > From: Francisco Diaz Trepat - gmail < > [EMAIL PROTECTED]> > > > > > Date: Oct 23, 2007 10:27 PM > > > > > Subject: Re: Ajax Panel Replacement Issue on Fireforx only (Kind > of > > > > Complex > > > > > Scenario) > > > > > To: users@wicket.apache.org > > > > > > > > > > Thanks Matej, I will but further ahead. I'll try to see what is > going on > > > > > with more detail by using FIREBUG toolbar or something of the > sort. > > > > > > > > > > > > > > > > > > > > > > > > > If everything else fails I'll provide a QuickStart. > > > > > > > > > > > > > > > Thanks, > > > > > f(t) > > > > > > > > > > On 10/23/07, Matej Knopp <[EMAIL PROTECTED]> wrote: > > > > >> Can you provide a quickstart? > > > > >> > > > > >> -Matej > > > > >> > > > > >> On 10/23/07, Francisco Diaz Trepat - gmail > > > > >> <[EMAIL PROTECTED]> wrote: > > > > >>> Hi. I'm going to try to explain the best that I can and without > > > > posting > > > > >> code > > > > >>> at first the issue that is happening. > > > > >>> > > > > >>> I have the following panels A and C. A has two instances of B > nested > > > > >> inside > > > > >>> of it. C is empty: > > > > >>> > > > > >>> [ > > > > >>> > > > > >>> ==PANEL-A== > > > > >>> > > > > >>> [ > > > > >>> > > > > >>> ==PANEL-B1== > > > > >>> > > > > >>> ] > > > > >>> > > > > >>> [ > > > > >>> > > > > >>> ==PANEL-B2== > > > > >>> > > > > >>> ] > > > > >>> > > > > >>> ] > > > > >>> > > > > >>> > > > > >>> [ > > > > >>> ==PANEL-C== > > > > >>> ] > > > > >>> > > > > >>> What happens is that on another Panel that represent the Page > content, > > > > >> lets > > > > >>> call it ContentPanel I need to toggle between panels A and C > with the > > > > >> click > > > > >>> of an Ajax Link. > > > > >>> > > > > >>> The first state is with panel C that it is empty (actually with > lots > > > > of > > > > >>> HiddenFields, but empty visually). On click I need to Show the A > panel > > > > >> that > > > > >>> has viewable content. Finally on another click I need to go back > to > > > > the > > > > >>> original state of C panel. > > > > >>> > > > > >>> So far so good. The issue is as follows: > > > > >>> > > > > >>> The problem happens on Firefox only (latest version 2.0.0.8) (on > IE 6 > > > > >> and 7 > > > > >>> it is not an issue as everything works fine). > > > > >>> > > > > >>> What happens is that I click on the link, and panel A shows > perfectly. > > > > >> But > > > > >>> when I click again to put the C panel back, the A panel gets > Partially > > > > >>> removed, that is panel A's first panel B instance B1 gets > removed, but > > > > >> B2 is > > > > >>> not removed and it is still visible, plus I get the C panel, as > C > > > > panel > > > > >>> doesn't have viewable content it doesn't add to the visual > problem. > > > > >> *Ej*: > > > > >>> [ > > > > >>> > > > > >>> ==PANEL-A== > > > > >>> > > > > >>> > > > > >>> [ > > > > >>> > > > > >>> ==PANEL-B2== > > > > >>> > > > > >>> ] > > > > >>> > > > > >>> ] > > > > >>> > > > > >>> [ > > > > >>> ==PANEL-C== > > > > >>> ] > > > > >>> > > > > >>> Now If I click again, I get Panel A with "2 instances of B2" as > panel > > > > B2 > > > > >> was > > > > >>> not removed. > > > > >>> [ > > > > >>> > > > > >>> ==PANEL-A== > > > > >>> > > > > >>> [ > > > > >>> > > > > >>> ==PANEL-B1== > > > > >>> > > > > >>> ] > > > > >>> > > > > >>> [ > > > > >>> > > > > >>> ==PANEL-B2== > > > > >>> > > > > >>> ] > > > > >>> > > > > >>> [ > > > > >>> > > > > >>> ==PANEL-B2== > > > > >>> > > > > >>> ] > > > > >>> > > > > >>> ] > > > > >>> > > > > >>> So and so forth every click and click, I get panel A partially > removed > > > > >> and > > > > >>> when added again I have another instance of B2 as it is never > removed. > > > > >>> > > > > >>> > > > > >>> > > > > >>> Any Ideas? > > > > >>> > > > > >>> thanks, > > > > >>> > > > > >>> f(t) > > > > >>> > > > > >> > --------------------------------------------------------------------- > > > > >> To unsubscribe, e-mail: [EMAIL PROTECTED] > > > > >> For additional commands, e-mail: [EMAIL PROTECTED] > > > > >> > > > > >> > > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > >