[pmwiki-users] Automatically create pages and groups?
Hsing-Foo Wang
hsingfoo at gmail.com
Thu Aug 24 12:00:58 CDT 2006
That certainly beats my line of code .... ;-)
Thanks a heap, need to 'play' with this (meaning understanding your
code and practice)
Thanks,
-HF
On 8/24/06, Hans <hans.bracker at googlemail.com> wrote:
> On 24/08/06, Hsing-Foo Wang <hsingfoo at gmail.com> wrote:
> > The pattern may vary, But right now 'Pnnnnn' as in P00001.
> >
> > With my 'skills' I would write: If $Name = *Pnnnnn* then autocreate else return
>
> Here is a script you can include for pattern matched autopage creation.
> Just replace the patterns, add to etc.
> And specify your templat epages and target pages.
> Re patterns: these are regex patterns:
> (.*) matches any character strings
> P just the letter P
> \\d any digit 0...9
>
> So you get matches for Test-P00001Sample etc
> The second pattern is just with a W insted of P, to give you an idea
> how to add patterns to the array.
>
> Script code:
>
> <?php if (!defined('PmWiki')) exit();
>
> # automatic creation of a number of pages from template pages
> # if a pattern is met
>
> $AutoGroupPagesFmt = array(
> '{$Group}.{$Name}-Comments' => 'Templates.PageComments',
> '{$Group}.{$Name}-Details' => 'Templates.PageDetails',
> );
> $AutoGroupPattern = array(
> 'p1' => '(.*)(P\\d\\d\\d\\d\\d)(.*)', # *P12345*
> 'p2' => '(.*)(W\\d\\d\\d\\d\\d)(.*)', # *W12345*
> );
>
> $group = PageVar($pagename, '$Group');
> $name = PageVar($pagename, '$Name');
>
> # below replace $pagename with $name if only Name should match and not Group
> # below replace $pagename with $group if only Group should match and not Name
> if ($action=='edit') {
> foreach ((array)$AutoGroupPattern as $k=>$v) {
> $match = preg_match("/^($v)$/i", $pagename);
> if($match) $EditFunctions[] = 'AutoGroupPages';
> }
> }
>
> #if($action=='edit' && preg_match("/^($AutoGroupPattern)$/i", $name))
> # $EditFunctions[] = 'AutoGroupPages';
>
> function AutoGroupPages($pagename, &$page, &$new) {
> global $IsPagePosted, $AutoGroupPagesFmt;
> if (!$IsPagePosted) return;
> SDV($AutoGroupPagesFmt, array(
> '{$Group}.HomePage' => 'Templates.HomePage',
> '{$Group}.GroupHeader' => 'Templates.GroupHeader',
> '{$Group}.GroupFooter' => 'Templates.GroupFooter'));
>
> foreach($AutoGroupPagesFmt as $n => $t) {
> $n = FmtPageName($n, $pagename);
> if (!PageExists($n)) {
> $t = FmtPageName($t, $pagename);
> WritePage($n, ReadPage($t));
> }
> }
> }
>
More information about the pmwiki-users
mailing list