Commit Graph
100 Commits
Author SHA1 Message Date
evazion 13528ac2d3 Drop forum subscriptions.
Few people used forum subscriptions (only around 100), and even fewer
people were subscribed to active threads. Most subscriptions were for
old threads that will never be bumped again. The implementation also had
a few problems:

* Unsubscribe links in emails didn't work (they unset the user's
  receive_email_notifications flag, but forum subscriptions didn't
  respect this flag).
* Some users had invalid email addresses, which caused notifications to
  bounce. There was no mechanism for preventing bounces.
* The implementation wasn't scalable. It involved a daily linear scan
  over _all_ forum subscriptions looking for any topics that had been updated.
2020-01-21 00:10:21 -06:00
evazion cae9a5d7e3 Drop dmail filters.
Few people used dmail filters (~900 users in 5 years) and even fewer
used them correctly. Most people used them to try to block dmail spam,
but usually they either blocked too much (by adding common words that
are present in nearly all dmails, causing all mails to them to be
filtered) or too little (blocking specific email addresses or urls,
which usually are never seen again after the spammer is banned).
Nowadays the spam detection system does a better job of filtering spam.
2020-01-21 00:10:20 -06:00
evazion c2688e3aff Fix #4263: Wiki page differences use the wrong order.
Standardize DiffBuilder to treat the first argument as the new item and
the second argument as the old item. This is the order used in most
other places.
2020-01-21 00:09:38 -06:00
evazion b62cdc4cfe test: move test/models/* to test/unit/*. 2020-01-21 00:09:38 -06:00
evazion 79015b4341 tests: fix various broken tests. 2020-01-21 00:09:38 -06:00
evazion cbbeac00df /saved_searches: fix duplicate input_html in label field. 2020-01-21 00:09:38 -06:00
evazion b4ce2d83a6 models: remove belongs_to_creator macro.
The belongs_to_creator macro was used to initialize the creator_id field
to the CurrentUser. This made tests complicated because it meant you had
to create and set the current user every time you wanted to create an
object, when lead to the current user being set over and over again. It
also meant you had to constantly be aware of what the CurrentUser was in
many different contexts, which was often confusing. Setting creators
explicitly simplifies everything greatly.
2020-01-21 00:09:38 -06:00
evazion 77bf9ac7f3 Merge pull request #4267 from BrokenEagle/add-report-function
Create the ability to send reports to moderators
2020-01-21 00:08:31 -06:00
evazion 1104f87b1f Merge pull request #4268 from BrokenEagle/universal-array-parameters
Add ability to search for multiple name values on the same field
2020-01-20 16:35:45 -06:00
evazion 4a7322b197 users: rework privacy mode into private favorites (fix #4257).
* Rename 'privacy mode' to 'private favorites'.
* Make the private favorites setting only hide favorites, not favgroups
  and not the user's uploads on their profile page.
* Make the favgroup is_public flag default to true instead of false and
  fix existing favgroups to be public if the user didn't have privacy mode
  enabled before.
* List _all_ public favgroups on the /favorite_groups index, not just
  favgroups belonging to the current user.
* Add a /users/<id>/favorite_groups endpoint.
2020-01-17 22:24:29 -06:00
evazion 2095dd3084 users: refactor bit_prefs search. 2020-01-17 22:13:12 -06:00
evazion b7350b8fe0 tests: fix various broken tests. 2020-01-17 19:21:20 -06:00
evazion 20f893161b favgroups: optimize favgroup:<name> search metatag.
The previous method resulted in a `WHERE posts.id IN (<list of ids>)`
clause, which turned into a huge list when the favgroup had a lot of
posts.
2020-01-17 13:38:51 -06:00
evazion e6ffdfdf81 favgroups: unify find by name methods.
Unify the `name_to_id`, `named`, and `find_by_name` methods into a
single `find_by_name_or_id` method that has consistent behavior in how
names are normalized.
2020-01-17 13:37:18 -06:00
evazion d461bb2ad0 post sets: refactor pool/favgroup methods.
Eliminate the `has_pool?` and `pool_name` methods in favor of the `pool`
method. Likewise for favgroups.
2020-01-17 02:16:13 -06:00
evazion d16756f186 post sets: remove unused methods. 2020-01-17 01:36:51 -06:00
evazion 9bce0b3743 post sets: eliminate PostSets::Base class. 2020-01-17 01:12:16 -06:00
evazion ed75db8d93 Merge pull request #4266 from BrokenEagle/fix-missing-blank-message
Remove posts not shown for blank message check
2020-01-17 01:08:32 -06:00
evazion 9ec30c85cf favgroups: prevent adding invalid posts to favgroups.
Prevent adding duplicate or nonexistent posts to favgroups. This was
possible by editing the post_ids field directly on the favgroup edit
page.
2020-01-17 00:19:23 -06:00
evazion ab325c5d2b favgroups: convert post_ids from string to array. 2020-01-17 00:19:20 -06:00
evazion eecd9a183d comments: add test for undeleting locked comments.
ref: #4258, #2728.
2020-01-17 00:18:29 -06:00
evazion 09833e9b61 Merge pull request #4259 from BrokenEagle/upload-commentary-enhancements
Add upload commentary enhancements
2020-01-17 00:18:17 -06:00
evazion 526998c4c2 Merge pull request #4256 from BrokenEagle/update-column-attributes
Update HTML table column attributes
2020-01-16 12:22:27 -06:00
evazion 8bc5ff635a Merge pull request #4258 from BrokenEagle/comment-updating-lock
Lock comments edited/deleted by moderators
2020-01-16 12:09:34 -06:00
evazion b03173d61e favgroups: fix favgroups with invalid post ids.
Fix favgroups containing post ids that don't exist. Most of these are from
typos or from old expunged posts that weren't properly removed from favgroups.
2020-01-15 23:32:51 -06:00
evazion e42881fbbf Fix #4262: Exception when using Twitter video image links. 2020-01-15 15:20:33 -06:00
evazion 617e1ca98a users/show: change favcount link to ordfav: search. 2020-01-15 13:22:30 -06:00
evazion 56817b9b09 /wiki_pages: add confirmation to delete option in subnav menu. 2020-01-15 13:20:40 -06:00
evazion 7d53af64c1 favgroups: add create new option to add to favgroup dialog.
Add option to create a new favgroup when the user opens the Add to
Favgroup dialog and they don't have any favgroups yet.
2020-01-15 13:18:25 -06:00
evazion 1ce628c31f favgroups: fix add to favgroup not working.
Fix the Add to Favgroup button not working when the user only has 1
favgroup.
2020-01-15 13:17:04 -06:00
evazion 27bd94abec /dmails: fix column widths. 2020-01-14 23:56:55 -06:00
evazion 2ff7b30edc /dmails: fix incorrect To column. 2020-01-14 23:56:52 -06:00
evazion 5bde45f90d Update .gitignore. 2020-01-14 11:24:30 -06:00
evazion 0ff78e5f4a artist finder: fix false positives for pixiv fanbox urls. 2020-01-14 10:20:06 -06:00
evazion 79aff89573 maintenance: prune approvers monthly instead of weekly.
* Move approver pruning from a weekly task to a monthly task.
* Move weekly maintenance tasks from Wednesdays at 1:30am to Sundays at
  midnight (UTC).
2020-01-13 13:23:22 -06:00
evazion ec8c427ef3 reports/uploads: remove upload report page. 2020-01-13 12:58:20 -06:00
evazion 85676ddb74 upload limits: refactor deletion confidence calculation. 2020-01-13 12:53:44 -06:00
evazion 0b08f38b8b flags: remove uploader targeting restrictions.
Remove restrictions against flagging too many posts by the same
uploader. This had problems with preventing legitimate flags in some
cases, particularly with old legacy content. This will be policed
manually instead.
2020-01-13 12:39:16 -06:00
evazion 34c3df78d9 /sitemap.xml: exclude posts that aren't visible. 2020-01-12 23:01:37 -06:00
evazion 3a2c050c91 recommended posts: drop unused PostSets::Recommended class. 2020-01-12 23:01:31 -06:00
evazion b3eeb170cb explore/posts/intro: remove page.
This was an alternate frontpage that contained a list of previews of the
most popular tags. This page was never linked from anywhere and it was
unknown by most users.
2020-01-12 23:01:04 -06:00
evazion 12a845de92 explore/posts/popular: refactor post previews. 2020-01-12 23:01:04 -06:00
evazion 74ce866890 explore/posts/viewed: refactor post previews. 2020-01-12 23:01:04 -06:00
evazion 083ce75c10 pools/gallery: refactor post previews. 2020-01-12 23:01:04 -06:00
evazion 76c4ba6f18 artists/show: refactor post previews. 2020-01-12 20:30:16 -06:00
evazion 8ddf7ee716 wiki pages: drop unused wiki page presenter. 2020-01-12 20:13:44 -06:00
evazion f2269d39a7 wiki_pages/show: fix <meta> description tag.
Use an excerpt of the first paragraph rather than the entire page.
2020-01-12 20:13:44 -06:00
evazion 50c6840be3 wiki_pages/show: refactor post previews.
* Increase number of previews from 4 to 8.
* Eliminate wiki page post set classes.
2020-01-12 20:13:44 -06:00
evazion 40711e1d4f posts/show: refactor parent/child notices.
* Convert notices from helpers to partials.
* Eliminate PostSets::PostRelationship class in favor of post_sets/posts template.
* Eliminate COUNT(*) queries when calculating the number of child posts.
* Eliminate redundant parent load and parent exists queries.
2020-01-12 18:38:38 -06:00
evazion ed5caba71c /wiki_page_versions: merge page and global listings. 2020-01-12 16:31:24 -06:00
evazion 90b94adee8 /wiki_page_versions/diff: use SetDiff to diff other_names.
Use SetDiff instead of DiffBuilder to generate diffs for wiki page other
names. SetDiff is what we use for artist other names.
2020-01-12 16:31:23 -06:00
evazion 95dd28fc52 /wiki_page_versions/diff: automatically fix comparison order.
Automatically fix it so that we always compare the newer version with
the wiki version, regardless of the order the pages are given in.
2020-01-12 15:28:07 -06:00
evazion 8dc69bef4b views: fix alias and implication list partial when tag is blank.
Fixup for abacc8ebb.
2020-01-12 13:54:29 -06:00
evazion 796efccbf4 Update ruby gems and yarn packages. 2020-01-12 13:13:03 -06:00
evazion 31e41b06ba pools: remove pool element destroy action.
This endpoint was for removing a single post from a pool. This wasn't
used anywhere within Danbooru.
2020-01-12 01:30:04 -06:00
evazion 1a9e4497da /pool_versions: fix is_deleted search option. 2020-01-12 01:23:35 -06:00
evazion 05da264d0d pools: remove pool list dropdown from add to pool dialog.
Autocomplete works better than trying to select the pool from a gigantic
dropdown.
2020-01-12 01:23:35 -06:00
evazion bebc4694dd pools: remove is_active flag.
Remove uses of the is_active flag. Keep column in database (for now).

The only purpose of this flag was to filter out pools from the pool list
in the Add to Pool dialog. This hasn't had much use since autocomplete
was added. Most pools didn't set the flag correctly anyway.
2020-01-12 01:23:35 -06:00
evazion 3fce17d8ae upload tags report: fix incorrect column name. 2020-01-12 00:42:23 -06:00
evazion 1e3c97e43b pools: remove recent pools from 'add to pool' dialog. 2020-01-11 20:11:35 -06:00
evazion abacc8ebb1 views: convert helpers to partials. 2020-01-11 20:01:14 -06:00
evazion 153a8339ab Inherit errors from StandardError instead of Exception. 2020-01-11 19:07:28 -06:00
evazion aff3d3b18f Fix various rubocop issues. 2020-01-11 19:01:40 -06:00
evazion bab656a873 config: remove more obsolete or unneeded config options.
Remove more config options that were either unused or that shouldn't
need to be configured by downstream users.
2020-01-11 01:31:29 -06:00
evazion 07a0b0b175 config: eliminate hostnames config option.
Eliminate the Danbooru.config.hostnames option. It was only used for
rewriting links in notes. Just using the main hostname is good enough,
there aren't any notes still using any of Danbooru's alternate domain
names.
2020-01-11 00:59:25 -06:00
evazion 9afce59790 Merge pull request #4253 from BrokenEagle/missing-post-attributes
Fix missing post HTML attributes
2020-01-10 20:24:51 -06:00
evazion 56faf701f3 Merge pull request #4254 from BrokenEagle/copyable-note-number
Move note number to the body so that it can be copied
2020-01-10 20:22:07 -06:00
evazion 793d3414b0 Merge pull request #4255 from BrokenEagle/additional-twitter-hashtag
Add additional Twitter hashtag
2020-01-10 20:06:51 -06:00
evazion 133547781c /pool_versions: fix N+1 query problems. 2020-01-10 19:30:47 -06:00
evazion afa4a2c985 js: fixup issues with @rails/ujs.
Fix a couple regressions caused by the migration from jquery-ujs to
@rails/ujs in 9f4ac4c96:

* Add authenticity tokens to all remote forms. By default, Rails doesn't
  doesn't include authenticity tokens in remote forms because it can cause
  problems with fragment caching. This was fine with jquery-ujs because it
  would insert the authenticity token when the remote form was
  submitted, but apparently @rails/ujs doesn't do this. This broke
  certain remote forms nested inside of jquery UI dialogs.

* Fix dialogs to trigger remote form submissions through @rails/ujs
  instead of through jquery. This fixes a problem where remote forms that
  returned a javascript response displayed the response as plaintext
  instead of executing the returned javascript.
2020-01-10 19:16:27 -06:00
evazion c50f3da4be Fix #4179: Checkboxes remaining checked after submit on Add Commentary.
Change add commentary to use edit_form_for, which adds
autocomplete="off" to disable autofill in Firefox.
2020-01-10 19:14:11 -06:00
evazion c86c61c9a4 Fix #4162: Remove browser autocomplete from most inputs. 2020-01-10 16:08:34 -06:00
evazion cde8ee64e1 Fix #4241: Approving a post then editing tags returns 404.
This is what happens:

* The post is approved.
* The approval action reloads the page by calling `location.reload()`.
* After the page is reloaded, the value of the hidden `_method` param in
  the post edit form is mysteriously overwritten with the value of the
  authenticity_token param from the previous page load.
* The post edit form is submitted, but the _method param isn't set to
  `patch`, so the form submission is treated as a POST request instead of
  a PUT request.
* The POST endpoint doesn't exist, so the form submission returns 404.

The cause appears to be buggy form autofill in Firefox 72. This only
happens in Firefox 72, not in Firefox 68 or in other browsers.
2020-01-10 12:54:12 -06:00
evazion 3ca4f4f32c posts: convert post edit form to simple form. 2020-01-10 12:08:28 -06:00
evazion 9f4ac4c96a js: replace jquery-ujs with @rails/ujs. 2020-01-09 22:15:18 -06:00
evazion fc06a2a0f7 posts: fix members not being able to tag posts.
Fix regression caused by 3d3f61559. This is what happened:

* The posts controller calls post.visible? before post.update.
* post.visible? calls post.tag_array.
* The call to tag_array causes the current value of tag_string to be
  cached in @tag_array.
* post.update calls post.merge_old_changes.
* post.merge_old_changes accesses tag_array, which contains the old
  cached version of tag_string rather than the new version from the
  update.
* post.merge_old_changes detects no changes, so the update does nothing.
* This only happens for Members because for Gold+ users the call to
  post.visible? short circuits before accessing tag_array.

Moral of the story: cache invalidation is hard. Don't cache unless you have to.
2020-01-09 18:54:03 -06:00
evazion 2cf0e7dcb5 table builder: add default html ids and css classes.
* Add default IDs for <table> tags (ex: <table id="artists-table">).
* Add default CSS classes for <th> and <td> tags (ex: <td class="name-column">).
2020-01-09 17:32:40 -06:00
evazion d0d3da08e5 views: remove IP addresses from most pages.
Removed IP addresses from comments and from most other listing pages.
IPs take up a lot of space in many places (especially IPv6 addresses),
and in most of these pages they're rarely useful for catching
sockpuppets.
2020-01-09 16:55:09 -06:00
evazion 6acff3334e forum: fix exception when searching forum posts by title.
ex: https://danbooru.donmai.us/forum_posts?search[topic_title_matches]=test

The is_deleted field wasn't qualified so it caused an ambiguous column
error when the forum_posts table was joined with the forum_topics table.
2020-01-09 00:15:05 -06:00
evazion e119524f20 Merge pull request #4247 from BrokenEagle/pool-version-enhancements
Add pool version enhancements
2020-01-08 19:34:25 -06:00
evazion 5a4b24f6a0 pixiv: normalize new profile urls.
ref: https://danbooru.donmai.us/forum_topics/9127?page=290#forum_post_162222
2020-01-08 17:33:55 -06:00
evazion ba2744ad42 /mod_actions: add missing .prose wrapper around dtext. 2020-01-08 14:15:17 -06:00
evazion e72c10bc23 dtext: don't link non-artist tags to artist entries.
* Don't link non-artist tags to artist pages, even when the tag has an
  artist entry. These artist entries are usually old deleted entries
  that happen to have the same name as a gentag, or leftover entries
  that need to be deleted.

* URL escape the artist name in /artists/show_or_new?name={name}
2020-01-08 12:33:55 -06:00
evazion 0c92a5af4d /artist_versions: fix stray <td> tag. 2020-01-08 11:53:28 -06:00
evazion 0b31a6f491 Merge pull request #4249 from BrokenEagle/artist-wiki-links
Have artist wiki links go to artist page
2020-01-08 11:27:37 -06:00
evazion 11411ab778 Merge pull request #4251 from BrokenEagle/tag-script-storage
Change tag script storage
2020-01-08 11:21:08 -06:00
evazion ee8a8e5d33 Merge pull request #4250 from BrokenEagle/fix-fetch-commentary
Fix the error from missing jQuery-ui effects
2020-01-08 11:20:07 -06:00
evazion c32f9fbdb8 approver prune: don't prune recently promoted approvers.
Don't prune people who were just promoted in the last 45 days. Also fix
bug where approvers with zero approvals weren't pruned.
2020-01-07 20:24:17 -06:00
evazion e28a955535 config: remove unneeded config options. 2020-01-07 19:35:57 -06:00
evazion 3d3f615591 config: refactor restricted tag settings. 2020-01-07 19:19:22 -06:00
evazion ca015a6685 /post_votes: fix the uploader column showing the voter instead. 2020-01-07 12:06:53 -06:00
evazion e8efe1107f Remove targeted down voting report.
Remove the targeted down voting report. This report hasn't been working
for a while. The /post_votes page is a better way to investigate
downvoting activity anyway.
2020-01-07 11:58:45 -06:00
evazion d00308c43d Delegate HSTS to nginx.
Remove the ssl_options config option. Let nginx handle HSTS and
http->https redirects instead. At the rails level, all we need to do is
set the secure cookie flag when https is enabled (which we assume it's
enabled in production).
2020-01-07 11:49:46 -06:00
evazion a4419b1e3d main menu: remove aliases and implications pages.
Remove links to the aliases and implications pages from the main menu.
Put them in the submenu on the /tags page instead.

These pages are too rarely used to deserve being in the toplevel menu.
They also weren't easy to find for non-Builders. The toplevel menu
shouldn't be dependent on user level.
2020-01-07 11:28:52 -06:00
evazion e9b99408f7 /reports/upload_tags: convert to table builder. 2020-01-07 11:21:15 -06:00
evazion 1ab6a353ca Remove /meta_searches/tags page.
This was a search page that let you search for tags, aliases, and
implications at the same time. It never got much use and it's been
broken for a while now (the search form passed the wrong param to the
controller).
2020-01-07 11:10:56 -06:00
evazion 2aa3ced372 related tags: fix tags rendering as #<Tag:0x0000...>.
Fixup for ab4af3c41.
2020-01-07 10:37:07 -06:00
evazion ba7c38cfe0 forum: fix .forum-topic-row selector.
The .forum-topic-row class was removed. Use different selector instead.

This rule ensures the timestamp doesn't wrap on small screens.
2020-01-07 02:51:19 -06:00
evazion 5c913d8ad1 table builder: fix various incorrect css classes.
Change calling convention to explicitly indicate whether the attributes
are for the <th> element or the <td> element. Fixes various cases where
the two were mixed up.

* Fix .col-expand classes not being set correctly on the /post_versions,
  /pool_versions, and /notes pages.

* Fix .updater and .updated-at classes not being set correctly on the
  /forum_topics page.

* Fix the name param being ignored (noticeable in the post count field
  on the /tags page).

* Don't pass empty string when column has no name.
2020-01-07 02:40:59 -06:00
evazion cdb42aad66 /post_events: convert to table builder.
Also fix TableBuilder#all_row_attributes to work with objects that don't
inherit from ApplicationRecord (and therefore don't have an id or model name).
2020-01-07 01:16:37 -06:00