Allow linking in internal links to subheadings.

This commit is contained in:
Starbeamrainbowlabs 2016-08-19 19:39:53 +01:00
parent 1abc963efd
commit 16076a8d8f
4 changed files with 34 additions and 4 deletions

View File

@ -5040,7 +5040,7 @@ class PeppermintParsedown extends ParsedownExtra
protected function inlineInternalLink($fragment)
{
global $pageindex;
global $pageindex, $env;
if(preg_match('/^\[\[([^\]]*)\]\]/', $fragment["text"], $matches))
{
@ -5053,6 +5053,18 @@ class PeppermintParsedown extends ParsedownExtra
$display = trim($parts[1]); // The text to display
}
$hashCode = "";
if(strpos($linkPage, "#") !== false)
{
// We want to link to a subsection of a page
$hashCode = substr($linkPage, strpos($linkPage, "#") + 1);
$linkPage = substr($linkPage, 0, strpos($linkPage, "#"));
// If $linkPage is empty then we want to link to the current page
if(strlen($linkPage) === 0)
$linkPage = $env->page;
}
// If the page doesn't exist, check varying different
// capitalisations to see if it exists under some variant.
if(empty($pageindex->$linkPage))
@ -5070,6 +5082,9 @@ class PeppermintParsedown extends ParsedownExtra
$this->internalLinkBase
);
if(strlen($hashCode) > 0)
$linkUrl .= "#$hashCode";
$result = [
"extent" => strlen($matches[0]),
"element" => [

View File

@ -203,7 +203,7 @@
"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, and also *requires* write access to the disk on first load.",
"id": "parser-parsedown",
"lastupdate": 1471599779,
"lastupdate": 1471631572,
"optional": false
}
]

View File

@ -82,7 +82,7 @@ register_module([
$pageindex->$new_name->$key = $value;
}
unset($pageindex->$page);
$pageindex->$new_name->filename = $new_name;
$pageindex->$new_name->filename = "$new_name.md";
// If this page has an associated file, then we should move that too
if(!empty($pageindex->$new_name->uploadedfile))

View File

@ -295,7 +295,7 @@ class PeppermintParsedown extends ParsedownExtra
protected function inlineInternalLink($fragment)
{
global $pageindex;
global $pageindex, $env;
if(preg_match('/^\[\[([^\]]*)\]\]/', $fragment["text"], $matches))
{
@ -308,6 +308,18 @@ class PeppermintParsedown extends ParsedownExtra
$display = trim($parts[1]); // The text to display
}
$hashCode = "";
if(strpos($linkPage, "#") !== false)
{
// We want to link to a subsection of a page
$hashCode = substr($linkPage, strpos($linkPage, "#") + 1);
$linkPage = substr($linkPage, 0, strpos($linkPage, "#"));
// If $linkPage is empty then we want to link to the current page
if(strlen($linkPage) === 0)
$linkPage = $env->page;
}
// If the page doesn't exist, check varying different
// capitalisations to see if it exists under some variant.
if(empty($pageindex->$linkPage))
@ -325,6 +337,9 @@ class PeppermintParsedown extends ParsedownExtra
$this->internalLinkBase
);
if(strlen($hashCode) > 0)
$linkUrl .= "#$hashCode";
$result = [
"extent" => strlen($matches[0]),
"element" => [