From eed462c90a8d0137eceb701949a16aa10dd696fc Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 9 Apr 2022 11:55:47 +0200 Subject: [PATCH 1/4] Add button to switch between source and rendered blob - Adds a button to switch between the source blob and the rendered blob. Currently these buttons are only shown for markdown files, it is the only blob that can be shown rendered and shown source without having to show raw binary code. - Resolves #11259 --- options/locale/locale_en-US.ini | 2 ++ routers/web/repo/view.go | 9 +++++++-- templates/repo/view_file.tmpl | 6 ++++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index 5662ed2c40200..9200e572ff924 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -1027,6 +1027,8 @@ file_view_source = View Source file_view_rendered = View Rendered file_view_raw = View Raw file_permalink = Permalink +file_view_source_blob = View Source Blob +file_view_rendered_blob = View Rendered Blob file_too_large = The file is too large to be shown. bidi_bad_header = `This file contains unexpected Bidirectional Unicode characters!` bidi_bad_description = `This file contains unexpected Bidirectional Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.` diff --git a/routers/web/repo/view.go b/routers/web/repo/view.go index 7fc178cf31164..3489af4bd2682 100644 --- a/routers/web/repo/view.go +++ b/routers/web/repo/view.go @@ -489,9 +489,14 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry, treeLink, rawLink st } rd := charset.ToUTF8WithFallbackReader(io.MultiReader(bytes.NewReader(buf), dataRc)) - readmeExist := markup.IsReadmeFile(blob.Name()) + shouldRenderMarkdown := !ctx.FormBool("plain") + readmeExist := markup.IsReadmeFile(blob.Name()) && shouldRenderMarkdown ctx.Data["ReadmeExist"] = readmeExist - if markupType := markup.Type(blob.Name()); markupType != "" { + + markupType := markup.Type(blob.Name()) + ctx.Data["IsMarkdownBlob"] = markupType != "" + + if markupType != "" && shouldRenderMarkdown { ctx.Data["IsMarkup"] = true ctx.Data["MarkupType"] = markupType var result strings.Builder diff --git a/templates/repo/view_file.tmpl b/templates/repo/view_file.tmpl index 9e1d83b836bcb..bba7cce073c60 100644 --- a/templates/repo/view_file.tmpl +++ b/templates/repo/view_file.tmpl @@ -39,6 +39,12 @@ {{end}} {{if not .ReadmeInList}}
+ {{if and .IsMarkdownBlob .IsMarkup}} + {{.i18n.Tr "repo.file_view_source_blob"}} + {{end}} + {{if and .IsMarkdownBlob (not .IsMarkup)}} + {{.i18n.Tr "repo.file_view_rendered_blob"}} + {{end}} {{.i18n.Tr "repo.file_raw"}} {{if not .IsViewCommit}} {{.i18n.Tr "repo.file_permalink"}} From 2bf62c7cde7ba37cabedc8400a2d5c35cdcd38c5 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 9 Apr 2022 13:10:22 +0200 Subject: [PATCH 2/4] Use existing framework for switching --- options/locale/locale_en-US.ini | 2 -- routers/web/repo/view.go | 7 +++++-- templates/repo/view_file.tmpl | 6 ------ 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index 9200e572ff924..5662ed2c40200 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -1027,8 +1027,6 @@ file_view_source = View Source file_view_rendered = View Rendered file_view_raw = View Raw file_permalink = Permalink -file_view_source_blob = View Source Blob -file_view_rendered_blob = View Rendered Blob file_too_large = The file is too large to be shown. bidi_bad_header = `This file contains unexpected Bidirectional Unicode characters!` bidi_bad_description = `This file contains unexpected Bidirectional Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.` diff --git a/routers/web/repo/view.go b/routers/web/repo/view.go index 3489af4bd2682..e77e258734a41 100644 --- a/routers/web/repo/view.go +++ b/routers/web/repo/view.go @@ -489,12 +489,15 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry, treeLink, rawLink st } rd := charset.ToUTF8WithFallbackReader(io.MultiReader(bytes.NewReader(buf), dataRc)) - shouldRenderMarkdown := !ctx.FormBool("plain") + + shouldRenderMarkdown := ctx.FormString("display") != "source" readmeExist := markup.IsReadmeFile(blob.Name()) && shouldRenderMarkdown ctx.Data["ReadmeExist"] = readmeExist markupType := markup.Type(blob.Name()) - ctx.Data["IsMarkdownBlob"] = markupType != "" + if markupType != "" { + ctx.Data["HasSourceRenderedToggle"] = true + } if markupType != "" && shouldRenderMarkdown { ctx.Data["IsMarkup"] = true diff --git a/templates/repo/view_file.tmpl b/templates/repo/view_file.tmpl index bba7cce073c60..9e1d83b836bcb 100644 --- a/templates/repo/view_file.tmpl +++ b/templates/repo/view_file.tmpl @@ -39,12 +39,6 @@ {{end}} {{if not .ReadmeInList}}
- {{if and .IsMarkdownBlob .IsMarkup}} - {{.i18n.Tr "repo.file_view_source_blob"}} - {{end}} - {{if and .IsMarkdownBlob (not .IsMarkup)}} - {{.i18n.Tr "repo.file_view_rendered_blob"}} - {{end}} {{.i18n.Tr "repo.file_raw"}} {{if not .IsViewCommit}} {{.i18n.Tr "repo.file_permalink"}} From 4cf641c81f8917afea5ded0a3cc182f08c8f09dc Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 9 Apr 2022 14:11:09 +0200 Subject: [PATCH 3/4] Move control logic --- routers/web/repo/view.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/routers/web/repo/view.go b/routers/web/repo/view.go index e77e258734a41..98549b131471a 100644 --- a/routers/web/repo/view.go +++ b/routers/web/repo/view.go @@ -491,7 +491,7 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry, treeLink, rawLink st rd := charset.ToUTF8WithFallbackReader(io.MultiReader(bytes.NewReader(buf), dataRc)) shouldRenderMarkdown := ctx.FormString("display") != "source" - readmeExist := markup.IsReadmeFile(blob.Name()) && shouldRenderMarkdown + readmeExist := markup.IsReadmeFile(blob.Name()) ctx.Data["ReadmeExist"] = readmeExist markupType := markup.Type(blob.Name()) @@ -515,7 +515,7 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry, treeLink, rawLink st return } ctx.Data["EscapeStatus"], ctx.Data["FileContent"] = charset.EscapeControlString(result.String()) - } else if readmeExist { + } else if readmeExist && shouldRenderMarkdown { buf := &bytes.Buffer{} ctx.Data["IsRenderedHTML"] = true From 37a91afc47ab6b1fd152c43e9769e492e1b158c4 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 9 Apr 2022 14:19:32 +0200 Subject: [PATCH 4/4] Refactor variable Co-authored-by: wxiaoguang --- routers/web/repo/view.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/routers/web/repo/view.go b/routers/web/repo/view.go index 98549b131471a..0faa01d573ce0 100644 --- a/routers/web/repo/view.go +++ b/routers/web/repo/view.go @@ -490,7 +490,7 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry, treeLink, rawLink st rd := charset.ToUTF8WithFallbackReader(io.MultiReader(bytes.NewReader(buf), dataRc)) - shouldRenderMarkdown := ctx.FormString("display") != "source" + shouldRenderSource := ctx.FormString("display") == "source" readmeExist := markup.IsReadmeFile(blob.Name()) ctx.Data["ReadmeExist"] = readmeExist @@ -499,7 +499,7 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry, treeLink, rawLink st ctx.Data["HasSourceRenderedToggle"] = true } - if markupType != "" && shouldRenderMarkdown { + if markupType != "" && !shouldRenderSource { ctx.Data["IsMarkup"] = true ctx.Data["MarkupType"] = markupType var result strings.Builder @@ -515,7 +515,7 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry, treeLink, rawLink st return } ctx.Data["EscapeStatus"], ctx.Data["FileContent"] = charset.EscapeControlString(result.String()) - } else if readmeExist && shouldRenderMarkdown { + } else if readmeExist && !shouldRenderSource { buf := &bytes.Buffer{} ctx.Data["IsRenderedHTML"] = true