Sha256: 6bcd754f94dead47c239977b6ed71362151d2b366b95a5e5833e6131235b031b

Contents?: true

Size: 1.5 KB

Versions: 1

Compression:

Stored size: 1.5 KB

Contents

class Lolita::FieldDataController < ApplicationController
  include Lolita::Controllers::AuthenticationHelpers

  before_filter :find_field, :except => [:autocomplete_field]

  def array_polymorphic
    klass = params[:class].camelize.constantize
    authorization_proxy.authorize!(:read,klass)
    data_collection = @field.polymorphic_association_values(:klass => klass)
    @id = params[:id].to_s.to_i
    @collection = [[]]+data_collection
    render_component(*@field.build(:state => :options_for_select, :collection => @collection, :id => @id))
  end

  def autocomplete_field
    klass = params[:field_class].camelize.constantize
    authorization_proxy.authorize!(:read,klass)
    field = klass.lolita.tabs.fields.detect{|field| field.name.to_s == params[:field_name]}
    byebug
    data = if field
      (field.search || field.create_search(true)).run(params[:term],request).map do |record|
        {
          :id => record.id,
          :value => record.send(field.current_text_method(field.association.klass)),
          :name => "#{autocomplete_field_class}[#{params[:field_name].singularize}_ids][]",
          :delete_link => I18n.t("lolita.shared.delete").to_s.downcase
        }
      end
    end
    render :json => data || {}
  end

  private

  def find_field
    @field = params[:field_class].camelize.constantize.lolita.tabs.fields.detect{|field|
      field.name.to_s == params[:name].to_s
    }
  end

  def autocomplete_field_class
    params[:filter] ? 'filter' : params[:field_class].underscore
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
lolita-3.3.5 app/controllers/lolita/field_data_controller.rb~