* Fix access denied error when anonymous users open /artists/show_or_new.
* When the artist doesn't exist, take user to "artist doesn't exist"
page instead of redirecting to /artists/new.
Bug: implications that were approved but that were still in the 'queued'
state were not seen as active yet, which led to the transitivity
validation passing because it didn't include queued implications.
Disallow transitive implications. If a -> b -> c already exists, don't
allow a -> c.
Caveat: if b -> c already exists, and we make a BUR for a -> b and a -> c,
the BUR validates even though a -> c is redundant. It only fails
when the BUR is approved.
Broken in 27aa9fe. Delayed jobs have to be enabled when creating a
replacement, otherwise replacement will try to immediately delete the
existing files, which fails because they're still in use.
DEPRECATION WARNING: You are calling a `*_path` helper with the
`only_path` option explicitly set to `false`. This option will stop
working on path helpers in Rails 5. Use the corresponding `*_url` helper
instead.
* Convert Tumblr commentary to DText.
* Strip extraneous whitespace in links and blockquotes.
* Add newlines after block elements to ensure they're separated from
subsequent blocks.
* Adds a "Tags" field to the post replacement dialog box. The given tags
are added to the post after replacement.
* Prefills the Tags field with certain tags that usually need to be
removed after replacement: replaceme, image_sample, jpeg_artifacts, etc.
* Record "file://#{filename}" as the replacement url when the
replacement comes from an uploaded file.
* Record the actual url downloaded by the upload process otherwise. This
may be different from the url given by the user, since the upload
process may rewrite the url.
Bug: `post_replacements_path` returned the wrong path because the
`/posts/:post_id/replacements` route took precedence over the
`/post_replacements` route.
Fix: declare the `/post_replacements` route first so that it takes
precedence instead.
Adds a "Final Source" field to the post replacement dialog. If
specified, the post's source field will be changed to this value after
replacement.
This makes fixing the source back to the HTML page after
replacement easier.