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...
			
			
This commit is contained in:
		
							parent
							
								
									3b440bd5af
								
							
						
					
					
						commit
						a568e3ca8e
					
				|  | @ -29,6 +29,35 @@ module StreamEntriesHelper | ||||||
|     [prepend_str, account.note].join(' · ') |     [prepend_str, account.note].join(' · ') | ||||||
|   end |   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 |   def stream_link_target | ||||||
|     embedded_view? ? '_blank' : nil |     embedded_view? ? '_blank' : nil | ||||||
|   end |   end | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| = opengraph 'og:url', url | = opengraph 'og:url', url | ||||||
| = opengraph 'og:site_name', site_title | = 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:description', account_description(account) | ||||||
| = opengraph 'og:image', full_asset_url(account.avatar.url(:original)) | = opengraph 'og:image', full_asset_url(account.avatar.url(:original)) | ||||||
| = opengraph 'og:image:width', '120' | = opengraph 'og:image:width', '120' | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| - content_for :page_title do | - content_for :page_title do | ||||||
|   = "#{display_name(@account)} (@#{@account.username})" |   = "#{display_name(@account)} (@#{@account.local_username_and_domain})" | ||||||
| 
 | 
 | ||||||
| - content_for :header_tags do | - content_for :header_tags do | ||||||
|   %meta{ name: 'description', content: account_description(@account) }/ |   %meta{ name: 'description', content: account_description(@account) }/ | ||||||
|  |  | ||||||
|  | @ -1 +1 @@ | ||||||
| = opengraph 'og:description', [activity.spoiler_text, activity.text].reject(&:blank?).join("\n\n") | = opengraph 'og:description', status_description(activity) | ||||||
|  |  | ||||||
|  | @ -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 |   - player_card = false | ||||||
|   - activity.media_attachments.each do |media| |   - activity.media_attachments.each do |media| | ||||||
|     - if media.image? |     - if media.image? | ||||||
|  |  | ||||||
|  | @ -11,8 +11,8 @@ | ||||||
| 
 | 
 | ||||||
|   = opengraph 'og:site_name', site_title |   = opengraph 'og:site_name', site_title | ||||||
|   = opengraph 'og:type', 'article' |   = opengraph 'og:type', 'article' | ||||||
|   = opengraph 'og:title', "#{@account.display_name.presence || @account.username} on #{site_hostname}" |   = opengraph 'og:title', "#{display_name(@account)} (@#{@account.local_username_and_domain})" | ||||||
|   = opengraph 'og:url', account_stream_entry_url(@account, @stream_entry) |   = opengraph 'og:url', short_account_status_url(@account, @stream_entry) | ||||||
| 
 | 
 | ||||||
|   = render 'stream_entries/og_description', activity: @stream_entry.activity |   = render 'stream_entries/og_description', activity: @stream_entry.activity | ||||||
|   = render 'stream_entries/og_image', activity: @stream_entry.activity, account: @account |   = render 'stream_entries/og_image', activity: @stream_entry.activity, account: @account | ||||||
|  |  | ||||||
|  | @ -62,3 +62,4 @@ ignore_unused: | ||||||
|   - 'errors.429' |   - 'errors.429' | ||||||
|   - 'admin.accounts.roles.*' |   - 'admin.accounts.roles.*' | ||||||
|   - 'admin.action_logs.actions.*' |   - 'admin.action_logs.actions.*' | ||||||
|  |   - 'statuses.attached.*' | ||||||
|  |  | ||||||
|  | @ -634,6 +634,15 @@ en: | ||||||
|     two_factor_authentication: Two-factor Auth |     two_factor_authentication: Two-factor Auth | ||||||
|     your_apps: Your applications |     your_apps: Your applications | ||||||
|   statuses: |   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 |     open_in_web: Open in web | ||||||
|     over_character_limit: character limit of %{max} exceeded |     over_character_limit: character limit of %{max} exceeded | ||||||
|     pin_errors: |     pin_errors: | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue