Merge pull request #2563 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 2954279e9c
This commit is contained in:
commit
e76b7ebe89
22 changed files with 200 additions and 67 deletions
2
.nvmrc
2
.nvmrc
|
@ -1 +1 @@
|
||||||
20.10
|
20.11
|
||||||
|
|
5
Gemfile
5
Gemfile
|
@ -39,9 +39,8 @@ end
|
||||||
|
|
||||||
gem 'net-ldap', '~> 0.18'
|
gem 'net-ldap', '~> 0.18'
|
||||||
|
|
||||||
# TODO: Point back at released omniauth-cas gem when PR merged
|
# TODO: Point back at released omniauth-cas gem when new version is released
|
||||||
# https://github.com/dlindahl/omniauth-cas/pull/68
|
gem 'omniauth-cas', github: 'dlindahl/omniauth-cas', ref: '9d9d3a91b316c55d49ab6e621977f2067010c5bf'
|
||||||
gem 'omniauth-cas', github: 'stanhu/omniauth-cas', ref: '4211e6d05941b4a981f9a36b49ec166cecd0e271'
|
|
||||||
gem 'omniauth-saml', '~> 2.0'
|
gem 'omniauth-saml', '~> 2.0'
|
||||||
gem 'omniauth_openid_connect', '~> 0.6.1'
|
gem 'omniauth_openid_connect', '~> 0.6.1'
|
||||||
gem 'omniauth', '~> 2.0'
|
gem 'omniauth', '~> 2.0'
|
||||||
|
|
20
Gemfile.lock
20
Gemfile.lock
|
@ -7,6 +7,16 @@ GIT
|
||||||
hkdf (~> 0.2)
|
hkdf (~> 0.2)
|
||||||
jwt (~> 2.0)
|
jwt (~> 2.0)
|
||||||
|
|
||||||
|
GIT
|
||||||
|
remote: https://github.com/dlindahl/omniauth-cas.git
|
||||||
|
revision: 9d9d3a91b316c55d49ab6e621977f2067010c5bf
|
||||||
|
ref: 9d9d3a91b316c55d49ab6e621977f2067010c5bf
|
||||||
|
specs:
|
||||||
|
omniauth-cas (3.0.0)
|
||||||
|
addressable (~> 2.8)
|
||||||
|
nokogiri (~> 1.12)
|
||||||
|
omniauth (~> 2.1)
|
||||||
|
|
||||||
GIT
|
GIT
|
||||||
remote: https://github.com/jhawthorn/nsa.git
|
remote: https://github.com/jhawthorn/nsa.git
|
||||||
revision: e020fcc3a54d993ab45b7194d89ab720296c111b
|
revision: e020fcc3a54d993ab45b7194d89ab720296c111b
|
||||||
|
@ -18,16 +28,6 @@ GIT
|
||||||
sidekiq (>= 3.5)
|
sidekiq (>= 3.5)
|
||||||
statsd-ruby (~> 1.4, >= 1.4.0)
|
statsd-ruby (~> 1.4, >= 1.4.0)
|
||||||
|
|
||||||
GIT
|
|
||||||
remote: https://github.com/stanhu/omniauth-cas.git
|
|
||||||
revision: 4211e6d05941b4a981f9a36b49ec166cecd0e271
|
|
||||||
ref: 4211e6d05941b4a981f9a36b49ec166cecd0e271
|
|
||||||
specs:
|
|
||||||
omniauth-cas (2.0.0)
|
|
||||||
addressable (~> 2.3)
|
|
||||||
nokogiri (~> 1.5)
|
|
||||||
omniauth (>= 1.2, < 3)
|
|
||||||
|
|
||||||
GEM
|
GEM
|
||||||
remote: https://rubygems.org/
|
remote: https://rubygems.org/
|
||||||
specs:
|
specs:
|
||||||
|
|
|
@ -4,4 +4,60 @@ module Admin::SettingsHelper
|
||||||
def captcha_available?
|
def captcha_available?
|
||||||
ENV['HCAPTCHA_SECRET_KEY'].present? && ENV['HCAPTCHA_SITE_KEY'].present?
|
ENV['HCAPTCHA_SECRET_KEY'].present? && ENV['HCAPTCHA_SITE_KEY'].present?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def login_activity_title(activity)
|
||||||
|
t(
|
||||||
|
"login_activities.#{login_activity_key(activity)}",
|
||||||
|
method: login_activity_method(activity),
|
||||||
|
ip: login_activity_ip(activity),
|
||||||
|
browser: login_activity_browser(activity)
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def login_activity_key(activity)
|
||||||
|
activity.success? ? 'successful_sign_in_html' : 'failed_sign_in_html'
|
||||||
|
end
|
||||||
|
|
||||||
|
def login_activity_method(activity)
|
||||||
|
content_tag(
|
||||||
|
:span,
|
||||||
|
login_activity_method_string(activity),
|
||||||
|
class: 'target'
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
def login_activity_ip(activity)
|
||||||
|
content_tag(
|
||||||
|
:span,
|
||||||
|
activity.ip,
|
||||||
|
class: 'target'
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
def login_activity_browser(activity)
|
||||||
|
content_tag(
|
||||||
|
:span,
|
||||||
|
login_activity_browser_description(activity),
|
||||||
|
class: 'target',
|
||||||
|
title: activity.user_agent
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
def login_activity_method_string(activity)
|
||||||
|
if activity.omniauth?
|
||||||
|
t("auth.providers.#{activity.provider}")
|
||||||
|
else
|
||||||
|
t("login_activities.authentication_methods.#{activity.authentication_method}")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def login_activity_browser_description(activity)
|
||||||
|
t(
|
||||||
|
'sessions.description',
|
||||||
|
browser: t(activity.browser, scope: 'sessions.browsers', default: activity.browser.to_s),
|
||||||
|
platform: t(activity.platform, scope: 'sessions.platforms', default: activity.platform.to_s)
|
||||||
|
)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -9,6 +9,19 @@ module SettingsHelper
|
||||||
LanguagesHelper.sorted_locale_keys(I18n.available_locales)
|
LanguagesHelper.sorted_locale_keys(I18n.available_locales)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def featured_tags_hint(recently_used_tags)
|
||||||
|
safe_join(
|
||||||
|
[
|
||||||
|
t('simple_form.hints.featured_tag.name'),
|
||||||
|
safe_join(
|
||||||
|
links_for_featured_tags(recently_used_tags),
|
||||||
|
', '
|
||||||
|
),
|
||||||
|
],
|
||||||
|
' '
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
def session_device_icon(session)
|
def session_device_icon(session)
|
||||||
device = session.detection.device
|
device = session.detection.device
|
||||||
|
|
||||||
|
@ -28,4 +41,18 @@ module SettingsHelper
|
||||||
safe_join([image_tag(account.avatar.url, width: 15, height: 15, alt: '', class: 'avatar'), content_tag(:span, account.acct, class: 'username')], ' ')
|
safe_join([image_tag(account.avatar.url, width: 15, height: 15, alt: '', class: 'avatar'), content_tag(:span, account.acct, class: 'username')], ' ')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def links_for_featured_tags(tags)
|
||||||
|
tags.map { |tag| post_link_to_featured_tag(tag) }
|
||||||
|
end
|
||||||
|
|
||||||
|
def post_link_to_featured_tag(tag)
|
||||||
|
link_to(
|
||||||
|
"##{tag.display_name}",
|
||||||
|
settings_featured_tags_path(featured_tag: { name: tag.name }),
|
||||||
|
method: :post
|
||||||
|
)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"about.blocks": "Servijerioù habaskaet",
|
"about.blocks": "Servijerioù evezhiet",
|
||||||
"about.contact": "Darempred :",
|
"about.contact": "Darempred :",
|
||||||
"about.disclaimer": "Mastodon zo ur meziant frank, open-source hag ur merk marilhet eus Mastodon gGmbH.",
|
"about.disclaimer": "Mastodon zo ur meziant frank, open-source hag ur merk marilhet eus Mastodon gGmbH.",
|
||||||
"about.domain_blocks.no_reason_available": "Abeg dihegerz",
|
"about.domain_blocks.no_reason_available": "Abeg dihegerz",
|
||||||
|
@ -22,6 +22,7 @@
|
||||||
"account.browse_more_on_origin_server": "Furchal pelloc'h war ar profil orin",
|
"account.browse_more_on_origin_server": "Furchal pelloc'h war ar profil orin",
|
||||||
"account.cancel_follow_request": "Nullañ ar reked heuliañ",
|
"account.cancel_follow_request": "Nullañ ar reked heuliañ",
|
||||||
"account.copy": "Eilañ al liamm war-zu ho profil",
|
"account.copy": "Eilañ al liamm war-zu ho profil",
|
||||||
|
"account.direct": "Menegiñ @{name} ent-prevez",
|
||||||
"account.disable_notifications": "Paouez d'am c'hemenn pa vez embannet traoù gant @{name}",
|
"account.disable_notifications": "Paouez d'am c'hemenn pa vez embannet traoù gant @{name}",
|
||||||
"account.domain_blocked": "Domani stanket",
|
"account.domain_blocked": "Domani stanket",
|
||||||
"account.edit_profile": "Kemmañ ar profil",
|
"account.edit_profile": "Kemmañ ar profil",
|
||||||
|
@ -68,6 +69,7 @@
|
||||||
"account.unendorse": "Paouez da lakaat war-wel war ar profil",
|
"account.unendorse": "Paouez da lakaat war-wel war ar profil",
|
||||||
"account.unfollow": "Diheuliañ",
|
"account.unfollow": "Diheuliañ",
|
||||||
"account.unmute": "Diguzhat @{name}",
|
"account.unmute": "Diguzhat @{name}",
|
||||||
|
"account.unmute_notifications_short": "Diguzhat ar c'hemennoù",
|
||||||
"account.unmute_short": "Diguzhat",
|
"account.unmute_short": "Diguzhat",
|
||||||
"account_note.placeholder": "Klikit evit ouzhpennañ un notenn",
|
"account_note.placeholder": "Klikit evit ouzhpennañ un notenn",
|
||||||
"admin.dashboard.daily_retention": "Feur azdalc'h an implijerien·ezed dre zeiz goude bezañ lakaet o anv",
|
"admin.dashboard.daily_retention": "Feur azdalc'h an implijerien·ezed dre zeiz goude bezañ lakaet o anv",
|
||||||
|
@ -75,6 +77,9 @@
|
||||||
"admin.dashboard.retention.average": "Keidenn",
|
"admin.dashboard.retention.average": "Keidenn",
|
||||||
"admin.dashboard.retention.cohort": "Miz an enrolladur",
|
"admin.dashboard.retention.cohort": "Miz an enrolladur",
|
||||||
"admin.dashboard.retention.cohort_size": "Implijerien.erezed nevez",
|
"admin.dashboard.retention.cohort_size": "Implijerien.erezed nevez",
|
||||||
|
"admin.impact_report.instance_accounts": "Profiloù kontoù a vefe dilamet",
|
||||||
|
"admin.impact_report.instance_followers": "Heulierien a gollfe hon implijerien",
|
||||||
|
"admin.impact_report.instance_follows": "Heulierien a gollfe o implijerien",
|
||||||
"alert.rate_limited.message": "Klaskit en-dro a-benn {retry_time, time, medium}.",
|
"alert.rate_limited.message": "Klaskit en-dro a-benn {retry_time, time, medium}.",
|
||||||
"alert.rate_limited.title": "Feur bevennet",
|
"alert.rate_limited.title": "Feur bevennet",
|
||||||
"alert.unexpected.message": "Ur fazi dic'hortozet zo degouezhet.",
|
"alert.unexpected.message": "Ur fazi dic'hortozet zo degouezhet.",
|
||||||
|
@ -105,6 +110,7 @@
|
||||||
"column.blocks": "Implijer·ezed·ien berzet",
|
"column.blocks": "Implijer·ezed·ien berzet",
|
||||||
"column.bookmarks": "Sinedoù",
|
"column.bookmarks": "Sinedoù",
|
||||||
"column.community": "Red-amzer lec'hel",
|
"column.community": "Red-amzer lec'hel",
|
||||||
|
"column.direct": "Menegoù prevez",
|
||||||
"column.directory": "Mont a-dreuz ar profiloù",
|
"column.directory": "Mont a-dreuz ar profiloù",
|
||||||
"column.domain_blocks": "Domani berzet",
|
"column.domain_blocks": "Domani berzet",
|
||||||
"column.favourites": "Muiañ-karet",
|
"column.favourites": "Muiañ-karet",
|
||||||
|
@ -348,6 +354,7 @@
|
||||||
"lightbox.next": "Da-heul",
|
"lightbox.next": "Da-heul",
|
||||||
"lightbox.previous": "A-raok",
|
"lightbox.previous": "A-raok",
|
||||||
"limited_account_hint.action": "Diskouez an aelad memes tra",
|
"limited_account_hint.action": "Diskouez an aelad memes tra",
|
||||||
|
"limited_account_hint.title": "Kuzhet eo bet ar profil-mañ gant an evezhierien eus {domain}.",
|
||||||
"link_preview.author": "Gant {name}",
|
"link_preview.author": "Gant {name}",
|
||||||
"lists.account.add": "Ouzhpennañ d'al listenn",
|
"lists.account.add": "Ouzhpennañ d'al listenn",
|
||||||
"lists.account.remove": "Lemel kuit eus al listenn",
|
"lists.account.remove": "Lemel kuit eus al listenn",
|
||||||
|
@ -373,6 +380,7 @@
|
||||||
"navigation_bar.bookmarks": "Sinedoù",
|
"navigation_bar.bookmarks": "Sinedoù",
|
||||||
"navigation_bar.community_timeline": "Red-amzer lec'hel",
|
"navigation_bar.community_timeline": "Red-amzer lec'hel",
|
||||||
"navigation_bar.compose": "Skrivañ un toud nevez",
|
"navigation_bar.compose": "Skrivañ un toud nevez",
|
||||||
|
"navigation_bar.direct": "Menegoù prevez",
|
||||||
"navigation_bar.discover": "Dizoleiñ",
|
"navigation_bar.discover": "Dizoleiñ",
|
||||||
"navigation_bar.domain_blocks": "Domanioù kuzhet",
|
"navigation_bar.domain_blocks": "Domanioù kuzhet",
|
||||||
"navigation_bar.edit_profile": "Kemmañ ar profil",
|
"navigation_bar.edit_profile": "Kemmañ ar profil",
|
||||||
|
@ -452,6 +460,7 @@
|
||||||
"onboarding.profile.note_hint": "Gallout a rit @menegiñ tud all pe #hashtagoù…",
|
"onboarding.profile.note_hint": "Gallout a rit @menegiñ tud all pe #hashtagoù…",
|
||||||
"onboarding.profile.save_and_continue": "Enrollañ ha kenderc'hel",
|
"onboarding.profile.save_and_continue": "Enrollañ ha kenderc'hel",
|
||||||
"onboarding.profile.upload_avatar": "Enporzhiañ ur skeudenn profil",
|
"onboarding.profile.upload_avatar": "Enporzhiañ ur skeudenn profil",
|
||||||
|
"onboarding.share.lead": "Roit da c'houzout d'an dud e c'hallont ho kavout war vMastondon!",
|
||||||
"onboarding.share.message": "Me a zo {username} war #Mastodon! Heuilhit ac'hanon war {url}",
|
"onboarding.share.message": "Me a zo {username} war #Mastodon! Heuilhit ac'hanon war {url}",
|
||||||
"onboarding.share.title": "Skignañ ho profil",
|
"onboarding.share.title": "Skignañ ho profil",
|
||||||
"onboarding.start.lead": "Your new Mastodon account is ready to go. Here's how you can make the most of it:",
|
"onboarding.start.lead": "Your new Mastodon account is ready to go. Here's how you can make the most of it:",
|
||||||
|
@ -465,6 +474,7 @@
|
||||||
"onboarding.steps.setup_profile.title": "Customize your profile",
|
"onboarding.steps.setup_profile.title": "Customize your profile",
|
||||||
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
|
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
|
||||||
"onboarding.steps.share_profile.title": "Share your profile",
|
"onboarding.steps.share_profile.title": "Share your profile",
|
||||||
|
"password_confirmation.mismatching": "Disheñvel eo an daou c'her-termen-se",
|
||||||
"picture_in_picture.restore": "Adlakaat",
|
"picture_in_picture.restore": "Adlakaat",
|
||||||
"poll.closed": "Serret",
|
"poll.closed": "Serret",
|
||||||
"poll.refresh": "Azbevaat",
|
"poll.refresh": "Azbevaat",
|
||||||
|
@ -545,6 +555,7 @@
|
||||||
"report_notification.categories.spam": "Spam",
|
"report_notification.categories.spam": "Spam",
|
||||||
"report_notification.categories.violation": "Torradur da reolennoù ar servijer",
|
"report_notification.categories.violation": "Torradur da reolennoù ar servijer",
|
||||||
"report_notification.open": "Digeriñ an disklêriadur",
|
"report_notification.open": "Digeriñ an disklêriadur",
|
||||||
|
"search.no_recent_searches": "Klask nevez ebet",
|
||||||
"search.placeholder": "Klask",
|
"search.placeholder": "Klask",
|
||||||
"search.quick_action.account_search": "Profiloù a glot gant {x}",
|
"search.quick_action.account_search": "Profiloù a glot gant {x}",
|
||||||
"search.quick_action.go_to_account": "Mont d'ar profil {x}",
|
"search.quick_action.go_to_account": "Mont d'ar profil {x}",
|
||||||
|
@ -572,8 +583,10 @@
|
||||||
"server_banner.server_stats": "Stadegoù ar servijer :",
|
"server_banner.server_stats": "Stadegoù ar servijer :",
|
||||||
"sign_in_banner.create_account": "Krouiñ ur gont",
|
"sign_in_banner.create_account": "Krouiñ ur gont",
|
||||||
"sign_in_banner.sign_in": "Kevreañ",
|
"sign_in_banner.sign_in": "Kevreañ",
|
||||||
"status.admin_account": "Digeriñ etrefas evezherezh evit @{name}",
|
"sign_in_banner.sso_redirect": "Kennaskañ pe lakaat hoc'h anv",
|
||||||
"status.admin_status": "Digeriñ an toud e-barzh an etrefas evezherezh",
|
"status.admin_account": "Digeriñ etrefas evezhiañ evit @{name}",
|
||||||
|
"status.admin_domain": "Digeriñ an etrefas evezhiañ evit {domain}",
|
||||||
|
"status.admin_status": "Digeriñ an embannadenn e-barzh an etrefas evezhiañ",
|
||||||
"status.block": "Berzañ @{name}",
|
"status.block": "Berzañ @{name}",
|
||||||
"status.bookmark": "Ouzhpennañ d'ar sinedoù",
|
"status.bookmark": "Ouzhpennañ d'ar sinedoù",
|
||||||
"status.cancel_reblog_private": "Nac'hañ ar skignadenn",
|
"status.cancel_reblog_private": "Nac'hañ ar skignadenn",
|
||||||
|
@ -581,6 +594,8 @@
|
||||||
"status.copy": "Eilañ liamm ar c'hannad",
|
"status.copy": "Eilañ liamm ar c'hannad",
|
||||||
"status.delete": "Dilemel",
|
"status.delete": "Dilemel",
|
||||||
"status.detailed_status": "Gwel kaozeadenn munudek",
|
"status.detailed_status": "Gwel kaozeadenn munudek",
|
||||||
|
"status.direct": "Menegiñ @{name} ent-prevez",
|
||||||
|
"status.direct_indicator": "Meneg prevez",
|
||||||
"status.edit": "Kemmañ",
|
"status.edit": "Kemmañ",
|
||||||
"status.edited": "Aozet {date}",
|
"status.edited": "Aozet {date}",
|
||||||
"status.edited_x_times": "Edited {count, plural, one {# time} other {# times}}",
|
"status.edited_x_times": "Edited {count, plural, one {# time} other {# times}}",
|
||||||
|
@ -624,6 +639,7 @@
|
||||||
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}",
|
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}",
|
||||||
"status.translate": "Treiñ",
|
"status.translate": "Treiñ",
|
||||||
"status.translated_from_with": "Troet diwar {lang} gant {provider}",
|
"status.translated_from_with": "Troet diwar {lang} gant {provider}",
|
||||||
|
"status.uncached_media_warning": "Rakwel n'eo ket da gaout",
|
||||||
"status.unmute_conversation": "Diguzhat ar gaozeadenn",
|
"status.unmute_conversation": "Diguzhat ar gaozeadenn",
|
||||||
"status.unpin": "Dispilhennañ eus ar profil",
|
"status.unpin": "Dispilhennañ eus ar profil",
|
||||||
"subscribed_languages.save": "Enrollañ ar cheñchamantoù",
|
"subscribed_languages.save": "Enrollañ ar cheñchamantoù",
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
"account.go_to_profile": "Przejdź do profilu",
|
"account.go_to_profile": "Przejdź do profilu",
|
||||||
"account.hide_reblogs": "Ukryj podbicia od @{name}",
|
"account.hide_reblogs": "Ukryj podbicia od @{name}",
|
||||||
"account.in_memoriam": "Ku pamięci.",
|
"account.in_memoriam": "Ku pamięci.",
|
||||||
"account.joined_short": "Dołączony",
|
"account.joined_short": "Dołączył(a)",
|
||||||
"account.languages": "Zmień subskrybowane języki",
|
"account.languages": "Zmień subskrybowane języki",
|
||||||
"account.link_verified_on": "Własność tego odnośnika została potwierdzona {date}",
|
"account.link_verified_on": "Własność tego odnośnika została potwierdzona {date}",
|
||||||
"account.locked_info": "To konto jest prywatne. Właściciel ręcznie wybiera kto może go obserwować.",
|
"account.locked_info": "To konto jest prywatne. Właściciel ręcznie wybiera kto może go obserwować.",
|
||||||
|
@ -492,7 +492,7 @@
|
||||||
"onboarding.profile.save_and_continue": "Zapisz i kontynuuj",
|
"onboarding.profile.save_and_continue": "Zapisz i kontynuuj",
|
||||||
"onboarding.profile.title": "Ustawienia profilu",
|
"onboarding.profile.title": "Ustawienia profilu",
|
||||||
"onboarding.profile.upload_avatar": "Dodaj zdjęcie profilowe",
|
"onboarding.profile.upload_avatar": "Dodaj zdjęcie profilowe",
|
||||||
"onboarding.profile.upload_header": "Dodaj zdjęcie nagłówkowe",
|
"onboarding.profile.upload_header": "Dodaj banner profilu",
|
||||||
"onboarding.share.lead": "Daj znać ludziom, jak mogą cię znaleźć na Mastodonie!",
|
"onboarding.share.lead": "Daj znać ludziom, jak mogą cię znaleźć na Mastodonie!",
|
||||||
"onboarding.share.message": "Jestem {username} na #Mastodon! Śledź mnie tutaj {url}",
|
"onboarding.share.message": "Jestem {username} na #Mastodon! Śledź mnie tutaj {url}",
|
||||||
"onboarding.share.next_steps": "Możliwe dalsze kroki:",
|
"onboarding.share.next_steps": "Możliwe dalsze kroki:",
|
||||||
|
|
|
@ -5,7 +5,10 @@
|
||||||
= fa_icon 'warning'
|
= fa_icon 'warning'
|
||||||
.log-entry__content
|
.log-entry__content
|
||||||
.log-entry__title
|
.log-entry__title
|
||||||
= t(account_warning.action, scope: 'admin.strikes.actions', name: content_tag(:span, account_warning.account ? account_warning.account.username : I18n.t('admin.action_logs.deleted_account'), class: 'username'), target: content_tag(:span, account_warning.target_account.pretty_acct, class: 'target')).html_safe
|
= t(account_warning.action,
|
||||||
|
scope: 'admin.strikes.actions',
|
||||||
|
name: content_tag(:span, account_warning.account ? account_warning.account.username : I18n.t('admin.action_logs.deleted_account'), class: 'username'),
|
||||||
|
target: content_tag(:span, account_warning.target_account.pretty_acct, class: 'target')).html_safe
|
||||||
.log-entry__timestamp
|
.log-entry__timestamp
|
||||||
%time.formatted{ datetime: account_warning.created_at.iso8601 }
|
%time.formatted{ datetime: account_warning.created_at.iso8601 }
|
||||||
= l(account_warning.created_at)
|
= l(account_warning.created_at)
|
||||||
|
|
|
@ -4,6 +4,8 @@
|
||||||
= image_tag action_log.account.avatar.url(:original), alt: '', width: 40, height: 40, class: 'avatar'
|
= image_tag action_log.account.avatar.url(:original), alt: '', width: 40, height: 40, class: 'avatar'
|
||||||
.log-entry__content
|
.log-entry__content
|
||||||
.log-entry__title
|
.log-entry__title
|
||||||
= t("admin.action_logs.actions.#{action_log.action}_#{action_log.target_type.underscore}_html", name: content_tag(:span, action_log.account.username, class: 'username'), target: content_tag(:span, log_target(action_log), class: 'target'))
|
= t "admin.action_logs.actions.#{action_log.action}_#{action_log.target_type.underscore}_html",
|
||||||
|
name: content_tag(:span, action_log.account.username, class: 'username'),
|
||||||
|
target: content_tag(:span, log_target(action_log), class: 'target')
|
||||||
.log-entry__timestamp
|
.log-entry__timestamp
|
||||||
%time.formatted{ datetime: action_log.created_at.iso8601 }
|
%time.formatted{ datetime: action_log.created_at.iso8601 }
|
||||||
|
|
|
@ -2,6 +2,16 @@
|
||||||
= render_video_component(status, visible: false)
|
= render_video_component(status, visible: false)
|
||||||
- elsif status.ordered_media_attachments.first.audio?
|
- elsif status.ordered_media_attachments.first.audio?
|
||||||
- audio = status.ordered_media_attachments.first
|
- audio = status.ordered_media_attachments.first
|
||||||
= react_component :audio, src: audio.file.url(:original), height: 110, alt: audio.description, lang: status.language, duration: audio.file.meta.dig(:original, :duration)
|
= react_component :audio,
|
||||||
|
alt: audio.description,
|
||||||
|
duration: audio.file.meta.dig(:original, :duration),
|
||||||
|
height: 110,
|
||||||
|
lang: status.language,
|
||||||
|
src: audio.file.url(:original)
|
||||||
- else
|
- else
|
||||||
= react_component :media_gallery, height: 343, sensitive: status.sensitive?, visible: false, lang: status.language, media: status.ordered_media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json }
|
= react_component :media_gallery,
|
||||||
|
height: 343,
|
||||||
|
lang: status.language,
|
||||||
|
media: status.ordered_media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json },
|
||||||
|
sensitive: status.sensitive?,
|
||||||
|
visible: false
|
||||||
|
|
|
@ -4,7 +4,11 @@
|
||||||
.simple_form
|
.simple_form
|
||||||
%h1.title= t('mail_subscriptions.unsubscribe.title')
|
%h1.title= t('mail_subscriptions.unsubscribe.title')
|
||||||
%p.lead
|
%p.lead
|
||||||
= t('mail_subscriptions.unsubscribe.confirmation_html', domain: content_tag(:strong, site_hostname), type: content_tag(:strong, I18n.t(@type, scope: 'mail_subscriptions.unsubscribe.emails')), email: content_tag(:strong, @user.email), settings_path: settings_preferences_notifications_path)
|
= t 'mail_subscriptions.unsubscribe.confirmation_html',
|
||||||
|
domain: content_tag(:strong, site_hostname),
|
||||||
|
type: content_tag(:strong, I18n.t(@type, scope: 'mail_subscriptions.unsubscribe.emails')),
|
||||||
|
email: content_tag(:strong, @user.email),
|
||||||
|
settings_path: settings_preferences_notifications_path
|
||||||
|
|
||||||
= form_tag unsubscribe_path, method: :post do
|
= form_tag unsubscribe_path, method: :post do
|
||||||
= hidden_field_tag :token, params[:token]
|
= hidden_field_tag :token, params[:token]
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
.fields-group
|
.fields-group
|
||||||
= f.input :name,
|
= f.input :name,
|
||||||
hint: safe_join([t('simple_form.hints.featured_tag.name'), safe_join(@recently_used_tags.map { |tag| link_to("##{tag.display_name}", settings_featured_tags_path(featured_tag: { name: tag.name }), method: :post) }, ', ')], ' '),
|
hint: featured_tags_hint(@recently_used_tags),
|
||||||
wrapper: :with_block_label
|
wrapper: :with_block_label
|
||||||
|
|
||||||
.actions
|
.actions
|
||||||
|
|
|
@ -1,8 +1,3 @@
|
||||||
:ruby
|
|
||||||
method_str = content_tag(:span, login_activity.omniauth? ? t(login_activity.provider, scope: 'auth.providers') : t(login_activity.authentication_method, scope: 'login_activities.authentication_methods'), class: 'target')
|
|
||||||
ip_str = content_tag(:span, login_activity.ip, class: 'target')
|
|
||||||
browser_str = content_tag(:span, t('sessions.description', browser: t("sessions.browsers.#{login_activity.browser}", default: login_activity.browser.to_s), platform: t("sessions.platforms.#{login_activity.platform}", default: login_activity.platform.to_s)), class: 'target', title: login_activity.user_agent)
|
|
||||||
|
|
||||||
.log-entry
|
.log-entry
|
||||||
.log-entry__header
|
.log-entry__header
|
||||||
.log-entry__avatar
|
.log-entry__avatar
|
||||||
|
@ -10,9 +5,6 @@
|
||||||
= fa_icon login_activity.success? ? 'check' : 'times'
|
= fa_icon login_activity.success? ? 'check' : 'times'
|
||||||
.log-entry__content
|
.log-entry__content
|
||||||
.log-entry__title
|
.log-entry__title
|
||||||
- if login_activity.success?
|
= login_activity_title(login_activity)
|
||||||
= t('login_activities.successful_sign_in_html', method: method_str, ip: ip_str, browser: browser_str)
|
|
||||||
- else
|
|
||||||
= t('login_activities.failed_sign_in_html', method: method_str, ip: ip_str, browser: browser_str)
|
|
||||||
.log-entry__timestamp
|
.log-entry__timestamp
|
||||||
%time.formatted{ datetime: login_activity.created_at.iso8601 }= l(login_activity.created_at)
|
%time.formatted{ datetime: login_activity.created_at.iso8601 }= l(login_activity.created_at)
|
||||||
|
|
|
@ -36,7 +36,9 @@
|
||||||
%tbody
|
%tbody
|
||||||
%tr
|
%tr
|
||||||
%td.column-cell.text-center
|
%td.column-cell.text-center
|
||||||
%p= t 'user_mailer.appeal_approved.explanation', appeal_date: l(@appeal.created_at.in_time_zone(@resource.time_zone.presence), format: :with_time_zone), strike_date: l(@appeal.strike.created_at.in_time_zone(@resource.time_zone.presence), format: :with_time_zone)
|
%p= t 'user_mailer.appeal_approved.explanation',
|
||||||
|
appeal_date: l(@appeal.created_at.in_time_zone(@resource.time_zone.presence), format: :with_time_zone),
|
||||||
|
strike_date: l(@appeal.strike.created_at.in_time_zone(@resource.time_zone.presence), format: :with_time_zone)
|
||||||
|
|
||||||
%table.email-table{ cellspacing: 0, cellpadding: 0 }
|
%table.email-table{ cellspacing: 0, cellpadding: 0 }
|
||||||
%tbody
|
%tbody
|
||||||
|
|
|
@ -36,7 +36,9 @@
|
||||||
%tbody
|
%tbody
|
||||||
%tr
|
%tr
|
||||||
%td.column-cell.text-center
|
%td.column-cell.text-center
|
||||||
%p= t 'user_mailer.appeal_rejected.explanation', appeal_date: l(@appeal.created_at.in_time_zone(@resource.time_zone.presence), format: :with_time_zone), strike_date: l(@appeal.strike.created_at.in_time_zone(@resource.time_zone.presence), format: :with_time_zone)
|
%p= t 'user_mailer.appeal_rejected.explanation',
|
||||||
|
appeal_date: l(@appeal.created_at.in_time_zone(@resource.time_zone.presence), format: :with_time_zone),
|
||||||
|
strike_date: l(@appeal.strike.created_at.in_time_zone(@resource.time_zone.presence), format: :with_time_zone)
|
||||||
|
|
||||||
%table.email-table{ cellspacing: 0, cellpadding: 0 }
|
%table.email-table{ cellspacing: 0, cellpadding: 0 }
|
||||||
%tbody
|
%tbody
|
||||||
|
|
|
@ -45,7 +45,10 @@
|
||||||
= @remote_ip
|
= @remote_ip
|
||||||
%br/
|
%br/
|
||||||
%strong #{t('sessions.browser')}:
|
%strong #{t('sessions.browser')}:
|
||||||
%span{ title: @user_agent }= t 'sessions.description', browser: t("sessions.browsers.#{@detection.id}", default: @detection.id.to_s), platform: t("sessions.platforms.#{@detection.platform.id}", default: @detection.platform.id.to_s)
|
%span{ title: @user_agent }
|
||||||
|
= t 'sessions.description',
|
||||||
|
browser: t("sessions.browsers.#{@detection.id}", default: @detection.id.to_s),
|
||||||
|
platform: t("sessions.platforms.#{@detection.platform.id}", default: @detection.platform.id.to_s)
|
||||||
%br/
|
%br/
|
||||||
= l(@timestamp.in_time_zone(@resource.time_zone.presence), format: :with_time_zone)
|
= l(@timestamp.in_time_zone(@resource.time_zone.presence), format: :with_time_zone)
|
||||||
|
|
||||||
|
@ -64,4 +67,5 @@
|
||||||
%tbody
|
%tbody
|
||||||
%tr
|
%tr
|
||||||
%td.column-cell.text-center
|
%td.column-cell.text-center
|
||||||
%p= t 'user_mailer.suspicious_sign_in.further_actions_html', action: link_to(t('user_mailer.suspicious_sign_in.change_password'), edit_user_registration_url)
|
%p= t 'user_mailer.suspicious_sign_in.further_actions_html',
|
||||||
|
action: link_to(t('user_mailer.suspicious_sign_in.change_password'), edit_user_registration_url)
|
||||||
|
|
|
@ -43,10 +43,20 @@ describe Settings::FeaturedTagsController do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'GET to #index' do
|
describe 'GET to #index' do
|
||||||
|
let(:tag) { Fabricate(:tag) }
|
||||||
|
|
||||||
|
before do
|
||||||
|
status = Fabricate :status, account: user.account
|
||||||
|
status.tags << tag
|
||||||
|
end
|
||||||
|
|
||||||
it 'responds with success' do
|
it 'responds with success' do
|
||||||
get :index
|
get :index
|
||||||
|
|
||||||
expect(response).to have_http_status(200)
|
expect(response).to have_http_status(200)
|
||||||
|
expect(response.body).to include(
|
||||||
|
settings_featured_tags_path(featured_tag: { name: tag.name })
|
||||||
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@ describe Settings::LoginActivitiesController do
|
||||||
render_views
|
render_views
|
||||||
|
|
||||||
let!(:user) { Fabricate(:user) }
|
let!(:user) { Fabricate(:user) }
|
||||||
|
let!(:login_activity) { Fabricate :login_activity, user: user }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
sign_in user, scope: :user
|
sign_in user, scope: :user
|
||||||
|
@ -19,6 +20,10 @@ describe Settings::LoginActivitiesController do
|
||||||
it 'returns http success with private cache control headers', :aggregate_failures do
|
it 'returns http success with private cache control headers', :aggregate_failures do
|
||||||
expect(response).to have_http_status(200)
|
expect(response).to have_http_status(200)
|
||||||
expect(response.headers['Cache-Control']).to include('private, no-store')
|
expect(response.headers['Cache-Control']).to include('private, no-store')
|
||||||
|
expect(response.body)
|
||||||
|
.to include(login_activity.user_agent)
|
||||||
|
.and include(login_activity.authentication_method)
|
||||||
|
.and include(login_activity.ip.to_s)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -107,21 +107,6 @@ RSpec.configure do |config|
|
||||||
Capybara.current_driver = :rack_test
|
Capybara.current_driver = :rack_test
|
||||||
end
|
end
|
||||||
|
|
||||||
config.around :each, type: :system do |example|
|
|
||||||
# The streaming server needs access to the database
|
|
||||||
# but with use_transactional_tests every transaction
|
|
||||||
# is rolled-back, so the streaming server never sees the data
|
|
||||||
# So we disable this feature for system tests, and use DatabaseCleaner to clean
|
|
||||||
# the database tables between each test
|
|
||||||
self.use_transactional_tests = false
|
|
||||||
|
|
||||||
DatabaseCleaner.cleaning do
|
|
||||||
example.run
|
|
||||||
end
|
|
||||||
|
|
||||||
self.use_transactional_tests = true
|
|
||||||
end
|
|
||||||
|
|
||||||
config.before do |example|
|
config.before do |example|
|
||||||
allow(Resolv::DNS).to receive(:open).and_raise('Real DNS queries are disabled, stub Resolv::DNS as needed') unless example.metadata[:type] == :system
|
allow(Resolv::DNS).to receive(:open).and_raise('Real DNS queries are disabled, stub Resolv::DNS as needed') unless example.metadata[:type] == :system
|
||||||
end
|
end
|
||||||
|
|
|
@ -177,7 +177,9 @@ RSpec.describe 'IP Blocks' do
|
||||||
let(:params) { { severity: 'sign_up_requires_approval', comment: 'Decreasing severity' } }
|
let(:params) { { severity: 'sign_up_requires_approval', comment: 'Decreasing severity' } }
|
||||||
|
|
||||||
it 'returns the correct ip block', :aggregate_failures do
|
it 'returns the correct ip block', :aggregate_failures do
|
||||||
subject
|
expect { subject }
|
||||||
|
.to change_severity_level
|
||||||
|
.and change_comment_value
|
||||||
|
|
||||||
expect(response).to have_http_status(200)
|
expect(response).to have_http_status(200)
|
||||||
expect(body_as_json).to match(hash_including({
|
expect(body_as_json).to match(hash_including({
|
||||||
|
@ -187,12 +189,12 @@ RSpec.describe 'IP Blocks' do
|
||||||
}))
|
}))
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'updates the severity correctly' do
|
def change_severity_level
|
||||||
expect { subject }.to change { ip_block.reload.severity }.from('no_access').to('sign_up_requires_approval')
|
change { ip_block.reload.severity }.from('no_access').to('sign_up_requires_approval')
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'updates the comment correctly' do
|
def change_comment_value
|
||||||
expect { subject }.to change { ip_block.reload.comment }.from('Spam').to('Decreasing severity')
|
change { ip_block.reload.comment }.from('Spam').to('Decreasing severity')
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when ip block does not exist' do
|
context 'when ip block does not exist' do
|
||||||
|
|
|
@ -32,18 +32,18 @@ describe 'Links' do
|
||||||
it_behaves_like 'forbidden for wrong role', ''
|
it_behaves_like 'forbidden for wrong role', ''
|
||||||
|
|
||||||
it 'returns http success' do
|
it 'returns http success' do
|
||||||
subject
|
expect { subject }
|
||||||
|
.to change_link_trendable_to_true
|
||||||
|
|
||||||
expect(response).to have_http_status(200)
|
expect(response).to have_http_status(200)
|
||||||
|
expects_correct_link_data
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'sets the link as trendable' do
|
def change_link_trendable_to_true
|
||||||
expect { subject }.to change { preview_card.reload.trendable }.from(false).to(true)
|
change { preview_card.reload.trendable }.from(false).to(true)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'returns the link data' do
|
def expects_correct_link_data
|
||||||
subject
|
|
||||||
|
|
||||||
expect(body_as_json).to match(
|
expect(body_as_json).to match(
|
||||||
a_hash_including(
|
a_hash_including(
|
||||||
url: preview_card.url,
|
url: preview_card.url,
|
||||||
|
@ -85,13 +85,14 @@ describe 'Links' do
|
||||||
it_behaves_like 'forbidden for wrong role', ''
|
it_behaves_like 'forbidden for wrong role', ''
|
||||||
|
|
||||||
it 'returns http success' do
|
it 'returns http success' do
|
||||||
subject
|
expect { subject }
|
||||||
|
.to_not change_link_trendable
|
||||||
|
|
||||||
expect(response).to have_http_status(200)
|
expect(response).to have_http_status(200)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'does not set the link as trendable' do
|
def change_link_trendable
|
||||||
expect { subject }.to_not(change { preview_card.reload.trendable })
|
change { preview_card.reload.trendable }
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'returns the link data' do
|
it 'returns the link data' do
|
||||||
|
|
|
@ -95,6 +95,19 @@ RSpec.configure do |config|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
config.around :each, type: :system do |example|
|
||||||
|
# Streaming server needs DB access but `use_transactional_tests` rolls back
|
||||||
|
# every transaction. Disable this feature for streaming tests, and use
|
||||||
|
# DatabaseCleaner to clean the database tables between each test.
|
||||||
|
self.use_transactional_tests = false
|
||||||
|
|
||||||
|
DatabaseCleaner.cleaning do
|
||||||
|
example.run
|
||||||
|
end
|
||||||
|
|
||||||
|
self.use_transactional_tests = true
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def streaming_server_manager
|
def streaming_server_manager
|
||||||
|
|
Loading…
Reference in a new issue