diff --git a/app/helpers/stream_entries_helper.rb b/app/helpers/stream_entries_helper.rb
index 54b92bdf47..3992432dbd 100644
--- a/app/helpers/stream_entries_helper.rb
+++ b/app/helpers/stream_entries_helper.rb
@@ -29,6 +29,35 @@ module StreamEntriesHelper
[prepend_str, account.note].join(' · ')
end
+ def media_summary(status)
+ attachments = { image: 0, video: 0 }
+
+ status.media_attachments.each do |media|
+ if media.video?
+ attachments[:video] += 1
+ else
+ attachments[:image] += 1
+ end
+ end
+
+ text = attachments.to_a.reject { |_, value| value.zero? }.map { |key, value| t("statuses.attached.#{key}", count: value) }.join(' · ')
+
+ return if text.blank?
+
+ t('statuses.attached.description', attached: text)
+ end
+
+ def status_text_summary(status)
+ return if status.spoiler_text.blank?
+ t('statuses.content_warning', warning: status.spoiler_text)
+ end
+
+ def status_description(status)
+ components = [[media_summary(status), status_text_summary(status)].reject(&:blank?).join(' · ')]
+ components << status.text if status.spoiler_text.blank?
+ components.reject(&:blank?).join("\n\n")
+ end
+
def stream_link_target
embedded_view? ? '_blank' : nil
end
diff --git a/app/javascript/mastodon/features/compose/index.js b/app/javascript/mastodon/features/compose/index.js
index 138bc4e2ec..d5cd854db1 100644
--- a/app/javascript/mastodon/features/compose/index.js
+++ b/app/javascript/mastodon/features/compose/index.js
@@ -97,7 +97,7 @@ export default class Compose extends React.PureComponent {
{multiColumn && (
-
+
)}
diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss
index ba1c36d078..98c5ccbcaf 100644
--- a/app/javascript/styles/mastodon/components.scss
+++ b/app/javascript/styles/mastodon/components.scss
@@ -1842,6 +1842,9 @@
object-position: bottom left;
width: 100%;
height: 100%;
+ pointer-events: none;
+ user-drag: none;
+ user-select: none;
}
}
diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb
index 5a1c13d678..676e885c0b 100644
--- a/app/lib/activitypub/activity/create.rb
+++ b/app/lib/activitypub/activity/create.rb
@@ -53,7 +53,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
visibility: visibility_from_audience,
thread: replied_to_status,
conversation: conversation_from_uri(@object['conversation']),
- media_attachments: process_attachments.take(4),
+ media_attachment_ids: process_attachments.take(4).map(&:id),
}
end
diff --git a/app/lib/ostatus/activity/creation.rb b/app/lib/ostatus/activity/creation.rb
index aa46267dc7..6235127b20 100644
--- a/app/lib/ostatus/activity/creation.rb
+++ b/app/lib/ostatus/activity/creation.rb
@@ -45,7 +45,7 @@ class OStatus::Activity::Creation < OStatus::Activity::Base
visibility: visibility_scope,
conversation: find_or_create_conversation,
thread: thread? ? find_status(thread.first) || find_activitypub_status(thread.first, thread.second) : nil,
- media_attachments: media_attachments
+ media_attachment_ids: media_attachments.map(&:id)
)
save_mentions(status)
diff --git a/app/views/accounts/_og.html.haml b/app/views/accounts/_og.html.haml
index 26424a49c9..a583b39c2c 100644
--- a/app/views/accounts/_og.html.haml
+++ b/app/views/accounts/_og.html.haml
@@ -1,6 +1,6 @@
= opengraph 'og:url', url
= opengraph 'og:site_name', site_title
-= opengraph 'og:title', [yield(:page_title).strip.presence, site_title].compact.join(' - ')
+= opengraph 'og:title', yield(:page_title).strip
= opengraph 'og:description', account_description(account)
= opengraph 'og:image', full_asset_url(account.avatar.url(:original))
= opengraph 'og:image:width', '120'
diff --git a/app/views/accounts/show.html.haml b/app/views/accounts/show.html.haml
index c62a573b0b..bbf2139a5e 100644
--- a/app/views/accounts/show.html.haml
+++ b/app/views/accounts/show.html.haml
@@ -1,5 +1,5 @@
- content_for :page_title do
- = "#{display_name(@account)} (@#{@account.username})"
+ = "#{display_name(@account)} (@#{@account.local_username_and_domain})"
- content_for :header_tags do
%meta{ name: 'description', content: account_description(@account) }/
diff --git a/app/views/stream_entries/_og_description.html.haml b/app/views/stream_entries/_og_description.html.haml
index 9c24e0a61b..3d122b94ef 100644
--- a/app/views/stream_entries/_og_description.html.haml
+++ b/app/views/stream_entries/_og_description.html.haml
@@ -1 +1 @@
-= opengraph 'og:description', [activity.spoiler_text, activity.text].reject(&:blank?).join("\n\n")
+= opengraph 'og:description', status_description(activity)
diff --git a/app/views/stream_entries/_og_image.html.haml b/app/views/stream_entries/_og_image.html.haml
index 526034faae..40530f5670 100644
--- a/app/views/stream_entries/_og_image.html.haml
+++ b/app/views/stream_entries/_og_image.html.haml
@@ -1,4 +1,4 @@
-- if activity.is_a?(Status) && activity.media_attachments.any?
+- if activity.is_a?(Status) && activity.non_sensitive_with_media?
- player_card = false
- activity.media_attachments.each do |media|
- if media.image?
diff --git a/app/views/stream_entries/show.html.haml b/app/views/stream_entries/show.html.haml
index a87c51952c..dfb83e747b 100644
--- a/app/views/stream_entries/show.html.haml
+++ b/app/views/stream_entries/show.html.haml
@@ -11,8 +11,8 @@
= opengraph 'og:site_name', site_title
= opengraph 'og:type', 'article'
- = opengraph 'og:title', "#{@account.display_name.presence || @account.username} on #{site_hostname}"
- = opengraph 'og:url', account_stream_entry_url(@account, @stream_entry)
+ = opengraph 'og:title', "#{display_name(@account)} (@#{@account.local_username_and_domain})"
+ = opengraph 'og:url', short_account_status_url(@account, @stream_entry)
= render 'stream_entries/og_description', activity: @stream_entry.activity
= render 'stream_entries/og_image', activity: @stream_entry.activity, account: @account
diff --git a/config/i18n-tasks.yml b/config/i18n-tasks.yml
index 62e78556fc..0236fb8ccd 100644
--- a/config/i18n-tasks.yml
+++ b/config/i18n-tasks.yml
@@ -63,3 +63,4 @@ ignore_unused:
- 'admin.accounts.roles.*'
- 'admin.action_logs.actions.*'
- 'themes.default'
+ - 'statuses.attached.*'
diff --git a/config/locales/en.yml b/config/locales/en.yml
index e5e3ddf62e..9f417e5af4 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -645,6 +645,15 @@ en:
two_factor_authentication: Two-factor Auth
your_apps: Your applications
statuses:
+ attached:
+ description: 'Attached: %{attached}'
+ image:
+ one: "%{count} image"
+ other: "%{count} images"
+ video:
+ one: "%{count} video"
+ other: "%{count} videos"
+ content_warning: 'Content warning: %{warning}'
open_in_web: Open in web
over_character_limit: character limit of %{max} exceeded
pin_errors: