<?php if (!defined('PmWiki')) exit();

/*  File stylepage.php for pmwiki 2.  Copyright 2006 Hans Bracker
    This file is distributed under the terms of the GNU General Public 
    License as published by the Free Software Foundation; either 
    version 2 of the License, or (at your option) any later version.  

    This module enables loading of css style code from a wiki page.
    
    Usage: 
    markup (:stylepage:) or (:stylepage Group.StylePage:)
    (:stylepage:) loads css code from a default style page.
    (:stylepage Group.StylePage:) loads css code from an alternative page
    for instance 'Group.StylePage'. By default restricted to $SiteGroup, 
    so the style pages have the benefit of special protection.
    You can set a different group to hold Style pages than $SiteGroup,
    by setting $DefaultStyleGroup = 'GroupName';
    GroupName being the name of this group, for example 'StyleGroup'.
    
    $EnableDefautGroupStylesOnly = 0; will allow style pages in any group.
    
    Setting $EnableStylePage = 1; will load the default style page for all pages,
    without (:stylepage:) markup necessary. If (:stylepage Group.StylePage:)
    is used it will override the default style page.

    Version: 2006-08-25
*/

SDV($EnableStylePage, 0);
SDV($DefaultStylePage, 'Site.StyleSheet');
SDV($DefaultStyleGroup, $SiteGroup); 
SDV($EnableDefautGroupStylesOnly, 1);


Markup('stylepage', '<img', "/\\(:stylepage\\s?(.*?)\\s*?:\\)/e", "LoadStylePage('$1')");

function LoadStylePage($template) {
    global $HTMLStylesFmt, $DefaultStylePage, $DefaultStyleGroup, $EnableDefautGroupStylesOnly;
    if ($template) { 
        $stpg = MakePageName($pagename, $template);
        $group = PageVar($stpg, '$Group');
        if ($group==$DefaultStyleGroup||$EnableDefautGroupStylesOnly==0) $pg = $stpg;
        }
    else $pg = $DefaultStylePage;
    $page = ReadPage("$pg", READPAGE_CURRENT);
    $css = $page['text'];
    $HTMLStylesFmt['skincss'] = $css;
    return ;
}

if ($EnableStylePage==1) {
    LoadStylePage($DefaultStylePage);
    return ;
}