<?php /** * DokuWiki Bootstrap3 Template: CSS Asset Dispatcher * * @link http://dokuwiki.org/template:bootstrap3 * @author Giuseppe Di Terlizzi <giuseppe.diterlizzi@gmail.com> * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) */ # NOTE Some Linux distributon change the location of DokuWiki core libraries (DOKU_INC) # # Bitnami (Docker) /opt/bitnami/dokuwiki # LinuxServer.io (Docker) /app/dokuwiki # Arch Linux /usr/share/webapps/dokuwiki # Debian/Ubuntu /usr/share/dokuwiki # # NOTE If DokuWiki core libraries (DOKU_INC) is in another location you can # create a PHP file in bootstrap3 root directory called "doku_inc.php" with # this content: # # <?php define('DOKU_INC', '/path/dokuwiki/'); # # (!) This file will be deleted on every upgrade of template $doku_inc_dirs = array( '/opt/bitnami/dokuwiki', # Bitnami (Docker) '/usr/share/webapps/dokuwiki', # Arch Linux '/usr/share/dokuwiki', # Debian/Ubuntu '/app/dokuwiki', # LinuxServer.io (Docker), realpath(dirname(__FILE__) . '/../../../'), # Default DokuWiki path ); # Load doku_inc.php file # if (file_exists(dirname(__FILE__) . '/doku_inc.php')) { require_once dirname(__FILE__) . '/doku_inc.php'; } if (! defined('DOKU_INC')) { foreach ($doku_inc_dirs as $dir) { if (! defined('DOKU_INC') && @file_exists("$dir/inc/init.php")) { define('DOKU_INC', "$dir/"); } } } // we do not use a session or authentication here (better caching) if (!defined('NOSESSION')) { define('NOSESSION', true); } if (!defined('NL')) { define('NL', "\n"); } // we gzip ourself here if (!defined('DOKU_DISABLE_GZIP_OUTPUT')) { define('DOKU_DISABLE_GZIP_OUTPUT', 1); } function css_error($error) { echo "html:before { content: '$error'; background-color: red; display: block; background-color: #fcc; border-color: #ebb; color: #000; padding: 0.5em; }"; } // TODO remove this cache-control in future header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); header('Content-Type: text/css; charset=utf-8'); if (!file_exists(DOKU_INC)) { $error = 'Problem with DOKU_INC directory. Please check your DokuWiki installation directory!'; css_error($error); die; } require_once DOKU_INC . 'inc/init.php'; global $INPUT; global $conf; global $ID; $ID = cleanID($INPUT->str('id', null)); $bootstrap_theme = tpl_getConf('bootstrapTheme'); $bootswatch_theme = tpl_getConf('bootswatchTheme'); $custom_theme = tpl_getConf('customTheme'); $theme_by_namespace = tpl_getConf('themeByNamespace'); $tpl_basedir = tpl_basedir(); $tpl_incdir = tpl_incdir(); $themes_filename = DOKU_CONF . 'bootstrap3.themes.conf'; $stylesheets = array(); $bootswatch_themes = array('cerulean', 'cosmo', 'cyborg', 'darkly', 'flatly', 'journal', 'lumen', 'paper', 'readable', 'sandstone', 'simplex', 'solar', 'slate', 'spacelab', 'superhero', 'united', 'yeti'); # Check Theme Switcher if (tpl_getConf('showThemeSwitcher')) { if (get_doku_pref('bootswatchTheme', null) !== null && get_doku_pref('bootswatchTheme', null) !== '') { $bootswatch_theme = get_doku_pref('bootswatchTheme', null); } if (!in_array($bootswatch_theme, $bootswatch_themes)) { $bootswatch_theme = 'default'; } } # Check Theme by Namespace if ($theme_by_namespace && file_exists($themes_filename)) { $config = confToHash($themes_filename); krsort($config); $theme_found = false; foreach ($config as $page => $theme) { if (preg_match("/^$page/", "$ID")) { list($bootstrap_theme, $bootswatch_theme) = explode('/', $theme); if ($bootstrap_theme && in_array($bootstrap_theme, array('default', 'optional', 'custom'))) { $theme_found = true; break; } if ($bootstrap_theme == 'bootswatch' && in_array($bootswatch_theme, $bootswatch_themes)) { $theme_found = true; break; } } } } # Check $ID and unload the template if ($theme_by_namespace && file_exists($themes_filename) && !$ID) { $bootstrap_theme = 'none'; } switch ($bootstrap_theme) { case 'optional': $stylesheets[] = 'assets/bootstrap/default/bootstrap.min.css'; $stylesheets[] = 'assets/bootstrap/default/bootstrap-theme.min.css'; break; case 'custom': $stylesheets[] = $custom_theme; break; case 'bootswatch': $bootswatch_url = 'assets/bootstrap'; if (file_exists($tpl_incdir . "assets/fonts/$bootswatch_theme.fonts.css")) { $stylesheets[] = "assets/fonts/$bootswatch_theme.fonts.css"; } $stylesheets[] = "$bootswatch_url/$bootswatch_theme/bootstrap.min.css"; break; case 'none': break; case 'default': default: $stylesheets[] = 'assets/bootstrap/default/bootstrap.min.css'; break; } $content = ''; foreach ($stylesheets as $style) { $content .= "@import url($style);" . NL; } print $content;