<?php
/*
  * This is an extention of the ideas laid out in flexlayout and ExternalCSS.
  * 
  * 
  

*/
//Variables that you might want to change. (do so in local.php)

SDV($ThemeEnable, 1);
SDV($BaseCSS, "wiki.css");
SDV($BaseCSSDir, "/local/public/css/");
SDV($ThemeDefault, "default");



$ThemeDir = $BaseCSSDir."themes/";
$GroupDir = $BaseCSSDir."groups/";
$StyleList = "
<link rel=\"stylesheet\" href=\"\$ScriptDir".$BaseCSSDir.$BaseCSS."\" media=\"screen\" type=\"text/css\" />
<link rel=\"stylesheet\" href=\"\$ScriptDir".$BaseCSSDir."print.css\" media=\"print\" type=\"text/css\" />
";

/*
* This is where all the themeing stuff is done.
* Creates a list of themes, includes the required javascript, and adds the [[$Theme]] markup  
*/
if ($ThemeEnable == 1 && $handle = opendir('.'.$ThemeDir)) {
	$StyleTagFmt = "";
	$StyleAltList = "";
	$theme = null;
	
	if($action=="theme"){
		$theme = $_GET['newtheme'];
		setcookie ('wikitheme', $theme, time()+31536000, $HTTP_SERVER_VARS['SCRIPT_NAME'], $HTTP_SERVER_VARS['SERVER_NAME'], '0');
	}else{ 
		$theme = $_COOKIE['wikitheme'];
	}
	if($theme == null ){
		$theme = $ThemeDefault;
	}
    while (false !== ($file = readdir($handle))) { 
        if ($file != "." && $file != ".." && substr($file, -4) == ".css") { 
            if($theme == substr($file,0,-4)  ){
    			$StyleList = $StyleList . "<link rel=\"stylesheet\" href=\"\$ScriptDir" . $ThemeDir . $file . "\" media=\"screen\" title=\"" .substr($file,0,-4). "\" type=\"text/css\" />\n"; 
    		}else{
				$StyleAltList = $StyleAltList . "<link rel=\"alternate stylesheet\" href=\"\$ScriptDir" . $ThemeDir . $file . "\" media=\"screen\" title=\"" .substr($file,0,-4). "\" type=\"text/css\" />\n"; 
			}
        	$StyleTagFmt = $StyleTagFmt . "<option  value=\"".substr($file,0,-4)."\">".substr($file,0,-4)."</option>\n";
        } 
    }
	$StyleList = $StyleList . $StyleAltList;
    closedir($handle); 
	    
	$StyleTagFmt = "<select name=\"newtheme\" onChange=\"var date = new Date();date.setTime(date.getTime()+(365*24*60*60*1000));document.cookie = 'wikitheme='+this.options[this.options.selectedIndex].value+'; expires='+date.toGMTString()+'; path=".$HTTP_SERVER_VARS['SCRIPT_NAME']."; domain=".$HTTP_SERVER_VARS['SERVER_NAME']."';location.reload();\">\n<option value=\"".substr($ThemeDefault,0,-4)."\">Themes</option>\n" . $StyleTagFmt ."</select>";
    SDV($InlineReplacements['/\\[\\[\\$Theme\\]\\]/e'],"FmtPageName(\$GLOBALS['StyleTagFmt'],\$pagename)");
}

//Stole a bit (4 lines) from ExternalCSS (Thanks!) Used to get group and title existance.
if (preg_match("/^($GroupNamePattern)([.\\/]($PageTitlePattern))?\$/",$pagename,$match)) {
	$group=''; $title='';
	$group = $match[1];
	$title = @$match[3];

	//Only include the stylesheets if they exist. 
    if(file_exists(".".$GroupDir.$group.".css"))
    {  	$StyleList = $StyleList . "\n<link rel=\"stylesheet\" href=\"\$ScriptDir".$GroupDir."\$Group.css\" media=\"screen\"  type=\"text/css\" />";}
    if(file_exists(".".$GroupDir.$group.".".$title.".css"))
    {  	$StyleList = $StyleList . "\n<link rel=\"stylesheet\" href=\"\$ScriptDir".$GroupDir."\$Group.\$Title.css\" media=\"screen\"  type=\"text/css\" />";}
}

$HTMLHeaderFmt = $StyleList;
$HTMLBodyFmt = "</head><body>\n";
$HTMLEndFmt = "</body></html>\n";

$PageHeaderFmt = array(
"<div id='header'>
<h1>\$WikiTitle : 
<em><a href='\$ScriptUrl/\$Group'>\$Group</a>.<a href='\$ScriptUrl?action=search&amp;text=\$Title_'>\$Title</a></em></h1>
</div>\n",
		"<div id='menu'>\n",
		"wiki:Main.WebMenu",
		"</div>\n<div id='main'>\n"
		);
$PageFooterFmt = "</div>\n<div id='footer'>Last modified \$LastModified</div>\n";

$HandleSearchFmt = array(
	&$HTMLStartFmt,
	&$PageHeaderFmt,
	&$PageSearchFmt,
	&$PageFooterFmt,
	&$HTMLEndFmt
	);

$PageDiffFmt = array(
	&$PageHeaderFmt,
	$PageDiffFmt	
	);
$PageDiffFootFmt = array(
	$PageDiffFootFmt,
	&$PageFooterFmt
	);

$PageEditFmt = "<a name='top'></a><h1>Editing \$PageName</h1>
<form action='\$PageUrl' method='post' >
<input type='hidden' name='pagename' value='\$PageName' />
<input type='hidden' name='action' value='edit' />
<textarea name='text' rows='25' cols='80' onkeydown='if (event.keyCode == 27) event.returnValue=false;'>
\$Text
</textarea><br />
<input type='submit' name='post' value=' $[Save] ' />
<input type='submit' name='preview' value=' $[Preview] ' />
<input type='reset' value=' $[Reset] ' />
</form>";

$HandleEditFmt = array (
	&$HTMLStartFmt,
	&$PageHeaderFmt,
	&$PageEditFmt,
	"wiki:PmWiki.EditQuickReference",
	&$PagePreviewFmt,
	&$PageFooterFmt,
	&$HTMLEndFmt
);

?>