Merge remote-tracking branch 'upstream/master'

master
Ondřej Hruška 7 years ago
commit 0bf9261e65
No known key found for this signature in database
GPG Key ID: 2C5FD5035250423D
  1. 9
      CODEOWNERS
  2. 11
      app/javascript/mastodon/features/status/index.js
  3. 4
      app/javascript/mastodon/locales/fr.json
  4. 22
      app/javascript/mastodon/locales/nl.json
  5. 18
      app/javascript/styles/basics.scss
  6. 6
      app/views/home/index.html.haml
  7. 8
      app/views/layouts/application.html.haml
  8. 2
      app/views/shared/_og.html.haml
  9. 5
      lib/mastodon/migration_helpers.rb
  10. BIN
      public/android-chrome-192x192.png
  11. BIN
      public/apple-touch-icon.png
  12. BIN
      public/mstile-150x150.png

@ -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,13 +92,14 @@ 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 {
font-family: inherit; font-family: inherit;

@ -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…
Cancel
Save