Browse Source

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

pull/4412/head
Unknwon 8 years ago
parent
commit
6ebdf91b32
No known key found for this signature in database
GPG Key ID: 25B575AE3213B2B3
  1. 2
      gogs.go
  2. 5
      pkg/markup/markup.go
  3. 53
      routers/repo/view.go
  4. 2
      templates/.VERSION
  5. 2
      templates/base/head.tmpl
  6. 37
      templates/repo/view_file.tmpl

2
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
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"

53
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()))

2
templates/.VERSION

@ -1 +1 @@
0.11.7.0407
0.11.8.0407

2
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}}

37
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}}

Loading…
Cancel
Save