[pmwiki-users] Separate wikilib.d into separate directories

Petko Yotov 5ko at 5ko.fr
Mon Jul 14 11:28:40 CDT 2008


On Monday 14 July 2008 16:40:02 Patrick R. Michaud wrote:
> I'd like to split the wikilib.d/ directory into separate directories
> for "system" pages (Site.*, SiteAdmin.*) and "documentation" pages
> (PmWiki.*, others).  
[...]
> Site* files need to remain in wikilib.d/, we need a
> new place for the documentation.  I propose wikidoc.d/ , but would
> like to hear others' ideas and suggestions.

I strongly support the split. 

There are two types of recipes that manipulate the $WikiLibDirs array.

See http://pmwiki.org/wiki/Category/CustomPageStore

1. Recipes providing some wiki pages (docs, config, templates) as simple 
pmwiki files in their own "recipe.d" distribution : skins, blogs...
These recipes currently need to insert their "recipe.d" directory just before 
wikilib.d in $WikiLibDirs.

2. Recipes providing new PageStore classes: SQLite, CompressedPageStore...
These recipes need to prepend their PageStore class before any other existing 
class, that is before the existing wiki.d directory.


The current "module guidelines" in the cookbook show how to insert a "recipe 
directory" in the $WikiLibDirs array, just before the last one:

  array_splice($WikiLibDirs, isset($WikiLibDirs[1])?-1:1, 0, 
        array(new PageStore('$FarmD/recipe.d/{$FullName}')));

If a recipe is using page names different than PmWiki's existing 
documentation, even if the recipe directory is inserted between wikilib.d and 
wikidoc.d, the recipe will continue to work.


Other (sort of) guidelines about recipes adding a PageStore class is to give 
instructions to the wiki admin, how to do it from config.php. This way it 
will be easier to find possible conflicts.


> If we also need to see about providing a function for recipes to
> manipulate $WikiLibDirs, I'm open to proposals for that.

I would very strongly support the addition of such a function, before version 
2.2 stable. Recipe authors providing wiki pages should be able to add their 
recipe.d directories easier than what is done now.

One way to do it could be similar to Markup() function, for example:

  # PmWiki core
  WikiStore('wikilib.d', 'lib');
  WikiStore('wikidoc.d', 'lib');
  WikiStore('wiki.d', 'work');

  # recipe.php/skin.php adding a recipe.d
  WikiStore('recipe.d', '<lib');

  # recipe.php adding a PageStore class
  WikiStore('sqlite', '_begin', new   
     PageStoreSQLite($WorkDir.'/pmwiki.sqlite.db'));

  # config.php: wiki admin disabling wikidoc.d 
  WikiStore('wikidoc.d', 'disabled');

  # config.php: wiki admin adding docs in French
  WikiStore('wikifr.d', 'lib');

Thanks,
Petko



More information about the pmwiki-users mailing list