From 3b440bd5af92682c388140035c1bcdc6f9711b1d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 18 Mar 2018 20:32:44 +0100 Subject: [PATCH 1/3] Fix elephant graphic being draggable and selectable (#6819) --- app/javascript/mastodon/features/compose/index.js | 2 +- app/javascript/styles/mastodon/components.scss | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/app/javascript/mastodon/features/compose/index.js b/app/javascript/mastodon/features/compose/index.js index 138bc4e2e..d5cd854db 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 587fe62da..20e07a042 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; } } From a568e3ca8e754b690224ae79e75aeb60efa49b78 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 18 Mar 2018 20:33:07 +0100 Subject: [PATCH 2/3] Revert #6479, hide sensitive text/images from OpenGraph previews (#6818) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Display summary of attachments in description, and mark up content warning if present, e.g.: Attached: 3 images · Content warning: Dota 2 When text is not supposed to be hidden, it looks more like: Attached: 3 images Here is the text of the toot With #6817, multilinguagility should be assured... --- app/helpers/stream_entries_helper.rb | 29 +++++++++++++++++++ app/views/accounts/_og.html.haml | 2 +- app/views/accounts/show.html.haml | 2 +- .../stream_entries/_og_description.html.haml | 2 +- app/views/stream_entries/_og_image.html.haml | 2 +- app/views/stream_entries/show.html.haml | 4 +-- config/i18n-tasks.yml | 1 + config/locales/en.yml | 9 ++++++ 8 files changed, 45 insertions(+), 6 deletions(-) diff --git a/app/helpers/stream_entries_helper.rb b/app/helpers/stream_entries_helper.rb index 54b92bdf4..3992432db 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/views/accounts/_og.html.haml b/app/views/accounts/_og.html.haml index 26424a49c..a583b39c2 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 c62a573b0..bbf2139a5 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 9c24e0a61..3d122b94e 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 526034faa..40530f567 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 a87c51952..dfb83e747 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 bcd816d30..eec8b6dbe 100644 --- a/config/i18n-tasks.yml +++ b/config/i18n-tasks.yml @@ -62,3 +62,4 @@ ignore_unused: - 'errors.429' - 'admin.accounts.roles.*' - 'admin.action_logs.actions.*' + - 'statuses.attached.*' diff --git a/config/locales/en.yml b/config/locales/en.yml index 2dd09626d..735a3490f 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -634,6 +634,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: From f02411da404f730e3c05dc7dca1ac0f2d631315e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 19 Mar 2018 01:51:19 +0100 Subject: [PATCH 3/3] Ignore media validation when attaching to status during processing (#6822) Fix #6821 --- app/lib/activitypub/activity/create.rb | 2 +- app/lib/ostatus/activity/creation.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb index 5a1c13d67..676e885c0 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 aa46267dc..6235127b2 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)