Sergiu Dumitriu a écrit :
> Jean Couteau wrote:
>   
>> Hi list,
>>
>> I have a really weird bug which is quite annoying and I don't find any 
>> solution to it :
>>
>> I want to edit a page in inline mode. I have a form to select the page 
>> to edit with a button. I use the $xwiki.getURL() method to get the right 
>> URL. When i select my page and click on the edit button, I have an 
>> invalid URL error and i am deconnected. What is weird is that if I 
>> reconnect and actualize the page I can access it. The second weird thing 
>> is that I use exactly the same method to edit other pages form other 
>> forms in the same first page and I do not have the problem. I am quite 
>> lost with this issue. I tried to recreate the URL as a string but I have 
>> the same problem.
>>
>> I am thinking maybe this is a known bug in xwiki. If not maybe i am 
>> missing something somewhere. Please open my eyes on the obvious i am 
>> missing in my code :
>>
>> <FORM method=POST action="">
>>     <input type="hidden" name="backlog" value="${backlogId}" />
>>     <input type="hidden" name="webname" value="Project" />
>>     <input type="hidden" name="name" value="backlog" />
>>     <input type="hidden" name="domain" value="${domainId}" />
>>     <input type="hidden" name="cut" value="${cut}" />
>>     Select topic : <SELECT name="topic">
>>       #foreach ($item in $topiclist)
>>         #set 
>> ($topic=$xwiki.getDocument(${item}).getObject("XWiki.TopicClass"))
>>         <OPTION VALUE="${topic.id}">$topic.get("name")</OPTION>
>>       #end
>>     </SELECT>
>>     <input type="button" value="Select" 
>> onclick='{this.form.action="../../view/" + this.form.webname.value + "/" 
>> + this.form.name.value + "?backlog=" + this.form.backlog.value + 
>> "&domain=" + this.form.domain.value + "&topic=" + 
>> this.form.topic.value.substring(this.form.topic.value.lastIndexOf("${separator}")+1)
>>  
>> + "&cut=" + this.form.cut.value; this.form.submit(); }'/>
>>     <input type="button" value="Edit" 
>> onclick='{url="Project."+this.form.topic.value; 
>> this.form.action="${xwiki.getURL(url, "inline")}"; this.form.submit(); }' />
>>     
>
> Classic mix between serverside and clientside scripting.
>   
That was the obvious ;)
> ${xwiki.getURL...} is executed on the server, before the page is
> displayed in the browser. url is a javascript variable, created long
> after the velocity engine tried to generate the URL. I'm surprised you
> didn't get a stack trace instead of the panel.
>
> Still, this doesn't explain why you get disconnected, this should not
> happen.
>   
A lot of strange things are happening with this issue. I used this 
method because the previous one was not working.
> Try this:
>
>      <input type="button" value="Edit"
>  onclick='this.form.action="${xwiki.getURL("Project.__topic__",
> "inline")}".replace("__topic__", this.form.topic.value);
> this.form.submit();' />
>   
This does not work, nothing happens, I stay on the same page and i am 
still connected. Strange.

I tried also with :

<input type="button" value="Edit" 
onclick='{this.form.action="../../inline/" + this.form.webname.value + 
"/" + this.form.topic.value; this.form.submit(); }' />

and

<input type="button" value="Edit" 
onclick='{this.form.action="../../inline/Project/" + 
this.form.topic.value; this.form.submit(); }' />

I am then disconnected and still have my invalid url (Strange though 
because this method gave me a good url in almost the same form on the 
same page (instead of topic, it is domain ;)). (Note that if i validate 
the invalid url (that is in my browser address bar), i go to the page i 
wanted to reach and i am connected, refreshing does not work).
> This uses $xwiki.getURL to obtain a valid URL template, which uses a
> placeholder (__topic__) instead of the real topic name, which in the
> generated HTML appears as a string like
> "/xwiki/bin/inline/Project/__topic__", and javascript replaces this
> placeholder with the real value taken from the form
Thanks for this explanation, clearer for me now ;).

Thanks for your time.
Jean

-- 
----
Jean Couteau
Code Lutin - http://www.codelutin.com
44 Bd des Pas Enchantés - 44230 St-Sébastien/Loire
Tél : 02 40 50 29 28 - Fax : 09 59 92 29 28 

_______________________________________________
users mailing list
users@xwiki.org
http://lists.xwiki.org/mailman/listinfo/users

Reply via email to