Actually, the link fixing part should make renaming a page quite
reversible. One simply renames it back, and all the damage that was
done would be fixed in the same way.
This is the code I put in WikiSh.Rename:
//start code
{(wikish source {$FullName}#RenamePage)}
(:if false:)
[[#RenamePage]]
wikish_form process
if test -n ${Submit}
then
if test "${NewPage}" ~= "/^[\sa-z0-9-]+(\.|\/)[\sa-z0-9-]+$/i"
then
if test "${OldPage}" != "/^([\sa-z0-9-]+)(\.|\/)\1$/i"
then
set -s NewPagePN = `echo ${NewPage}|sed 's|\s||gi' | sed 's|/|
\.|gi'`
set -s OldPagePN = `echo ${OldPage}|sed 's|\s||gi' | sed 's|/|
\.|gi'`
set -s OldPageR = `echo ${OldPage}|sed 's|\s+|\\s*|gi'| sed
's|/|/|gi'`
echo "${OldPageR}"
echo "${NewPage}"
sed -i 's%${OldPageR}%${NewPage}%gi' `pagelist link=$
{OldPagePN} sep=\n`
mv ${OldPagePN} ${NewPagePN}
wikish_form redirect target=${NewPagePN}
fi
fi
fi
[[#RenamePage]]
(:ifend:)
//end code
This is the code I put in PageActions:
//start code
(:if equal {$Action} "edit":)
* %item rel=nofollow% (:input form action="index.php" method="GET":)
(:input hidden name=n value="WikiSh.Rename":)(:input hidden
name=OldPage value="{*$Groupspaced}/{*$Namespaced}":)Enter New Name:
(:input text name=NewPage value="{*$Groupspaced}/{*$Namespaced}"
size=30:)(:input submit Submit value="Rename":)(:input end:)
(:ifend:)
//end code
This actually works quite well except for the fact that only admin can
rename pages. I would like editors to be able to rename pages so long
as they have edit permissions for both the old page and the new page.
Right now, you need to enter an admin password to run the script. The
relevent portion of my config.php looks like this:
//start code
include_once("$FarmD/cookbook/toolbox.php");
include_once("$FarmD/cookbook/WikiSh.php");
if ($group == 'WikiSh')
include_once("$FarmD/cookbook/WikiShCL.php");
include_once("$FarmD/cookbook/SecLayer.php"); // note this includes
stdconfig.php
$EnableWikiShWritePage = true;
$EnableWikiShCreatePage = true;
$EnableWikiShOverwritePage = true;
$EnableWikiShRemove = true;
if (CondAuth($pagename, "admin")) {
slAddAuth($wshAuthPage, "*.*",
"read,create,insert,overwrite,append,prepend,attr,delete");
$EnableWikiShDeletePage = true;
$EnableWikiShChmod = true;
} else {
slAddAuth($wshAuthPage, "*.*", "read,create");
slAddAuth($wshAuthPage, "Test.*",
"insert,overwrite,append,prepend,delete");
}
# cookbook/powertools.php is *very* helpful in the wikish environment
but is optional.
# If you decide to install it you will need to go that page and
download it and install
# it as follows:
include_once("$FarmD/cookbook/powertools.php");
//end code
I tried modifying the CondAuth line with an "or $group=='WikiSh'" for
starters, but that did not seem to make a difference. I am quite
confused as to how to go about doing this.
Thanks,
Alex
On Jul 23, 2012, at 2:46 PM, tamouse mailing lists wrote:
On Jul 22, 2012 11:01 PM, "Alex Eftimiades"
<[email protected]> wrote:
>
> Hi again, I tried making this a page action as follows (in
Site.PageActions)
> * %item rel=nofollow% {(wikish source
{$SiteGroup}.PageActions#RenamePage)}Rename Page:(:input text
name=NewPage value={$FullName} size=30:)(:input submit name=submit
value=Rename:)(:input end:)
>
> (:if false:)
> [[#RenamePage]]
> wikish_form quickform process
> if test -n "${submit}"
> then
> if test "${NewPage}" ~= "/^[a-z0-9-]+(\.|\/)[a-z0-9-]+$/i"
> then
> if test {$Name}!={$Group}
> then
> set -s NewPagePN = `echo ${NewPage} | sed 's|\s||gi' | sed
's|/|\.|gi'`
> sed -i 's%({$Group}|{$Groupspaced})(/|\.)({$Name}|
{$NameSpaced})%${NewPage}%g' `pagelist link={$FullName} sep=\n`
> mv {$FullName} ${NewPagePN}
> wikish_form redirect target=${NewPagePN}
> fi
> fi
> [[#RenamePage]]
> (:ifend:)
>
> But with this setup the rename button is disabled. Could anyone
tell me what part of this I need to fix? Perhaps I am going about
this wrong.
>
> Thanks,
> Alex
>
>
>
> On Jul 21, 2012, at 10:16 PM, Alex Eftimiades wrote:
>
>> Yes this seems to work now. Thank you very much. I am going to
try to modify this into a page action and for renaming groups.
>>
>> Thanks
>> Alex
>>
>> On Jul 21, 2012, at 12:53 PM, Peter Bowers wrote:
>>
>>> No that's fine. If it's an action you do on a regular basis then
>>> you'll probably want to put the code on a page and put it together
>>> with a form, but that can easily be a future step. Doing it in
the
>>> ControlPanel is a good way to get things working...
>>>
>>> I loaded the first command from your command history and noticed
that
>>> you have a newline in the middle of the line that should read like
>>> this:
>>>
>>> sed -i 's|${OldGroup}([./]\)?)${OldPage}|${NewGroup}$1${NewPage}|
gi'
>>> `pagelist link=${OldGroupPN}.${OldPagePN} sep=\n`
>>>
>>> That should all be on one line with no newline before the
`pagelist...
>>>
>>> It may have gotten confusing because the email may have
automatically
>>> wordwrapped it when I sent it to you.
>>>
>>> Anyway, I certainly don't want to come anywhere close to actually
>>> running code like this on someone else's system, so I'm just
letting
>>> you know what needs to happen and then leave it up to you.
>>>
>>> If that works, please report back to the list that it was just a
>>> newline due to the email wordwrapping. If it doesn't work then
let me
>>> know and I'll take another look -- just give me the exact error
>>> message since I'm wanting to avoid actually executing anything
on your
>>> system.
>>>
>>> -Peter
>>
>>
>
>
> _______________________________________________
> pmwiki-users mailing list
> [email protected]
> http://www.pmichaud.com/mailman/listinfo/pmwiki-users
Something about the idea of putting sort of thing in PageActions
like this scares me. It seems like a chance for vandalization to
occur of a sort that would be hard to recover from. Wikish may be
highly useful, but I think this action would be better raised to a
first-class recipe with attendant authorization and validation, if
one is going to make available on PageActions. Just my deux centimes.
_______________________________________________
pmwiki-users mailing list
[email protected]
http://www.pmichaud.com/mailman/listinfo/pmwiki-users