discourse/app/models
David Taylor 0e303c7f5d
FEATURE: Automatically generate optimized site metadata icons (#7372)
This change automatically resizes icons for various purposes. Admins can now upload `logo` and `logo_small`, and everything else will be auto-generated. Specific icons can still be uploaded separately if required.

## Core

- Adds an SiteIconManager module which manages automatic resizing and fallback

- Icons are looked up in the OptimizedImage table at runtime, and then cached in Redis. If the resized version is missing for some reason, then most icons will fall back to the original files. Some icons (e.g. PWA Manifest) will return `nil` (because an incorrectly sized icon is worse than a missing icon). 

- `SiteSetting.site_large_icon_url` will return the optimized version, including any fallback. `SiteSetting.large_icon` continues to return the upload object. This means that (almost) no changes are required in core/plugins to support this new system.

- Icons are resized whenever a relevant site setting is changed, and during post-deploy migrations

## Wizard

- Allows `requiresRefresh` wizard steps to reload data via AJAX instead of a full page reload

- Add placeholders to the **icons** step of the wizard, which automatically update from the "Square Logo"

- Various copy updates to support the changes

- Remove the "upload-time" resizing for `large_icon`. This is no longer required.

## Site Settings UX

- Move logo/icon settings under a new "Branding" tab

- Various copy changes to support the changes

- Adds placeholder support to the `image-uploader` component

- Automatically reloads site settings after saving. This allows setting placeholders to change based on changes to other settings

- Upload site settings will be assigned a placeholder if SiteIconManager `responds_to?` an icon of the same name

## Dashboard Warnings

- Remove PWA icon and PWA title warnings. Both are now handled automatically.

## Bonus

- Updated the sketch logos to use @awesomerobot's new high-res designs
2019-05-01 14:44:45 +01:00
..
concerns FIX: Old `Upload#url` scheme support for `Upload.get_from_url`. 2019-04-24 10:15:47 +08:00
reports FIX: ensures file extension doesnt have a leading point (#7449) 2019-04-27 14:00:51 +02:00
about.rb UX: sort admins and moderators by last seen date on /about page 2019-01-15 17:26:11 +05:30
admin_dashboard_data.rb FEATURE: Automatically generate optimized site metadata icons (#7372) 2019-05-01 14:44:45 +01:00
admin_dashboard_general_data.rb DEV: removes old dashboard (#7295) 2019-04-01 12:39:49 +02:00
admin_dashboard_index_data.rb DEV: removes old dashboard (#7295) 2019-04-01 12:39:49 +02:00
api_key.rb Fix all the errors to get our tests green on Rails 5.1. 2017-09-25 13:48:58 +08:00
application_request.rb FEATURE: control which web crawlers can access using a whitelist or blacklist 2018-03-22 15:41:02 -04:00
auto_track_duration_site_setting.rb
backup_file.rb FEATURE: Support backup uploads/downloads directly to/from S3. 2018-10-15 09:43:31 +08:00
backup_location_site_setting.rb DEV: Enable `Style/SingleLineMethods` and `Style/Semicolon` in Rubocop (#6717) 2018-12-04 11:48:13 +08:00
badge.rb FIX: Badges appeared in wrong badge group 2019-01-21 21:09:33 +01:00
badge_grouping.rb FIX: Previous annotations were broken 2019-01-11 14:30:19 -05:00
badge_type.rb FIX: Previous annotations were broken 2019-01-11 14:30:19 -05:00
category.rb FEATURE: Category Reviewable by Group 2019-04-30 15:23:06 -04:00
category_and_topic_lists.rb
category_custom_field.rb
category_featured_topic.rb refinement and test for batch mode on feature_topics 2017-12-20 13:58:05 +11:00
category_group.rb FEATURE: move staff tags setting to tag group settings 2018-04-20 15:34:23 -04:00
category_list.rb FIX: category list order using category featured topics (#7283) 2019-04-25 11:07:19 +02:00
category_page_style.rb Feature: add boxes with subcategories option for desktop categories page (#6471) 2018-10-11 15:59:37 +08:00
category_search_data.rb Update annotations. 2018-07-16 14:19:07 +08:00
category_tag.rb FIX: Previous annotations were broken 2019-01-11 14:30:19 -05:00
category_tag_group.rb FIX: Previous annotations were broken 2019-01-11 14:30:19 -05:00
category_tag_stat.rb Update annotations. 2018-07-16 14:19:07 +08:00
category_user.rb Update Rubocop to 0.60 2018-12-04 10:48:16 +01:00
child_theme.rb FIX: Previous annotations were broken 2019-01-11 14:30:19 -05:00
color_scheme.rb PERF: Reduce N+1s on theme admin page 2019-02-26 14:22:02 +00:00
color_scheme_color.rb FIX: Previous annotations were broken 2019-01-11 14:30:19 -05:00
custom_emoji.rb Update annotations. 2017-03-22 14:26:53 +08:00
developer.rb
digest_email_site_setting.rb FEATURE: Add every month / 6 months options to email digest. (#7247) 2019-03-25 12:45:01 +02:00
directory_item.rb FIX user directory time period count (#6586) 2018-11-12 15:30:05 +01:00
discourse_single_sign_on.rb FIX: Sites with SSO that required approval were not creating reviewables 2019-04-10 12:53:50 -04:00
discourse_version_check.rb REFACTOR: Avoid duplicated logic on server and client. 2017-11-21 17:10:04 +08:00
draft.rb FIX: Previous annotations were broken 2019-01-11 14:30:19 -05:00
draft_sequence.rb FIX: Previous annotations were broken 2019-01-11 14:30:19 -05:00
email_change_request.rb
email_level_site_setting.rb FEATURE: add more granular user option levels for email notifications (#7143) 2019-03-15 10:55:11 -04:00
email_log.rb DEV: Remove ignored columns 2019-02-08 12:12:38 +01:00
email_token.rb FEATURE: Send user activation reminders. (#7280) 2019-04-10 16:53:52 +02:00
embeddable_host.rb FIX: reset embedding settings when no embeddable host, log host changes (#7264) 2019-03-29 17:05:51 +01:00
embedding.rb Add rubocop to our build. (#5004) 2017-07-28 10:20:09 +09:00
emoji.rb UX: Better emoji escaping for topic title (#7218) 2019-03-21 09:11:33 +01:00
emoji_set_site_setting.rb FIX: Better handling for toggling `must_approve_users` 2019-04-16 15:56:35 -04:00
github_user_info.rb FIX: Previous annotations were broken 2019-01-11 14:30:19 -05:00
given_daily_like.rb Add rubocop to our build. (#5004) 2017-07-28 10:20:09 +09:00
global_setting.rb DEV: Introduce parallel rspec testing 2019-04-01 11:06:47 -04:00
group.rb FEATURE: Category Reviewable by Group 2019-04-30 15:23:06 -04:00
group_archived_message.rb FIX: Previous annotations were broken 2019-01-11 14:30:19 -05:00
group_custom_field.rb
group_history.rb
group_manager.rb
group_mention.rb FIX: Previous annotations were broken 2019-01-11 14:30:19 -05:00
group_request.rb Update annotations. 2019-04-26 10:36:21 +08:00
group_user.rb FIX: change title when primary group changes (#6602) 2018-11-14 08:28:41 +08:00
ignored_user.rb Annotate models. 2019-04-02 13:19:14 +08:00
incoming_domain.rb FIX: If the host can't be extracted don't raise an error 2017-05-04 13:26:37 -04:00
incoming_email.rb PERF: allow looking up incoming email by user_id 2019-04-26 22:33:01 +10:00
incoming_link.rb FIX: ignore invalid usernames in incoming link tracker 2018-09-04 12:28:32 +10:00
incoming_links_report.rb FIX: Heisentest - don't memoize on a class variable 2019-02-25 14:49:01 -05:00
incoming_referer.rb
instagram_user_info.rb
invite.rb FIX: save registration IP address for invited users 2019-04-13 13:04:25 +05:30
invite_redeemer.rb FEATURE: Clarify Reviewable User Actions 2019-04-17 11:44:17 -04:00
invited_group.rb
javascript_cache.rb FIX: extracted theme JavaScripts for multisite (#6502) 2018-10-18 17:05:34 +11:00
like_notification_frequency_site_setting.rb
locale_site_setting.rb FEATURE: Allow plugins to register a new locale 2018-01-25 14:57:41 +01:00
mailing_list_mode_site_setting.rb Remove daily mailing mode option as it doesn't scale. 2017-05-05 12:21:50 +08:00
muted_user.rb FIX: Previous annotations were broken 2019-01-11 14:30:19 -05:00
new_topic_duration_site_setting.rb
notification.rb FEATURE: Send the user a notification when their post is approved 2019-04-15 16:20:16 -04:00
notification_level_when_replying_site_setting.rb FEATURE: Add normal as a preference for topic subscription state when replying to a topic 2017-04-20 22:33:10 -04:00
oauth2_user_info.rb FIX: Previous annotations were broken 2019-01-11 14:30:19 -05:00
onceoff_log.rb
optimized_image.rb DEV: convert scheduled job EnsurePostUploadsExistence into a rake task 2019-04-09 02:07:35 +05:30
permalink.rb FIX: Previous annotations were broken 2019-01-11 14:30:19 -05:00
plugin_store.rb FEATURE: Added method to get multiple values at once from PluginStore. (#6225) 2018-08-01 18:42:40 +02:00
plugin_store_row.rb FIX: Previous annotations were broken 2019-01-11 14:30:19 -05:00
post.rb PERF: Move `where` clause up to speed up CalculateAvgTime daily job (#7462) 2019-04-30 13:34:46 +10:00
post_action.rb annotate new indexes 2019-04-26 18:23:27 +10:00
post_action_type.rb FEATURE: New 'Reviewable' model to make reviewable items generic 2019-03-28 12:45:10 -04:00
post_analyzer.rb FEATURE: Add support for Unicode usernames and group names 2019-04-23 13:00:27 +02:00
post_custom_field.rb Update annotations. 2019-04-26 10:36:21 +08:00
post_detail.rb FIX: Previous annotations were broken 2019-01-11 14:30:19 -05:00
post_mover.rb FIX: allow banner topic posts to be moved to regular topic (and vice versa) 2019-03-14 23:41:23 +05:30
post_reply.rb Update annotations. 2019-04-11 12:37:24 +08:00
post_reply_key.rb Revert "FIX: Partial reply key search in email sent logs." 2019-01-10 10:05:56 +08:00
post_revision.rb DEV: remove exec_sql and replace with mini_sql 2018-06-19 16:13:36 +10:00
post_search_data.rb Update annotations. 2019-04-09 13:27:32 +08:00
post_stat.rb FIX: Previous annotations were broken 2019-01-11 14:30:19 -05:00
post_timing.rb FIX: Use PostgreSQL 'ON CONFLICT' to deal with race condition 2019-04-29 16:34:42 -03:00
post_upload.rb
previous_replies_site_setting.rb
push_subscription.rb Update annotations. 2018-07-16 14:19:07 +08:00
quoted_post.rb FIX: on rebakes should not recreate quoted_posts records 2019-04-03 16:17:15 +11:00
remote_theme.rb FIX: Do not error when importing a theme with empty files 2019-04-15 15:46:47 +01:00
report.rb FEATURE: initial implementation of generic filters for reports 2019-04-26 12:17:10 +02:00
reviewable.rb FEATURE: Category Reviewable by Group 2019-04-30 15:23:06 -04:00
reviewable_flagged_post.rb FIX: Recursively delete nested replies 2019-04-30 12:54:53 -04:00
reviewable_history.rb FEATURE: New 'Reviewable' model to make reviewable items generic 2019-03-28 12:45:10 -04:00
reviewable_queued_post.rb FEATURE: Category Reviewable by Group 2019-04-30 15:23:06 -04:00
reviewable_score.rb FEATURE: Include a user's pending posts in the topic view 2019-04-12 14:25:12 -04:00
reviewable_user.rb FEATURE: Clarify Reviewable User Actions 2019-04-17 11:44:17 -04:00
s3_region_site_setting.rb FEATURE: Add missing S3 regions 2019-03-07 22:42:20 +01:00
screened_email.rb FIX: Previous annotations were broken 2019-01-11 14:30:19 -05:00
screened_ip_address.rb DEV: remove exec_sql and replace with mini_sql 2018-06-19 16:13:36 +10:00
screened_url.rb FIX: Previous annotations were broken 2019-01-11 14:30:19 -05:00
search_log.rb Annotate models. 2019-04-02 13:19:14 +08:00
shared_draft.rb Update annotations. 2018-07-16 14:19:07 +08:00
single_sign_on_record.rb PERF: Add index on `user_id` to `single_sign_on_records`. 2019-01-30 09:34:19 +08:00
site.rb DEV: Option to preload category custom fields for site serializer 2019-03-16 17:18:57 +05:30
site_setting.rb FEATURE: Automatically generate optimized site metadata icons (#7372) 2019-05-01 14:44:45 +01:00
skipped_email_log.rb FEATURE: Skip sending emails to domains on the `.invalid` TLD (#7162) 2019-03-13 16:17:59 +00:00
slug_setting.rb Add rubocop to our build. (#5004) 2017-07-28 10:20:09 +09:00
stylesheet_cache.rb FIX: Previous annotations were broken 2019-01-11 14:30:19 -05:00
tag.rb FIX: Previous annotations were broken 2019-01-11 14:30:19 -05:00
tag_group.rb FIX: staff-only tags visible on /tags page when restricted to a category 2019-04-29 12:38:28 -04:00
tag_group_membership.rb FIX: Previous annotations were broken 2019-01-11 14:30:19 -05:00
tag_group_permission.rb Update annotations. 2018-07-16 14:19:07 +08:00
tag_search_data.rb Update annotations. 2018-07-16 14:19:07 +08:00
tag_user.rb FIX: Previous annotations were broken 2019-01-11 14:30:19 -05:00
theme.rb DEV: Use `frozen_string_literal: true` on `models/theme.rb`. 2019-04-30 16:02:55 +08:00
theme_field.rb DEV: Increase max length of theme_field name column 2019-04-23 12:34:32 +01:00
theme_setting.rb FEATURE: Multiple SCSS file support for themes (#7351) 2019-04-12 11:36:08 +01:00
theme_translation_override.rb FEATURE: Support for localized themes (#6848) 2019-01-17 11:46:11 +00:00
top_lists.rb
top_menu_item.rb
top_topic.rb DEV: remove exec_sql and replace with mini_sql 2018-06-19 16:13:36 +10:00
topic.rb DEV: remove update_attributes which is deprecated in Rails 6 2019-04-29 17:32:25 +10:00
topic_allowed_group.rb
topic_allowed_user.rb
topic_converter.rb Fix the build. 2019-04-16 15:47:16 +08:00
topic_custom_field.rb Update annotations. 2018-07-16 14:19:07 +08:00
topic_embed.rb FIX: properly escape embed url 2019-01-07 18:11:43 +01:00
topic_featured_users.rb DEV: remove exec_sql and replace with mini_sql 2018-06-19 16:13:36 +10:00
topic_invite.rb
topic_link.rb annotate new indexes 2019-04-26 18:23:27 +10:00
topic_link_click.rb FIX: Previous annotations were broken 2019-01-11 14:30:19 -05:00
topic_list.rb FIX: Shared draft performance fix + missing avatars 2018-03-28 16:11:43 -04:00
topic_notifier.rb Add rubocop to our build. (#5004) 2017-07-28 10:20:09 +09:00
topic_participants_summary.rb FEATURE: Add recipient avatars in PM topic list even if they not yet replied 2019-01-25 19:41:49 +05:30
topic_poster.rb FEATURE: primary group class on avatars in topic list 2017-02-20 15:55:10 -05:00
topic_posters_summary.rb Require dependency otherwise it causes Sidekiq to lock up in development. 2017-09-25 13:48:59 +08:00
topic_search_data.rb Update annotations. 2019-04-09 13:27:32 +08:00
topic_tag.rb FIX: Previous annotations were broken 2019-01-11 14:30:19 -05:00
topic_timer.rb FIX: Previous annotations were broken 2019-01-11 14:30:19 -05:00
topic_tracking_state.rb PERF: Speed up home page unread+new query 2019-04-05 15:25:19 +11:00
topic_user.rb FIX: Previous annotations were broken 2019-01-11 14:30:19 -05:00
topic_view_item.rb DEV: remove all calls to SqlBuilder use DB.build instead 2018-06-20 17:53:49 +10:00
translation_override.rb DEV: Remove warning. 2019-04-01 10:11:08 +08:00
trust_level3_requirements.rb DEV: remove exec_sql and replace with mini_sql 2018-06-19 16:13:36 +10:00
trust_level_and_staff_setting.rb FEATURE: Support disabling tag creation for non-staff users. 2018-06-27 07:15:02 +08:00
trust_level_setting.rb FIX: Only add the trust level name for numeric trust levels 2019-01-16 12:04:12 +00:00
unsubscribe_key.rb FIX: Previous annotations were broken 2019-01-11 14:30:19 -05:00
upload.rb Remove tables incorrectly excluded in `Upload.migrate_to_new_scheme`. 2019-04-25 20:27:52 +08:00
user.rb FIX: URL encode username and first letter in avatar URL 2019-04-29 15:08:14 +02:00
user_action.rb annotate new indexes 2019-04-26 18:23:27 +10:00
user_api_key.rb FEATURE: Delegated authentication via user api keys (#7272) 2019-04-01 13:18:53 -04:00
user_archived_message.rb FIX: Previous annotations were broken 2019-01-11 14:30:19 -05:00
user_associated_account.rb DEV: Style and performance improvements 2018-12-11 09:58:20 +00:00
user_auth_token.rb PERF: add index on user auth tokens (for user lookups) 2019-04-26 22:38:54 +10:00
user_auth_token_log.rb annotate new indexes 2019-04-26 18:23:27 +10:00
user_avatar.rb FIX: Job exception: undefined method `email' for nil:NilClass 2019-03-08 13:39:56 -05:00
user_badge.rb DEV: Fix failing spec. 2019-04-23 18:25:28 +08:00
user_badges.rb Add rubocop to our build. (#5004) 2017-07-28 10:20:09 +09:00
user_custom_field.rb
user_email.rb FIX: Previous annotations were broken 2019-01-11 14:30:19 -05:00
user_export.rb FIX: clean up user export csv upload records in scheduled job (#7309) 2019-04-03 13:31:19 +05:30
user_field.rb UX: make name optional for confirmation user field (#7149) 2019-03-13 18:40:43 +01:00
user_field_option.rb FIX: Previous annotations were broken 2019-01-11 14:30:19 -05:00
user_history.rb FIX: Disable webhooks on 410 and 404 HTTP responses (#7392) 2019-04-18 12:36:37 +01:00
user_open_id.rb FIX: Previous annotations were broken 2019-01-11 14:30:19 -05:00
user_option.rb Update annotations. 2019-04-26 10:36:21 +08:00
user_profile.rb DEV: remove user_profile events added for akismet (#7044) 2019-03-12 17:51:09 +01:00
user_profile_view.rb DEV: remove all calls to SqlBuilder use DB.build instead 2018-06-20 17:53:49 +10:00
user_search.rb FEATURE: autocomplete usernames early in topic based on participation 2019-02-20 13:34:43 +11:00
user_search_data.rb Update annotations. 2018-07-16 14:19:07 +08:00
user_second_factor.rb Annotate models. 2019-04-02 13:19:14 +08:00
user_stat.rb make rubocop happy 2019-04-08 17:03:26 +05:30
user_summary.rb FIX: sort topics/posts/links in descending order in user summaries 2019-01-16 23:58:46 +01:00
user_upload.rb annotate new indexes 2019-04-26 18:23:27 +10:00
user_visit.rb DEV: remove exec_sql and replace with mini_sql 2018-06-19 16:13:36 +10:00
user_warning.rb FIX: Previous annotations were broken 2019-01-11 14:30:19 -05:00
username_validator.rb FEATURE: Add support for Unicode usernames and group names 2019-04-23 13:00:27 +02:00
watched_word.rb FIX: Previous annotations were broken 2019-01-11 14:30:19 -05:00
web_crawler_request.rb Update annotations. 2018-07-16 14:19:07 +08:00
web_hook.rb FEATURE: New 'Reviewable' model to make reviewable items generic 2019-03-28 12:45:10 -04:00
web_hook_event.rb FIX: properly log webhook errors in UI on rescue (#7376) 2019-04-15 12:19:48 +05:30
web_hook_event_type.rb FEATURE: New 'Reviewable' model to make reviewable items generic 2019-03-28 12:45:10 -04:00