mirror of
https://github.com/discourse/discourse.git
synced 2026-08-06 12:09:27 +08:00
When an edit adds media that `skip_review_media_groups` requires staff to approve, queueing a reviewable is not enough. At creation the check holds the whole post back until it is approved, but on the edit path the media stayed publicly visible until a moderator got to the queue, defeating the point of a review meant to happen before publication. The post is now hidden — and the topic unlisted when it is the first post — under a dedicated hidden reason while the review is pending. Approving through the existing approve-and-unhide action restores both. The author is told what happened in a PM, and every placeholder (app, crawler view, RSS) explains the post is awaiting media review instead of claiming it was flagged by the community. Reusing the hidden flag means the flag system could unhide the post while the media review was still pending: a moderator disagreeing with an unrelated flag, a user withdrawing one, or the author editing a flag-hidden post would all have published the unreviewed media. Unhiding now refuses while a media review is pending unless it is forced, which only the review's approval and a staff member explicitly unhiding the post do. Since this hide is not a flag: - the flag cooldown no longer locks the author out of editing — editing a media-hidden post never unhides it, so there is nothing to game; - hiding no longer overwrites the visibility reason of a topic that was already unlisted, so approving the media cannot silently relist a topic a moderator deliberately unlisted (which also fixes the same long-standing clobber on the flag path); - the system message options only include a flag reason when there is an actual flag, since interpolating `flag_reasons.` with no type stuffed the entire translation subtree into the job arguments. Hiding is only worth doing if the content is actually hidden, so the topic's og:image and the RSS channel description — which rendered the first post's raw — no longer advertise the content of a hidden first post. System-driven revisions (`skip_validations`) are exempt from the check, matching creation where programmatic post creation never goes through the new-post checks; refreshing a topic embed should not unlist a blog topic. |
||
|---|---|---|
| .. | ||
| client.ar.yml | ||
| client.be.yml | ||
| client.bg.yml | ||
| client.bs_BA.yml | ||
| client.ca.yml | ||
| client.cs.yml | ||
| client.da.yml | ||
| client.de.yml | ||
| client.el.yml | ||
| client.en.yml | ||
| client.en_GB.yml | ||
| client.es.yml | ||
| client.et.yml | ||
| client.fa_IR.yml | ||
| client.fi.yml | ||
| client.fr.yml | ||
| client.gl.yml | ||
| client.he.yml | ||
| client.hr.yml | ||
| client.hu.yml | ||
| client.hy.yml | ||
| client.id.yml | ||
| client.it.yml | ||
| client.ja.yml | ||
| client.ko.yml | ||
| client.lt.yml | ||
| client.lv.yml | ||
| client.nb_NO.yml | ||
| client.nl.yml | ||
| client.pl_PL.yml | ||
| client.pt.yml | ||
| client.pt_BR.yml | ||
| client.ro.yml | ||
| client.ru.yml | ||
| client.sk.yml | ||
| client.sl.yml | ||
| client.sq.yml | ||
| client.sr.yml | ||
| client.sv.yml | ||
| client.sw.yml | ||
| client.te.yml | ||
| client.th.yml | ||
| client.tr_TR.yml | ||
| client.ug.yml | ||
| client.uk.yml | ||
| client.ur.yml | ||
| client.vi.yml | ||
| client.zh_CN.yml | ||
| client.zh_TW.yml | ||
| names.yml | ||
| plurals.rb | ||
| server.ar.yml | ||
| server.be.yml | ||
| server.bg.yml | ||
| server.bs_BA.yml | ||
| server.ca.yml | ||
| server.cs.yml | ||
| server.da.yml | ||
| server.de.yml | ||
| server.el.yml | ||
| server.en.yml | ||
| server.en_GB.yml | ||
| server.es.yml | ||
| server.et.yml | ||
| server.fa_IR.yml | ||
| server.fi.yml | ||
| server.fr.yml | ||
| server.gl.yml | ||
| server.he.yml | ||
| server.hr.yml | ||
| server.hu.yml | ||
| server.hy.yml | ||
| server.id.yml | ||
| server.it.yml | ||
| server.ja.yml | ||
| server.ko.yml | ||
| server.lt.yml | ||
| server.lv.yml | ||
| server.nb_NO.yml | ||
| server.nl.yml | ||
| server.pl_PL.yml | ||
| server.pt.yml | ||
| server.pt_BR.yml | ||
| server.ro.yml | ||
| server.ru.yml | ||
| server.sk.yml | ||
| server.sl.yml | ||
| server.sq.yml | ||
| server.sr.yml | ||
| server.sv.yml | ||
| server.sw.yml | ||
| server.te.yml | ||
| server.th.yml | ||
| server.tr_TR.yml | ||
| server.ug.yml | ||
| server.uk.yml | ||
| server.ur.yml | ||
| server.vi.yml | ||
| server.zh_CN.yml | ||
| server.zh_TW.yml | ||
| transliterate.ar.yml | ||
| transliterate.bg.yml | ||
| transliterate.de.yml | ||
| transliterate.el.yml | ||
| transliterate.en.yml | ||
| transliterate.ru.yml | ||
| transliterate.ug.yml | ||
| transliterate.vi.yml | ||