Commit Graph
100 Commits
Author SHA1 Message Date
evazion 0ef9d6e417 emails: send welcome mail on signup. 2020-03-14 19:18:28 -05:00
evazion d860fab7f5 emails: send verification mail when user changes address. 2020-03-14 18:32:00 -05:00
evazion 167fe51a8a emails: move edit email flow to emails controller. 2020-03-14 17:42:47 -05:00
evazion 3dbdce3ae3 mod reports: fix exception when reporting forum posts. 2020-03-12 21:23:57 -05:00
evazion 258f4a8b95 users: move emails to separate table.
* Move emails from users table to email_addresses table.
* Validate that addresses are formatted correctly and are unique across
  users. Existing invalid emails are grandfathered in.
* Add is_verified flag (the address has been confirmed by the user).
* Add is_deliverable flag (an undeliverable address is an address that bounces).
* Normalize addresses to prevent registering multiple accounts with the
  same email address (using tricks like Gmail's plus addressing).
2020-03-12 21:18:53 -05:00
evazion 41304d6add forum: fix topics with no BURs being marked as approved. 2020-03-11 21:54:17 -05:00
evazion cc2172a925 forum: fix exception in forum_topics/new.
Caused by including is_read? in html_data_attributes. updated_at is nil
for new topics.
2020-03-11 21:06:04 -05:00
evazion 1f20ac2665 tags: fix value_for regex. 2020-03-11 02:09:59 -05:00
evazion e81161bca5 forum: adjust BUR status label colors (again).
* Indicate unread topics in bold instead of with a "NEW" label.
* Use pills for labels.
2020-03-11 00:01:56 -05:00
evazion f917595554 forum: adjust BUR status label colors. 2020-03-10 23:11:41 -05:00
evazion 6fecf5db0e BURs: remove old single alias/implication pruning code.
* Rename TagChangeRequestPruner to BulkUpdateRequestPruner.
* Remove old code for pruning individual alias / implication requests.
2020-03-10 21:23:46 -05:00
evazion be585060f4 BURs: don't add [APPROVED] / [REJECTED] tags to titles. 2020-03-10 21:02:12 -05:00
evazion 0e7632ed8a aliases/implications: remove forum topic updating code.
Remove code for updating forum topics when an alias or implication is
approved or rejected. This code was only used when approving single
alias or implication requests. This is no longer used now that all
alias/implication requests are done through BURs.
2020-03-10 20:55:20 -05:00
evazion 6504d44223 forum: change BUR counts to status labels.
Use pending / approved / rejected status labels in front of the topic
title instead of a BUR count column. This is to make the forum listing
easier to visually scan for resolved vs unresolved topics.

Labels are only added for topics in the Tags category. This is a hack to
avoid labels on megathreads that have had BURs mistakenly attached to them.

[APPROVED] and [REJECTED] labels are stripped from thread titles to make
the titles cleaner. This is a hack until these titles can be fixed.
2020-03-10 20:13:11 -05:00
evazion 134a06722a forum: use icons to indicate sticky/locked/deleted/restricted status. 2020-03-10 19:04:56 -05:00
evazion 0317033d58 Revert "Return the actual sample size used for related tag calculations"
This reverts commit be0bb42ba9.
2020-03-09 22:18:57 -05:00
evazion cb11d818b1 artist versions: fixup is_active reference. 2020-03-09 14:40:22 -05:00
evazion f57f2bde08 Update ruby gems. 2020-03-08 23:18:15 -05:00
evazion 5625458f69 users: refactor password reset flow.
The old password reset flow:

* User requests a password reset.
* Danbooru generates a password reset nonce.
* Danbooru emails user a password reset confirmation link.
* User follows link to password reset confirmation page.
* The link contains a nonce authenticating the user.
* User confirms password reset.
* Danbooru resets user's password to a random string.
* Danbooru emails user their new password in plaintext.

The new password reset flow:

* User requests a password reset.
* Danbooru emails user a password reset link.
* User follows link to password edit page.
* The link contains a signed_user_id param authenticating the user.
* User changes their own password.
2020-03-08 23:18:15 -05:00
evazion f25bace766 users: refactor change password page.
* Fix users being redirected back to the change password page after
  successfully changing their password.
* Move passwords controller out of /maintenance/ namespace.
* Add tests.
2020-03-08 23:18:08 -05:00
evazion c30ba8d5bc users/edit: fix Advanced settings section being shown by default. 2020-03-08 14:24:38 -05:00
evazion f2d7e42d89 Merge pull request #4301 from BrokenEagle/forum-topic-bur-indicators
Add BUR counters to forum topics index
2020-03-07 23:04:19 -06:00
evazion a1ddba4929 Merge pull request #4325 from BrokenEagle/related-tag-enhancements
Related tag enhancements
2020-03-07 22:38:24 -06:00
evazion de0b8218b5 Merge pull request #4329 from BrokenEagle/update-blacklist-controls
Update blacklist controls
2020-03-07 22:32:47 -06:00
evazion 1a2c082b86 search: support negated wildcards in post searches.
* Support negated wildcards in searches (e.g. "holding -holding_*")
* Raise wildcard limit to matching 25 tags regardless of user level.
* Fix wildcards potentially matching empty tags.
* Fix wildcard tags being sorted by post count only, and therefore not
  having a stable ordering when tags have equal post counts.
* Fix sidebar to calculate wildcards tags the same way the search does.
2020-03-06 23:23:38 -06:00
evazion 967d398c8e search: move query parsing code from tag model to post query builder. 2020-03-06 23:23:38 -06:00
evazion 2e0ad42eca pagination: fix page count timeouts not being cached.
Bug: if there was a timeout when calculating the page count, the timeout
wouldn't be cached, so we would hit multiple timeouts trying to
calculate the page count multiple times.
2020-03-06 23:23:38 -06:00
evazion d344005f8f tag scripts: fix deleted thumbnails being removed.
Fix thumbnails being removed when using tag scripts on deleted thumbnails.
2020-03-06 23:23:38 -06:00
evazion f4da0a127d artists: add is_deleted and is_banned indexes. 2020-03-06 23:23:38 -06:00
evazion ddffffb413 artists: factor out artist finder to separate module. 2020-03-06 23:23:38 -06:00
evazion a271ddcc29 views: reduce font size of Danbooru link in header. 2020-03-06 23:23:34 -06:00
evazion 9960290666 views: reduce font size of footer. 2020-03-06 19:56:53 -06:00
evazion 36f77942c3 views: hide git hash in footer on mobile.
Reduce clutter so footer fits on one line.
2020-03-06 19:56:44 -06:00
evazion 39ad0d2210 settings: rename "disable responsive mode" to "enable desktop mode"
Desktop mode is a better description. Most users don't know what responsive mode means.
2020-03-06 19:37:11 -06:00
evazion 57ba5c59a4 tag_aliases/index: fix tag category search options excluding empty tags.
Fix Tag.search to not filter out empty tags by default. Set the default
in the tags controller instead.

Fixes various search pages, namely aliases/implications/wiki pages, that
rely on Tag.search and that don't expect it to filter tags out by default.
2020-03-06 19:07:17 -06:00
evazion 6d2dd0303f tags/index: fix has_artist search option.
Fix references to artists.is_active. Note that we deliberately use joins
instead of subqueries here for performance reasons.
2020-03-06 18:55:02 -06:00
evazion c67e6a5bb4 artists/summary: fix links to group members. 2020-03-06 17:25:19 -06:00
evazion 5bc0ab446b models: add deletable concern. 2020-03-06 17:06:29 -06:00
evazion 32bad825e1 tags.scss: remove unused banned tag styling. 2020-03-06 15:14:25 -06:00
evazion c936a9624c artists/index: fix incorrect page counts for has_tag param.
Bug: using the has_tag param caused the paginator to calculate the wrong
page count.

Caused by the join having a DISTINCT clause in the OFFSET/LIMIT query,
but not in the COUNT(*) query.
2020-03-06 15:10:19 -06:00
evazion 4c11e339bd artists: rename is_active flag to is_deleted.
Rename is_active to is_deleted. This is for better consistency with
other models, and to reduce confusion over what "active" means for
artists. Sometimes users think active is for whether the artist is
actively producing work.
2020-03-06 14:50:21 -06:00
evazion 49a3538933 pixiv: add support for techorus urls. 2020-03-04 00:00:39 -06:00
evazion 09046783ac pixiv: fix tests. 2020-03-03 23:54:03 -06:00
evazion f1345a7ecd Fix #4309: Cannot use random=false in /posts search. 2020-03-03 23:01:34 -06:00
evazion 95e11e0ffc Fix #4318: Flags and appeals should reload page. 2020-03-03 23:01:34 -06:00
evazion 266e4054b0 Fix #4293: ArtStation: use 4k images.
Also fixes #4290 (Image replacements: undefined method hostname for nil:NilClass)
2020-03-03 23:01:29 -06:00
evazion b9939c6356 Fix #4315: Disapproval messages aren't striped of spaces.
Set blank disapproval messages to null to prevent them from showing up
in wildcard searches.
2020-03-03 04:26:39 -06:00
evazion 143bfdfb5b forum: fix mods not being able to lock forum topics. 2020-03-03 03:54:19 -06:00
evazion c0376ebb51 tags/index: don't show aliases when search matches primary tag.
When searching e.g. "*mask*", don't show "surgical_mask <- medical_mask"
because "*mask*" already matches the primary tag.
2020-03-03 03:34:34 -06:00
evazion 0890963187 Update ruby gems. 2020-03-03 03:25:51 -06:00
evazion 874a4118ea comments/index: show pretty ratings. 2020-03-03 03:25:51 -06:00
evazion 85f1674618 modqueue: highlight bad tags instead of entire post.
Change it so that when a post contains bad tags, the tags themselves are
highlighted rather than the entire post.

This also adds a data-tag-name attribute to tags in tag lists.
2020-03-03 03:25:51 -06:00
evazion b0e2ffbe7d modqueue: remove highlighting of high/low scoring posts. 2020-03-03 03:25:51 -06:00
evazion fc97ea3c8e modqueue: rework post display.
Rework how posts are displayed in the modqueue:

* Rearrange post info to take up less space and to be consistent with
  how posts are shown on the comments index.
* Reduce font size of approve / reject options.
* Reduce empty space around thumbnails and between posts.
* Add size info beneath thumbnails.
* Allow voting on posts.
* Use PostPresenter.preview to standardize rendering of thumbnails. This
  adds parent/child borders, tooltips, and data attributes.
2020-03-03 03:25:51 -06:00
evazion 04b69954eb modqueue: add order options; change default order to newest first.
* Add options for changing the order of the modqueue (newest first,
  oldest first, highest scoring first, lowest scoring first).

* Change the default order from oldest posts first to most recently
  flagged or uploaded posts first.

* Add an order:modqueue metatag to order by most recently flagged or
  uploaded in standard searches.
2020-03-03 03:25:51 -06:00
evazion 9ddf408ec5 modqueue: add sidebar.
Add a sidebar to the modqueue page that shows the following information:

* Number of pending and flagged posts.
* Number of posts disapproved for poor quality or breaking rules.
* Top uploaders in the queue.
* Top artist, copyright, and character tags in the queue.
2020-03-02 13:47:54 -06:00
evazion 475d6ae7cf modqueue: move url from /moderator/post/queue to /modqueue. 2020-02-29 17:46:58 -06:00
evazion 72210c0226 modqueue: remove posts per page cookie. 2020-02-29 17:46:57 -06:00
evazion 980103e443 modqueue: optimize sql queries.
* Include appeals and flags.
* Avoid an existence query for pools.
* Avoid a query checking if the user has previously approved the post.
  This is a rare condition and it will be prevented anyway if the user
  tries to reapprove the post.
2020-02-29 17:46:57 -06:00
evazion b232470248 search: change behavior of disapproval:<reason> metatag.
* Change the `disapproval:<reason>` metatag to `disapproved:<reason>`.

* Change `disapproved:<reason>` to show all posts disapproved for a
  given reason, not just those disapproved by the current user.

* Allow searching for your own disapprovals with `disapproved:<my_name>`.

* Drop the `disapproved:<any|none>` metatags. `disapproved:any` is
  equivalent to `disapproved:<my_name>` and `disapproved:none` is
  equivalent to `-disapproved:<my_name>`.

These changes are so that you can search e.g. disapproved:poor_quality
to find all posts disapproved for poor quality.
2020-02-29 17:46:57 -06:00
evazion ba66ca62c4 posts/show: avoid favgroup exists query. 2020-02-29 14:01:49 -06:00
evazion cded0f763b approvers: remove "you haven't moderated in awhile" notice.
Remove the nag message when an approver hasn't approved anything
recently. Also remove the modqueue random posts page. As of 3d410398a,
inactive approvers are now warned via dmails.
2020-02-28 14:28:08 -06:00
evazion 41103cb6b5 routes: remove unused routes. 2020-02-28 14:24:30 -06:00
evazion 29ed12b238 admins: remove ability to manually process BURs.
Remove the ability for admins to manually submit BURs without going
through the forum.
2020-02-28 14:23:31 -06:00
evazion e1fd3f6ed9 mods: remove ability to manually perform mass edits.
Remove the ability for mods to manually perform mass edits without going
through the forum.
2020-02-28 14:21:31 -06:00
evazion 8bc18ad461 aliases/implications: default listing to newest first.
Change alias and implication index pages from listing
aliases/implications by pending first to newest first.
2020-02-27 20:18:18 -06:00
evazion 984768fcee aliases/implications: share secondary links with tags index. 2020-02-27 20:18:18 -06:00
evazion d2fb9d9f85 aliases/implications: split name search field into 'from' and 'to'.
Split the name field on the alias and implication search forms so that
you can search just for antecedents or consequents without having to
search both.
2020-02-27 20:18:08 -06:00
evazion a97f435342 aliases/implications: add » links to name fields.
Add » links to the antecedent and consequent name fields. These links
let you find all tags aliased or implied to or from a given tag. For
implications, this is a deep search (includes indirectly implied tags).
2020-02-27 20:07:59 -06:00
evazion 869142ed1b Fix #4314: Favorite/vote modes give generic error messages.
Refactor tag scripts to fix multiple issues:

* Errors during tag scripting didn't show the actual error message, just
  a generic "There was an error updating post #NNN" message.
* The quick edit form didn't show any error messages at all on failure.
* Thumbnails didn't have all their data attributes properly updated
  after the post was updated.

This changes it so that thumbnails have their html fully replaced after
updating. This has the side effect of removing event handlers bound
directly to the thumbnail. A `danbooru:post-preview-updated` event is
fired in case userscripts need to detect when thumbnails are updated.
2020-02-27 19:23:48 -06:00
evazion dd2faa0d35 users: don't count deleted feedbacks on profile. 2020-02-27 13:17:03 -06:00
evazion 3d410398a3 approver pruner: send weekly warning dmails to inactive approvers.
Send weekly warning dmails to approvers in danger of losing their
approver permissions. Don't send warnings if we're more than three weeks
away from demotion so that approvers aren't warned prematurely.
2020-02-27 00:19:16 -06:00
evazion 4b9a29743a Revert "Fix post resize image control"
This reverts commit 2affd4a3b5.
2020-02-27 00:19:09 -06:00
evazion e29e9eda49 posts: remove ban confirmation page.
Use a dialog instead of a separate page to confirm bans.
2020-02-27 00:19:03 -06:00
evazion bf281df023 forum post votes: fix broken visible check. 2020-02-25 16:06:37 -06:00
evazion a24abb93ba Merge pull request #4311 from BrokenEagle/fix-embedded-note-body-position
Fix embedded note body position
2020-02-25 13:44:21 -06:00
evazion afe4d48772 feedbacks: fix broken visible checks. 2020-02-25 13:29:52 -06:00
evazion b915f1c586 Revert "application model: move pagination extension to concern."
This reverts commit 7855e36d17.

Broke pagination due to incorrect memoization causing @paginator_count
to be shared between requests.
2020-02-25 01:07:09 -06:00
evazion e1362faf0d mode menu: remove forgotten approve menu option. 2020-02-25 01:04:59 -06:00
evazion 406bc5d87f Add /pixiv_ugoira_frame_data.json endpoint. 2020-02-24 22:43:03 -06:00
evazion 7c71311eef Add /favorites.json endpoint. 2020-02-24 22:42:59 -06:00
evazion 928c7f8a0a Merge pull request #4281 from BrokenEagle/embedded-notes-improvements
Add embedded notes improvements
2020-02-24 01:13:13 -06:00
evazion 319510f2e9 Update ruby gems. 2020-02-23 17:52:38 -06:00
evazion ce11485fe0 Remove super voters. 2020-02-23 17:52:38 -06:00
evazion 1591df0351 Remove curated pool updater. 2020-02-23 17:52:38 -06:00
evazion 01e9020b6a popular posts: add pagination. 2020-02-23 17:52:38 -06:00
evazion 463b1b734e Add curated posts page.
Add a curated posts page at /explore/posts/curated. Curated posts are
the most favorited posts by contributor-level users (users with
unlimited upload permissions).

Also add an order:curated tag using for use in regular searches.
2020-02-23 17:52:38 -06:00
evazion e8590afa6d popular posts: fix date range handling.
* Fix the next button for the weekly timescale to jump to the next week,
  not the next day.
* Show the start and end dates for the weekly timescale.
* Use `Time.zone.today` instead of `Date.today` to respect the user's
  timezone setting.
2020-02-23 17:26:08 -06:00
evazion 76259265de posts: fix noter:<name> metatag. 2020-02-23 17:26:08 -06:00
evazion cc9298cf46 posts: fix newpool:<name> metatag. 2020-02-23 17:26:08 -06:00
evazion e47d0e0d05 models: set more creator names explicitly.
Set creators explicitly for bans, BURs, comment votes, and posts.
2020-02-23 17:26:08 -06:00
evazion 3a018ee9f7 dmails: set sender name and ip address explicitly.
Set the sender name and IP addresses explicitly in the controller rather
than implicitly in the model.

Fixes cases where automated dmails from DanbooruBot had their IP
addresses set to the person who triggered the dmail, even though they
didn't actually send the dmail themselves.
2020-02-23 17:26:08 -06:00
evazion 7855e36d17 application model: move pagination extension to concern. 2020-02-23 17:26:04 -06:00
evazion c53e4e7155 Merge pull request #4300 from BrokenEagle/fix-note-version-dimension-columns
Only show dimension transitions on relevant changes
2020-02-23 01:02:03 -06:00
evazion 1ce01df3db Merge pull request #4302 from BrokenEagle/fix-nonembedded-note-resizing
Restrict note container resizing to embedded notes
2020-02-23 01:01:44 -06:00
evazion b31409a586 Merge pull request #4306 from BrokenEagle/fix-commentary-version-post-search
Fix searching artist commentaries by post ID
2020-02-23 01:01:26 -06:00
evazion 81532fdbac wiki_pages/search: fix title field. 2020-02-23 00:30:04 -06:00
evazion a181e6d0db Fix #1898: Include alias predicates in non-empty Tags search.
Make searches on the /tags index includes aliases too. Show matching
aliases like this:

   Name: gray*

   ? 75098 grey_hair <- gray_hair
   ? 35345 grey_eyes <- gray_eyes
2020-02-23 00:29:17 -06:00
evazion a8e5412d9c implications: refactor calculation of implied tags.
Refactor to use a recursive CTE to calculate implied tags in SQL, rather
than storing them in a descendant_names field. This avoids the
complexity of keeping the stored field up to date. It's also more
flexible, since it allows us to find both descendant tags (tags that
imply a given tag) as well as ancestor tags (tags that are implied by a
given tag).
2020-02-22 22:37:36 -06:00
evazion 83a3ed85dd Fix #4308: pixiv_ugoira_frame_data not available through API anymore. 2020-02-22 19:07:35 -06:00