module ControllerMixins::RendererInstanceMethods

Public Instance Methods

build_url_path_method(opts) click to toggle source
# File lib/controller_mixins/renderer_instance_methods.rb, line 215
def build_url_path_method(opts)
  path = ""

  opts = opts[0] unless opts.at(0).nil?

  path += '/' + opts[:outer_controller].to_s if opts.include?(:outer_controller)
  path += '/' + opts[:outer_id].to_s if opts.include?(:outer_id)
  path += opts.include?(:controller) ? '/' + opts[:controller].to_s : '/' + controller_name
  path += '/' + opts[:id].to_s if opts.include?(:id)
  path += '/' + opts[:action].to_s if opts.include?(:action)

  path
end
clear_filter?() click to toggle source
# File lib/controller_mixins/renderer_instance_methods.rb, line 154
def clear_filter?
  !params.blank? && params["clear"]
end
default_params_for_clear_filter(settings) click to toggle source
# File lib/controller_mixins/renderer_instance_methods.rb, line 166
def default_params_for_clear_filter(settings)
  default_params = settings[:default].dup
  default_params[:order_by] = settings[:default][:order_by] + " " + settings[:default][:order_by_direction] if !settings[:default][:order_by].blank? && !settings[:default][:order_by_direction].blank?
  default_params[:order_by] = settings[:default][:order] if !settings[:default][:order].blank?

  if defined?(ModelMixins::TableBuilderClassMethods::ON_CLEAR_FILTER_CLEAR_CHECKBOXES) && !ModelMixins::TableBuilderClassMethods::ON_CLEAR_FILTER_CLEAR_CHECKBOXES
    default_params[:checkbox_pool] = params["checkbox_pool"]
  end

  default_params
end
default_params_for_show_table(settings) click to toggle source
# File lib/controller_mixins/renderer_instance_methods.rb, line 178
def default_params_for_show_table(settings)
  default_params = settings[:default].dup
  default_params[:order_by] = settings[:default][:order_by] + " " + settings[:default][:order_by_direction] if !settings[:default][:order_by].blank? && !settings[:default][:order_by_direction].blank?
  default_params[:order_by] = settings[:default][:order] if !settings[:default][:order].blank?

  default_params = session["#{settings[:form_id]}_params"] unless session["#{settings[:form_id]}_params"].blank?
  default_params
end
display_method() click to toggle source
# File lib/controller_mixins/renderer_instance_methods.rb, line 158
def display_method
  params["___display_method___"]
end
export_method() click to toggle source
# File lib/controller_mixins/renderer_instance_methods.rb, line 162
def export_method
  params["___export_method___"]
end
fill_settings_with(opts) click to toggle source
# File lib/controller_mixins/renderer_instance_methods.rb, line 199
def fill_settings_with opts
  settings = {}
  settings[:symlink_remote] = true
  unless opts.at(0).nil?
    opts = opts[0]
    settings[:symlink_controller] = opts.include?(:controller) ? opts[:controller] : controller_name
    settings[:symlink_outer_controller] = opts[:outer_controller] if opts.include?(:outer_controller)
    settings[:symlink_outer_id] = opts[:outer_id] if opts.include?(:outer_id)
    settings[:symlink_action] = opts[:action] if opts.include?(:action)
    settings[:symlink_id] = opts[:id] if opts.include?(:id)
  else
    settings[:symlink_controller] = controller_name
  end
  settings
end
is_filtering?(filter_method) click to toggle source
# File lib/controller_mixins/renderer_instance_methods.rb, line 193
def is_filtering?(filter_method)
  action_name == "filter" ||
      (!filter_method.blank? && action_name == filter_method)
end
is_showing_table?(show_table_method) click to toggle source
# File lib/controller_mixins/renderer_instance_methods.rb, line 188
def is_showing_table?(show_table_method)
  action_name == "index" ||
      (!show_table_method.blank? && action_name == show_table_method)
end
redirect_destroy_ok(*opts) click to toggle source

redirect do indexu po uspesnem smazani

# File lib/controller_mixins/renderer_instance_methods.rb, line 239
def redirect_destroy_ok(*opts)
  if request.xhr?
    render :json => {:status => "ok", :message => I18n.t("activerecord.info.messages.deleted"), :settings => fill_settings_with(opts)}, :status => :moved_permanently
  else
    redirect_to build_url_path_method(opts), :status => :moved_permanently
  end
