mirror of
https://github.com/sbrl/Pepperminty-Wiki.git
synced 2024-11-26 05:32:59 +00:00
Implement file gallery
This commit is contained in:
parent
8e9254774f
commit
f69955c0c7
5 changed files with 125 additions and 14 deletions
|
@ -349,6 +349,10 @@ textarea ~ input[type=submit] { margin: 0.5rem 0.8rem; padding: 0.5rem; font-wei
|
||||||
.editform input[type=text] { width: calc(100% - 0.3rem); box-sizing: border-box; }
|
.editform input[type=text] { width: calc(100% - 0.3rem); box-sizing: border-box; }
|
||||||
.editing_message { margin: 0.8rem; }
|
.editing_message { margin: 0.8rem; }
|
||||||
|
|
||||||
|
.file-gallery { margin: 0.5em; padding: 0.5em; list-style-type: none; }
|
||||||
|
.file-gallery > li { display: inline-block; min-width: attr(data-gallery-width); padding: 1em; text-align: center; }
|
||||||
|
.file-gallery > li img, .file-gallery > li video, .file-gallery > li audio { display: block; margin: 0 auto; background-color: white; }
|
||||||
|
|
||||||
.page-tags-display { margin: 0.5rem 0 0 0; padding: 0; list-style-type: none; }
|
.page-tags-display { margin: 0.5rem 0 0 0; padding: 0; list-style-type: none; }
|
||||||
.page-tags-display li { display: inline-block; margin: 0.5rem; padding: 0.5rem; background: #D2C3DD; white-space: nowrap; }
|
.page-tags-display li { display: inline-block; margin: 0.5rem; padding: 0.5rem; background: #D2C3DD; white-space: nowrap; }
|
||||||
.page-tags-display li a { color: #FB701A; text-decoration: none; }
|
.page-tags-display li a { color: #FB701A; text-decoration: none; }
|
||||||
|
@ -2767,7 +2771,7 @@ register_module([
|
||||||
|
|
||||||
default:
|
default:
|
||||||
http_response_code(501);
|
http_response_code(501);
|
||||||
$preview = errorimage("Unrecognised file type '$mime_type'.");
|
$preview = errorimage("Unrecognised file type '$mime_type'.", $target_size);
|
||||||
header("content-type: image/png");
|
header("content-type: image/png");
|
||||||
imagepng($preview);
|
imagepng($preview);
|
||||||
exit();
|
exit();
|
||||||
|
@ -2904,10 +2908,17 @@ function parse_size($size) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function errorimage($text)
|
function errorimage($text, $target_size)
|
||||||
{
|
{
|
||||||
$width = 640;
|
$width = 640;
|
||||||
$height = 480;
|
$height = 480;
|
||||||
|
|
||||||
|
if(!empty($target_size))
|
||||||
|
{
|
||||||
|
$width = $target_size;
|
||||||
|
$height = $target_size * (2 / 3);
|
||||||
|
}
|
||||||
|
|
||||||
$image = imagecreatetruecolor($width, $height);
|
$image = imagecreatetruecolor($width, $height);
|
||||||
imagefill($image, 0, 0, imagecolorallocate($image, 238, 232, 242)); // Set the background to #eee8f2
|
imagefill($image, 0, 0, imagecolorallocate($image, 238, 232, 242)); // Set the background to #eee8f2
|
||||||
$fontwidth = imagefontwidth(3);
|
$fontwidth = imagefontwidth(3);
|
||||||
|
@ -3495,7 +3506,7 @@ register_module([
|
||||||
|
|
||||||
register_module([
|
register_module([
|
||||||
"name" => "Help page",
|
"name" => "Help page",
|
||||||
"version" => "0.9.1",
|
"version" => "0.9.2",
|
||||||
"author" => "Starbeamrainbowlabs",
|
"author" => "Starbeamrainbowlabs",
|
||||||
"description" => "Adds a rather useful help page. Access through the 'help' action. This module also exposes help content added to Pepperminty Wiki's inbuilt invisible help section system.",
|
"description" => "Adds a rather useful help page. Access through the 'help' action. This module also exposes help content added to Pepperminty Wiki's inbuilt invisible help section system.",
|
||||||
"id" => "page-help",
|
"id" => "page-help",
|
||||||
|
@ -3510,7 +3521,7 @@ register_module([
|
||||||
* ██ ██ ███████ ███████ ██
|
* ██ ██ ███████ ███████ ██
|
||||||
*/
|
*/
|
||||||
add_action("help", function() {
|
add_action("help", function() {
|
||||||
global $settings, $version, $help_sections, $actions;
|
global $paths, $settings, $version, $help_sections, $actions;
|
||||||
|
|
||||||
// Sort the help sections by key
|
// Sort the help sections by key
|
||||||
ksort($help_sections, SORT_NATURAL);
|
ksort($help_sections, SORT_NATURAL);
|
||||||
|
@ -3538,6 +3549,7 @@ register_module([
|
||||||
$content .= "<p>" . implode(", ", array_keys(get_object_vars($actions))) . "</p>";
|
$content .= "<p>" . implode(", ", array_keys(get_object_vars($actions))) . "</p>";
|
||||||
$content .= "<h3>Environment</h3>\n";
|
$content .= "<h3>Environment</h3>\n";
|
||||||
$content .= "<p>$settings->sitename's root directory is " . (!is_writeable(__DIR__) ? "not " : "") . "writeable.</p>";
|
$content .= "<p>$settings->sitename's root directory is " . (!is_writeable(__DIR__) ? "not " : "") . "writeable.</p>";
|
||||||
|
$content .= "<p>The page index is currently " . human_filesize(filesize($paths->pageindex)) . " in size.</p>";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -3547,7 +3559,7 @@ register_module([
|
||||||
<p>Welcome to $settings->sitename!</p>
|
<p>Welcome to $settings->sitename!</p>
|
||||||
<p>$settings->sitename is powered by Pepperminty Wiki, a complete wiki in a box you can drop into your server and expect it to just <em>work</em>.</p>";
|
<p>$settings->sitename is powered by Pepperminty Wiki, a complete wiki in a box you can drop into your server and expect it to just <em>work</em>.</p>";
|
||||||
|
|
||||||
// todo Insert a table of contents here?
|
// Todo Insert a table of contents here?
|
||||||
|
|
||||||
foreach($help_sections as $index => $section)
|
foreach($help_sections as $index => $section)
|
||||||
{
|
{
|
||||||
|
@ -4147,7 +4159,7 @@ register_module([
|
||||||
|
|
||||||
register_module([
|
register_module([
|
||||||
"name" => "Parsedown",
|
"name" => "Parsedown",
|
||||||
"version" => "0.6.2",
|
"version" => "0.7",
|
||||||
"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 a some weight to your installation, and also *requires* write access to the disk on first load.",
|
"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 a some weight to your installation, and also *requires* write access to the disk on first load.",
|
||||||
"id" => "parser-parsedown",
|
"id" => "parser-parsedown",
|
||||||
|
@ -4295,6 +4307,50 @@ class PeppermintParsedown extends ParsedownExtra
|
||||||
if(strlen($variableValue) === 0)
|
if(strlen($variableValue) === 0)
|
||||||
$variableValue = "<em>(none yet!)</em>";
|
$variableValue = "<em>(none yet!)</em>";
|
||||||
break;
|
break;
|
||||||
|
case "+":
|
||||||
|
// If the upload module isn't present, then there's no point
|
||||||
|
// in checking for uploaded files
|
||||||
|
if(!module_exists("feature-upload"))
|
||||||
|
break;
|
||||||
|
|
||||||
|
$variableValue = [];
|
||||||
|
$subpages = get_subpages($pageindex, $env->page);
|
||||||
|
foreach($subpages as $pagename => $depth)
|
||||||
|
{
|
||||||
|
// Make sure that this is an uploaded file
|
||||||
|
if(!$pageindex->$pagename->uploadedfile)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
$mime_type = $pageindex->$pagename->uploadedfilemime;
|
||||||
|
|
||||||
|
$previewSize = 300;
|
||||||
|
$previewUrl = "?action=preview&size=$previewSize&page=" . rawurlencode($pagename);
|
||||||
|
|
||||||
|
$previewHtml = "";
|
||||||
|
switch(substr($mime_type, 0, strpos($mime_type, "/")))
|
||||||
|
{
|
||||||
|
case "video":
|
||||||
|
$previewHtml .= "<video src='$previewUrl' controls preload='metadata'>$pagename</video>\n";
|
||||||
|
break;
|
||||||
|
case "audio":
|
||||||
|
$previewHtml .= "<audio src='$previewUrl' controls preload='metadata'>$pagename</audio>\n";
|
||||||
|
break;
|
||||||
|
case "application":
|
||||||
|
case "image":
|
||||||
|
default:
|
||||||
|
$previewHtml .= "<img src='$previewUrl' />\n";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$previewHtml = "<a href='?page=" . rawurlencode($pagename) . "'>$previewHtml$pagename</a>";
|
||||||
|
|
||||||
|
$variableValue[$pagename] = "<li style='min-width: $previewSize" . "px; min-height: $previewSize" . "px;'>$previewHtml</li>";
|
||||||
|
}
|
||||||
|
|
||||||
|
if(count($variableValue) === 0)
|
||||||
|
$variableValue["default"] = "<li><em>(No files found)</em></li>\n";
|
||||||
|
$variableValue = implode("\n", $variableValue);
|
||||||
|
$variableValue = "<ul class='file-gallery'>$variableValue</ul>";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if(isset($params[$variableKey]))
|
if(isset($params[$variableKey]))
|
||||||
{
|
{
|
||||||
|
|
|
@ -68,7 +68,7 @@
|
||||||
"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",
|
||||||
"lastupdate": 1460185045,
|
"lastupdate": 1460189726,
|
||||||
"optional": false
|
"optional": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -118,11 +118,11 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Help page",
|
"name": "Help page",
|
||||||
"version": "0.9.1",
|
"version": "0.9.2",
|
||||||
"author": "Starbeamrainbowlabs",
|
"author": "Starbeamrainbowlabs",
|
||||||
"description": "Adds a rather useful help page. Access through the 'help' action. This module also exposes help content added to Pepperminty Wiki's inbuilt invisible help section system.",
|
"description": "Adds a rather useful help page. Access through the 'help' action. This module also exposes help content added to Pepperminty Wiki's inbuilt invisible help section system.",
|
||||||
"id": "page-help",
|
"id": "page-help",
|
||||||
"lastupdate": 1459002158,
|
"lastupdate": 1460186049,
|
||||||
"optional": false
|
"optional": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -190,11 +190,11 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Parsedown",
|
"name": "Parsedown",
|
||||||
"version": "0.6.2",
|
"version": "0.7",
|
||||||
"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 a some weight to your installation, and also *requires* write access to the disk on first load.",
|
"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 a some weight to your installation, and also *requires* write access to the disk on first load.",
|
||||||
"id": "parser-parsedown",
|
"id": "parser-parsedown",
|
||||||
"lastupdate": 1460184701,
|
"lastupdate": 1460190367,
|
||||||
"optional": false
|
"optional": false
|
||||||
}
|
}
|
||||||
]
|
]
|
|
@ -279,7 +279,7 @@ register_module([
|
||||||
|
|
||||||
default:
|
default:
|
||||||
http_response_code(501);
|
http_response_code(501);
|
||||||
$preview = errorimage("Unrecognised file type '$mime_type'.");
|
$preview = errorimage("Unrecognised file type '$mime_type'.", $target_size);
|
||||||
header("content-type: image/png");
|
header("content-type: image/png");
|
||||||
imagepng($preview);
|
imagepng($preview);
|
||||||
exit();
|
exit();
|
||||||
|
@ -416,10 +416,17 @@ function parse_size($size) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function errorimage($text)
|
function errorimage($text, $target_size)
|
||||||
{
|
{
|
||||||
$width = 640;
|
$width = 640;
|
||||||
$height = 480;
|
$height = 480;
|
||||||
|
|
||||||
|
if(!empty($target_size))
|
||||||
|
{
|
||||||
|
$width = $target_size;
|
||||||
|
$height = $target_size * (2 / 3);
|
||||||
|
}
|
||||||
|
|
||||||
$image = imagecreatetruecolor($width, $height);
|
$image = imagecreatetruecolor($width, $height);
|
||||||
imagefill($image, 0, 0, imagecolorallocate($image, 238, 232, 242)); // Set the background to #eee8f2
|
imagefill($image, 0, 0, imagecolorallocate($image, 238, 232, 242)); // Set the background to #eee8f2
|
||||||
$fontwidth = imagefontwidth(3);
|
$fontwidth = imagefontwidth(3);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
register_module([
|
register_module([
|
||||||
"name" => "Parsedown",
|
"name" => "Parsedown",
|
||||||
"version" => "0.6.2",
|
"version" => "0.7",
|
||||||
"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 a some weight to your installation, and also *requires* write access to the disk on first load.",
|
"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 a some weight to your installation, and also *requires* write access to the disk on first load.",
|
||||||
"id" => "parser-parsedown",
|
"id" => "parser-parsedown",
|
||||||
|
@ -149,6 +149,50 @@ class PeppermintParsedown extends ParsedownExtra
|
||||||
if(strlen($variableValue) === 0)
|
if(strlen($variableValue) === 0)
|
||||||
$variableValue = "<em>(none yet!)</em>";
|
$variableValue = "<em>(none yet!)</em>";
|
||||||
break;
|
break;
|
||||||
|
case "+":
|
||||||
|
// If the upload module isn't present, then there's no point
|
||||||
|
// in checking for uploaded files
|
||||||
|
if(!module_exists("feature-upload"))
|
||||||
|
break;
|
||||||
|
|
||||||
|
$variableValue = [];
|
||||||
|
$subpages = get_subpages($pageindex, $env->page);
|
||||||
|
foreach($subpages as $pagename => $depth)
|
||||||
|
{
|
||||||
|
// Make sure that this is an uploaded file
|
||||||
|
if(!$pageindex->$pagename->uploadedfile)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
$mime_type = $pageindex->$pagename->uploadedfilemime;
|
||||||
|
|
||||||
|
$previewSize = 300;
|
||||||
|
$previewUrl = "?action=preview&size=$previewSize&page=" . rawurlencode($pagename);
|
||||||
|
|
||||||
|
$previewHtml = "";
|
||||||
|
switch(substr($mime_type, 0, strpos($mime_type, "/")))
|
||||||
|
{
|
||||||
|
case "video":
|
||||||
|
$previewHtml .= "<video src='$previewUrl' controls preload='metadata'>$pagename</video>\n";
|
||||||
|
break;
|
||||||
|
case "audio":
|
||||||
|
$previewHtml .= "<audio src='$previewUrl' controls preload='metadata'>$pagename</audio>\n";
|
||||||
|
break;
|
||||||
|
case "application":
|
||||||
|
case "image":
|
||||||
|
default:
|
||||||
|
$previewHtml .= "<img src='$previewUrl' />\n";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$previewHtml = "<a href='?page=" . rawurlencode($pagename) . "'>$previewHtml$pagename</a>";
|
||||||
|
|
||||||
|
$variableValue[$pagename] = "<li style='min-width: $previewSize" . "px; min-height: $previewSize" . "px;'>$previewHtml</li>";
|
||||||
|
}
|
||||||
|
|
||||||
|
if(count($variableValue) === 0)
|
||||||
|
$variableValue["default"] = "<li><em>(No files found)</em></li>\n";
|
||||||
|
$variableValue = implode("\n", $variableValue);
|
||||||
|
$variableValue = "<ul class='file-gallery'>$variableValue</ul>";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if(isset($params[$variableKey]))
|
if(isset($params[$variableKey]))
|
||||||
{
|
{
|
||||||
|
|
|
@ -346,6 +346,10 @@ textarea ~ input[type=submit] { margin: 0.5rem 0.8rem; padding: 0.5rem; font-wei
|
||||||
.editform input[type=text] { width: calc(100% - 0.3rem); box-sizing: border-box; }
|
.editform input[type=text] { width: calc(100% - 0.3rem); box-sizing: border-box; }
|
||||||
.editing_message { margin: 0.8rem; }
|
.editing_message { margin: 0.8rem; }
|
||||||
|
|
||||||
|
.file-gallery { margin: 0.5em; padding: 0.5em; list-style-type: none; }
|
||||||
|
.file-gallery > li { display: inline-block; min-width: attr(data-gallery-width); padding: 1em; text-align: center; }
|
||||||
|
.file-gallery > li img, .file-gallery > li video, .file-gallery > li audio { display: block; margin: 0 auto; background-color: white; }
|
||||||
|
|
||||||
.page-tags-display { margin: 0.5rem 0 0 0; padding: 0; list-style-type: none; }
|
.page-tags-display { margin: 0.5rem 0 0 0; padding: 0; list-style-type: none; }
|
||||||
.page-tags-display li { display: inline-block; margin: 0.5rem; padding: 0.5rem; background: #D2C3DD; white-space: nowrap; }
|
.page-tags-display li { display: inline-block; margin: 0.5rem; padding: 0.5rem; background: #D2C3DD; white-space: nowrap; }
|
||||||
.page-tags-display li a { color: #FB701A; text-decoration: none; }
|
.page-tags-display li a { color: #FB701A; text-decoration: none; }
|
||||||
|
|
Loading…
Reference in a new issue