* Make sure author cannot reject/approve their own PR * Disable buttons in templates too * Remove unneccessary if check since the switch below catches it * Fix IsOwner check * Update template and remove new template variable * Add alert template and redirect to diff page on review failure * Redirect to files diff as a little update to #4632master
@@ -814,6 +814,8 @@ issues.dependency.add_error_dep_not_exist = Dependency does not exist. | |||||
issues.dependency.add_error_dep_exists = Dependency already exists. | issues.dependency.add_error_dep_exists = Dependency already exists. | ||||
issues.dependency.add_error_cannot_create_circular = You cannot create a dependency with two issues blocking each other. | issues.dependency.add_error_cannot_create_circular = You cannot create a dependency with two issues blocking each other. | ||||
issues.dependency.add_error_dep_not_same_repo = Both issues must be in the same repository. | issues.dependency.add_error_dep_not_same_repo = Both issues must be in the same repository. | ||||
issues.review.self.approval = You cannot approve your own pull request. | |||||
issues.review.self.rejection = You cannot request changes on your own pull request. | |||||
issues.review.approve = "approved these changes %s" | issues.review.approve = "approved these changes %s" | ||||
issues.review.comment = "reviewed %s" | issues.review.comment = "reviewed %s" | ||||
issues.review.content.empty = You need to leave a comment indicating the requested change(s). | issues.review.content.empty = You need to leave a comment indicating the requested change(s). | ||||
@@ -103,14 +103,34 @@ func SubmitReview(ctx *context.Context, form auth.SubmitReviewForm) { | |||||
var err error | var err error | ||||
reviewType := form.ReviewType() | reviewType := form.ReviewType() | ||||
if reviewType == models.ReviewTypeUnknown { | |||||
switch reviewType { | |||||
case models.ReviewTypeUnknown: | |||||
ctx.ServerError("GetCurrentReview", fmt.Errorf("unknown ReviewType: %s", form.Type)) | ctx.ServerError("GetCurrentReview", fmt.Errorf("unknown ReviewType: %s", form.Type)) | ||||
return | return | ||||
// can not approve/reject your own PR | |||||
case models.ReviewTypeApprove, models.ReviewTypeReject: | |||||
if issue.Poster.ID == ctx.User.ID { | |||||
var translated string | |||||
if reviewType == models.ReviewTypeApprove { | |||||
translated = ctx.Tr("repo.issues.review.self.approval") | |||||
} else { | |||||
translated = ctx.Tr("repo.issues.review.self.rejection") | |||||
} | |||||
ctx.Flash.Error(translated) | |||||
ctx.Redirect(fmt.Sprintf("%s/pulls/%d/files", ctx.Repo.RepoLink, issue.Index)) | |||||
return | |||||
} | |||||
} | } | ||||
if form.HasEmptyContent() { | if form.HasEmptyContent() { | ||||
ctx.Flash.Error(ctx.Tr("repo.issues.review.content.empty")) | ctx.Flash.Error(ctx.Tr("repo.issues.review.content.empty")) | ||||
ctx.Redirect(fmt.Sprintf("%s/pulls/%d", ctx.Repo.RepoLink, issue.Index)) | |||||
ctx.Redirect(fmt.Sprintf("%s/pulls/%d/files", ctx.Repo.RepoLink, issue.Index)) | |||||
return | return | ||||
} | } | ||||
@@ -16,11 +16,11 @@ | |||||
placeholder="{{$.i18n.Tr "repo.diff.review.placeholder"}}"></textarea> | placeholder="{{$.i18n.Tr "repo.diff.review.placeholder"}}"></textarea> | ||||
</div> | </div> | ||||
<div class="ui divider"></div> | <div class="ui divider"></div> | ||||
<button type="submit" name="type" value="approve" | |||||
<button type="submit" name="type" value="approve" {{ if and $.IsSigned ($.Issue.IsPoster $.SignedUser.ID) }} disabled {{ end }} | |||||
class="ui submit green tiny button btn-submit">{{$.i18n.Tr "repo.diff.review.approve"}}</button> | class="ui submit green tiny button btn-submit">{{$.i18n.Tr "repo.diff.review.approve"}}</button> | ||||
<button type="submit" name="type" value="comment" | <button type="submit" name="type" value="comment" | ||||
class="ui submit tiny basic button btn-submit">{{$.i18n.Tr "repo.diff.review.comment"}}</button> | |||||
<button type="submit" name="type" value="reject" | |||||
class="ui submit tiny basic button btn-submit">{{$.i18n.Tr "repo.diff.review.comment"}}</button> | |||||
<button type="submit" name="type" value="reject" {{ if and $.IsSigned ($.Issue.IsPoster $.SignedUser.ID) }} disabled {{ end }} | |||||
class="ui submit red tiny button btn-submit">{{$.i18n.Tr "repo.diff.review.reject"}}</button> | class="ui submit red tiny button btn-submit">{{$.i18n.Tr "repo.diff.review.reject"}}</button> | ||||
</form> | </form> | ||||
</div> | </div> | ||||
@@ -11,6 +11,7 @@ | |||||
<div class="ui divider"></div> | <div class="ui divider"></div> | ||||
{{template "repo/issue/view_title" .}} | {{template "repo/issue/view_title" .}} | ||||
{{template "repo/pulls/tab_menu" .}} | {{template "repo/pulls/tab_menu" .}} | ||||
{{template "base/alert" .}} | |||||
<div class="ui bottom attached tab pull segment active"> | <div class="ui bottom attached tab pull segment active"> | ||||
{{template "repo/diff/box" .}} | {{template "repo/diff/box" .}} | ||||
</div> | </div> | ||||