diff --git a/app/models/antenna.rb b/app/models/antenna.rb index 95b0bc0af2..89b98516b1 100644 --- a/app/models/antenna.rb +++ b/app/models/antenna.rb @@ -35,7 +35,15 @@ class Antenna < ApplicationRecord scope :availables, -> { where(available: true).where(Arel.sql('any_keywords = FALSE OR any_domains = FALSE OR any_accounts = FALSE OR any_tags = FALSE')) } def enabled? - available && !expired? && !(any_keywords && any_domains && any_accounts && any_tags) + enabled_config? && !expired? + end + + def enabled_config? + available && enabled_config_raws? + end + + def enabled_config_raws? + !(any_keywords && any_domains && any_accounts && any_tags) end def expires_in diff --git a/app/views/antennas/_antenna.html.haml b/app/views/antennas/_antenna.html.haml index ad48eea804..3ba7d72377 100644 --- a/app/views/antennas/_antenna.html.haml +++ b/app/views/antennas/_antenna.html.haml @@ -1,8 +1,11 @@ -.filters-list__item{ class: [antenna.expired? && 'expired'] } +.filters-list__item{ class: [(antenna.expired? || !antenna.enabled_config?) && 'expired'] } = link_to edit_antenna_path(antenna), class: 'filters-list__item__title' do = antenna.title - - if antenna.expires? + - if !antenna.enabled_config? + .expiration{ title: t('antennas.index.disabled') } + = t('antennas.index.disabled') + - elsif antenna.expires? .expiration{ title: t('antennas.index.expires_on', date: l(antenna.expires_at)) } - if antenna.expired? = t('invites.expired') @@ -61,7 +64,10 @@ .announcements-list__item__action-bar .announcements-list__item__meta - = t('antennas.index.contexts', contexts: antenna.context.map { |context| I18n.t("antennas.contexts.#{context}") }.join(', ')) + - if antenna.enabled_config_raws? + = t('antennas.index.contexts', contexts: antenna.context.map { |context| I18n.t("antennas.contexts.#{context}") }.join(', ')) + - else + = t('antennas.errors.empty_contexts') %div = table_link_to 'pencil', t('antennas.edit.title'), edit_antenna_path(antenna) diff --git a/app/views/antennas/_antenna_fields.html.haml b/app/views/antennas/_antenna_fields.html.haml index e41ab54188..7f49139e0a 100644 --- a/app/views/antennas/_antenna_fields.html.haml +++ b/app/views/antennas/_antenna_fields.html.haml @@ -1,3 +1,6 @@ +%p= t 'antennas.edit.description' +%hr.spacer/ + .fields-row .fields-row__column.fields-row__column-6.fields-group = f.input :title, as: :string, wrapper: :with_label, hint: false @@ -6,40 +9,43 @@ .fields-row .fields-group.fields-row__column.fields-row__column-6 - = f.input :list, collection: lists, wrapper: :with_label, label_method: lambda { |list| list.title }, selected: f.object.list&.id, hint: false + = f.input :list, collection: lists, wrapper: :with_label, label_method: lambda { |list| list.title }, label: t('antennas.edit.list'), selected: f.object.list&.id, hint: false .fields-group.fields-row__column.fields-row__column-6 - = f.input :available, wrapper: :with_label, hint: false + = f.input :available, wrapper: :with_label, label: t('antennas.edit.available'), hint: false %hr.spacer/ +%p.hint= t 'antennas.edit.hint' +%hr.spacer/ -%h4= t('antennas.edit.domains') +%h4= t('antennas.contexts.domain') .fields-row .fields-row__column.fields-row__column-6.fields-group - = f.input :domains_raw, wrapper: :with_label, as: :text, input_html: { rows: 5 } + = f.input :domains_raw, wrapper: :with_label, as: :text, input_html: { rows: 5 }, label: t('antennas.edit.domains_raw') .fields-row__column.fields-row__column-6.fields-group - = f.input :exclude_domains_raw, wrapper: :with_label, as: :text, input_html: { rows: 5 } + = f.input :exclude_domains_raw, wrapper: :with_label, as: :text, input_html: { rows: 5 }, label: t('antennas.edit.exclude_domains_raw') -%h4= t('antennas.edit.accounts') +%h4= t('antennas.contexts.account') +%p.hint= t 'antennas.edit.accounts_hint' .fields-row .fields-row__column.fields-row__column-6.fields-group - = f.input :accounts_raw, wrapper: :with_label, as: :text, input_html: { rows: 5 } + = f.input :accounts_raw, wrapper: :with_label, as: :text, input_html: { rows: 5 }, label: t('antennas.edit.accounts_raw') .fields-row__column.fields-row__column-6.fields-group - = f.input :exclude_accounts_raw, wrapper: :with_label, as: :text, input_html: { rows: 5 } + = f.input :exclude_accounts_raw, wrapper: :with_label, as: :text, input_html: { rows: 5 }, label: t('antennas.edit.exclude_accounts_raw') -%h4= t('antennas.edit.tags') +%h4= t('antennas.contexts.tag') .fields-row .fields-row__column.fields-row__column-6.fields-group - = f.input :tags_raw, wrapper: :with_label, as: :text, input_html: { rows: 5 } + = f.input :tags_raw, wrapper: :with_label, as: :text, input_html: { rows: 5 }, label: t('antennas.edit.tags_raw') .fields-row__column.fields-row__column-6.fields-group - = f.input :exclude_tags_raw, wrapper: :with_label, as: :text, input_html: { rows: 5 } + = f.input :exclude_tags_raw, wrapper: :with_label, as: :text, input_html: { rows: 5 }, label: t('antennas.edit.exclude_tags_raw') -%h4= t('antennas.edit.keywords') +%h4= t('antennas.contexts.keyword') .fields-row .fields-row__column.fields-row__column-6.fields-group - = f.input :keywords_raw, wrapper: :with_label, as: :text, input_html: { rows: 5 } + = f.input :keywords_raw, wrapper: :with_label, as: :text, input_html: { rows: 5 }, label: t('antennas.edit.keywords_raw') .fields-row__column.fields-row__column-6.fields-group - = f.input :exclude_keywords_raw, wrapper: :with_label, as: :text, input_html: { rows: 5 } + = f.input :exclude_keywords_raw, wrapper: :with_label, as: :text, input_html: { rows: 5 }, label: t('antennas.edit.exclude_keywords_raw') diff --git a/app/views/antennas/_keyword_fields.html.haml b/app/views/antennas/_keyword_fields.html.haml deleted file mode 100644 index a0ebdb1a04..0000000000 --- a/app/views/antennas/_keyword_fields.html.haml +++ /dev/null @@ -1,8 +0,0 @@ -%tr.nested-fields - %td= f.input :keyword, as: :string - %td - .label_input__wrapper= f.input_field :whole_word - %td - = f.hidden_field :id if f.object&.persisted? # Required so Rails doesn't put the field outside of the - = link_to_remove_association(f, class: 'table-action-link') do - = safe_join([fa_icon('times'), t('antennas.index.delete')]) diff --git a/config/locales/en.yml b/config/locales/en.yml index 8cbc339c89..850f470c64 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -971,13 +971,28 @@ en: keyword: Keywords tag: Tags edit: + accounts_hint: \@askyq or @askyq@example.com + accounts_raw: Account list + available: Available + description: アンテナは、サーバーが認識した全ての公開・ローカル公開投稿のうち、検索許可が「公開」または明示的に設定されていないもの(検索許可システムに対応していないサーバーからの投稿)、かつ購読を拒否していないすべてのアカウントからの投稿が対象です。検出された投稿は、指定したリストに追加されます。 + domains_raw: Domain list + exclude_accounts_raw: Excluding account list + exclude_domains_raw: Excluding domain list + exclude_keywords_raw: Excluding keyword list + exclude_tags_raw: Excluding hashtag list + hint: 下のリストに、絞り込み条件・除外条件を入力します。条件は複数指定することができます。1行につき1つずつ入力してください。空行、コメント、重複を含めることはできません。 + keywords_raw: Keyword list + list: Destination list + tags_raw: Hashtag list title: Edit antenna errors: deprecated_api_multiple_keywords: These parameters cannot be changed from this application because they apply to more than one filter keyword. Use a more recent application or the web interface. + empty_contexts: No contexts! You must set any context filters invalid_context: None or invalid context supplied index: contexts: Antennas in %{contexts} delete: Delete + disabled: Disabled empty: You have no antennas. expires_in: Expires in %{distance} expires_on: Expires on %{date} diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 285e3fe2fa..a4519eced2 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -952,13 +952,29 @@ ja: domain: ドメイン keyword: キーワード tag: ハッシュタグ + errors: + empty_contexts: 絞り込み条件が1つも指定されていないため無効です(除外条件はカウントされません) edit: + accounts_hint: ローカルアカウントの場合は「@info」、リモートアカウントの場合は「@info@example.com」の形式で指定します。サーバーが認識していないアカウントは保存時に自動的に削除されます。 + accounts_raw: 絞り込むアカウント + available: 有効 + description: アンテナは、サーバーが認識した全ての公開・ローカル公開投稿のうち、検索許可が「公開」または明示的に設定されていないもの(検索許可システムに対応していないサーバーからの投稿)、かつ購読を拒否していないすべてのアカウントからの投稿が対象です。検出された投稿は、指定したリストに追加されます。 + domains_raw: 絞り込むドメイン + exclude_accounts_raw: 除外するアカウント + exclude_domains_raw: 除外するドメイン + exclude_keywords_raw: 除外するキーワード + exclude_tags_raw: 除外するハッシュタグ + hint: 下のリストに、絞り込み条件・除外条件を入力します。条件は複数指定することができます。1行につき1つずつ入力してください。空行、コメント、重複を含めることはできません。 + keywords_raw: 絞り込むキーワード + list: 投稿配置先リスト + tags_raw: 絞り込むハッシュタグ title: アンテナを編集 index: accounts: other: "%{count}件のアカウント" contexts: "%{contexts}のアンテナ" delete: 削除 + disabled: 無効 domains: other: "%{count}件のドメイン" empty: アンテナはありません。