mirror of
https://github.com/sbrl/Pepperminty-Wiki.git
synced 2024-11-22 16:33:00 +00:00
Refactor errorimage into core & greatly improve it
This commit is contained in:
parent
ca6546677b
commit
6d19af2e1b
4 changed files with 66 additions and 37 deletions
|
@ -432,6 +432,58 @@ function system_extension_mime_type($ext) {
|
||||||
return isset($types[$ext]) ? $types[$ext] : null;
|
return isset($types[$ext]) ? $types[$ext] : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates an images containing the specified text.
|
||||||
|
* Useful for sending errors back to the client.
|
||||||
|
* @package core
|
||||||
|
* @param string $text The text to include in the image.
|
||||||
|
* @param int $target_size The target width to aim for when creating
|
||||||
|
* the image. Not not specified, a value is
|
||||||
|
* determined automatically.
|
||||||
|
* @return resource The handle to the generated GD image.
|
||||||
|
*/
|
||||||
|
function errorimage($text, $target_size = null)
|
||||||
|
{
|
||||||
|
$width = 0;
|
||||||
|
$height = 0;
|
||||||
|
$border_size = 10; // in px, if $target_size isn't null has no effect
|
||||||
|
$line_spacing = 2; // in px
|
||||||
|
$font_size = 5; // 1 - 5
|
||||||
|
|
||||||
|
$font_width = imagefontwidth($font_size); // in px
|
||||||
|
$font_height = imagefontheight($font_size); // in px
|
||||||
|
$text_lines = array_map("trim", explode("\n", $text));
|
||||||
|
|
||||||
|
if(!empty($target_size)) {
|
||||||
|
$width = $target_size;
|
||||||
|
$height = $target_size * (2 / 3);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$height = count($text_lines) * $font_height +
|
||||||
|
(count($text_lines) - 1) * $line_spacing +
|
||||||
|
$border_size * 2;
|
||||||
|
foreach($text_lines as $line)
|
||||||
|
$width = max($width, $font_width * strlen($line));
|
||||||
|
$width += $border_size * 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
$image = imagecreatetruecolor($width, $height);
|
||||||
|
imagefill($image, 0, 0, imagecolorallocate($image, 250, 249, 251)); // Set the background to #faf8fb
|
||||||
|
|
||||||
|
$i = 0;
|
||||||
|
foreach($text_lines as $line) {
|
||||||
|
imagestring($image, $font_size,
|
||||||
|
($width / 2) - (($font_width * strlen($line)) / 2),
|
||||||
|
$border_size + $i * ($font_height + $line_spacing),
|
||||||
|
$line,
|
||||||
|
imagecolorallocate($image, 68, 39, 113) // #442772
|
||||||
|
);
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $image;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generates a stack trace.
|
* Generates a stack trace.
|
||||||
* @package core
|
* @package core
|
||||||
|
|
|
@ -162,10 +162,10 @@
|
||||||
{
|
{
|
||||||
"id": "feature-upload",
|
"id": "feature-upload",
|
||||||
"name": "Uploader",
|
"name": "Uploader",
|
||||||
"version": "0.6.1",
|
"version": "0.6.2",
|
||||||
"author": "Starbeamrainbowlabs",
|
"author": "Starbeamrainbowlabs",
|
||||||
"description": "Adds the ability to upload files to Pepperminty Wiki. Uploaded files act as pages and have the special 'File\/' prefix.",
|
"description": "Adds the ability to upload files to Pepperminty Wiki. Uploaded files act as pages and have the special 'File\/' prefix.",
|
||||||
"lastupdate": 1568296731,
|
"lastupdate": 1571603165,
|
||||||
"optional": false,
|
"optional": false,
|
||||||
"extra_data": []
|
"extra_data": []
|
||||||
},
|
},
|
||||||
|
@ -337,7 +337,7 @@
|
||||||
"version": "0.10",
|
"version": "0.10",
|
||||||
"author": "Emanuil Rusev & Starbeamrainbowlabs",
|
"author": "Emanuil Rusev & Starbeamrainbowlabs",
|
||||||
"description": "An upgraded (now default!) parser based on Emanuil Rusev's Parsedown Extra PHP library (https:\/\/github.com\/erusev\/parsedown-extra), which is licensed MIT. Please be careful, as this module adds some weight to your installation.",
|
"description": "An upgraded (now default!) parser based on Emanuil Rusev's Parsedown Extra PHP library (https:\/\/github.com\/erusev\/parsedown-extra), which is licensed MIT. Please be careful, as this module adds some weight to your installation.",
|
||||||
"lastupdate": 1571601235,
|
"lastupdate": 1571603632,
|
||||||
"optional": false,
|
"optional": false,
|
||||||
"extra_data": {
|
"extra_data": {
|
||||||
"Parsedown.php": "https:\/\/raw.githubusercontent.com\/erusev\/parsedown\/fe7a50eceb4a3c867cc9fa9c0aa906b1067d1955\/Parsedown.php",
|
"Parsedown.php": "https:\/\/raw.githubusercontent.com\/erusev\/parsedown\/fe7a50eceb4a3c867cc9fa9c0aa906b1067d1955\/Parsedown.php",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
register_module([
|
register_module([
|
||||||
"name" => "Uploader",
|
"name" => "Uploader",
|
||||||
"version" => "0.6.1",
|
"version" => "0.6.2",
|
||||||
"author" => "Starbeamrainbowlabs",
|
"author" => "Starbeamrainbowlabs",
|
||||||
"description" => "Adds the ability to upload files to Pepperminty Wiki. Uploaded files act as pages and have the special 'File/' prefix.",
|
"description" => "Adds the ability to upload files to Pepperminty Wiki. Uploaded files act as pages and have the special 'File/' prefix.",
|
||||||
"id" => "feature-upload",
|
"id" => "feature-upload",
|
||||||
|
@ -656,37 +656,4 @@ function getsvgsize($svgFilename)
|
||||||
return $imageSize;
|
return $imageSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates an images containing the specified text.
|
|
||||||
* Useful for sending errors back to the client.
|
|
||||||
* @package feature-upload
|
|
||||||
* @param string $text The text to include in the image.
|
|
||||||
* @param int $target_size The target width to aim for when creating
|
|
||||||
* the image.
|
|
||||||
* @return resource The handle to the generated GD image.
|
|
||||||
*/
|
|
||||||
function errorimage($text, $target_size = null)
|
|
||||||
{
|
|
||||||
$width = 640;
|
|
||||||
$height = 480;
|
|
||||||
|
|
||||||
if(!empty($target_size))
|
|
||||||
{
|
|
||||||
$width = $target_size;
|
|
||||||
$height = $target_size * (2 / 3);
|
|
||||||
}
|
|
||||||
|
|
||||||
$image = imagecreatetruecolor($width, $height);
|
|
||||||
imagefill($image, 0, 0, imagecolorallocate($image, 238, 232, 242)); // Set the background to #eee8f2
|
|
||||||
$fontwidth = imagefontwidth(3);
|
|
||||||
imagestring($image, 3,
|
|
||||||
($width / 2) - (($fontwidth * strlen($text)) / 2),
|
|
||||||
($height / 2) - (imagefontheight(3) / 2),
|
|
||||||
$text,
|
|
||||||
imagecolorallocate($image, 17, 17, 17) // #111111
|
|
||||||
);
|
|
||||||
|
|
||||||
return $image;
|
|
||||||
}
|
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -52,6 +52,16 @@ register_module([
|
||||||
)));
|
)));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
add_action("parsedown-render-ext", function() {
|
||||||
|
global $settings, $env, $paths;
|
||||||
|
|
||||||
|
if(!isset($_GET["source"])) {
|
||||||
|
http_response_code(400);
|
||||||
|
header("content-type: image/png");
|
||||||
|
imagepng(errorimage("Error: No source text \nspecified."));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ███████ ████████ █████ ████████ ██ ███████ ████████ ██ ██████ ███████
|
* ███████ ████████ █████ ████████ ██ ███████ ████████ ██ ██████ ███████
|
||||||
* ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
|
* ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
|
||||||
|
|
Loading…
Reference in a new issue