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>
release/v1.15
KN4CK3R 2021-08-21 21:10:04 +02:00 committed by GitHub
parent 5ceff8fda2
commit 0840a508b4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 16 deletions

View File

@ -1728,10 +1728,12 @@ func UpdateIssueContent(ctx *context.Context) {
return return
} }
files := ctx.QueryStrings("files[]") // when update the request doesn't intend to update attachments (eg: change checkbox state), ignore attachment updates
if err := updateAttachments(issue, files); err != nil { if !ctx.QueryBool("ignore_attachments") {
ctx.ServerError("UpdateAttachments", err) if err := updateAttachments(issue, ctx.QueryStrings("files[]")); err != nil {
return ctx.ServerError("UpdateAttachments", err)
return
}
} }
content, err := markdown.RenderString(&markup.RenderContext{ content, err := markdown.RenderString(&markup.RenderContext{
@ -2128,13 +2130,6 @@ func UpdateCommentContent(ctx *context.Context) {
return 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)) { if !ctx.IsSigned || (ctx.User.ID != comment.PosterID && !ctx.Repo.CanWriteIssuesOrPulls(comment.Issue.IsPull)) {
ctx.Error(http.StatusForbidden) ctx.Error(http.StatusForbidden)
return return
@ -2156,10 +2151,19 @@ func UpdateCommentContent(ctx *context.Context) {
return return
} }
files := ctx.QueryStrings("files[]") if comment.Type == models.CommentTypeComment {
if err := updateAttachments(comment, files); err != nil { if err := comment.LoadAttachments(); err != nil {
ctx.ServerError("UpdateAttachments", err) ctx.ServerError("LoadAttachments", err)
return 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{ content, err := markdown.RenderString(&markup.RenderContext{

View File

@ -46,9 +46,10 @@ export function initMarkupTasklist() {
const {updateUrl, context} = editContentZone.dataset; const {updateUrl, context} = editContentZone.dataset;
await $.post(updateUrl, { await $.post(updateUrl, {
ignore_attachments: true,
_csrf: window.config.csrf, _csrf: window.config.csrf,
content: newContent, content: newContent,
context, context
}); });
rawContent.textContent = newContent; rawContent.textContent = newContent;