|
|
@ -118,28 +118,14 @@ func RefBlame(ctx *context.Context) { |
|
|
|
|
|
|
|
|
|
|
|
ctx.Data["IsBlame"] = true |
|
|
|
ctx.Data["IsBlame"] = true |
|
|
|
|
|
|
|
|
|
|
|
if ctx.Repo.CanEnableEditor() { |
|
|
|
ctx.Data["FileSize"] = blob.Size() |
|
|
|
// Check LFS Lock
|
|
|
|
ctx.Data["FileName"] = blob.Name() |
|
|
|
lfsLock, err := ctx.Repo.Repository.GetTreePathLock(ctx.Repo.TreePath) |
|
|
|
|
|
|
|
|
|
|
|
ctx.Data["NumLines"], err = blob.GetBlobLineCount() |
|
|
|
if err != nil { |
|
|
|
if err != nil { |
|
|
|
ctx.ServerError("GetTreePathLock", err) |
|
|
|
ctx.NotFound("GetBlobLineCount", err) |
|
|
|
return |
|
|
|
return |
|
|
|
} |
|
|
|
} |
|
|
|
if lfsLock != nil && lfsLock.OwnerID != ctx.User.ID { |
|
|
|
|
|
|
|
ctx.Data["CanDeleteFile"] = false |
|
|
|
|
|
|
|
ctx.Data["DeleteFileTooltip"] = ctx.Tr("repo.editor.this_file_locked") |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
ctx.Data["CanDeleteFile"] = true |
|
|
|
|
|
|
|
ctx.Data["DeleteFileTooltip"] = ctx.Tr("repo.editor.delete_this_file") |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} else if !ctx.Repo.IsViewBranch { |
|
|
|
|
|
|
|
ctx.Data["DeleteFileTooltip"] = ctx.Tr("repo.editor.must_be_on_a_branch") |
|
|
|
|
|
|
|
} else if !ctx.Repo.CanWrite(models.UnitTypeCode) { |
|
|
|
|
|
|
|
ctx.Data["DeleteFileTooltip"] = ctx.Tr("repo.editor.must_have_write_access") |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ctx.Data["FileSize"] = blob.Size() |
|
|
|
|
|
|
|
ctx.Data["FileName"] = blob.Name() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
blameReader, err := git.CreateBlameReader(models.RepoPath(userName, repoName), commitID, fileName) |
|
|
|
blameReader, err := git.CreateBlameReader(models.RepoPath(userName, repoName), commitID, fileName) |
|
|
|
if err != nil { |
|
|
|
if err != nil { |
|
|
@ -245,9 +231,9 @@ func renderBlame(ctx *context.Context, blameParts []git.BlamePart, commitNames m |
|
|
|
|
|
|
|
|
|
|
|
//Line number
|
|
|
|
//Line number
|
|
|
|
if len(part.Lines)-1 == index && len(blameParts)-1 != pi { |
|
|
|
if len(part.Lines)-1 == index && len(blameParts)-1 != pi { |
|
|
|
lineNumbers.WriteString(fmt.Sprintf(`<span id="L%d" class="bottom-line">%d</span>`, i, i)) |
|
|
|
lineNumbers.WriteString(fmt.Sprintf(`<span id="L%d" data-line-number="%d" class="bottom-line"></span>`, i, i)) |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
lineNumbers.WriteString(fmt.Sprintf(`<span id="L%d">%d</span>`, i, i)) |
|
|
|
lineNumbers.WriteString(fmt.Sprintf(`<span id="L%d" data-line-number="%d"></span>`, i, i)) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//Code line
|
|
|
|
//Code line
|
|
|
|