forked from treehouse/mastodon
Fill in create, edit, update, and destroy for keyword mutes interface.
Also add a destroy-all action, which can be useful if you're flushing an old list entirely to start a new one.signup-info-prompt
parent
4a64181461
commit
cd04e3df58
|
@ -5,6 +5,7 @@ class Settings::KeywordMutesController < ApplicationController
|
||||||
|
|
||||||
before_action :authenticate_user!
|
before_action :authenticate_user!
|
||||||
before_action :set_account
|
before_action :set_account
|
||||||
|
before_action :load_keyword_mute, only: [:edit, :update, :destroy]
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@keyword_mutes = paginated_keyword_mutes_for_account
|
@keyword_mutes = paginated_keyword_mutes_for_account
|
||||||
|
@ -14,6 +15,39 @@ class Settings::KeywordMutesController < ApplicationController
|
||||||
@keyword_mute = keyword_mutes_for_account.build
|
@keyword_mute = keyword_mutes_for_account.build
|
||||||
end
|
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
|
private
|
||||||
|
|
||||||
def set_account
|
def set_account
|
||||||
|
@ -24,6 +58,14 @@ class Settings::KeywordMutesController < ApplicationController
|
||||||
KeywordMute.where(account: @account)
|
KeywordMute.where(account: @account)
|
||||||
end
|
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
|
def paginated_keyword_mutes_for_account
|
||||||
keyword_mutes_for_account.order(:keyword).page params[:page]
|
keyword_mutes_for_account.order(:keyword).page params[:page]
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
.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
|
|
@ -1,6 +1,9 @@
|
||||||
%tr
|
%tr
|
||||||
%td
|
%td
|
||||||
= keyword_mute.keyword
|
= keyword_mute.keyword
|
||||||
|
%td
|
||||||
|
- if keyword_mute.whole_word
|
||||||
|
%i.fa.fa-check
|
||||||
%td
|
%td
|
||||||
= table_link_to 'edit', t('settings.keyword_mutes.edit'), edit_settings_keyword_mute_path(keyword_mute)
|
= table_link_to 'edit', t('settings.keyword_mutes.edit'), edit_settings_keyword_mute_path(keyword_mute)
|
||||||
%td
|
%td
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
- 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
|
|
@ -5,11 +5,14 @@
|
||||||
%table.table
|
%table.table
|
||||||
%thead
|
%thead
|
||||||
%tr
|
%tr
|
||||||
%th= t('settings.keyword_mutes.keyword')
|
%th= t('keyword_mutes.keyword')
|
||||||
|
%th= t('keyword_mutes.match_whole_word')
|
||||||
%th
|
%th
|
||||||
%th
|
%th
|
||||||
%tbody
|
%tbody
|
||||||
= render @keyword_mutes
|
= render @keyword_mutes
|
||||||
|
|
||||||
= paginate @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') }
|
||||||
|
|
|
@ -1,19 +1,6 @@
|
||||||
- content_for :page_title do
|
- 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|
|
= simple_form_for @keyword_mute, url: settings_keyword_mutes_path do |f|
|
||||||
= render 'shared/error_messages', object: @keyword_mute
|
= render 'shared/error_messages', object: @keyword_mute
|
||||||
|
= render 'fields', f: f
|
||||||
%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
|
|
||||||
|
|
|
@ -215,11 +215,6 @@ en:
|
||||||
contact_information:
|
contact_information:
|
||||||
email: Business e-mail
|
email: Business e-mail
|
||||||
username: Contact username
|
username: Contact username
|
||||||
keyword_mutes:
|
|
||||||
edit: Edit
|
|
||||||
delete: Delete
|
|
||||||
add_keyword: Add keyword
|
|
||||||
keyword: Keyword
|
|
||||||
registrations:
|
registrations:
|
||||||
closed_message:
|
closed_message:
|
||||||
desc_html: Displayed on frontpage when registrations are closed. You can use HTML tags
|
desc_html: Displayed on frontpage when registrations are closed. You can use HTML tags
|
||||||
|
@ -378,6 +373,14 @@ en:
|
||||||
following: Following list
|
following: Following list
|
||||||
muting: Muting list
|
muting: Muting list
|
||||||
upload: Upload
|
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_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>.
|
landing_strip_signup_html: If you don't, you can <a href="%{sign_up_path}">sign up here</a>.
|
||||||
media_attachments:
|
media_attachments:
|
||||||
|
|
|
@ -66,7 +66,13 @@ Rails.application.routes.draw do
|
||||||
|
|
||||||
namespace :settings do
|
namespace :settings do
|
||||||
resource :profile, only: [:show, :update]
|
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 :preferences, only: [:show, :update]
|
||||||
resource :notifications, only: [:show, :update]
|
resource :notifications, only: [:show, :update]
|
||||||
resource :import, only: [:show, :create]
|
resource :import, only: [:show, :create]
|
||||||
|
|
Loading…
Reference in New Issue