Feature: Unlisted custom emojis (#5485)
This commit is contained in:
		@@ -22,6 +22,14 @@ module Admin
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def update
 | 
			
		||||
      if @custom_emoji.update(resource_params)
 | 
			
		||||
        redirect_to admin_custom_emojis_path, notice: I18n.t('admin.custom_emojis.updated_msg')
 | 
			
		||||
      else
 | 
			
		||||
        redirect_to admin_custom_emojis_path, notice: I18n.t('admin.custom_emojis.update_failed_msg')
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def destroy
 | 
			
		||||
      @custom_emoji.destroy
 | 
			
		||||
      redirect_to admin_custom_emojis_path, notice: I18n.t('admin.custom_emojis.destroyed_msg')
 | 
			
		||||
@@ -56,7 +64,7 @@ module Admin
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def resource_params
 | 
			
		||||
      params.require(:custom_emoji).permit(:shortcode, :image)
 | 
			
		||||
      params.require(:custom_emoji).permit(:shortcode, :image, :visible_in_picker)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def filtered_custom_emojis
 | 
			
		||||
 
 | 
			
		||||
@@ -46,7 +46,7 @@ const getFrequentlyUsedEmojis = createSelector([
 | 
			
		||||
 | 
			
		||||
const getCustomEmojis = createSelector([
 | 
			
		||||
  state => state.get('custom_emojis'),
 | 
			
		||||
], emojis => emojis.sort((a, b) => {
 | 
			
		||||
], emojis => emojis.filter(e => e.get('visible_in_picker')).sort((a, b) => {
 | 
			
		||||
  const aShort = a.get('shortcode').toLowerCase();
 | 
			
		||||
  const bShort = b.get('shortcode').toLowerCase();
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -15,6 +15,7 @@
 | 
			
		||||
#  disabled           :boolean          default(FALSE), not null
 | 
			
		||||
#  uri                :string
 | 
			
		||||
#  image_remote_url   :string
 | 
			
		||||
#  visible_in_picker  :boolean          default(TRUE), not null
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
class CustomEmoji < ApplicationRecord
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
class REST::CustomEmojiSerializer < ActiveModel::Serializer
 | 
			
		||||
  include RoutingHelper
 | 
			
		||||
 | 
			
		||||
  attributes :shortcode, :url, :static_url
 | 
			
		||||
  attributes :shortcode, :url, :static_url, :visible_in_picker
 | 
			
		||||
 | 
			
		||||
  def url
 | 
			
		||||
    full_asset_url(object.image.url)
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,12 @@
 | 
			
		||||
    - else
 | 
			
		||||
      = custom_emoji.domain
 | 
			
		||||
  %td
 | 
			
		||||
    - unless custom_emoji.local?
 | 
			
		||||
    - if custom_emoji.local?
 | 
			
		||||
      - if custom_emoji.visible_in_picker
 | 
			
		||||
        = table_link_to 'eye', t('admin.custom_emojis.listed'), admin_custom_emoji_path(custom_emoji, custom_emoji: { visible_in_picker: false }), method: :patch
 | 
			
		||||
      - else
 | 
			
		||||
        = table_link_to 'eye-slash', t('admin.custom_emojis.unlisted'), admin_custom_emoji_path(custom_emoji, custom_emoji: { visible_in_picker: true }), method: :patch
 | 
			
		||||
    - else
 | 
			
		||||
      = table_link_to 'copy', t('admin.custom_emojis.copy'), copy_admin_custom_emoji_path(custom_emoji, page: params[:page]), method: :post
 | 
			
		||||
  %td
 | 
			
		||||
    - if custom_emoji.disabled?
 | 
			
		||||
 
 | 
			
		||||
@@ -130,11 +130,15 @@ en:
 | 
			
		||||
      enable: Enable
 | 
			
		||||
      enabled_msg: Successfully enabled that emoji
 | 
			
		||||
      image_hint: PNG up to 50KB
 | 
			
		||||
      listed: Listed
 | 
			
		||||
      new:
 | 
			
		||||
        title: Add new custom emoji
 | 
			
		||||
      shortcode: Shortcode
 | 
			
		||||
      shortcode_hint: At least 2 characters, only alphanumeric characters and underscores
 | 
			
		||||
      title: Custom emojis
 | 
			
		||||
      unlisted: Unlisted
 | 
			
		||||
      update_failed_msg: Could not update that emoji
 | 
			
		||||
      updated_msg: Emoji successfully updated!
 | 
			
		||||
      upload: Upload
 | 
			
		||||
    domain_blocks:
 | 
			
		||||
      add_new: Add new
 | 
			
		||||
 
 | 
			
		||||
@@ -140,7 +140,7 @@ Rails.application.routes.draw do
 | 
			
		||||
      resource :two_factor_authentication, only: [:destroy]
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    resources :custom_emojis, only: [:index, :new, :create, :destroy] do
 | 
			
		||||
    resources :custom_emojis, only: [:index, :new, :create, :update, :destroy] do
 | 
			
		||||
      member do
 | 
			
		||||
        post :copy
 | 
			
		||||
        post :enable
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,7 @@
 | 
			
		||||
class AddVisibleInPickerToCustomEmoji < ActiveRecord::Migration[5.1]
 | 
			
		||||
  def change
 | 
			
		||||
    safety_assured {
 | 
			
		||||
      add_column :custom_emojis, :visible_in_picker, :boolean, default: true, null: false
 | 
			
		||||
    }
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
@@ -10,7 +10,7 @@
 | 
			
		||||
#
 | 
			
		||||
# It's strongly recommended that you check this file into your version control system.
 | 
			
		||||
 | 
			
		||||
ActiveRecord::Schema.define(version: 20171010025614) do
 | 
			
		||||
ActiveRecord::Schema.define(version: 20171020084748) do
 | 
			
		||||
 | 
			
		||||
  # These are extensions that must be enabled in order to support this database
 | 
			
		||||
  enable_extension "plpgsql"
 | 
			
		||||
@@ -111,6 +111,7 @@ ActiveRecord::Schema.define(version: 20171010025614) do
 | 
			
		||||
    t.boolean "disabled", default: false, null: false
 | 
			
		||||
    t.string "uri"
 | 
			
		||||
    t.string "image_remote_url"
 | 
			
		||||
    t.boolean "visible_in_picker", default: true, null: false
 | 
			
		||||
    t.index ["shortcode", "domain"], name: "index_custom_emojis_on_shortcode_and_domain", unique: true
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user