Merge remote-tracking branch 'upstream/master'
This commit is contained in:
		
						commit
						0bf9261e65
					
				|  | @ -8,8 +8,17 @@ | ||||||
| # /config/locales/*.fr.yml @żelipapą | # /config/locales/*.fr.yml @żelipapą | ||||||
| # /config/locales/fr.yml @żelipapą | # /config/locales/fr.yml @żelipapą | ||||||
| 
 | 
 | ||||||
|  | # Polish | ||||||
| /app/javascript/mastodon/locales/pl.json @m4sk1n | /app/javascript/mastodon/locales/pl.json @m4sk1n | ||||||
| /app/views/user_mailer/*.pl.html.erb @m4sk1n | /app/views/user_mailer/*.pl.html.erb @m4sk1n | ||||||
| /app/views/user_mailer/*.pl.text.erb @m4sk1n | /app/views/user_mailer/*.pl.text.erb @m4sk1n | ||||||
| /config/locales/*.pl.yml @m4sk1n | /config/locales/*.pl.yml @m4sk1n | ||||||
| /config/locales/pl.yml @m4sk1n | /config/locales/pl.yml @m4sk1n | ||||||
|  | 
 | ||||||
|  | # French | ||||||
|  | /app/javascript/mastodon/locales/fr.json @aldarone | ||||||
|  | /app/javascript/mastodon/locales/whitelist_fr.json @aldarone | ||||||
|  | /app/views/user_mailer/*.fr.html.erb @aldarone | ||||||
|  | /app/views/user_mailer/*.fr.text.erb @aldarone | ||||||
|  | /config/locales/*.fr.yml @aldarone | ||||||
|  | /config/locales/fr.yml @aldarone | ||||||
|  |  | ||||||
|  | @ -80,6 +80,7 @@ export default class Status extends ImmutablePureComponent { | ||||||
| 
 | 
 | ||||||
|   componentWillReceiveProps (nextProps) { |   componentWillReceiveProps (nextProps) { | ||||||
|     if (nextProps.params.statusId !== this.props.params.statusId && nextProps.params.statusId) { |     if (nextProps.params.statusId !== this.props.params.statusId && nextProps.params.statusId) { | ||||||
|  |       this._scrolledIntoView = false; | ||||||
|       this.props.dispatch(fetchStatus(nextProps.params.statusId)); |       this.props.dispatch(fetchStatus(nextProps.params.statusId)); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  | @ -242,11 +243,17 @@ export default class Status extends ImmutablePureComponent { | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   componentDidUpdate () { |   componentDidUpdate () { | ||||||
|  |     if (this._scrolledIntoView) { | ||||||
|  |       return; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     const { status, ancestorsIds } = this.props; |     const { status, ancestorsIds } = this.props; | ||||||
| 
 | 
 | ||||||
|     if (status && ancestorsIds && ancestorsIds.size > 0) { |     if (status && ancestorsIds && ancestorsIds.size > 0) { | ||||||
|       const element = this.node.querySelectorAll('.focusable')[ancestorsIds.size]; |       const element = this.node.querySelectorAll('.focusable')[ancestorsIds.size - 1]; | ||||||
|       element.scrollIntoView(); | 
 | ||||||
|  |       element.scrollIntoView(true); | ||||||
|  |       this._scrolledIntoView = true; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -168,8 +168,8 @@ | ||||||
|   "search_popout.search_format": "Recherche avancée", |   "search_popout.search_format": "Recherche avancée", | ||||||
|   "search_popout.tips.hashtag": "hashtag", |   "search_popout.tips.hashtag": "hashtag", | ||||||
|   "search_popout.tips.status": "statuts", |   "search_popout.tips.status": "statuts", | ||||||
|   "search_popout.tips.text": "Un texte simple renvoie les noms affichés, les noms d'utilisateur et les hashtags correspondants", |   "search_popout.tips.text": "Un texte simple renvoie les noms affichés, les noms d'utilisateur⋅ice et les hashtags correspondants", | ||||||
|   "search_popout.tips.user": "utilisateur", |   "search_popout.tips.user": "utilisateur⋅ice", | ||||||
|   "search_results.total": "{count, number} {count, plural, one {résultat} other {résultats}}", |   "search_results.total": "{count, number} {count, plural, one {résultat} other {résultats}}", | ||||||
|   "standalone.public_title": "Jeter un coup d’œil…", |   "standalone.public_title": "Jeter un coup d’œil…", | ||||||
|   "status.cannot_reblog": "Cette publication ne peut être boostée", |   "status.cannot_reblog": "Cette publication ne peut être boostée", | ||||||
|  |  | ||||||
|  | @ -66,17 +66,17 @@ | ||||||
|   "embed.instructions": "Embed deze toot op jouw website, door de onderstaande code te kopiëren.", |   "embed.instructions": "Embed deze toot op jouw website, door de onderstaande code te kopiëren.", | ||||||
|   "embed.preview": "Zo komt het eruit te zien:", |   "embed.preview": "Zo komt het eruit te zien:", | ||||||
|   "emoji_button.activity": "Activiteiten", |   "emoji_button.activity": "Activiteiten", | ||||||
|   "emoji_button.custom": "Custom", |   "emoji_button.custom": "Lokale emoji’s", | ||||||
|   "emoji_button.flags": "Vlaggen", |   "emoji_button.flags": "Vlaggen", | ||||||
|   "emoji_button.food": "Eten en drinken", |   "emoji_button.food": "Eten en drinken", | ||||||
|   "emoji_button.label": "Emoji toevoegen", |   "emoji_button.label": "Emoji toevoegen", | ||||||
|   "emoji_button.nature": "Natuur", |   "emoji_button.nature": "Natuur", | ||||||
|   "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻", |   "emoji_button.not_found": "Geen emoji’s!! (╯°□°)╯︵ ┻━┻", | ||||||
|   "emoji_button.objects": "Voorwerpen", |   "emoji_button.objects": "Voorwerpen", | ||||||
|   "emoji_button.people": "Mensen", |   "emoji_button.people": "Mensen", | ||||||
|   "emoji_button.recent": "Frequently used", |   "emoji_button.recent": "Vaak gebruikt", | ||||||
|   "emoji_button.search": "Zoeken...", |   "emoji_button.search": "Zoeken...", | ||||||
|   "emoji_button.search_results": "Search results", |   "emoji_button.search_results": "Zoekresultaten", | ||||||
|   "emoji_button.symbols": "Symbolen", |   "emoji_button.symbols": "Symbolen", | ||||||
|   "emoji_button.travel": "Reizen en plekken", |   "emoji_button.travel": "Reizen en plekken", | ||||||
|   "empty_column.community": "De lokale tijdlijn is nog leeg. Toot iets in het openbaar om de bal aan het rollen te krijgen!", |   "empty_column.community": "De lokale tijdlijn is nog leeg. Toot iets in het openbaar om de bal aan het rollen te krijgen!", | ||||||
|  | @ -165,11 +165,11 @@ | ||||||
|   "report.submit": "Verzenden", |   "report.submit": "Verzenden", | ||||||
|   "report.target": "Rapporteren van", |   "report.target": "Rapporteren van", | ||||||
|   "search.placeholder": "Zoeken", |   "search.placeholder": "Zoeken", | ||||||
|   "search_popout.search_format": "Advanced search format", |   "search_popout.search_format": "Geavanceerd zoeken", | ||||||
|   "search_popout.tips.hashtag": "hashtag", |   "search_popout.tips.hashtag": "hashtag", | ||||||
|   "search_popout.tips.status": "status", |   "search_popout.tips.status": "toot", | ||||||
|   "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", |   "search_popout.tips.text": "Gebruik gewone tekst om te zoeken op weergavenamen, gebruikersnamen en hashtags.", | ||||||
|   "search_popout.tips.user": "user", |   "search_popout.tips.user": "gebruiker", | ||||||
|   "search_results.total": "{count, number} {count, plural, one {resultaat} other {resultaten}}", |   "search_results.total": "{count, number} {count, plural, one {resultaat} other {resultaten}}", | ||||||
|   "standalone.public_title": "Een kijkje binnenin...", |   "standalone.public_title": "Een kijkje binnenin...", | ||||||
|   "status.cannot_reblog": "Deze toot kan niet geboost worden", |   "status.cannot_reblog": "Deze toot kan niet geboost worden", | ||||||
|  | @ -201,11 +201,11 @@ | ||||||
|   "tabs_bar.notifications": "Meldingen", |   "tabs_bar.notifications": "Meldingen", | ||||||
|   "upload_area.title": "Hierin slepen om te uploaden", |   "upload_area.title": "Hierin slepen om te uploaden", | ||||||
|   "upload_button.label": "Media toevoegen", |   "upload_button.label": "Media toevoegen", | ||||||
|   "upload_form.description": "Describe for the visually impaired", |   "upload_form.description": "Omschrijf dit voor mensen met een visuele beperking", | ||||||
|   "upload_form.undo": "Ongedaan maken", |   "upload_form.undo": "Ongedaan maken", | ||||||
|   "upload_progress.label": "Uploaden...", |   "upload_progress.label": "Uploaden...", | ||||||
|   "video.close": "Close video", |   "video.close": "Video sluiten", | ||||||
|   "video.exit_fullscreen": "Exit full screen", |   "video.exit_fullscreen": "Volledig scherm sluiten", | ||||||
|   "video.expand": "Video groter maken", |   "video.expand": "Video groter maken", | ||||||
|   "video.fullscreen": "Volledig scherm", |   "video.fullscreen": "Volledig scherm", | ||||||
|   "video.hide": "Video verbergen", |   "video.hide": "Video verbergen", | ||||||
|  |  | ||||||
|  | @ -29,8 +29,7 @@ body { | ||||||
|     font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", mastodon-font-sans-serif, sans-serif; |     font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", mastodon-font-sans-serif, sans-serif; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   &.app-body, |   &.app-body { | ||||||
|   &.error { |  | ||||||
|     position: fixed; |     position: fixed; | ||||||
|     width: 100%; |     width: 100%; | ||||||
|     height: 100%; |     height: 100%; | ||||||
|  | @ -70,14 +69,22 @@ body { | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   &.error { |   &.error { | ||||||
|  |     position: absolute; | ||||||
|     text-align: center; |     text-align: center; | ||||||
|     color: $ui-primary-color; |     color: $ui-primary-color; | ||||||
|     padding: 20px; |     background: $ui-base-color; | ||||||
|  |     width: 100%; | ||||||
|  |     height: 100%; | ||||||
|  |     padding: 0; | ||||||
|     display: flex; |     display: flex; | ||||||
|     justify-content: center; |     justify-content: center; | ||||||
|     align-items: center; |     align-items: center; | ||||||
| 
 | 
 | ||||||
|     .dialog img { |     .dialog { | ||||||
|  |       vertical-align: middle; | ||||||
|  |       margin: 20px; | ||||||
|  | 
 | ||||||
|  |       img { | ||||||
|         display: block; |         display: block; | ||||||
|         max-width: 470px; |         max-width: 470px; | ||||||
|         width: 100%; |         width: 100%; | ||||||
|  | @ -85,12 +92,13 @@ body { | ||||||
|         margin-top: -120px; |         margin-top: -120px; | ||||||
|       } |       } | ||||||
| 
 | 
 | ||||||
|     .dialog h1 { |       h1 { | ||||||
|         font-size: 20px; |         font-size: 20px; | ||||||
|         line-height: 28px; |         line-height: 28px; | ||||||
|         font-weight: 400; |         font-weight: 400; | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|  |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| button { | button { | ||||||
|  |  | ||||||
|  | @ -1,4 +1,10 @@ | ||||||
| - content_for :header_tags do | - content_for :header_tags do | ||||||
|  |   %link{ href: asset_pack_path('features/getting_started.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/ | ||||||
|  |   %link{ href: asset_pack_path('features/compose.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/ | ||||||
|  |   %link{ href: asset_pack_path('features/home_timeline.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/ | ||||||
|  |   %link{ href: asset_pack_path('features/notifications.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/ | ||||||
|  |   %link{ href: asset_pack_path('features/community_timeline.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/ | ||||||
|  |   %link{ href: asset_pack_path('features/public_timeline.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/ | ||||||
|   %meta{name: 'applicationServerKey', content: Rails.configuration.x.vapid_public_key} |   %meta{name: 'applicationServerKey', content: Rails.configuration.x.vapid_public_key} | ||||||
|   %script#initial-state{ type: 'application/json' }!= json_escape(@initial_state_json) |   %script#initial-state{ type: 'application/json' }!= json_escape(@initial_state_json) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -20,14 +20,6 @@ | ||||||
| 
 | 
 | ||||||
|     = stylesheet_pack_tag 'common', media: 'all' |     = stylesheet_pack_tag 'common', media: 'all' | ||||||
|     = javascript_pack_tag 'common', integrity: true, crossorigin: 'anonymous' |     = javascript_pack_tag 'common', integrity: true, crossorigin: 'anonymous' | ||||||
| 
 |  | ||||||
|     %link{ href: asset_pack_path('features/getting_started.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/ |  | ||||||
|     %link{ href: asset_pack_path('features/compose.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/ |  | ||||||
|     %link{ href: asset_pack_path('features/home_timeline.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/ |  | ||||||
|     %link{ href: asset_pack_path('features/notifications.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/ |  | ||||||
|     %link{ href: asset_pack_path('features/community_timeline.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/ |  | ||||||
|     %link{ href: asset_pack_path('features/public_timeline.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/ |  | ||||||
| 
 |  | ||||||
|     = javascript_pack_tag "locale_#{I18n.locale}", integrity: true, crossorigin: 'anonymous' |     = javascript_pack_tag "locale_#{I18n.locale}", integrity: true, crossorigin: 'anonymous' | ||||||
|     = csrf_meta_tags |     = csrf_meta_tags | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| - thumbnail = @instance_presenter.thumbnail | - thumbnail = @instance_presenter.thumbnail | ||||||
| = opengraph 'og:site_name', t('about.hosted_on', domain: site_hostname) | = opengraph 'og:site_name', t('about.hosted_on', domain: site_hostname) | ||||||
| = opengraph 'og:url', about_url | = opengraph 'og:url', url_for(only_path: false) | ||||||
| = opengraph 'og:type', 'website' | = opengraph 'og:type', 'website' | ||||||
| = opengraph 'og:title', @instance_presenter.site_title | = opengraph 'og:title', @instance_presenter.site_title | ||||||
| = opengraph 'og:description', strip_tags(@instance_presenter.site_description.presence || t('about.about_mastodon_html')) | = opengraph 'og:description', strip_tags(@instance_presenter.site_description.presence || t('about.about_mastodon_html')) | ||||||
|  |  | ||||||
|  | @ -335,7 +335,10 @@ module Mastodon | ||||||
| 
 | 
 | ||||||
|       start_arel = table.project(table[:id]).order(table[:id].asc).take(1) |       start_arel = table.project(table[:id]).order(table[:id].asc).take(1) | ||||||
|       start_arel = yield table, start_arel if block_given? |       start_arel = yield table, start_arel if block_given? | ||||||
|       start_id = exec_query(start_arel.to_sql).to_hash.first['id'].to_i |       first_row = exec_query(start_arel.to_sql).to_hash.first | ||||||
|  |       # In case there are no rows but we didn't catch it in the estimated size: | ||||||
|  |       return unless first_row | ||||||
|  |       start_id = first_row['id'].to_i | ||||||
|        |        | ||||||
|       say "Migrating #{table_name}.#{column} (~#{total.to_i} rows)" |       say "Migrating #{table_name}.#{column} (~#{total.to_i} rows)" | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 9.9 KiB After Width: | Height: | Size: 10 KiB | 
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 6.0 KiB | 
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 5.5 KiB | 
		Loading…
	
		Reference in New Issue