before_action :authenticate_user!
before_action :set_account
+ before_action :load_keyword_mute, only: [:edit, :update, :destroy]
def index
@keyword_mutes = paginated_keyword_mutes_for_account
@keyword_mute = keyword_mutes_for_account.build
end
+ def create
+ @keyword_mute = keyword_mutes_for_account.create(keyword_mute_params)
+
+ if @keyword_mute.persisted?
+ redirect_to settings_keyword_mutes_path, notice: I18n.t('generic.changes_saved_msg')
+ else
+ render :new
+ end
+ end
+
+ def update
+ if @keyword_mute.update(keyword_mute_params)
+ redirect_to settings_keyword_mutes_path, notice: I18n.t('generic.changes_saved_msg')
+ else
+ render :new
+ end
+ end
+
+ def destroy
+ if @keyword_mute.destroy
+ redirect_to settings_keyword_mutes_path, notice: I18n.t('generic.changes_saved_msg')
+ else
+ # FIXME
+ redirect_to settings_keyword_mutes_path, notice: "huh that didn't work right"
+ end
+ end
+
+ def destroy_all
+ keyword_mutes_for_account.delete_all
+
+ redirect_to settings_keyword_mutes_path, notice: I18n.t('generic.changes_saved_msg')
+ end
+
private
def set_account
KeywordMute.where(account: @account)
end
+ def load_keyword_mute
+ @keyword_mute = keyword_mutes_for_account.find(params[:id])
+ end
+
+ def keyword_mute_params
+ params.require(:keyword_mute).permit(:keyword, :whole_word)
+ end
+
def paginated_keyword_mutes_for_account
keyword_mutes_for_account.order(:keyword).page params[:page]
end
--- /dev/null
+.fields-group
+ = f.input :keyword
+ = f.check_box :whole_word
+ = f.label :whole_word, t('keyword_mutes.match_whole_word')
+
+.actions
+ - if f.object.persisted?
+ = f.button :button, t('generic.save_changes'), type: :submit
+ = link_to t('keyword_mutes.remove'), settings_keyword_mute_path(f.object), class: 'negative button', method: :delete, data: { confirm: t('admin.accounts.are_you_sure') }
+ - else
+ = f.button :button, t('keyword_mutes.add_keyword'), type: :submit
%tr
%td
= keyword_mute.keyword
+ %td
+ - if keyword_mute.whole_word
+ %i.fa.fa-check
%td
= table_link_to 'edit', t('settings.keyword_mutes.edit'), edit_settings_keyword_mute_path(keyword_mute)
%td
--- /dev/null
+- content_for :page_title do
+ = t('keyword_mutes.edit_keyword')
+
+= simple_form_for @keyword_mute, url: settings_keyword_mute_path(@keyword_mute) do |f|
+ = render 'shared/error_messages', object: @keyword_mute
+ = render 'fields', f: f
%table.table
%thead
%tr
- %th= t('settings.keyword_mutes.keyword')
+ %th= t('keyword_mutes.keyword')
+ %th= t('keyword_mutes.match_whole_word')
%th
%th
%tbody
= render @keyword_mutes
= paginate @keyword_mutes
-= link_to t('settings.keyword_mutes.add_keyword'), new_settings_keyword_mute_path, class: 'button'
+.simple_form
+ = link_to t('keyword_mutes.add_keyword'), new_settings_keyword_mute_path, class: 'button'
+ = link_to t('keyword_mutes.remove_all'), destroy_all_settings_keyword_mutes_path, class: 'button negative', method: :delete, data: { confirm: t('admin.accounts.are_you_sure') }
- content_for :page_title do
- = t('settings.keyword_mutes.add_keyword')
+ = t('keyword_mutes.add_keyword')
= simple_form_for @keyword_mute, url: settings_keyword_mutes_path do |f|
= render 'shared/error_messages', object: @keyword_mute
-
- %p.muted-hint
- Keywords match word boundaries case-insensitively. For example:
- %ul
- %li
- <strong>alice</strong> matches <strong>alice</strong>, <strong>Alice</strong>, and <strong>Alice's</strong>
- %li
- <strong>bob</strong> matches <strong>bob</strong> and <strong>Bob</strong> but not <strong>bobcat</strong>
-
- .fields-group
- = f.input :keyword
-
- .actions
- = f.button :button, t('admin.keyword_mutes.add_keyword'), type: :submit
+ = render 'fields', f: f
contact_information:
email: Business e-mail
username: Contact username
- keyword_mutes:
- edit: Edit
- delete: Delete
- add_keyword: Add keyword
- keyword: Keyword
registrations:
closed_message:
desc_html: Displayed on frontpage when registrations are closed. You can use HTML tags
following: Following list
muting: Muting list
upload: Upload
+ keyword_mutes:
+ add_keyword: Add keyword
+ delete: Delete
+ edit: Edit
+ edit_keyword: Edit keyword
+ keyword: Keyword
+ match_whole_word: Match whole word
+ remove_all: Remove all
landing_strip_html: "<strong>%{name}</strong> is a user on %{link_to_root_path}. You can follow them or interact with them if you have an account anywhere in the fediverse."
landing_strip_signup_html: If you don't, you can <a href="%{sign_up_path}">sign up here</a>.
media_attachments:
namespace :settings do
resource :profile, only: [:show, :update]
- resources :keyword_mutes
+
+ resources :keyword_mutes do
+ collection do
+ delete :destroy_all
+ end
+ end
+
resource :preferences, only: [:show, :update]
resource :notifications, only: [:show, :update]
resource :import, only: [:show, :create]