Update Module\Help to use anchor words for titles

- Previous anchors are kept for links backward compatibility
This commit is contained in:
Hypolite Petovan 2019-12-05 19:46:59 -05:00
parent 8016cb3cee
commit c6d422a188
3 changed files with 14 additions and 10 deletions

View File

@ -99,7 +99,7 @@ See Also
* [Profiles](help/Profiles) * [Profiles](help/Profiles)
* [Global Directory](help/Making-Friends#1_1) * [Global Directory](help/Making-Friends#The+Directories)
* [Groups and Privacy](help/Groups-and-Privacy) * [Groups and Privacy](help/Groups-and-Privacy)

View File

@ -12,7 +12,7 @@ This kind of functionality requires a bit more of the host system than the typic
Not every PHP/MySQL hosting provider will be able to support Friendica. Not every PHP/MySQL hosting provider will be able to support Friendica.
Many will. Many will.
But **please** review the [requirements](#1_2_1) and confirm these with your hosting provider prior to installation. But **please** review the [requirements](#Requirements) and confirm these with your hosting provider prior to installation.
## Support ## Support
If you encounter installation issues, please let us know via the [helper](http://forum.friendi.ca/profile/helpers) or the [developer](https://forum.friendi.ca/profile/developers) forum or [file an issue](https://github.com/friendica/friendica/issues). If you encounter installation issues, please let us know via the [helper](http://forum.friendi.ca/profile/helpers) or the [developer](https://forum.friendi.ca/profile/developers) forum or [file an issue](https://github.com/friendica/friendica/issues).
@ -108,7 +108,7 @@ Create an empty database and note the access details (hostname, username, passwo
Friendica needs the permission to create and delete fields and tables in its own database. Friendica needs the permission to create and delete fields and tables in its own database.
Please check the [troubleshooting](#1_6) section if running on MySQL 5.7.17 or newer. Please check the [troubleshooting](#Troubleshooting) section if running on MySQL 5.7.17 or newer.
### Option A: Run the installer ### Option A: Run the installer

View File

@ -65,10 +65,11 @@ class Help extends BaseModule
$lastLevel = 1; $lastLevel = 1;
$idNum = [0, 0, 0, 0, 0, 0, 0]; $idNum = [0, 0, 0, 0, 0, 0, 0];
foreach ($lines as &$line) { foreach ($lines as &$line) {
if (substr($line, 0, 2) == "<h") { $matches = [];
$level = substr($line, 2, 1); foreach ($lines as &$line) {
if ($level != "r") { if (preg_match('#<h([1-6])>([^<]+?)</h\1>#i', $line, $matches)) {
$level = intval($level); $level = $matches[1];
$anchor = urlencode($matches[2]);
if ($level < $lastLevel) { if ($level < $lastLevel) {
for ($k = $level; $k < $lastLevel; $k++) { for ($k = $level; $k < $lastLevel; $k++) {
$toc .= "</ul></li>"; $toc .= "</ul></li>";
@ -84,10 +85,13 @@ class Help extends BaseModule
} }
$idNum[$level] ++; $idNum[$level] ++;
$href = $a->getBaseURL() . "/help/{$filename}#{$anchor}";
$toc .= "<li><a href=\"{$href}\">" . strip_tags($line) . "</a></li>";
$id = implode("_", array_slice($idNum, 1, $level)); $id = implode("_", array_slice($idNum, 1, $level));
$href = $a->getBaseURL() . "/help/{$filename}#{$id}"; $line = "<a name=\"{$id}\"></a>" . $line;
$toc .= "<li><a href='{$href}'>" . strip_tags($line) . "</a></li>"; $line = "<a name=\"{$anchor}\"></a>" . $line;
$line = "<a name='{$id}'></a>" . $line;
$lastLevel = $level; $lastLevel = $level;
} }
} }