On 4/2/2010 4:47 AM, Petko Yotov wrote:
On Thursday 01 April 2010 05:13:10, DaveG wrote :
In PmForm HandlePmForm(), a Redirect() is performed at the end of
processing. This prohibits additional cookbook processing after PmForm.
Specifically it means that any Ajax oriented PmForm requests are not
possible.

A while ago I tinkered with an Ajax webapp and I used this line :

   if(@$_GET['ajax']>'') $EnableRedirect = 0;

The JavaScript sends the PmForm with an additional parameter "&ajax=1". This
blocks the redirects and sends a HTML page and the JavaScript program can
parse it and decide what to do.
Also a reasonable solution, except Redirect performs an output which interferes with ajax handling (but doesn't prohibit it):
  echo "<a href='$pageurl'>Redirect to $pageurl</a>";

and then does an "exit;" which prohibits post-PmForm processing.

I suspect changing that behavior will have impacts beyond the initial proposal.


My proposal is below, although I'm open to any change that allows
re-directing to a cookbook defined function.

Alternatively, you can write/clone your own MyHandlePmForm() without the
redirect, and use $HandleActions['pmform'] = 'MyHandlePmForm';
True, but then I'm replicating PmForm, which is a little 'smelly'.


Change to PmForm, last line in HandlePmForm() from:
    Redirect($pagename, '{$PageUrl}?pmform=success');

To:
    $PmFormRedirect('success');


And the addition of a function:
    function PmFormRedirect($msg){
    global $pagename;
      Redirect($pagename, '{$PageUrl}?pmform='.$msg);
    }

And at the start of PmForm, the initialization of the new variable:
     SDV($PmFormRedirect,'PmFormRedirect');

It might be more something like this :
   SDV($PmFormRedirectFunction,'Redirect');
   $PmFormRedirectFunction($pagename, '{$PageUrl}?pmform=success');
Agreed.


 ~ ~ Dave

_______________________________________________
pmwiki-devel mailing list
pmwiki-devel@pmichaud.com
http://www.pmichaud.com/mailman/listinfo/pmwiki-devel

Reply via email to