AutoGroupPages
Questions answered by this recipe
How can I have a number of pages created automatically for a new group?
Description
Here's a brief recipe that will create HomePage, GroupHeader, and GroupFooter automatically if they don't exist when a page is created in a group:
function AutoGroupPages($pagename, &$page, &$new) { global $IsPagePosted, $GroupPagesFmt; 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); $t = FmtPageName($t, $pagename); if (!PageExists($n) && $n != $pagename) { WritePage($n, ReadPage($t)); } } } $EditFunctions[] = 'AutoGroupPages';
The last line adds the function to the $EditFunctions
array, which results in it getting executed whenever a page edit takes place, meaning that by editing a new page for a new group and saving it, the additional pages specified in the $AutoGroupPagesFmt array will be created too.
$AutoGroupPagesFmt can be defined with different pages prior of including the function.
Notes
The function is declared and used in newgroupbox.phpΔ. If you wish to use NewGroupBox and also have the function available generally to be used when editing a new page for a new group, then you should only add to config.php:
$EditFunctions[] = 'AutoGroupPages';
Automatic creation of Uploads Directory
If you need to have a group uploads directory created automatically, when a first page in a new group is created, you can add the following to local/config.php:
function AutoCreateUploadDirectory($pagename, &$page, &$new) { global $IsPagePosted, $UploadFileFmt; if (!$IsPagePosted) return; $uploaddir = FmtPageName($UploadFileFmt, $pagename); mkdirp($uploaddir); } $EditFunctions[] = 'AutoCreateUploadDirectory';
Note that normally PmWiki manages fine to create uploads directories when the need (i.e. upload) arises.
Release Notes
- 2006-08-05: first release as published by Pm on the pmwiki-user list.
- 2007-05-18: Fixed problem with clobbering pagename. That is, if you created an initial group page that was the name of one of the pages created by AutoGroupPages(), then it would overwrite the page. BenWilson May 18, 2007, at 09:47 AM
See Also
Contributors
Comments
See discussion at AutoGroupPages-Talk
User notes +1: If you use, used or reviewed this recipe, you can add your name. These statistics appear in the Cookbook listings and will help newcomers browsing through the wiki.