aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKN4CK3R2021-08-21 21:10:04 +0200
committerGitHub2021-08-21 20:10:04 +0100
commit0840a508b4e7dbb3bbd7c2cb24efd1bd4d0b739e (patch)
tree5a492783acec45a82841b5a00ae3b49fcca5703b
parent5ceff8fda28ae3ad8ae2239e1644e0d2f191e21f (diff)
Keep attachments on tasklist update (#16750) (#16757)
* Send attachments too. * Use tasklist flag. * use action="ignoreAttachments" instead of "tasklist" * Use boolean parameter. * when the update request doesn't intend to update attachments (eg: change checkbox state), ignore attachment updates (#16762) Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
-rw-r--r--routers/web/repo/issue.go34
-rw-r--r--web_src/js/markup/tasklist.js3
2 files changed, 21 insertions, 16 deletions
diff --git a/routers/web/repo/issue.go b/routers/web/repo/issue.go
index 9639ea820..3162e0932 100644
--- a/routers/web/repo/issue.go
+++ b/routers/web/repo/issue.go
@@ -1728,10 +1728,12 @@ func UpdateIssueContent(ctx *context.Context) {
return
}
- files := ctx.QueryStrings("files[]")
- if err := updateAttachments(issue, files); err != nil {
- ctx.ServerError("UpdateAttachments", err)
- return
+ // when update the request doesn't intend to update attachments (eg: change checkbox state), ignore attachment updates
+ if !ctx.QueryBool("ignore_attachments") {
+ if err := updateAttachments(issue, ctx.QueryStrings("files[]")); err != nil {
+ ctx.ServerError("UpdateAttachments", err)
+ return
+ }
}
content, err := markdown.RenderString(&markup.RenderContext{
@@ -2128,13 +2130,6 @@ func UpdateCommentContent(ctx *context.Context) {
return
}
- if comment.Type == models.CommentTypeComment {
- if err := comment.LoadAttachments(); err != nil {
- ctx.ServerError("LoadAttachments", err)
- return
- }
- }
-
if !ctx.IsSigned || (ctx.User.ID != comment.PosterID && !ctx.Repo.CanWriteIssuesOrPulls(comment.Issue.IsPull)) {
ctx.Error(http.StatusForbidden)
return
@@ -2156,10 +2151,19 @@ func UpdateCommentContent(ctx *context.Context) {
return
}
- files := ctx.QueryStrings("files[]")
- if err := updateAttachments(comment, files); err != nil {
- ctx.ServerError("UpdateAttachments", err)
- return
+ if comment.Type == models.CommentTypeComment {
+ if err := comment.LoadAttachments(); err != nil {
+ ctx.ServerError("LoadAttachments", err)
+ return
+ }
+ }
+
+ // when the update request doesn't intend to update attachments (eg: change checkbox state), ignore attachment updates
+ if !ctx.QueryBool("ignore_attachments") {
+ if err := updateAttachments(comment, ctx.QueryStrings("files[]")); err != nil {
+ ctx.ServerError("UpdateAttachments", err)
+ return
+ }
}
content, err := markdown.RenderString(&markup.RenderContext{
diff --git a/web_src/js/markup/tasklist.js b/web_src/js/markup/tasklist.js
index 24b29ddb7..ea1a1f824 100644
--- a/web_src/js/markup/tasklist.js
+++ b/web_src/js/markup/tasklist.js
@@ -46,9 +46,10 @@ export function initMarkupTasklist() {
const {updateUrl, context} = editContentZone.dataset;
await $.post(updateUrl, {
+ ignore_attachments: true,
_csrf: window.config.csrf,
content: newContent,
- context,
+ context
});
rawContent.textContent = newContent;