Fix account tags not being saved correctly (#11507)
* Fix account tags not being saved correctly Regression from f371b32 Fix Tag#discoverable not returning tags where listable is nil instead of true Add notice when saving hashtags in admin UI Change public hashtag and directory pages to return 404 for forbidden tags * Remove unused locale string
This commit is contained in:
		
							parent
							
								
									5e35aa8280
								
							
						
					
					
						commit
						ac33f1aedd
					
				@ -17,7 +17,7 @@ module Admin
 | 
			
		||||
      authorize @tag, :update?
 | 
			
		||||
 | 
			
		||||
      if @tag.update(tag_params.merge(reviewed_at: Time.now.utc))
 | 
			
		||||
        redirect_to admin_tag_path(@tag.id)
 | 
			
		||||
        redirect_to admin_tag_path(@tag.id), notice: I18n.t('admin.tags.updated_msg')
 | 
			
		||||
      else
 | 
			
		||||
        render :show
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
@ -25,7 +25,7 @@ class DirectoriesController < ApplicationController
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def set_tag
 | 
			
		||||
    @tag = Tag.discoverable.find_by!(name: params[:id].downcase)
 | 
			
		||||
    @tag = Tag.discoverable.find_normalized!(params[:id])
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def set_tags
 | 
			
		||||
 | 
			
		||||
@ -47,7 +47,7 @@ class TagsController < ApplicationController
 | 
			
		||||
  private
 | 
			
		||||
 | 
			
		||||
  def set_tag
 | 
			
		||||
    @tag = Tag.find_normalized!(params[:id])
 | 
			
		||||
    @tag = Tag.usable.find_normalized!(params[:id])
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def set_body_classes
 | 
			
		||||
 | 
			
		||||
@ -227,17 +227,7 @@ class Account < ApplicationRecord
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def tags_as_strings=(tag_names)
 | 
			
		||||
    tag_names.map! { |name| name.mb_chars.downcase.to_s }
 | 
			
		||||
    tag_names.uniq!
 | 
			
		||||
 | 
			
		||||
    # Existing hashtags
 | 
			
		||||
    hashtags_map = Tag.where(name: tag_names).each_with_object({}) { |tag, h| h[tag.name] = tag }
 | 
			
		||||
 | 
			
		||||
    # Initialize not yet existing hashtags
 | 
			
		||||
    tag_names.each do |name|
 | 
			
		||||
      next if hashtags_map.key?(name)
 | 
			
		||||
      hashtags_map[name] = Tag.new(name: name)
 | 
			
		||||
    end
 | 
			
		||||
    hashtags_map = Tag.find_or_create_by_names(tag_names).each_with_object({}) { |tag, h| h[tag.name] = tag }
 | 
			
		||||
 | 
			
		||||
    # Remove hashtags that are to be deleted
 | 
			
		||||
    tags.each do |tag|
 | 
			
		||||
 | 
			
		||||
@ -31,7 +31,8 @@ class Tag < ApplicationRecord
 | 
			
		||||
 | 
			
		||||
  scope :reviewed, -> { where.not(reviewed_at: nil) }
 | 
			
		||||
  scope :pending_review, -> { where(reviewed_at: nil).where.not(requested_review_at: nil) }
 | 
			
		||||
  scope :discoverable, -> { where.not(listable: false).joins(:account_tag_stat).where(AccountTagStat.arel_table[:accounts_count].gt(0)).order(Arel.sql('account_tag_stats.accounts_count desc')) }
 | 
			
		||||
  scope :usable, -> { where(usable: [true, nil]) }
 | 
			
		||||
  scope :discoverable, -> { where(listable: [true, nil]).joins(:account_tag_stat).where(AccountTagStat.arel_table[:accounts_count].gt(0)).order(Arel.sql('account_tag_stats.accounts_count desc')) }
 | 
			
		||||
  scope :most_used, ->(account) { joins(:statuses).where(statuses: { account: account }).group(:id).order(Arel.sql('count(*) desc')) }
 | 
			
		||||
 | 
			
		||||
  delegate :accounts_count,
 | 
			
		||||
 | 
			
		||||
@ -496,6 +496,7 @@ en:
 | 
			
		||||
      title: Hashtags
 | 
			
		||||
      trending_right_now: Trending right now
 | 
			
		||||
      unique_uses_today: "%{count} posting today"
 | 
			
		||||
      updated_msg: Hashtag settings updated successfully
 | 
			
		||||
    title: Administration
 | 
			
		||||
    warning_presets:
 | 
			
		||||
      add_new: Add new
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user