end
redirect_not_found(*opts) click to toggle source

redirect do indexu pokud neni zaznam v db

# File lib/controller_mixins/renderer_instance_methods.rb, line 230
def redirect_not_found(*opts)
  if request.xhr?
    render :json => {:message => I18n.t("activerecord.errors.messages.record_not_found"), :settings => fill_settings_with(opts)}, :status => :moved_permanently
  else
    redirect_to build_url_path_method(opts), :status => :moved_permanently
  end
end
redirect_save_failed(*opts) click to toggle source

redirect po uspesnem save

# File lib/controller_mixins/renderer_instance_methods.rb, line 258
def redirect_save_failed(*opts)
  if request.xhr?
    render :json => {:status => "ok", :message => I18n.t("activerecord.errors.messages.save_failed"), :settings => fill_settings_with(opts)}, :status => :moved_permanently
  else
    redirect_to build_url_path_method(opts), :status => :moved_permanently
  end

end
redirect_save_ok(*opts) click to toggle source

redirect po uspesnem save

# File lib/controller_mixins/renderer_instance_methods.rb, line 248
def redirect_save_ok(*opts)
  if request.xhr?
    render :json => {:status => "ok", :message => I18n.t("activerecord.info.messages.saved"), :settings => fill_settings_with(opts)}, :status => :moved_permanently
  else
    redirect_to build_url_path_method(opts), :status => :moved_permanently
  end

end
render_table(settings, logged_user=nil, template = nil) { || ... } click to toggle source

Nastavi data pro tabulku.

@param [Hash] settings @param [User] logger_user @param [String] template

@return [Hash | renderuje] Hash vraci pro vykresleni tabulky, renderuje pri filtrovani

# File lib/controller_mixins/renderer_instance_methods.rb, line 66
def render_table(settings, logged_user=nil, template = nil, &proc)
  settings[:template] = template unless template.blank?
  data = yield
  class_obj = data.respond_to?(:klass) ? data.klass : data

  filter_method = settings[:filter_method]
  show_table_method = settings[:show_table_method]

  default_params = set_default_params(filter_method, show_table_method, settings)

  case display_method
    when "print"
      # vyjímka pro tisk tabulek
      # printing page, it should be opened in new window
      settings[:display_method] = display_method
      settings = class_obj.prepare_settings(logged_user, data, settings, default_params, nil, 10000)

      render_table_for_printing(settings, show_table_method)
    when "print_by_checkboxes"
      # vyjímka pro tisk tabulek
      # printing page, it should be opened in new window
      settings[:filter_method] = "only_by_checkboxes"
      settings[:display_method] = display_method
      settings = class_obj.prepare_settings(logged_user, data, settings, default_params)

      render_table_for_printing(settings, show_table_method)
    else
      case export_method
        when "csv"
          @settings = class_obj.prepare_settings(logged_user, data, @settings, default_params, nil, 50000)
          generate_and_return_csv(get_data_for_csv_from_settings(@settings),
                                  (@settings.blank? || @settings[:csv].blank? || @settings[:csv][:name].blank?) ? 'export.csv' : @settings[:csv][:name])
        when "csv_by_checkboxes"
          settings[:filter_method] = "only_by_checkboxes"
          @settings = class_obj.prepare_settings(logged_user, data, @settings, default_params)
          generate_and_return_csv(get_data_for_csv_from_settings(@settings),
                                  (@settings.blank? || @settings[:csv].blank? || @settings[:csv][:name].blank?) ? 'export.csv' : @settings[:csv][:name])
        else

          settings = class_obj.prepare_settings(logged_user, data, settings, default_params)

          # Filtrovani se renderuje zde
          if is_filtering?(filter_method)

            if clear_filter? # Tlacitko Smazat filtr
              render_table_on_clear_filter(settings, show_table_method)
            else # Ostatni filtry
              render_tbody_on_filter(settings)
            end

          end
      end
  end

  # Cele vykresleni stranky normalne z metody, ktera toto zavolala
