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 '