Browse Source

templates/repo: fix README.ipynb not rendered (#4367)

Unknwon 7 years ago
parent
commit
6ebdf91b32
6 changed files with 55 additions and 46 deletions
  1. 1 1
      gogs.go
  2. 5 0
      pkg/markup/markup.go
  3. 28 25
      routers/repo/view.go
  4. 1 1
      templates/.VERSION
  5. 1 1
      templates/base/head.tmpl
  6. 19 18
      templates/repo/view_file.tmpl

+ 1 - 1
gogs.go

@@ -16,7 +16,7 @@ import (
 	"github.com/gogits/gogs/pkg/setting"
 )
 
-const APP_VER = "0.11.7.0407"
+const APP_VER = "0.11.8.0407"
 
 func init() {
 	setting.AppVer = APP_VER

+ 5 - 0
pkg/markup/markup.go

@@ -23,6 +23,11 @@ func IsReadmeFile(name string) bool {
 	return strings.HasPrefix(strings.ToLower(name), "readme")
 }
 
+// IsIPythonNotebook reports whether name looks like a IPython notebook based on its extension.
+func IsIPythonNotebook(name string) bool {
+	return strings.HasSuffix(name, ".ipynb")
+}
+
 const (
 	ISSUE_NAME_STYLE_NUMERIC      = "numeric"
 	ISSUE_NAME_STYLE_ALPHANUMERIC = "alphanumeric"

+ 28 - 25
routers/repo/view.go

@@ -33,23 +33,23 @@ const (
 	FORKS    = "repo/forks"
 )
 
-func renderDirectory(ctx *context.Context, treeLink string) {
-	tree, err := ctx.Repo.Commit.SubTree(ctx.Repo.TreePath)
+func renderDirectory(c *context.Context, treeLink string) {
+	tree, err := c.Repo.Commit.SubTree(c.Repo.TreePath)
 	if err != nil {
-		ctx.NotFoundOrServerError("Repo.Commit.SubTree", git.IsErrNotExist, err)
+		c.NotFoundOrServerError("Repo.Commit.SubTree", git.IsErrNotExist, err)
 		return
 	}
 
 	entries, err := tree.ListEntries()
 	if err != nil {
-		ctx.Handle(500, "ListEntries", err)
+		c.ServerError("ListEntries", err)
 		return
 	}
 	entries.Sort()
 
-	ctx.Data["Files"], err = entries.GetCommitsInfoWithCustomConcurrency(ctx.Repo.Commit, ctx.Repo.TreePath, setting.Repository.CommitsFetchConcurrency)
+	c.Data["Files"], err = entries.GetCommitsInfoWithCustomConcurrency(c.Repo.Commit, c.Repo.TreePath, setting.Repository.CommitsFetchConcurrency)
 	if err != nil {
-		ctx.Handle(500, "GetCommitsInfo", err)
+		c.ServerError("GetCommitsInfoWithCustomConcurrency", err)
 		return
 	}
 
@@ -65,13 +65,13 @@ func renderDirectory(ctx *context.Context, treeLink string) {
 	}
 
 	if readmeFile != nil {
-		ctx.Data["RawFileLink"] = ""
-		ctx.Data["ReadmeInList"] = true
-		ctx.Data["ReadmeExist"] = true
+		c.Data["RawFileLink"] = ""
+		c.Data["ReadmeInList"] = true
+		c.Data["ReadmeExist"] = true
 
 		dataRc, err := readmeFile.Data()
 		if err != nil {
-			ctx.Handle(500, "Data", err)
+			c.ServerError("readmeFile.Data", err)
 			return
 		}
 
@@ -80,38 +80,41 @@ func renderDirectory(ctx *context.Context, treeLink string) {
 		buf = buf[:n]
 
 		isTextFile := tool.IsTextFile(buf)
-		ctx.Data["IsTextFile"] = isTextFile
-		ctx.Data["FileName"] = readmeFile.Name()
+		c.Data["IsTextFile"] = isTextFile
+		c.Data["FileName"] = readmeFile.Name()
 		if isTextFile {
 			d, _ := ioutil.ReadAll(dataRc)
 			buf = append(buf, d...)
 			switch {
 			case markup.IsMarkdownFile(readmeFile.Name()):
-				ctx.Data["IsMarkdown"] = true
-				buf = markup.Markdown(buf, treeLink, ctx.Repo.Repository.ComposeMetas())
+				c.Data["IsMarkdown"] = true
+				buf = markup.Markdown(buf, treeLink, c.Repo.Repository.ComposeMetas())
+			case markup.IsIPythonNotebook(readmeFile.Name()):
+				c.Data["IsIPythonNotebook"] = true
+				c.Data["RawFileLink"] = c.Repo.RepoLink + "/raw/" + path.Join(c.Repo.BranchName, c.Repo.TreePath, readmeFile.Name())
 			default:
 				buf = bytes.Replace(buf, []byte("\n"), []byte(`<br>`), -1)
 			}
-			ctx.Data["FileContent"] = string(buf)
+			c.Data["FileContent"] = string(buf)
 		}
 	}
 
 	// Show latest commit info of repository in table header,
 	// or of directory if not in root directory.
-	latestCommit := ctx.Repo.Commit
-	if len(ctx.Repo.TreePath) > 0 {
-		latestCommit, err = ctx.Repo.Commit.GetCommitByPath(ctx.Repo.TreePath)
+	latestCommit := c.Repo.Commit
+	if len(c.Repo.TreePath) > 0 {
+		latestCommit, err = c.Repo.Commit.GetCommitByPath(c.Repo.TreePath)
 		if err != nil {
-			ctx.Handle(500, "GetCommitByPath", err)
+			c.ServerError("GetCommitByPath", err)
 			return
 		}
 	}
-	ctx.Data["LatestCommit"] = latestCommit
-	ctx.Data["LatestCommitUser"] = models.ValidateCommitWithEmail(latestCommit)
+	c.Data["LatestCommit"] = latestCommit
+	c.Data["LatestCommitUser"] = models.ValidateCommitWithEmail(latestCommit)
 
-	if ctx.Repo.CanEnableEditor() {
-		ctx.Data["CanAddFile"] = true
-		ctx.Data["CanUploadFile"] = setting.Repository.Upload.Enabled
+	if c.Repo.CanEnableEditor() {
+		c.Data["CanAddFile"] = true
+		c.Data["CanUploadFile"] = setting.Repository.Upload.Enabled
 	}
 }
 
@@ -157,7 +160,7 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry, treeLink, rawLink st
 		ctx.Data["IsMarkdown"] = isMarkdown
 		ctx.Data["ReadmeExist"] = isMarkdown && markup.IsReadmeFile(blob.Name())
 
-		ctx.Data["IsIPythonNotebook"] = strings.HasSuffix(blob.Name(), ".ipynb")
+		ctx.Data["IsIPythonNotebook"] = markup.IsIPythonNotebook(blob.Name())
 
 		if isMarkdown {
 			ctx.Data["FileContent"] = string(markup.Markdown(buf, path.Dir(treeLink), ctx.Repo.Repository.ComposeMetas()))

+ 1 - 1
templates/.VERSION

@@ -1 +1 @@
-0.11.7.0407
+0.11.8.0407

+ 1 - 1
templates/base/head.tmpl

@@ -47,7 +47,7 @@
 	<link rel="stylesheet" href="{{AppSubURL}}/assets/octicons-4.3.0/octicons.min.css">
 
 	<!-- notebook.js for rendering ipython notebooks and marked.js for rendering markdown in notebooks -->
-	{{if .IsIPythonNotebook }}
+	{{if .IsIPythonNotebook}}
 		<script src="{{AppSubURL}}/plugins/notebookjs-0.2.6/notebook.min.js"></script>
 		<script src="{{AppSubURL}}/plugins/marked-0.3.6/marked.min.js"></script>
 	{{end}}

+ 19 - 18
templates/repo/view_file.tmpl

@@ -36,28 +36,29 @@
 		{{end}}
 	</h4>
 	<div class="ui attached table segment">
-		<div id="{{if .IsIPythonNotebook}}ipython-notebook{{end}}" class="file-view {{if .IsMarkdown}}markdown{{else if .ReadmeInList}}plain-text{{else if .IsIPythonNotebook}}ipython-notebook1{{else if and .IsTextFile}}code-view{{end}} has-emoji">
-			{{if or .IsMarkdown .ReadmeInList}}
+		<div id="{{if .IsIPythonNotebook}}ipython-notebook{{end}}" class="file-view {{if .IsMarkdown}}markdown{{else if .IsIPythonNotebook}}ipython-notebook{{else if .ReadmeInList}}plain-text{{else if and .IsTextFile}}code-view{{end}} has-emoji">
+			{{if .IsMarkdown}}
 				{{if .FileContent}}{{.FileContent | Str2html}}{{end}}
 			{{else if .IsIPythonNotebook}}
-				{{if .FileContent}}
-					<script>
-						var rendered = null;
-						$.getJSON("{{.RawFileLink}}", null, function(notebook_json) {
-							var notebook = nb.parse(notebook_json);
-							rendered = notebook.render();
-							$("#ipython-notebook").append(rendered);
-							$("#ipython-notebook code").each(function(i, block) {
-								$(block).addClass("py").addClass("python");
-								hljs.highlightBlock(block);
-							});
+				<script>
+					var rendered = null;
+					console.log("fuck")
+					$.getJSON("{{.RawFileLink}}", null, function(notebook_json) {
+						var notebook = nb.parse(notebook_json);
+						rendered = notebook.render();
+						$("#ipython-notebook").append(rendered);
+						$("#ipython-notebook code").each(function(i, block) {
+							$(block).addClass("py").addClass("python");
+							hljs.highlightBlock(block);
+						});
 
-							$("#ipython-notebook .nb-markdown-cell").each(function(i, markdown) {
-								$(markdown).html(marked($(markdown).html()));
-							});
+						$("#ipython-notebook .nb-markdown-cell").each(function(i, markdown) {
+							$(markdown).html(marked($(markdown).html()));
 						});
-					</script>
-				{{end}}
+					});
+				</script>
+			{{else if .ReadmeInList}}
+				{{if .FileContent}}{{.FileContent | Str2html}}{{end}}
 			{{else if not .IsTextFile}}
 				<div class="view-raw ui center">
 					{{if .IsImageFile}}