diff --git a/app/controllers/settings/preferences_controller.rb b/app/controllers/settings/preferences_controller.rb index 5afdf0eec..aa17ae6ce 100644 --- a/app/controllers/settings/preferences_controller.rb +++ b/app/controllers/settings/preferences_controller.rb @@ -49,6 +49,7 @@ class Settings::PreferencesController < Settings::BaseController :setting_hide_network, :setting_aggregate_reblogs, :setting_show_application, + :setting_strip_formatting, notification_emails: %i(follow follow_request reblog favourite mention digest report pending_account), interactions: %i(must_be_follower must_be_following) ) diff --git a/app/helpers/stream_entries_helper.rb b/app/helpers/stream_entries_helper.rb index d56efbfb9..189121b3f 100644 --- a/app/helpers/stream_entries_helper.rb +++ b/app/helpers/stream_entries_helper.rb @@ -132,6 +132,17 @@ module StreamEntriesHelper end end + def text_formatting_classes + case current_user&.setting_strip_formatting + when 'none', nil + 'rich-text rich-blocks' + when 'blocks' + 'rich-text' + when 'all' + nil + end + end + def style_classes(status, is_predecessor, is_successor, include_threads) classes = ['entry'] classes << 'entry-predecessor' if is_predecessor diff --git a/app/javascript/mastodon/components/status_content.js b/app/javascript/mastodon/components/status_content.js index fa8901386..9197b7b94 100644 --- a/app/javascript/mastodon/components/status_content.js +++ b/app/javascript/mastodon/components/status_content.js @@ -6,6 +6,7 @@ import { FormattedMessage } from 'react-intl'; import Permalink from './permalink'; import classnames from 'classnames'; import Icon from 'mastodon/components/icon'; +import { stripFormatting } from 'mastodon/initial_state'; const MAX_HEIGHT = 642; // 20px * 32 (+ 2px padding at the top) @@ -153,6 +154,8 @@ export default class StatusContent extends React.PureComponent { 'status__content--with-action': this.props.onClick && this.context.router, 'status__content--with-spoiler': status.get('spoiler_text').length > 0, 'status__content--collapsed': this.state.collapsed === true, + 'rich-text': stripFormatting !== 'all', + 'rich-blocks': stripFormatting === 'none', }); if (isRtl(status.get('search_index'))) { @@ -218,7 +221,7 @@ export default class StatusContent extends React.PureComponent {
<a>
and <em>
.
- title: Instance description
+ title: Server description
site_description_extended:
- desc_html: A good place for your code of conduct, rules, guidelines and other things that set your instance apart. You can use HTML tags
+ desc_html: A good place for your code of conduct, rules, guidelines and other things that set your server apart. You can use HTML tags
title: Custom extended information
site_short_description:
- desc_html: Displayed in sidebar and meta tags. Describe what Mastodon is and what makes this server special in a single paragraph. If empty, defaults to instance description.
- title: Short instance description
+ desc_html: Displayed in sidebar and meta tags. Describe what Mastodon is and what makes this server special in a single paragraph.
+ title: Short server description
site_terms:
desc_html: You can write your own privacy policy, terms of service or other legalese. You can use HTML tags
title: Custom terms of service
- site_title: Instance name
+ site_title: Server name
thumbnail:
desc_html: Used for previews via OpenGraph and API. 1200x630px recommended
- title: Instance thumbnail
+ title: Server thumbnail
timeline_preview:
desc_html: Display public timeline on landing page
title: Timeline preview
@@ -696,7 +696,7 @@ dog:
one: 1 use
other: "%{count} uses"
max_uses_prompt: No limit
- prompt: Generate and share links with others to grant access to this instance
+ prompt: Generate and share links with others to grant access to this server
table:
expires_at: Expires
uses: Uses
@@ -909,6 +909,13 @@ dog:
vote: Vote
show_more: Show more
sign_in_to_participate: Sign in to participate in the conversation
+ strip_formatting:
+ all: All
+ all_long: Strip all advanced formatting
+ blocks: Block elements
+ blocks_long: Strip formatting for title headers and block quotes
+ none: None
+ none_long: Do not strip any formatting supported by Mastodon
title: '%{name}: "%{quote}"'
visibilities:
private: Followers-only
@@ -1065,7 +1072,7 @@ dog:
final_action: Start posting
final_step: 'Start posting! Even without followers your public messages may be seen by others, for example on the local timeline and in hashtags. You may want to introduce yourself on the #introductions hashtag.'
full_handle: Your full handle
- full_handle_hint: This is what you would tell your friends so they can message or follow you from another instance.
+ full_handle_hint: This is what you would tell your friends so they can message or follow you from another server.
review_preferences_action: Change preferences
review_preferences_step: Make sure to set your preferences, such as which emails you'd like to receive, or what privacy level you’d like your posts to default to. If you don’t have motion sickness, you could choose to enable GIF autoplay.
subject: Welcome to Mastodon
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 6d59411a5..260ee6a69 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -909,6 +909,13 @@ en:
vote: Vote
show_more: Show more
sign_in_to_participate: Sign in to participate in the conversation
+ strip_formatting:
+ all: All
+ all_long: Strip all advanced formatting
+ blocks: Block elements
+ blocks_long: Strip formatting for title headers and block quotes
+ none: None
+ none_long: Do not strip any formatting supported by Mastodon
title: '%{name}: "%{quote}"'
visibilities:
private: Followers-only
diff --git a/config/locales/lion.yml b/config/locales/lion.yml
index fd78996a9..56deeb64f 100644
--- a/config/locales/lion.yml
+++ b/config/locales/lion.yml
@@ -399,14 +399,14 @@ lion:
desc_html: Modify the look with CSS loaded on every page
title: Custom CSS
hero:
- desc_html: Displayed on the frontpage. At least 600x100px recommended. When not set, falls back to instance thumbnail
+ desc_html: Displayed on the frontpage. At least 600x100px recommended. When not set, falls back to server thumbnail
title: Hero image
mascot:
desc_html: Displayed on multiple pages. At least 293×205px recommended. When not set, falls back to default mascot
title: Mascot image
peers_api_enabled:
- desc_html: Domain names this instance has encountered in the fediverse
- title: Publish list of discovered instances
+ desc_html: Domain names this server has encountered in the fediverse
+ title: Publish list of discovered servers
preview_sensitive_media:
desc_html: Link previews on other websites will display a thumbnail even if the media is marked as sensitive
title: Show sensitive media in OpenGraph previews
@@ -437,20 +437,20 @@ lion:
title: Show staff badge
site_description:
desc_html: Introductory paragraph on the frontpage. Describe what makes this Mastodon server special and anything else important. You can use HTML tags, in particular <a>
and <em>
.
- title: Instance description
+ title: Server description
site_description_extended:
- desc_html: A good place for your code of conduct, rules, guidelines and other things that set your instance apart. You can use HTML tags
+ desc_html: A good place for your code of conduct, rules, guidelines and other things that set your server apart. You can use HTML tags
title: Custom extended information
site_short_description:
- desc_html: Displayed in sidebar and meta tags. Describe what Mastodon is and what makes this server special in a single paragraph. If empty, defaults to instance description.
- title: Short instance description
+ desc_html: Displayed in sidebar and meta tags. Describe what Mastodon is and what makes this server special in a single paragraph.
+ title: Short server description
site_terms:
desc_html: You can write your own privacy policy, terms of service or other legalese. You can use HTML tags
title: Custom terms of service
- site_title: Instance name
+ site_title: Server name
thumbnail:
desc_html: Used for previews via OpenGraph and API. 1200x630px recommended
- title: Instance thumbnail
+ title: Server thumbnail
timeline_preview:
desc_html: Display public timeline on landing page
title: Timeline preview
@@ -569,7 +569,7 @@ lion:
description_html: This will permanently, irreversibly remove content from your account and deactivate it. Your username will remain reserved to prevent future impersonations.
proceed: Delete account
success_msg: Your account was successfully deleted
- warning_html: Only deletion of content from this particular instance is guaranteed. Content that has been widely shared is likely to leave traces. Offline servers and servers that have unsubscribed from your updates will not update their databases.
+ warning_html: Only deletion of content from this particular server is guaranteed. Content that has been widely shared is likely to leave traces. Offline servers and servers that have unsubscribed from your updates will not update their databases.
warning_title: Disseminated content availability
directories:
directory: Profile directory
@@ -696,7 +696,7 @@ lion:
one: 1 use
other: "%{count} uses"
max_uses_prompt: No limit
- prompt: Generate and share links with others to grant access to this instance
+ prompt: Generate and share links with others to grant access to this server
table:
expires_at: Expires
uses: Uses
@@ -909,6 +909,13 @@ lion:
vote: Vote
show_more: Show more
sign_in_to_participate: Sign in to participate in the conversation
+ strip_formatting:
+ all: All
+ all_long: Strip all advanced formatting
+ blocks: Block elements
+ blocks_long: Strip formatting for title headers and block quotes
+ none: None
+ none_long: Do not strip any formatting supported by Mastodon
title: '%{name}: "%{quote}"'
visibilities:
private: Followers-only
@@ -1065,7 +1072,7 @@ lion:
final_action: Start posting
final_step: 'Start posting! Even without followers your public messages may be seen by others, for example on the local timeline and in hashtags. You may want to introduce yourself on the #introductions hashtag.'
full_handle: Your full handle
- full_handle_hint: This is what you would tell your friends so they can message or follow you from another instance.
+ full_handle_hint: This is what you would tell your friends so they can message or follow you from another server.
review_preferences_action: Change preferences
review_preferences_step: Make sure to set your preferences, such as which emails you'd like to receive, or what privacy level you’d like your posts to default to. If you don’t have motion sickness, you could choose to enable GIF autoplay.
subject: Welcome to Mastodon
diff --git a/config/locales/simple_form.dog.yml b/config/locales/simple_form.dog.yml
index 87e2da528..91b7b53cd 100644
--- a/config/locales/simple_form.dog.yml
+++ b/config/locales/simple_form.dog.yml
@@ -106,6 +106,7 @@ dog:
setting_noindex: Opt-out of search engine indexing
setting_reduce_motion: Reduce motion in animations
setting_show_application: Disclose application used to send toots
+ setting_strip_formatting: Strip advanced formatting from toots
setting_system_font_ui: Use system's default font
setting_theme: Site theme
setting_unfollow_modal: Show confirmation dialog before unfollowing someone
diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml
index 1a43e19e2..fa55c4c74 100644
--- a/config/locales/simple_form.en.yml
+++ b/config/locales/simple_form.en.yml
@@ -106,6 +106,7 @@ en:
setting_noindex: Opt-out of search engine indexing
setting_reduce_motion: Reduce motion in animations
setting_show_application: Disclose application used to send toots
+ setting_strip_formatting: Strip advanced formatting from toots
setting_system_font_ui: Use system's default font
setting_theme: Site theme
setting_unfollow_modal: Show confirmation dialog before unfollowing someone
diff --git a/config/locales/simple_form.lion.yml b/config/locales/simple_form.lion.yml
index 3400ac28e..decf0298e 100644
--- a/config/locales/simple_form.lion.yml
+++ b/config/locales/simple_form.lion.yml
@@ -106,6 +106,7 @@ lion:
setting_noindex: Opt-out of search engine indexing
setting_reduce_motion: Reduce motion in animations
setting_show_application: Disclose application used to send toots
+ setting_strip_formatting: Strip advanced formatting from toots
setting_system_font_ui: Use system's default font
setting_theme: Site theme
setting_unfollow_modal: Show confirmation dialog before unfollowing someone
diff --git a/config/locales/simple_form.squeak.yml b/config/locales/simple_form.squeak.yml
index 19b0e489a..76a449f3f 100644
--- a/config/locales/simple_form.squeak.yml
+++ b/config/locales/simple_form.squeak.yml
@@ -106,6 +106,7 @@ squeak:
setting_noindex: Opt-out of search engine indexing
setting_reduce_motion: Reduce motion in animations
setting_show_application: Disclose application used to send toots
+ setting_strip_formatting: Strip advanced formatting from toots
setting_system_font_ui: Use system's default font
setting_theme: Site theme
setting_unfollow_modal: Show confirmation dialog before unfollowing someone
diff --git a/config/locales/squeak.yml b/config/locales/squeak.yml
index b25d2384c..32aaad82b 100644
--- a/config/locales/squeak.yml
+++ b/config/locales/squeak.yml
@@ -399,14 +399,14 @@ squeak:
desc_html: Modify the look with CSS loaded on every page
title: Custom CSS
hero:
- desc_html: Displayed on the frontpage. At least 600x100px recommended. When not set, falls back to instance thumbnail
+ desc_html: Displayed on the frontpage. At least 600x100px recommended. When not set, falls back to server thumbnail
title: Hero image
mascot:
desc_html: Displayed on multiple pages. At least 293×205px recommended. When not set, falls back to default mascot
title: Mascot image
peers_api_enabled:
- desc_html: Domain names this instance has encountered in the fediverse
- title: Publish list of discovered instances
+ desc_html: Domain names this server has encountered in the fediverse
+ title: Publish list of discovered servers
preview_sensitive_media:
desc_html: Link previews on other websites will display a thumbnail even if the media is marked as sensitive
title: Show sensitive media in OpenGraph previews
@@ -437,20 +437,20 @@ squeak:
title: Show staff badge
site_description:
desc_html: Introductory paragraph on the frontpage. Describe what makes this Mastodon server special and anything else important. You can use HTML tags, in particular <a>
and <em>
.
- title: Instance description
+ title: Server description
site_description_extended:
- desc_html: A good place for your code of conduct, rules, guidelines and other things that set your instance apart. You can use HTML tags
+ desc_html: A good place for your code of conduct, rules, guidelines and other things that set your server apart. You can use HTML tags
title: Custom extended information
site_short_description:
- desc_html: Displayed in sidebar and meta tags. Describe what Mastodon is and what makes this server special in a single paragraph. If empty, defaults to instance description.
- title: Short instance description
+ desc_html: Displayed in sidebar and meta tags. Describe what Mastodon is and what makes this server special in a single paragraph.
+ title: Short server description
site_terms:
desc_html: You can write your own privacy policy, terms of service or other legalese. You can use HTML tags
title: Custom terms of service
- site_title: Instance name
+ site_title: Server name
thumbnail:
desc_html: Used for previews via OpenGraph and API. 1200x630px recommended
- title: Instance thumbnail
+ title: Server thumbnail
timeline_preview:
desc_html: Display public timeline on landing page
title: Timeline preview
@@ -532,7 +532,7 @@ squeak:
cas: CAS
saml: SAML
register: Sign up
- register_elsewhere: Sign up on another server
+ registration_closed: "%{instance} is not accepting new members"
resend_confirmation: Resend confirmation instructions
reset_password: Reset password
security: Security
@@ -569,7 +569,7 @@ squeak:
description_html: This will permanently, irreversibly remove content from your account and deactivate it. Your username will remain reserved to prevent future impersonations.
proceed: Delete account
success_msg: Your account was successfully deleted
- warning_html: Only deletion of content from this particular instance is guaranteed. Content that has been widely shared is likely to leave traces. Offline servers and servers that have unsubscribed from your updates will not update their databases.
+ warning_html: Only deletion of content from this particular server is guaranteed. Content that has been widely shared is likely to leave traces. Offline servers and servers that have unsubscribed from your updates will not update their databases.
warning_title: Disseminated content availability
directories:
directory: Profile directory
@@ -583,8 +583,8 @@ squeak:
other: "%{count} people"
errors:
'403': You don't have permission to view this page.
- '404': The page you were looking for doesn't exist.
- '410': The page you were looking for doesn't exist anymore.
+ '404': The page you are looking for isn't here.
+ '410': The page you were looking for doesn't exist here anymore.
'422':
content: Security verification failed. Are you blocking cookies?
title: Security verification failed
@@ -696,7 +696,7 @@ squeak:
one: 1 use
other: "%{count} uses"
max_uses_prompt: No limit
- prompt: Generate and share links with others to grant access to this instance
+ prompt: Generate and share links with others to grant access to this server
table:
expires_at: Expires
uses: Uses
@@ -909,6 +909,13 @@ squeak:
vote: Vote
show_more: Show more
sign_in_to_participate: Sign in to participate in the conversation
+ strip_formatting:
+ all: All
+ all_long: Strip all advanced formatting
+ blocks: Block elements
+ blocks_long: Strip formatting for title headers and block quotes
+ none: None
+ none_long: Do not strip any formatting supported by Mastodon
title: '%{name}: "%{quote}"'
visibilities:
private: Followers-only
@@ -1065,7 +1072,7 @@ squeak:
final_action: Start posting
final_step: 'Start posting! Even without followers your public messages may be seen by others, for example on the local timeline and in hashtags. You may want to introduce yourself on the #introductions hashtag.'
full_handle: Your full handle
- full_handle_hint: This is what you would tell your friends so they can message or follow you from another instance.
+ full_handle_hint: This is what you would tell your friends so they can message or follow you from another server.
review_preferences_action: Change preferences
review_preferences_step: Make sure to set your preferences, such as which emails you'd like to receive, or what privacy level you’d like your posts to default to. If you don’t have motion sickness, you could choose to enable GIF autoplay.
subject: Welcome to Mastodon
diff --git a/config/settings.yml b/config/settings.yml
index 1534d45f6..52db7035b 100644
--- a/config/settings.yml
+++ b/config/settings.yml
@@ -31,6 +31,7 @@ defaults: &defaults
noindex: false
theme: 'mastodon'
aggregate_reblogs: true
+ strip_formatting: 'none'
notification_emails:
follow: false
reblog: false