diff --git a/mod/help.php b/mod/help.php index af05bd47c0..44edbf9318 100644 --- a/mod/help.php +++ b/mod/help.php @@ -1,47 +1,101 @@ block_gamut += array( + "doBlockWarning" => 45, + ); + parent::MarkdownExtra_Parser(); + } + function doBlockWarning($text) { + $text = preg_replace_callback('/ + ( # Wrap whole match in $1 + (?> + ^[ ]*![ ]? # "!" at the start of a line + .+\n # rest of the first line + (.+\n)* # subsequent consecutive lines + \n* # blanks + )+ + ) + /xm', array(&$this, '_doBlockWarning_callback'), $text); + + return $text; + } + + function _doBlockWarning_callback($matches) { + $bq = $matches[1]; + # trim one level of quoting - trim whitespace-only lines + $bq = preg_replace('/^[ ]*![ ]?|^[ ]+$/m', '', $bq); + $bq = $this->runBlockGamut($bq); # recurse + + $bq = preg_replace('/^/m', " ", $bq); + # These leading spaces cause problem with
 content, 
+		# so we need to fix that:
+//		$bq = preg_replace_callback('{(\s*
.+?
)}sx', array(&$this, '__doBlockWarning_callback2'), $bq); + + return "\n" . $this->hashBlock("
\n$bq\n
") . "\n\n"; + } + + function _doBlockWarning_callback2($matches) { + $pre = $matches[1]; + $pre = preg_replace('/^ /m', '', $pre); + return $pre; + } + +} + +if (!function_exists('load_doc_file')) { + + function load_doc_file($s) { + global $lang; + if (!isset($lang)) + $lang = 'en'; + $b = basename($s); + $d = dirname($s); + if (file_exists("$d/$lang/$b")) + return file_get_contents("$d/$lang/$b"); + if (file_exists($s)) + return file_get_contents($s); + return ''; + } + +} function help_content(&$a) { + + nav_set_selected('help'); global $lang; - require_once('library/markdown.php'); - $text = ''; - if($a->argc > 1) { + if ($a->argc > 1) { $text = load_doc_file('doc/' . $a->argv[1] . '.md'); - $a->page['title'] = t('Help:') . ' ' . str_replace('-',' ',notags($a->argv[1])); + $a->page['title'] = t('Help:') . ' ' . str_replace('-', ' ', notags($a->argv[1])); } - if(! $text) { - $text = load_doc_file('doc/Home.md'); + $home = load_doc_file('doc/Home.md'); + if (!$text) { + $text = $home; $a->page['title'] = t('Help'); + } else { + $a->page['aside'] = Markdown($home); } - - if(! strlen($text)) { + + if (!strlen($text)) { header($_SERVER["SERVER_PROTOCOL"] . ' 404 ' . t('Not Found')); $tpl = get_markup_template("404.tpl"); return replace_macros($tpl, array( - '$message' => t('Page not found.' ) - )); + '$message' => t('Page not found.') + )); } - return Markdown($text); - + $html = Markdown($text); + $html = "".$html; + return $html; + }