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.
This commit is contained in:
		
							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
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										11
									
								
								app/views/settings/keyword_mutes/_fields.html.haml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								app/views/settings/keyword_mutes/_fields.html.haml
									
									
									
									
									
										Normal file
									
								
							@ -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
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										6
									
								
								app/views/settings/keyword_mutes/edit.html.haml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								app/views/settings/keyword_mutes/edit.html.haml
									
									
									
									
									
										Normal file
									
								
							@ -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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user