public async Task <IActionResult> ShowMarkdownFile(string path) { if (_startupOptions.Mode != StartupMode.Try) { return(NotFound()); } if (string.IsNullOrEmpty(path)) { const string documentSvg = "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path d=\"M6,2A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6M6,4H13V9H18V20H6V4M8,12V14H16V12H8M8,16V18H13V16H8Z\" /></svg>"; var links = string.Join( "\n", _markdownProject.GetAllMarkdownFiles() .Select(f => $@"<li><a href=""{f.Path.Value.HtmlAttributeEncode()}"">{documentSvg}<span>{f.Path.Value}</span></a></li>")); return(Content(Index(links).ToString(), "text/html")); } var relativeFilePath = new RelativeFilePath(path); if (!_markdownProject.TryGetMarkdownFile(relativeFilePath, out var markdownFile)) { return(NotFound()); } var hostUrl = Request.GetUri(); var blocks = (await markdownFile.GetEditableAnnotatedCodeBlocks()).ToArray(); var maxEditorPerSession = blocks.Length > 0 ? blocks .GroupBy(b => b.Annotations.Session) .Max(editors => editors.Count()) : 0; var pipeline = _markdownProject.GetMarkdownPipelineFor(markdownFile.Path); var extension = pipeline.Extensions.FindExact <CodeBlockAnnotationExtension>(); if (extension != null) { extension.InlineControls = maxEditorPerSession <= 1; extension.EnablePreviewFeatures = _startupOptions.EnablePreviewFeatures; } var content = maxEditorPerSession <= 1 ? await OneColumnLayoutScaffold( $"{hostUrl.Scheme}://{hostUrl.Authority}", markdownFile) : await TwoColumnLayoutScaffold( $"{hostUrl.Scheme}://{hostUrl.Authority}", markdownFile); return(Content(content.ToString(), "text/html")); }
public async Task <IActionResult> ShowMarkdownFile(string path) { if (_startupOptions.Mode != StartupMode.Try) { return(NotFound()); } var relativeFilePath = new RelativeFilePath(path); if (!_markdownProject.TryGetMarkdownFile(relativeFilePath, out var markdownFile)) { return(NotFound()); } var hostUrl = Request.GetUri(); var blocks = (await markdownFile.GetEditableAnnotatedCodeBlocks()).ToArray(); var maxEditorPerSession = blocks.Length > 0 ? blocks .GroupBy(b => b.Annotations.Session) .Max(editors => editors.Count()) : 0; var pipeline = _markdownProject.GetMarkdownPipelineFor(markdownFile.Path); var extension = pipeline.Extensions.FindExact <CodeBlockAnnotationExtension>(); if (extension != null) { extension.InlineControls = maxEditorPerSession <= 1; extension.EnablePreviewFeatures = _startupOptions.EnablePreviewFeatures; } var content = maxEditorPerSession <= 1 ? await OneColumnLayoutScaffold( $"{hostUrl.Scheme}://{hostUrl.Authority}", markdownFile) : await TwoColumnLayoutScaffold( $"{hostUrl.Scheme}://{hostUrl.Authority}", markdownFile); return(Content(content.ToString(), "text/html")); }