Sha256: df9778354cfacb6d4709c5f9d1d4746f84f633ab69b5c1cbf5ae1edeaa2b22e1

Contents?: true

Size: 1.06 KB

Versions: 26

Compression:

Stored size: 1.06 KB

Contents

class Backend::TagboxController < Backend::BaseController
  def index
    tags = Tag.by_locale(params[:locale]).order(:name).pluck(:name).map do |name|
      { label: name, value: name }
    end

    render json: tags
  end

  def create
    create_tag if tag_creatable?
    render json: { tag: params[:tag], valid: item_tagged?(find_tag) }
  end

  def destroy
    tag = find_tag
    find_model.tagged_items.where(tag_id: tag.id).destroy_all if tag.present?
    render json: { success: true }
  end

  private

  def find_model
    @model ||= params[:taggable_type].to_s.constantize.find params[:taggable_id]
  end

  def find_tag
    Tag.find_by locale: params[:locale], name: params[:tag]
  end

  def tag_creatable?
    !Tag.exists?(tag_params) && Udongo.config.tags.allow_new?
  end

  def create_tag
    Tag.create! tag_params
  end

  def tag_params
    {
      locale: params[:locale],
      name: params[:tag],
      slug: params[:tag].parameterize
    }
  end

  def item_tagged?(tag)
    return false unless tag
    find_model.tagged_items.create tag: tag
    true
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
udongo-7.9.0 app/controllers/backend/tagbox_controller.rb
udongo-7.8.1 app/controllers/backend/tagbox_controller.rb
udongo-7.8.0 app/controllers/backend/tagbox_controller.rb
udongo-7.7.2 app/controllers/backend/tagbox_controller.rb
udongo-7.7.1 app/controllers/backend/tagbox_controller.rb
udongo-7.7.0 app/controllers/backend/tagbox_controller.rb
udongo-7.6.2 app/controllers/backend/tagbox_controller.rb
udongo-7.6.1 app/controllers/backend/tagbox_controller.rb
udongo-7.6.0 app/controllers/backend/tagbox_controller.rb
udongo-7.5.1 app/controllers/backend/tagbox_controller.rb
udongo-7.5.0 app/controllers/backend/tagbox_controller.rb
udongo-7.4.2 app/controllers/backend/tagbox_controller.rb
udongo-7.4.1 app/controllers/backend/tagbox_controller.rb
udongo-7.4.0 app/controllers/backend/tagbox_controller.rb
udongo-7.3.5 app/controllers/backend/tagbox_controller.rb
udongo-7.3.4 app/controllers/backend/tagbox_controller.rb
udongo-7.3.3 app/controllers/backend/tagbox_controller.rb
udongo-7.3.2 app/controllers/backend/tagbox_controller.rb
udongo-7.3.1 app/controllers/backend/tagbox_controller.rb
udongo-7.2.1 app/controllers/backend/tagbox_controller.rb