From 0840a508b4e7dbb3bbd7c2cb24efd1bd4d0b739e Mon Sep 17 00:00:00 2001 From: KN4CK3R Date: Sat, 21 Aug 2021 21:10:04 +0200 Subject: [PATCH] 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 --- routers/web/repo/issue.go | 34 +++++++++++++++++++--------------- web_src/js/markup/tasklist.js | 3 ++- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/routers/web/repo/issue.go b/routers/web/repo/issue.go index 9639ea82014a..3162e0932d7c 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 24b29ddb7afc..ea1a1f824a13 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;