. * */ namespace Friendica\Module; use Friendica\BaseModule; use Friendica\Content\Nav; use Friendica\Content\Text\Markdown; use Friendica\DI; use Friendica\Network\HTTPException; /** * Shows the friendica help based on the /doc/ directory */ class Help extends BaseModule { public static function content(array $parameters = []) { Nav::setSelected('help'); $text = ''; $filename = ''; $config = DI::config(); $lang = DI::session()->get('language'); $lang = $lang ?? $config->get('system', 'language'); // @TODO: Replace with parameter from router if (DI::args()->getArgc() > 1) { $path = ''; // looping through the argv keys bigger than 0 to build // a path relative to /help for ($x = 1; $x < DI::args()->getArgc(); $x ++) { if (strlen($path)) { $path .= '/'; } $path .= DI::args()->get($x); } $title = basename($path); $filename = $path; $text = self::loadDocFile('doc/' . $path . '.md', $lang); DI::page()['title'] = DI::l10n()->t('Help:') . ' ' . str_replace('-', ' ', $title); } $home = self::loadDocFile('doc/Home.md', $lang); if (!$text) { $text = $home; $filename = "Home"; DI::page()['title'] = DI::l10n()->t('Help'); } else { DI::page()['aside'] = Markdown::convert($home, false); } if (!strlen($text)) { throw new HTTPException\NotFoundException(); } $html = Markdown::convert($text, false); if ($filename !== "Home") { // create TOC but not for home $lines = explode("\n", $html); $toc = "

TOC

"; } for ($k = $level + 1; $k < count($idNum); $k++) { $idNum[$k] = 0; } } if ($level > $lastLevel) { $toc .= "
  • "; } $html = implode("\n", $lines); DI::page()['aside'] = '
    ' . $toc . '
    ' . DI::page()['aside'] . '
    '; } return $html; } private static function loadDocFile($fileName, $lang = 'en') { $baseName = basename($fileName); $dirName = dirname($fileName); if (file_exists("$dirName/$lang/$baseName")) { return file_get_contents("$dirName/$lang/$baseName"); } if (file_exists($fileName)) { return file_get_contents($fileName); } return ''; } }