Module: ControllerMixins::RendererInstanceMethods

Defined in:
lib/controller_mixins/renderer_instance_methods.rb

Instance Method Summary collapse

Instance Method Details

#build_url_path_method(opts) ⇒ Object



97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/controller_mixins/renderer_instance_methods.rb', line 97

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

#fill_settings_with(opts) ⇒ Object



81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/controller_mixins/renderer_instance_methods.rb', line 81

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

#redirect_destroy_ok(*opts) ⇒ Object

redirect do indexu po uspesnem smazani



121
122
123
124
125
126
127
# File 'lib/controller_mixins/renderer_instance_methods.rb', line 121

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) ⇒ Object

redirect do indexu pokud neni zaznam v db



112
113
114
115
116
117
118
# File 'lib/controller_mixins/renderer_instance_methods.rb', line 112

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) ⇒ Object

redirect po uspesnem save



140
141
142
143
144
145
146
147
# File 'lib/controller_mixins/renderer_instance_methods.rb', line 140

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) ⇒ Object

redirect po uspesnem save



130
131
132
133
134
135
136
137
# File 'lib/controller_mixins/renderer_instance_methods.rb', line 130

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, &proc) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/controller_mixins/renderer_instance_methods.rb', line 42

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
  if action_name == "filter"
    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
  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(logged_user, template = nil, &proc) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 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"
    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
  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