|
|
|
@ -67,7 +67,7 @@ func MustAllowUserComment(ctx *context.Context) { |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if issue.IsLocked && !ctx.Repo.CanWrite(models.UnitTypeIssues) && !ctx.User.IsAdmin { |
|
|
|
|
if issue.IsLocked && !ctx.Repo.CanWriteIssuesOrPulls(issue.IsPull) && !ctx.User.IsAdmin { |
|
|
|
|
ctx.Flash.Error(ctx.Tr("repo.issues.comment_on_locked")) |
|
|
|
|
ctx.Redirect(issue.HTMLURL()) |
|
|
|
|
return |
|
|
|
@ -346,8 +346,8 @@ func RetrieveRepoMilestonesAndAssignees(ctx *context.Context, repo *models.Repos |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// RetrieveRepoMetas find all the meta information of a repository
|
|
|
|
|
func RetrieveRepoMetas(ctx *context.Context, repo *models.Repository) []*models.Label { |
|
|
|
|
if !ctx.Repo.CanWrite(models.UnitTypeIssues) { |
|
|
|
|
func RetrieveRepoMetas(ctx *context.Context, repo *models.Repository, isPull bool) []*models.Label { |
|
|
|
|
if !ctx.Repo.CanWriteIssuesOrPulls(isPull) { |
|
|
|
|
return nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -371,7 +371,7 @@ func RetrieveRepoMetas(ctx *context.Context, repo *models.Repository) []*models. |
|
|
|
|
ctx.Data["Branches"] = brs |
|
|
|
|
|
|
|
|
|
// Contains true if the user can create issue dependencies
|
|
|
|
|
ctx.Data["CanCreateIssueDependencies"] = ctx.Repo.CanCreateIssueDependencies(ctx.User) |
|
|
|
|
ctx.Data["CanCreateIssueDependencies"] = ctx.Repo.CanCreateIssueDependencies(ctx.User, isPull) |
|
|
|
|
|
|
|
|
|
return labels |
|
|
|
|
} |
|
|
|
@ -441,7 +441,7 @@ func NewIssue(ctx *context.Context) { |
|
|
|
|
setTemplateIfExists(ctx, issueTemplateKey, IssueTemplateCandidates) |
|
|
|
|
renderAttachmentSettings(ctx) |
|
|
|
|
|
|
|
|
|
RetrieveRepoMetas(ctx, ctx.Repo.Repository) |
|
|
|
|
RetrieveRepoMetas(ctx, ctx.Repo.Repository, false) |
|
|
|
|
if ctx.Written() { |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
@ -456,7 +456,7 @@ func ValidateRepoMetas(ctx *context.Context, form auth.CreateIssueForm, isPull b |
|
|
|
|
err error |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
labels := RetrieveRepoMetas(ctx, ctx.Repo.Repository) |
|
|
|
|
labels := RetrieveRepoMetas(ctx, ctx.Repo.Repository, isPull) |
|
|
|
|
if ctx.Written() { |
|
|
|
|
return nil, nil, 0 |
|
|
|
|
} |
|
|
|
@ -776,8 +776,16 @@ func ViewIssue(ctx *context.Context) { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if issue.IsPull && !ctx.Repo.CanRead(models.UnitTypeIssues) { |
|
|
|
|
ctx.Data["IssueType"] = "pulls" |
|
|
|
|
} else if !issue.IsPull && !ctx.Repo.CanRead(models.UnitTypePullRequests) { |
|
|
|
|
ctx.Data["IssueType"] = "issues" |
|
|
|
|
} else { |
|
|
|
|
ctx.Data["IssueType"] = "all" |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Check if the user can use the dependencies
|
|
|
|
|
ctx.Data["CanCreateIssueDependencies"] = ctx.Repo.CanCreateIssueDependencies(ctx.User) |
|
|
|
|
ctx.Data["CanCreateIssueDependencies"] = ctx.Repo.CanCreateIssueDependencies(ctx.User, issue.IsPull) |
|
|
|
|
|
|
|
|
|
// Render comments and and fetch participants.
|
|
|
|
|
participants[0] = issue.Poster |
|
|
|
@ -963,7 +971,6 @@ func ViewIssue(ctx *context.Context) { |
|
|
|
|
ctx.Data["IsIssuePoster"] = ctx.IsSigned && issue.IsPoster(ctx.User.ID) |
|
|
|
|
ctx.Data["IsIssueWriter"] = ctx.Repo.CanWriteIssuesOrPulls(issue.IsPull) |
|
|
|
|
ctx.Data["IsRepoAdmin"] = ctx.IsSigned && (ctx.Repo.IsAdmin() || ctx.User.IsAdmin) |
|
|
|
|
ctx.Data["IsRepoIssuesWriter"] = ctx.IsSigned && (ctx.Repo.CanWrite(models.UnitTypeIssues) || ctx.User.IsAdmin) |
|
|
|
|
ctx.Data["LockReasons"] = setting.Repository.Issue.LockReasons |
|
|
|
|
ctx.HTML(200, tplIssueView) |
|
|
|
|
} |
|
|
|
@ -1208,7 +1215,7 @@ func NewComment(ctx *context.Context, form auth.CreateCommentForm) { |
|
|
|
|
ctx.Error(403) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if issue.IsLocked && !ctx.Repo.CanWrite(models.UnitTypeIssues) && !ctx.User.IsAdmin { |
|
|
|
|
if issue.IsLocked && !ctx.Repo.CanWriteIssuesOrPulls(issue.IsPull) && !ctx.User.IsAdmin { |
|
|
|
|
ctx.Flash.Error(ctx.Tr("repo.issues.comment_on_locked")) |
|
|
|
|
ctx.Redirect(issue.HTMLURL(), http.StatusSeeOther) |
|
|
|
|
return |
|
|
|
|