end
render_table_for(logged_user, template = nil) { || ... } click to toggle source
# File lib/controller_mixins/renderer_instance_methods.rb, line 3
def render_table_for(logged_user, template = nil, &proc)
  @settings[:template] = template unless template.blank?
  data = yield
  class_obj = data.respond_to?(:klass) ? data.klass : data
  if action_name == "filter"
    case params["___display_method___"]
      when "print_by_checkboxes"
        # printing page, it should be opened in new window
        @settings = class_obj.prepare_settings(logged_user, data, @settings, default_params)


        render :layout => "print", :action => :index
      else
        case params["___export_method___"]
          when "csv"
            @settings = class_obj.prepare_settings(logged_user, data, @settings, default_params)
          else
            # default print of table
            default_params = params
            if !params.blank? && params["clear"]
              default_params = @settings[:default].dup
              default_params[:order_by] = @settings[:default][:order_by] + " " + @settings[:default][:order_by_direction] if !@settings[:default][:order_by].blank? && !@settings[:default][:order_by_direction].blank?
              default_params[:order_by] = @settings[:default][:order] if !@settings[:default][:order].blank?
            end

            @settings = class_obj.prepare_settings(logged_user, data, @settings, default_params)
            if !params.blank? && params["clear"]
              session["#{@settings[:form_id]}_params"] = ""
              render :layout => false, :action => :index
            else
              @paginate = render_to_string(:partial => "/helpers/build_table_pager", :locals => {:settings => @settings})
              session["#{@settings[:form_id]}_params"] = params
              if @settings[:template].blank?
                # if there is no template a will return json and tbody renders in javascript template
                returned_t_body = @settings.to_json
              else
                # or there is template so i will return template rendered here in ruby
                returned_t_body = render_to_string(:partial => @settings[:template], :locals => {:settings => @settings})
              end

              render :layout => false, :json => {:settings => returned_t_body, :paginate => @paginate}.to_json
            end
        end
    end

  elsif action_name == "index"
    default_params = @settings[:default].dup
    default_params[:order_by] = @settings[:default][:order_by] + " " + @settings[:default][:order_by_direction] if !@settings[:default][:order_by].blank? && !@settings[:default][:order_by_direction].blank?
    default_params[:order_by] = @settings[:default][:order] if !@settings[:default][:order].blank?

    default_params = session["#{@settings[:form_id]}_params"] unless session["#{@settings[:form_id]}_params"].blank?
    @settings = class_obj.prepare_settings(logged_user, data, @settings, default_params)
  end
end
render_table_for_printing(settings, show_table_method) click to toggle source
# File lib/controller_mixins/renderer_instance_methods.rb, line 130
def render_table_for_printing(settings, show_table_method)
  render :layout => "print", :action => (show_table_method.blank? ? :index : show_table_method)
end
render_table_on_clear_filter(settings, show_table_method) click to toggle source
# File lib/controller_mixins/renderer_instance_methods.rb, line 134
def render_table_on_clear_filter(settings, show_table_method)
  session["#{settings[:form_id]}_params"] = ""

  render :layout => false, :action => (show_table_method.blank? ? :index : show_table_method)
end
render_tbody_on_filter(settings) click to toggle source
# File lib/controller_mixins/renderer_instance_methods.rb, line 140
def render_tbody_on_filter(settings)
  paginate = render_to_string(:partial => "/helpers/build_table_pager", :locals => {:settings => settings})
  session["#{settings[:form_id]}_params"] = params
  if settings[:template].blank?
    # if there is no template a will return json and tbody renders in javascript template
    returned_t_body = settings.to_json
  else
    # or there is template so i will return template rendered here in ruby
    returned_t_body = render_to_string(:partial => settings[:template], :locals => {:settings => settings})
  end

  render :layout => false, :json => {:settings => returned_t_body, :paginate => paginate}.to_json
end
set_default_params(filter_method, show_table_method, settings) click to toggle source
# File lib/controller_mixins/renderer_instance_methods.rb, line 123
def set_default_params(filter_method, show_table_method, settings)
  default_params = params
  default_params = default_params_for_clear_filter(settings) if is_filtering?(filter_method) && clear_filter?
  default_params = default_params_for_show_table(settings) if is_showing_table?(show_table_method)
  default_params
end