Merge upstream 2.0ish #165
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
|
||||
- content_for :header_tags do
|
||||
= javascript_pack_tag 'public', integrity: true, crossorigin: 'anonymous'
|
||||
= render partial: 'og'
|
||||
= render partial: 'shared/og'
|
||||
|
||||
.landing-page
|
||||
.header-wrapper.compact
|
||||
|
@@ -4,7 +4,7 @@
|
||||
- content_for :header_tags do
|
||||
%script#initial-state{ type: 'application/json' }!= json_escape(@initial_state_json)
|
||||
= javascript_pack_tag 'about', integrity: true, crossorigin: 'anonymous'
|
||||
= render partial: 'og'
|
||||
= render partial: 'shared/og'
|
||||
|
||||
.landing-page
|
||||
.header-wrapper
|
||||
@@ -69,7 +69,7 @@
|
||||
.about-mastodon
|
||||
%h3= t 'about.what_is_mastodon'
|
||||
%p= t 'about.about_mastodon_html'
|
||||
%a.button.button-secondary{ href: 'https://joinmastodon.org/' }= t 'about.learn_more'
|
||||
= link_to t('about.learn_more'), 'https://joinmastodon.org/', class: 'button button-secondary'
|
||||
= render 'features'
|
||||
.footer-links
|
||||
.container
|
||||
|
@@ -0,0 +1,10 @@
|
||||
%tr
|
||||
%td
|
||||
= simple_format(h(account_moderation_note.content))
|
||||
%td
|
||||
= account_moderation_note.account.acct
|
||||
%td
|
||||
%time.formatted{ datetime: account_moderation_note.created_at.iso8601, title: l(account_moderation_note.created_at) }
|
||||
= l account_moderation_note.created_at
|
||||
%td
|
||||
= link_to t('admin.account_moderation_notes.delete'), admin_account_moderation_note_path(account_moderation_note), method: :delete
|
@@ -129,3 +129,25 @@
|
||||
%tr
|
||||
%th= t('admin.accounts.followers_url')
|
||||
%td= link_to @account.followers_url, @account.followers_url
|
||||
|
||||
%hr
|
||||
%h3= t('admin.accounts.moderation_notes')
|
||||
|
||||
= simple_form_for @account_moderation_note, url: admin_account_moderation_notes_path do |f|
|
||||
= render 'shared/error_messages', object: @account_moderation_note
|
||||
|
||||
= f.input :content
|
||||
= f.hidden_field :target_account_id
|
||||
|
||||
.actions
|
||||
= f.button :button, t('admin.account_moderation_notes.create'), type: :submit
|
||||
|
||||
.table-wrapper
|
||||
%table.table
|
||||
%thead
|
||||
%tr
|
||||
%th
|
||||
%th= t('admin.account_moderation_notes.account')
|
||||
%th= t('admin.account_moderation_notes.created_at')
|
||||
%tbody
|
||||
= render @moderation_notes
|
||||
|
@@ -3,5 +3,18 @@
|
||||
= image_tag custom_emoji.image.url, class: 'emojione', alt: ":#{custom_emoji.shortcode}:"
|
||||
%td
|
||||
%samp= ":#{custom_emoji.shortcode}:"
|
||||
%td
|
||||
- if custom_emoji.local?
|
||||
= t('admin.accounts.location.local')
|
||||
- else
|
||||
= custom_emoji.domain
|
||||
%td
|
||||
- unless custom_emoji.local?
|
||||
= table_link_to 'copy', t('admin.custom_emojis.copy'), copy_admin_custom_emoji_path(custom_emoji), method: :post
|
||||
%td
|
||||
- if custom_emoji.disabled?
|
||||
= table_link_to 'power-off', t('admin.custom_emojis.enable'), enable_admin_custom_emoji_path(custom_emoji), method: :post, data: { confirm: t('admin.accounts.are_you_sure') }
|
||||
- else
|
||||
= table_link_to 'power-off', t('admin.custom_emojis.disable'), disable_admin_custom_emoji_path(custom_emoji), method: :post, data: { confirm: t('admin.accounts.are_you_sure') }
|
||||
%td
|
||||
= table_link_to 'times', t('admin.custom_emojis.delete'), admin_custom_emoji_path(custom_emoji), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') }
|
||||
|
@@ -1,14 +1,34 @@
|
||||
- content_for :page_title do
|
||||
= t('admin.custom_emojis.title')
|
||||
|
||||
.filters
|
||||
.filter-subset
|
||||
%strong= t('admin.accounts.location.title')
|
||||
%ul
|
||||
%li= filter_link_to t('admin.accounts.location.all'), local: nil, remote: nil
|
||||
%li
|
||||
- if selected? local: '1', remote: nil
|
||||
= filter_link_to t('admin.accounts.location.local'), {local: nil, remote: nil}, {local: '1', remote: nil}
|
||||
- else
|
||||
= filter_link_to t('admin.accounts.location.local'), local: '1', remote: nil
|
||||
%li
|
||||
- if selected? remote: '1', local: nil
|
||||
= filter_link_to t('admin.accounts.location.remote'), {remote: nil, local: nil}, {remote: '1', local: nil}
|
||||
- else
|
||||
= filter_link_to t('admin.accounts.location.remote'), remote: '1', local: nil
|
||||
|
||||
.table-wrapper
|
||||
%table.table
|
||||
%thead
|
||||
%tr
|
||||
%th= t('admin.custom_emojis.emoji')
|
||||
%th= t('admin.custom_emojis.shortcode')
|
||||
%th= t('admin.accounts.domain')
|
||||
%th
|
||||
%th
|
||||
%th
|
||||
%tbody
|
||||
= render @custom_emojis
|
||||
|
||||
= paginate @custom_emojis
|
||||
= link_to t('admin.custom_emojis.upload'), new_admin_custom_emoji_path, class: 'button'
|
||||
|
@@ -0,0 +1,5 @@
|
||||
%tr
|
||||
%td.domain
|
||||
%samp= email_domain_block.domain
|
||||
%td
|
||||
= table_link_to 'trash', t('admin.email_domain_blocks.delete'), admin_email_domain_block_path(email_domain_block), method: :delete
|
14
app/views/admin/email_domain_blocks/index.html.haml
Normal file
14
app/views/admin/email_domain_blocks/index.html.haml
Normal file
@@ -0,0 +1,14 @@
|
||||
- content_for :page_title do
|
||||
= t('admin.email_domain_blocks.title')
|
||||
|
||||
.table-wrapper
|
||||
%table.table
|
||||
%thead
|
||||
%tr
|
||||
%th= t('admin.email_domain_blocks.domain')
|
||||
%th
|
||||
%tbody
|
||||
= render @email_domain_blocks
|
||||
|
||||
= paginate @email_domain_blocks
|
||||
= link_to t('admin.email_domain_blocks.add_new'), new_admin_email_domain_block_path, class: 'button'
|
10
app/views/admin/email_domain_blocks/new.html.haml
Normal file
10
app/views/admin/email_domain_blocks/new.html.haml
Normal file
@@ -0,0 +1,10 @@
|
||||
- content_for :page_title do
|
||||
= t('.title')
|
||||
|
||||
= simple_form_for @email_domain_block, url: admin_email_domain_blocks_path do |f|
|
||||
= render 'shared/error_messages', object: @email_domain_block
|
||||
|
||||
= f.input :domain, placeholder: t('admin.email_domain_blocks.domain')
|
||||
|
||||
.actions
|
||||
= f.button :button, t('.create'), type: :submit
|
@@ -1,6 +1,9 @@
|
||||
- content_for :page_title do
|
||||
= t('auth.register')
|
||||
|
||||
- content_for :header_tags do
|
||||
= render partial: 'shared/og'
|
||||
|
||||
= simple_form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f|
|
||||
= render 'shared/error_messages', object: resource
|
||||
|
||||
|
@@ -1,6 +1,9 @@
|
||||
- content_for :page_title do
|
||||
= t('auth.login')
|
||||
|
||||
- content_for :header_tags do
|
||||
= render partial: 'shared/og'
|
||||
|
||||
= simple_form_for(resource, as: resource_name, url: session_path(resource_name)) do |f|
|
||||
= f.input :email, autofocus: true, placeholder: t('simple_form.labels.defaults.email'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.email') }
|
||||
= f.input :password, placeholder: t('simple_form.labels.defaults.password'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.password'), :autocomplete => 'off' }
|
||||
|
@@ -3,12 +3,12 @@
|
||||
%head
|
||||
%meta{ content: 'text/html; charset=UTF-8', 'http-equiv' => 'Content-Type' }/
|
||||
%meta{ charset: 'utf-8' }/
|
||||
%title= safe_join([yield(:page_title), title], ' - ')
|
||||
%title= safe_join([yield(:page_title), Setting.default_settings['site_title']], ' - ')
|
||||
%meta{ content: 'width=device-width,initial-scale=1', name: 'viewport' }/
|
||||
= stylesheet_pack_tag 'common', media: 'all'
|
||||
= stylesheet_pack_tag 'application', integrity: true, media: 'all'
|
||||
%body.error
|
||||
.dialog
|
||||
%img{ alt: title, src: '/oops.gif' }/
|
||||
%img{ alt: Setting.default_settings['site_title'], src: '/oops.gif' }/
|
||||
%div
|
||||
%h1= yield :content
|
||||
|
@@ -1,11 +0,0 @@
|
||||
object false
|
||||
|
||||
node(:name) { Setting.site_title }
|
||||
node(:short_name) { Setting.site_title }
|
||||
node(:description) { strip_tags(Setting.site_description.presence || I18n.t('about.about_mastodon_html')) }
|
||||
node(:icons) { [{ src: '/android-chrome-192x192.png', sizes: '192x192', type: 'image/png' }] }
|
||||
node(:theme_color) { '#282c37' }
|
||||
node(:background_color) { '#d9e1e8' }
|
||||
node(:display) { 'standalone' }
|
||||
node(:start_url) { '/web/timelines/home' }
|
||||
node(:scope) { root_url }
|
25
app/views/settings/notifications/show.html.haml
Normal file
25
app/views/settings/notifications/show.html.haml
Normal file
@@ -0,0 +1,25 @@
|
||||
- content_for :page_title do
|
||||
= t('settings.notifications')
|
||||
|
||||
= simple_form_for current_user, url: settings_notifications_path, html: { method: :put } do |f|
|
||||
= render 'shared/error_messages', object: current_user
|
||||
|
||||
.fields-group
|
||||
= f.simple_fields_for :notification_emails, hash_to_object(current_user.settings.notification_emails) do |ff|
|
||||
= ff.input :follow, as: :boolean, wrapper: :with_label
|
||||
= ff.input :follow_request, as: :boolean, wrapper: :with_label
|
||||
= ff.input :reblog, as: :boolean, wrapper: :with_label
|
||||
= ff.input :favourite, as: :boolean, wrapper: :with_label
|
||||
= ff.input :mention, as: :boolean, wrapper: :with_label
|
||||
|
||||
.fields-group
|
||||
= f.simple_fields_for :notification_emails, hash_to_object(current_user.settings.notification_emails) do |ff|
|
||||
= ff.input :digest, as: :boolean, wrapper: :with_label
|
||||
|
||||
.fields-group
|
||||
= f.simple_fields_for :interactions, hash_to_object(current_user.settings.interactions) do |ff|
|
||||
= ff.input :must_be_follower, as: :boolean, wrapper: :with_label
|
||||
= ff.input :must_be_following, as: :boolean, wrapper: :with_label
|
||||
|
||||
.actions
|
||||
= f.button :button, t('generic.save_changes'), type: :submit
|
@@ -4,48 +4,31 @@
|
||||
= simple_form_for current_user, url: settings_preferences_path, html: { method: :put } do |f|
|
||||
= render 'shared/error_messages', object: current_user
|
||||
|
||||
%h4= t 'preferences.languages'
|
||||
|
||||
.fields-group
|
||||
= f.input :setting_theme, collection: Themes.instance.names, label_method: lambda { |theme| safe_join([I18n.t("themes.#{theme}", default: theme)])}, wrapper: :with_label, include_blank: false
|
||||
= f.input :locale, collection: I18n.available_locales, wrapper: :with_label, include_blank: false, label_method: lambda { |locale| human_locale(locale) }, selected: I18n.locale
|
||||
|
||||
= f.input :locale,
|
||||
collection: I18n.available_locales,
|
||||
wrapper: :with_label,
|
||||
include_blank: false,
|
||||
label_method: lambda { |locale| human_locale(locale) },
|
||||
selected: I18n.locale
|
||||
= f.input :filtered_languages, collection: filterable_languages, wrapper: :with_block_label, include_blank: false, label_method: lambda { |locale| human_locale(locale) }, required: false, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li'
|
||||
|
||||
= f.input :filtered_languages,
|
||||
collection: filterable_languages,
|
||||
wrapper: :with_block_label,
|
||||
include_blank: false,
|
||||
label_method: lambda { |locale| human_locale(locale) },
|
||||
required: false,
|
||||
as: :check_boxes,
|
||||
collection_wrapper_tag: 'ul',
|
||||
item_wrapper_tag: 'li'
|
||||
%h4= t 'preferences.publishing'
|
||||
|
||||
.fields-group
|
||||
= f.input :setting_default_privacy, collection: Status.visibilities.keys - ['direct'], wrapper: :with_label, include_blank: false, label_method: lambda { |visibility| safe_join([I18n.t("statuses.visibilities.#{visibility}"), content_tag(:span, I18n.t("statuses.visibilities.#{visibility}_long"), class: 'hint')]) }, required: false, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li'
|
||||
|
||||
= f.input :setting_default_sensitive, as: :boolean, wrapper: :with_label
|
||||
|
||||
.fields-group
|
||||
= f.simple_fields_for :notification_emails, hash_to_object(current_user.settings.notification_emails) do |ff|
|
||||
= ff.input :follow, as: :boolean, wrapper: :with_label
|
||||
= ff.input :follow_request, as: :boolean, wrapper: :with_label
|
||||
= ff.input :reblog, as: :boolean, wrapper: :with_label
|
||||
= ff.input :favourite, as: :boolean, wrapper: :with_label
|
||||
= ff.input :mention, as: :boolean, wrapper: :with_label
|
||||
= ff.input :digest, as: :boolean, wrapper: :with_label
|
||||
|
||||
.fields-group
|
||||
= f.simple_fields_for :interactions, hash_to_object(current_user.settings.interactions) do |ff|
|
||||
= ff.input :must_be_follower, as: :boolean, wrapper: :with_label
|
||||
= ff.input :must_be_following, as: :boolean, wrapper: :with_label
|
||||
%h4= t 'preferences.other'
|
||||
|
||||
.fields-group
|
||||
= f.input :setting_noindex, as: :boolean, wrapper: :with_label
|
||||
|
||||
%h4= t 'preferences.web'
|
||||
|
||||
.fields-group
|
||||
- if Themes.instance.names.size > 1
|
||||
= f.input :setting_theme, collection: Themes.instance.names, label_method: lambda { |theme| I18n.t("themes.#{theme}", default: theme) }, wrapper: :with_label, include_blank: false
|
||||
|
||||
= f.input :setting_unfollow_modal, as: :boolean, wrapper: :with_label
|
||||
= f.input :setting_boost_modal, as: :boolean, wrapper: :with_label
|
||||
= f.input :setting_delete_modal, as: :boolean, wrapper: :with_label
|
||||
|
@@ -17,7 +17,9 @@
|
||||
- unless media.file.meta.nil?
|
||||
= opengraph 'og:video:width', media.file.meta['small']['width']
|
||||
= opengraph 'og:video:height', media.file.meta['small']['height']
|
||||
= opengraph 'twitter:card', 'summary_large_image'
|
||||
- else
|
||||
= opengraph 'og:image', full_asset_url(account.avatar.url(:original))
|
||||
= opengraph 'og:image:width', '120'
|
||||
= opengraph 'og:image:height','120'
|
||||
= opengraph 'twitter:card', 'summary'
|
||||
|
@@ -14,8 +14,6 @@
|
||||
= render 'stream_entries/og_description', activity: @stream_entry.activity
|
||||
= render 'stream_entries/og_image', activity: @stream_entry.activity, account: @account
|
||||
|
||||
= opengraph 'twitter:card', 'summary_large_image'
|
||||
|
||||
- if show_landing_strip?
|
||||
= render partial: 'shared/landing_strip', locals: { account: @stream_entry.account }
|
||||
|
||||
|
6
app/views/tags/_og.html.haml
Normal file
6
app/views/tags/_og.html.haml
Normal file
@@ -0,0 +1,6 @@
|
||||
= opengraph 'og:site_name', t('about.hosted_on', domain: site_hostname)
|
||||
= opengraph 'og:url', tag_url(@tag)
|
||||
= opengraph 'og:type', 'website'
|
||||
= opengraph 'og:title', "##{@tag.name}"
|
||||
= opengraph 'og:description', t('about.about_hashtag_html', hashtag: @tag.name)
|
||||
= opengraph 'twitter:card', 'summary'
|
@@ -1,19 +1,38 @@
|
||||
- content_for :page_title do
|
||||
= "##{@tag.name}"
|
||||
|
||||
.compact-header
|
||||
%h1<
|
||||
= link_to site_title, root_path
|
||||
%br
|
||||
%small ##{@tag.name}
|
||||
- content_for :header_tags do
|
||||
%script#initial-state{ type: 'application/json' }!= json_escape(@initial_state_json)
|
||||
= javascript_pack_tag 'about', integrity: true, crossorigin: 'anonymous'
|
||||
= render 'og'
|
||||
|
||||
- if @statuses.empty?
|
||||
.accounts-grid
|
||||
= render partial: 'accounts/nothing_here'
|
||||
- else
|
||||
.activity-stream.h-feed
|
||||
= render partial: 'stream_entries/status', collection: @statuses, as: :status
|
||||
.landing-page.tag-page
|
||||
.stripe
|
||||
.features
|
||||
.container
|
||||
#mastodon-timeline{ data: { props: Oj.dump(default_props.merge(hashtag: @tag.name)) } }
|
||||
|
||||
- if @statuses.size == 20
|
||||
.pagination
|
||||
= link_to safe_join([t('pagination.next'), fa_icon('chevron-right')], ' '), tag_url(@tag, max_id: @statuses.last.id), class: 'next', rel: 'next'
|
||||
.about-mastodon
|
||||
.brand
|
||||
= link_to root_url do
|
||||
= image_tag asset_pack_path('logo_full.svg'), alt: 'Mastodon'
|
||||
|
||||
%p= t 'about.about_hashtag_html', hashtag: @tag.name
|
||||
|
||||
.cta
|
||||
= link_to t('auth.login'), new_user_session_path, class: 'button button-secondary'
|
||||
= link_to t('about.learn_more'), root_url, class: 'button button-alternative'
|
||||
|
||||
.features-list
|
||||
.features-list__row
|
||||
.text
|
||||
%h6= t 'about.features.not_a_product_title'
|
||||
= t 'about.features.not_a_product_body'
|
||||
.visual
|
||||
= fa_icon 'fw users'
|
||||
.features-list__row
|
||||
.text
|
||||
%h6= t 'about.features.humane_approach_title'
|
||||
= t 'about.features.humane_approach_body'
|
||||
.visual
|
||||
= fa_icon 'fw leaf'
|
||||
|
@@ -3,10 +3,13 @@
|
||||
<p>You just created an account on <%= @instance %>.</p>
|
||||
|
||||
<p>To confirm your inscription, please click on the following link : <br>
|
||||
<%= link_to 'Confirm my account', confirmation_url(@resource, confirmation_token: @token) %>
|
||||
<%= link_to 'Confirm my account', confirmation_url(@resource, confirmation_token: @token) %></p>
|
||||
|
||||
<p>If the above link did not work, copy and paste this URL into your address bar: <br>
|
||||
<span><%= confirmation_url(@resource, confirmation_token: @token) %></span>
|
||||
|
||||
<p>Please also check out our <%= link_to 'terms and conditions', terms_url %>.</p>
|
||||
|
||||
<p>Sincerely,<p>
|
||||
|
||||
<p>The <%= @instance %> team</p>
|
||||
<p>The <%= @instance %> team</p>
|
||||
|
13
app/views/user_mailer/confirmation_instructions.ko.html.erb
Normal file
13
app/views/user_mailer/confirmation_instructions.ko.html.erb
Normal file
@@ -0,0 +1,13 @@
|
||||
<p>안녕하세요 <%= @resource.email %> 님!</p>
|
||||
|
||||
<p><%= @instance %>에 새로 계정을 만들었습니다.</p>
|
||||
|
||||
<p>아래 링크를 눌러 회원가입을 완료 하세요:<br>
|
||||
<%= link_to '계정 활성화', confirmation_url(@resource, confirmation_token: @token) %></p>
|
||||
|
||||
<p>만약 위의 링크가 작동하지 않는다면 아래 URL을 복사하여 주소창에 붙여넣으세요</p>
|
||||
<span><%= confirmation_url(@resource, confirmation_token: @token) %></span>
|
||||
|
||||
<p> <%= link_to '약관', terms_url %>도 확인 바랍니다.</p>
|
||||
|
||||
<p><%= @instance %> 드림</p>
|
10
app/views/user_mailer/confirmation_instructions.ko.text.erb
Normal file
10
app/views/user_mailer/confirmation_instructions.ko.text.erb
Normal file
@@ -0,0 +1,10 @@
|
||||
안녕하세요 <%= @resource.email %> 님!
|
||||
|
||||
<%= @instance %>에 새로 계정을 만들었습니다.
|
||||
|
||||
아래 링크를 눌러 회원가입을 완료 하세요.
|
||||
<%= confirmation_url(@resource, confirmation_token: @token) %>
|
||||
|
||||
약관도 확인 바랍니다. <%= terms_url %>
|
||||
|
||||
<%= @instance %> 드림
|
Reference in New Issue
Block a user