[pmwiki-users] Changing the Page Action on Page Load
Bruce & Ann Reidenbach
bereiden at gmail.com
Thu Sep 2 10:15:11 CDT 2010
Again, thanks to all for helping out here. And thanks to Peter for the
"fancy" suggestion. Here is the code.
Markup ('PageAction', '<include', '/\\(:pageaction\\s+(.+?):\\)/ei',
> "PageAction ('$pagename', '$action', '$1')");
>
> # Change the page action when the page is opened
> # If no incoming action is specified, i.e., (:pageaction myaction:),
> redirect with the requested
> # action if the current page action is 'browse'. Otherwise, redirect
> with the requested action
> # if the current page action matches the specified incoming page action
> from the option list.
>
> function PageAction ($pagename, $action, $opt) {
> $args = ParseArgs ($opt);
> foreach ($args as $key => $req) {
> if (strlen ($key) == 0) { # No incoming action specified?
> $key = 'browse'; # Default to 'browse'
> $req = $args[''][0];
> }
> if ($action == $key && $action != $req) {
> Redirect ("{$pagename}?action=$req");
> }
> }
> }
>
It doesn't appear to work with some of the special actions like diff or
upload, but other than that, it works pretty well.
On Wed, Sep 1, 2010 at 4:04 PM, Peter Bowers <pbowers at pobox.com> wrote:
>
> By the time your Markup() rule is called it is too late to change $action
> and make it have any effect.
>
> PmWiki (in the big picture) does a bunch of configuration tasks and then it
> checks the value of $action and calls an action handler function based on
> the value of $action. It is that action handler which then does everything
> else, including processing all the rules, including the one you have put in
> place.
>
> Changing $action after the action handler is called is like shutting the
> barn door after the horse is gone...
>
> The way I would solve it would be to redirect to the same page but with a
> different action=X parameter in the URL. Make sure you check your $action
> first to avoid an infinite redirect and also to still allow yourself to edit
> the page, use diagnostics, etc. If you want to get fancy you might want to
> look into (:pageaction browse=mynewaction print=myprint edit=myedit:) type
> of syntax which would allow mapping of various actions to other actions
> (take a look at the ParseArgs() function if you decide to try to implement
> this more generalized functionality).
>
> I'm not personally seeing the utility of the rule, but the beauty of pmwiki
> is its flexibility in allowing everyone to use it in their own way...
>
> -Peter
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.pmichaud.com/pipermail/pmwiki-users/attachments/20100902/743f394c/attachment.html>
More information about the pmwiki-users
mailing list