<?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&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 ); ?>