]> git.mxchange.org Git - friendica.git/commitdiff
help: load Home.md in aside when not in home,add new markdown syntax
authorFabrixxm <fabrix.xm@gmail.com>
Fri, 9 Nov 2012 08:56:45 +0000 (03:56 -0500)
committerFabrixxm <fabrix.xm@gmail.com>
Fri, 9 Nov 2012 08:56:45 +0000 (03:56 -0500)
New markdown block "warning"

    ! line1
    ! line2

will be rendered as

   <div class="md_warning"><p>line1</p><p>line2</p></div>

mod/help.php

index af05bd47c08109bbd23e70c8b960e7ba66f4decc..44edbf931861133e0b7a9a853ca4473f9b280ccb 100644 (file)
 <?php
+define( 'MARKDOWN_PARSER_CLASS',  'ExtendedMarkdown' );
+require_once('library/markdown.php');
 
-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 '';
-}}
+class ExtendedMarkdown extends MarkdownExtra_Parser {
+
+       function ExtendedMarkdown() {
+               $this->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 <pre> content, 
+               # so we need to fix that:
+//             $bq = preg_replace_callback('{(\s*<pre>.+?</pre>)}sx', array(&$this, '__doBlockWarning_callback2'), $bq);
+
+               return "\n" . $this->hashBlock("<div class='md_warning'>\n$bq\n</div>") . "\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 = "<style>.md_warning { padding: 1em; border: #ff0000 solid 2px; background-color: #f9a3a3; color: #ffffff;</style>".$html;
+       return $html;
+               
 }