[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