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.
${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.

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 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.

>   </FORM>
> 
> Note that the problem is only with the Edit button, the other is working 
> fine.
> 
> Thanks in advance for your help.
> 
> Jean.
> 


-- 
Sergiu Dumitriu
http://purl.org/net/sergiu/
_______________________________________________
users mailing list
users@xwiki.org
http://lists.xwiki.org/mailman/listinfo/users

Reply via email to