diff --git a/tinyfilemanager.php b/tinyfilemanager.php index 4edb2bbc..a61899ad 100644 --- a/tinyfilemanager.php +++ b/tinyfilemanager.php @@ -43,6 +43,12 @@ // array('Username' => 'Directory path', 'Username2' => 'Directory path', ...) $directories_users = array(); +// Enable Markdown files (.md) preview in view's page +$use_markdown = true; + +// Enable Mermaid diagrams (https://mermaid.js.org/) in markdown files +$use_mermaid = true; + // Enable highlight.js (https://highlightjs.org/) on view's page $use_highlightjs = true; @@ -185,6 +191,8 @@ 'js-jquery' => '', 'js-jquery-datatables' => '', 'js-highlightjs' => '', + 'js-marked' => '', + 'js-mermaid' => '', 'pre-jsdelivr' => '', 'pre-cloudflare' => '' ); @@ -473,6 +481,8 @@ function getClientIP() define('FM_PATH', $p); define('FM_USE_AUTH', $use_auth); define('FM_EDIT_FILE', $edit_files); +define('FM_USE_MARKDOWN', $use_markdown); +define('FM_USE_MERMAID', $use_mermaid); defined('FM_ICONV_INPUT_ENC') || define('FM_ICONV_INPUT_ENC', $iconv_input_encoding); defined('FM_USE_HIGHLIGHTJS') || define('FM_USE_HIGHLIGHTJS', $use_highlightjs); defined('FM_HIGHLIGHTJS_STYLE') || define('FM_HIGHLIGHTJS_STYLE', $highlightjs_style); @@ -1765,6 +1775,7 @@ function getSelected($l) $is_zip = false; $is_gzip = false; + $is_md = false; $is_image = false; $is_audio = false; $is_video = false; @@ -1778,6 +1789,14 @@ function getSelected($l) if ($online_viewer && $online_viewer !== 'false' && in_array($ext, fm_get_onlineViewer_exts())) { $is_onlineViewer = true; + } elseif ($ext == 'md' || $ext == 'markdown') { + if ( FM_USE_MARKDOWN ) { + $is_md = true; + $view_title = 'Markdown'; + } else { + $is_text = true; + } + $content = file_get_contents($file_path); } elseif ($ext == 'zip' || $ext == 'tar') { $is_zip = true; $view_title = 'Archive'; @@ -1915,6 +1934,14 @@ class="edit-file"> '; + } elseif (FM_USE_MARKDOWN && $is_md) { + // Markdown content + echo '
'. fm_enc($content) . '
'; + echo ''; } elseif ($is_text) { if (FM_USE_HIGHLIGHTJS) { // highlight @@ -2969,7 +2996,7 @@ function fm_get_file_icon_class($path) case 'config': case 'twig': case 'tpl': - case 'md': + // case 'md': case 'gitignore': case 'c': case 'cpp': @@ -3128,6 +3155,9 @@ function fm_get_file_icon_class($path) case 'bat': $img = 'fa fa-terminal'; break; + case 'md': + $img = 'fa fa-markdown'; + break; default: $img = 'fa fa-info-circle'; } @@ -3209,7 +3239,7 @@ function fm_get_text_exts() 'bat', 'twig', 'tpl', - 'md', + // 'md', 'gitignore', 'less', 'sass', @@ -4038,8 +4068,23 @@ function fm_show_header() + + + + + +