mirror of
https://github.com/sbrl/Pepperminty-Wiki.git
synced 2024-11-25 05:22:59 +00:00
Finish implementing $settings->css_custom
This commit is contained in:
parent
6120fa8842
commit
e91852ca68
3 changed files with 24 additions and 11 deletions
|
@ -9,6 +9,7 @@ This file holds the changelog for Pepperminty Wiki. This is the master list of t
|
||||||
- NOTE Don't forget to tell people how to turn the theme auto-updater off in this changelog
|
- NOTE Don't forget to tell people how to turn the theme auto-updater off in this changelog
|
||||||
- Added automatic dark mode to default theme using `prefers-color-scheme`
|
- Added automatic dark mode to default theme using `prefers-color-scheme`
|
||||||
- [Module API] Added new `minify_css` module API function by refactoring the page renderer
|
- [Module API] Added new `minify_css` module API function by refactoring the page renderer
|
||||||
|
- [Module API] Change `page_renderer::is_css_url()` to require an argument
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
- Fixed a bug in the search query performance metrics
|
- Fixed a bug in the search query performance metrics
|
||||||
|
|
|
@ -555,18 +555,18 @@ function render_editor($editorName) {
|
||||||
*/
|
*/
|
||||||
function minify_css($css_str) {
|
function minify_css($css_str) {
|
||||||
// Remove comments
|
// Remove comments
|
||||||
$css = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', "", $css);
|
$result = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', "", $css_str);
|
||||||
// Cut down whitespace
|
// Cut down whitespace
|
||||||
$css = preg_replace('/\s+/', " ", $css);
|
$result = preg_replace('/\s+/', " ", $result);
|
||||||
// Remove whitespace after colons and semicolons
|
// Remove whitespace after colons and semicolons
|
||||||
$css = str_replace([
|
$result = str_replace([
|
||||||
" :", ": ", "; ",
|
" :", ": ", "; ",
|
||||||
" { ", " } ", "{ ", " {", "} ", " }"
|
" { ", " } ", "{ ", " {", "} ", " }"
|
||||||
], [
|
], [
|
||||||
":", ":", ";",
|
":", ":", ";",
|
||||||
"{", "}", "{", "{", "}", "}"
|
"{", "}", "{", "{", "}", "}"
|
||||||
], $css);
|
], $result);
|
||||||
return $css;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -288,11 +288,14 @@ class page_renderer
|
||||||
/**
|
/**
|
||||||
* Figures out whether $settings->css is a url, or a string of css.
|
* Figures out whether $settings->css is a url, or a string of css.
|
||||||
* A url is something starting with "protocol://" or simply a "/".
|
* A url is something starting with "protocol://" or simply a "/".
|
||||||
|
* Before v0.20, this method took no arguments and checked $settings->css directly.
|
||||||
|
* @apiVerion 0.20.0
|
||||||
|
* @param string $str The CSS string to check.
|
||||||
* @return bool True if it's a url - false if we assume it's a string of css.
|
* @return bool True if it's a url - false if we assume it's a string of css.
|
||||||
*/
|
*/
|
||||||
public static function is_css_url() {
|
public static function is_css_url($str) {
|
||||||
global $settings;
|
global $settings;
|
||||||
return preg_match("/^[^\/]*\/\/|^\/[^\*]/", $settings->css);
|
return preg_match("/^[^\/]*\/\/|^\/[^\*]/", $str);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Renders all the CSS as HTML.
|
* Renders all the CSS as HTML.
|
||||||
|
@ -304,21 +307,30 @@ class page_renderer
|
||||||
global $settings, $defaultCSS;
|
global $settings, $defaultCSS;
|
||||||
|
|
||||||
$result = "";
|
$result = "";
|
||||||
if(self::is_css_url()) {
|
$css = "\n";
|
||||||
|
if(self::is_css_url($settings->css)) {
|
||||||
if($settings->css[0] === "/") // Push it if it's a relative resource
|
if($settings->css[0] === "/") // Push it if it's a relative resource
|
||||||
self::add_server_push_indicator("style", $settings->css);
|
self::add_server_push_indicator("style", $settings->css);
|
||||||
$result .= "<link rel='stylesheet' href='$settings->css' />\n";
|
$result .= "<link rel='stylesheet' href='$settings->css' />\n";
|
||||||
} else {
|
} else {
|
||||||
$css = $settings->css == "auto" ? $defaultCSS : $settings->css;
|
$css .= $settings->css == "auto" ? $defaultCSS : $settings->css;
|
||||||
|
|
||||||
if(!empty($settings->optimize_pages))
|
if(!empty($settings->optimize_pages))
|
||||||
$css = minify_css($css);
|
$css = minify_css($css);
|
||||||
$result .= "<style>$css</style>\n";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!empty($settings->css_custom)) {
|
if(!empty($settings->css_custom)) {
|
||||||
$css .= "\n/*** Custom CSS ***/\n$settings->css_custom\n/******************/\n";
|
if(self::is_css_url($settings->css_custom)) {
|
||||||
|
if($settings->css_custom[0] === "/") // Push it if it's a relative resource
|
||||||
|
self::add_server_push_indicator("style", $settings->css);
|
||||||
|
$result .= "<link rel='stylesheet' href='$settings->css_custom' />\n";
|
||||||
}
|
}
|
||||||
|
$css .= "\n/*** Custom CSS ***/\n";
|
||||||
|
$css .= !empty($settings->optimize_pages) ? minify_css($settings->css_custom) : $settings->css_custom;
|
||||||
|
$css .= "\n/******************/\n";
|
||||||
|
}
|
||||||
|
$result .= "<style>$css</style>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue