Module: ActiveScaffold::Helpers::ViewHelpers
Overview
All extra helpers that should be included in the View. Also a dumping ground for uncategorized helpers.
Constant Summary
collapse
- NESTED_PARAMS =
[:eid, :association, :parent_scaffold]
Instance Method Summary
collapse
-
#action_link_authorized?(link, *args) ⇒ Boolean
-
#action_link_html(link, url, html_options, record) ⇒ Object
-
#action_link_html_options(link, record, options) ⇒ Object
-
#action_link_text(link, options) ⇒ Object
-
#action_link_to_inline_form(link, record) ⇒ Object
setup the action link to inline form.
-
#action_link_url(link, record) ⇒ Object
-
#action_link_url_options(link, record) ⇒ Object
-
#active_scaffold_config ⇒ Object
access to the configuration variable.
-
#active_scaffold_config_for(*args) ⇒ Object
-
#active_scaffold_controller_for(*args) ⇒ Object
-
#active_scaffold_error_messages_for(*params) ⇒ Object
-
#as_main_div_class ⇒ Object
-
#clean_class_name(name) ⇒ Object
-
#clean_column_name(name) ⇒ Object
-
#column_attributes(column, record) ⇒ Object
-
#column_calculation(column) ⇒ Object
-
#column_class(column, column_value, record) ⇒ Object
-
#column_empty?(column_value) ⇒ Boolean
-
#column_heading_class(column, sorting) ⇒ Object
-
#column_link_authorized?(link, column, record, associated) ⇒ Boolean
-
#column_show_add_existing(column) ⇒ Object
-
#column_show_add_new(column, associated, record) ⇒ Object
-
#configure_column_link(link, record, associated, actions = nil) ⇒ Object
-
#controller_path_for_activerecord(klass) ⇒ Object
-
#display_action_link(link, content, record, options) ⇒ Object
-
#display_action_links(action_links, record, options, &block) ⇒ Object
-
#display_message(message) ⇒ Object
-
#form_remote_upload_tag(url_for_options = {}, options = {}) ⇒ Object
-
#format_column_calculation(column, calculation) ⇒ Object
-
#get_action_link_id(link, record = nil, column = nil) ⇒ Object
-
#in_subform?(column, parent_record) ⇒ Boolean
Should this column be displayed in the subform?.
-
#link_to_visibility_toggle(id, options = {}) ⇒ Object
Creates a javascript-based link that toggles the visibility of some element on the page.
-
#list_row_class(record) ⇒ Object
-
#list_row_class_method(record) ⇒ Object
-
#loading_indicator_tag(options) ⇒ Object
a general-use loading indicator (the “stuff is happening, please wait” feedback).
-
#option_tags_for(select_options, options = {}) ⇒ Object
Turns [[label, value]] into <option> tags Takes optional parameter of :include_blank.
-
#override_helper(column, suffix) ⇒ Object
-
#override_helper_name(column, suffix, class_prefix = false) ⇒ Object
the naming convention for overriding with helpers.
-
#query_string_for_action_links(link) ⇒ Object
-
#render_action_link(link, record = nil, options = {}) ⇒ Object
-
#render_column_calculation(column) ⇒ Object
-
#skip_action_link?(link, *args) ⇒ Boolean
-
#template_exists?(template_name, partial = false) ⇒ Boolean
This is the template finder logic, keep it updated with however we find stuff in rails currently this very similar to the logic in ActionBase::Base.render for options file.
-
#url_options_for_nested_link(column, record, link, url_options) ⇒ Object
-
#url_options_for_sti_link(column, record, link, url_options) ⇒ Object
#active_scaffold_human_condition_for, #override_human_condition, #override_human_condition?, #override_human_condition_column
#active_scaffold_search_boolean, #active_scaffold_search_date, #active_scaffold_search_datetime, #active_scaffold_search_for, #active_scaffold_search_multi_select, #active_scaffold_search_null, #active_scaffold_search_options, #active_scaffold_search_range, #active_scaffold_search_range_comparator_options, #active_scaffold_search_range_string?, #active_scaffold_search_select, #active_scaffold_search_text, #active_scaffold_search_time, #field_search_datetime_value, #field_search_params_range_values, #include_null_comparators?, #override_search, #override_search_field, #search_attribute, #search_column_label, #search_label_for, #searched_by?, #visibles_and_hiddens
#active_scaffold_add_existing_input, #active_scaffold_add_existing_label, #active_scaffold_checkbox_list, #active_scaffold_enum_options, #active_scaffold_grouped_options, #active_scaffold_input_boolean, #active_scaffold_input_carrierwave, #active_scaffold_input_checkbox, #active_scaffold_input_dragonfly, #active_scaffold_input_email, #active_scaffold_input_enum, #active_scaffold_input_file_column, #active_scaffold_input_for, #active_scaffold_input_number, #active_scaffold_input_options, #active_scaffold_input_paperclip, #active_scaffold_input_password, #active_scaffold_input_plural_association, #active_scaffold_input_radio, #active_scaffold_input_range, #active_scaffold_input_select, #active_scaffold_input_singular_association, #active_scaffold_input_telephone, #active_scaffold_input_text_options, #active_scaffold_input_textarea, #active_scaffold_input_url, #active_scaffold_input_virtual, #active_scaffold_plural_association_options, #active_scaffold_render_input, #active_scaffold_render_subform_column, #active_scaffold_translate_select_options, #active_scaffold_translated_option, #column_renders_as, #column_scope, #field_attributes, #form_attribute, #form_hidden_attribute, #label_for, #numerical_constraints_for_column, #onsubmit, #override_form_field, #override_form_field_partial, #override_form_field_partial?, #override_input, #override_subform_partial, #override_subform_partial?, #render_column, #subform_partial_for_column, #update_columns_options
#active_scaffold_show_text, #override_show_column_ui, #show_column_override, #show_column_value
#active_scaffold_column_carrierwave, #active_scaffold_column_checkbox, #active_scaffold_column_download_link, #active_scaffold_column_download_link_with_filename, #active_scaffold_column_dragonfly, #active_scaffold_column_fulltext, #active_scaffold_column_marked, #active_scaffold_column_paperclip, #active_scaffold_column_text, #active_scaffold_column_thumbnail, #active_scaffold_inplace_edit, #all_marked?, #cache_association, #clean_column_value, #column_heading_attributes, #column_heading_label, #column_heading_value, #column_override, #format_association_value, #format_column_value, #format_number_value, #format_value, #get_column_method, #get_column_value, #inplace_edit?, #inplace_edit_cloning?, #inplace_edit_control, #inplace_edit_control_css_class, #inplace_edit_data, #mark_column_heading, #override_column_ui, #render_column_heading, #render_list_column, #render_nested_view
#pagination_ajax_link, #pagination_ajax_links
#association_options_count, #association_options_find, #cache_association_options, #options_for_association, #options_for_association_conditions, #options_for_association_count, #sorted_association_options_find
Methods included from IdHelpers
#action_iframe_id, #action_link_id, #active_scaffold_calculations_id, #active_scaffold_column_header_id, #active_scaffold_content_id, #active_scaffold_id, #active_scaffold_messages_id, #active_scaffold_tbody_id, #association_subform_id, #before_header_id, #controller_id, #element_cell_id, #element_form_id, #element_messages_id, #element_row_id, #empty_message_id, #id_from_controller, #loading_indicator_id, #nested_id, #scope_id, #search_input_id, #sub_form_id, #sub_form_list_id, #sub_section_id
Instance Method Details
#action_link_authorized?(link, *args) ⇒ Boolean
103
104
105
106
107
108
109
110
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 103
def action_link_authorized?(link, *args)
security_method = link.security_method_set? || controller.respond_to?(link.security_method, true)
authorized = if security_method
controller.send(link.security_method, *args)
else
args.empty? ? true : args.first.authorized_for?(:crud_type => link.crud_type, :action => link.action)
end
end
|
#action_link_html(link, url, html_options, record) ⇒ Object
375
376
377
378
379
380
381
382
383
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 375
def action_link_html(link, url, html_options, record)
label = html_options.delete(:link)
label ||= link.label
if url.nil?
content_tag(:a, label, html_options)
else
link_to(label, url, html_options)
end
end
|
#action_link_html_options(link, record, options) ⇒ Object
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 325
def action_link_html_options(link, record, options)
link_id = get_action_link_id(link, record)
html_options = link.html_options.merge(:class => [link.html_options[:class], link.action.to_s].compact.join(' '))
html_options[:link] = action_link_text(link, options)
html_options[:method] = link.method if link.method != :get
html_options[:data] = {}
html_options[:data][:confirm] = link.confirm(record.try(:to_label)) if link.confirm?
if link.inline?
html_options[:class] << ' as_action'
html_options[:data][:position] = link.position if link.position
html_options[:data][:action] = link.action
html_options[:data][:cancel_refresh] = true if link.refresh_on_close
html_options[:data][:keep_open] = true if link.keep_open?
end
if link.
html_options[:data][:popup] = true
html_options[:target] = '_blank'
end
html_options[:id] = link_id
html_options[:remote] = true unless link.page? || link.
if link.dhtml_confirm?
unless link.inline?
html_options[:class] << ' as_action'
html_options[:page_link] = 'true'
end
html_options[:dhtml_confirm] = link.dhtml_confirm.value
html_options[:onclick] = link.dhtml_confirm.onclick_function(controller, link_id)
end
html_options
end
|
#action_link_text(link, options) ⇒ Object
320
321
322
323
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 320
def action_link_text(link, options)
text = image_tag(link.image[:name], :size => link.image[:size], :alt => options[:link] || link.label, :title => options[:link] || link.label) if link.image
text || options[:link]
end
|
setup the action link to inline form
177
178
179
180
181
182
183
184
185
186
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 177
def action_link_to_inline_form(link, record)
link = link.clone
associated = record.send(link.column.association.name)
if link.column.polymorphic_association?
link.controller = controller_path_for_activerecord(associated.class)
return link if link.controller.nil?
end
link = configure_column_link(link, record, associated) if link.action.nil?
link
end
|
#action_link_url(link, record) ⇒ Object
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 232
def action_link_url(link, record)
url = (@action_links_urls ||= {})[link.name_to_cache_link_url]
url ||= begin
url_options = action_link_url_options(link, record)
if active_scaffold_config.cache_action_link_urls
url = url_for(url_options)
@action_links_urls[link.name_to_cache_link_url] = url unless link.dynamic_parameters.is_a?(Proc)
url
else
url_for(params_for(url_options))
end
end
url = record ? url.sub('--ID--', record.id.to_s) : url.clone
if link.column.try(:singular_association?)
url = url.sub('--CHILD_ID--', record.send(link.column.association.name).try(:id).to_s)
elsif nested?
url = url.sub('--CHILD_ID--', params[nested.param_name].to_s)
end
if active_scaffold_config.cache_action_link_urls
query_string, non_nested_query_string = query_string_for_action_links(link)
if query_string || (!link.nested_link? && non_nested_query_string)
url << (url.include?('?') ? '&' : '?')
url << query_string if query_string
url << non_nested_query_string if !link.nested_link? && non_nested_query_string
end
end
url
end
|
#action_link_url_options(link, record) ⇒ Object
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 298
def action_link_url_options(link, record)
url_options = {:action => link.action}
url_options[:id] = '--ID--' unless record.nil?
url_options[:controller] = link.controller.to_s if link.controller
url_options.merge! link.parameters if link.parameters
if link.dynamic_parameters.is_a?(Proc)
if record.nil?
url_options.merge! link.dynamic_parameters.call
else
url_options.merge! link.dynamic_parameters.call(record)
end
end
if link.nested_link?
url_options_for_nested_link(link.column, record, link, url_options)
elsif nested?
url_options[nested.param_name] = '--CHILD_ID--'
end
url_options_for_sti_link(link.column, record, link, url_options) unless record.nil? || active_scaffold_config.sti_children.nil?
url_options[:_method] = link.method if !link.confirm? && link.inline? && link.method != :get
url_options
end
|
#active_scaffold_config ⇒ Object
access to the configuration variable
21
22
23
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 21
def active_scaffold_config
controller.class.active_scaffold_config
end
|
#active_scaffold_config_for(*args) ⇒ Object
25
26
27
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 25
def active_scaffold_config_for(*args)
controller.class.active_scaffold_config_for(*args)
end
|
#active_scaffold_controller_for(*args) ⇒ Object
29
30
31
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 29
def active_scaffold_controller_for(*args)
controller.class.active_scaffold_controller_for(*args)
end
|
#active_scaffold_error_messages_for(*params) ⇒ Object
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 541
def active_scaffold_error_messages_for(*params)
options = params..symbolize_keys
options.reverse_merge!(:container_tag => :div, :list_type => :ul)
objects = Array.wrap(options.delete(:object) || params).map do |object|
object = instance_variable_get("@#{object}") unless object.respond_to?(:to_model)
object = convert_to_model(object)
if object.class.respond_to?(:model_name)
options[:object_name] ||= object.class.model_name.human.downcase
end
object
end
objects.compact!
count = objects.inject(0) {|sum, object| sum + object.errors.count }
unless count.zero?
html = {}
[:id, :class].each do |key|
if options.include?(key)
value = options[key]
html[key] = value unless value.blank?
else
html[key] = 'errorExplanation'
end
end
options[:object_name] ||= params.first
= if options.include?(:header_message)
options[:header_message]
else
as_('errors.template.header', :count => count, :model => options[:object_name].to_s.gsub('_', ' '))
end
message = options.include?(:message) ? options[:message] : as_('errors.template.body')
error_messages = objects.sum do |object|
object.errors.full_messages.map do |msg|
options[:list_type] != :br ? content_tag(:li, msg) : msg
end
end
error_messages = if options[:list_type] == :br
error_messages.join('<br/>').html_safe
else
content_tag(options[:list_type], error_messages.join.html_safe)
end
contents = []
contents << content_tag(options[:header_tag] || :h2, ) unless .blank?
contents << content_tag(:p, message) unless message.blank?
contents << error_messages
contents = contents.join.html_safe
options[:container_tag] ? content_tag(options[:container_tag], contents, html) : contents
else
''
end
end
|
#as_main_div_class ⇒ Object
457
458
459
460
461
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 457
def as_main_div_class
classes = "active-scaffold active-scaffold-#{controller_id} #{id_from_controller params[:controller]}-view #{active_scaffold_config.theme}-theme"
classes << " as_touch" if touch_device?
classes
end
|
#clean_class_name(name) ⇒ Object
503
504
505
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 503
def clean_class_name(name)
name.underscore.gsub('/', '_')
end
|
#clean_column_name(name) ⇒ Object
499
500
501
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 499
def clean_column_name(name)
name.to_s.gsub('?', '')
end
|
#column_attributes(column, record) ⇒ Object
426
427
428
429
430
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 426
def column_attributes(column, record)
method = override_helper column, 'column_attributes'
return send(method, record) if method
{}
end
|
#column_calculation(column) ⇒ Object
470
471
472
473
474
475
476
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 470
def column_calculation(column)
unless column.calculate.instance_of? Proc
calculate_query.calculate(column.calculate, column.name)
else
column.calculate.call(@records)
end
end
|
#column_class(column, column_value, record) ⇒ Object
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 432
def column_class(column, column_value, record)
@_column_classes ||= {}
@_column_classes[column.name] ||= begin
classes = "#{column.name}-column "
classes << 'sorted ' if active_scaffold_config.list.user.sorting.sorts_on?(column)
classes << 'numeric ' if column.column and [:decimal, :float, :integer].include?(column.column.type)
classes << column.css_class unless column.css_class.nil? || column.css_class.is_a?(Proc)
end
classes = "#{@_column_classes[column.name]} "
classes << 'empty ' if column_empty? column_value
classes << 'in_place_editor_field ' if inplace_edit?(record, column) or column.list_ui == :marked
if column.css_class.is_a?(Proc)
css_class = column.css_class.call(column_value, record)
classes << css_class unless css_class.nil?
end
classes
end
|
#column_empty?(column_value) ⇒ Boolean
463
464
465
466
467
468
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 463
def column_empty?(column_value)
empty = column_value.nil?
empty ||= column_value != false && column_value.blank?
empty ||= [' ', active_scaffold_config.list.empty_field_text].include? column_value if String === column_value
return empty
end
|
#column_heading_class(column, sorting) ⇒ Object
450
451
452
453
454
455
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 450
def column_heading_class(column, sorting)
classes = "#{column.name}-column_heading "
classes << "sorted #{sorting.direction_of(column).downcase} " if sorting.sorts_on? column
classes << column.css_class unless column.css_class.nil? || column.css_class.is_a?(Proc)
classes
end
|
#column_link_authorized?(link, column, record, associated) ⇒ Boolean
217
218
219
220
221
222
223
224
225
226
227
228
229
230
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 217
def column_link_authorized?(link, column, record, associated)
if column.association
associated_for_authorized = if column.plural_association? || (associated.respond_to?(:blank?) && associated.blank?)
column.association.klass
else
associated
end
authorized = associated_for_authorized.authorized_for?(:crud_type => link.crud_type)
authorized = authorized and record.authorized_for?(:crud_type => :update, :column => column.name) if link.crud_type == :create
authorized
else
action_link_authorized?(link, record)
end
end
|
#column_show_add_existing(column) ⇒ Object
489
490
491
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 489
def column_show_add_existing(column)
(column.allow_add_existing and options_for_association_count(column.association) > 0)
end
|
#column_show_add_new(column, associated, record) ⇒ Object
493
494
495
496
497
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 493
def column_show_add_new(column, associated, record)
value = (column.plural_association? && !column.readonly_association?) || (column.singular_association? and not associated.empty?)
value = false unless column.association.klass.authorized_for?(:crud_type => :create)
value
end
|
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 188
def configure_column_link(link, record, associated, actions = nil)
actions ||= link.column.actions_for_association_links
if column_empty?(associated) if actions.include?(:new)
link.action = 'new'
link.crud_type = :create
link.label ||= as_(:create_new)
end
elsif actions.include?(:edit)
link.action = 'edit'
link.crud_type = :update
elsif actions.include?(:show)
link.action = 'show'
link.crud_type = :read
elsif actions.include?(:list)
link.action = 'index'
link.crud_type = :read
end
unless column_link_authorized?(link, link.column, record, associated)
link.action = nil
if link.crud_type == :update && actions.include?(:show)
link = configure_column_link(link, record, associated, [:show])
end
end
link
end
|
#controller_path_for_activerecord(klass) ⇒ Object
37
38
39
40
41
42
43
44
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 37
def controller_path_for_activerecord(klass)
begin
controller = active_scaffold_controller_for(klass)
controller.controller_path
rescue ActiveScaffold::ControllerNotFound
controller = nil
end
end
|
#display_action_link(link, content, record, options) ⇒ Object
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 140
def display_action_link(link, content, record, options)
if content
html_classes = hover_via_click? ? 'hover_click ' : ''
if options[:level] == 0
html_classes << 'action_group'
group_tag = :div
else
html_classes << 'top' if options[:first_action]
group_tag = :li
end
content = content_tag(group_tag, :class => (html_classes if html_classes.present?), :onclick => ('' if hover_via_click?)) do
content_tag(:div, as_(link.name), :class => link.name.to_s.downcase) << content_tag(:ul, content)
end
else
content = render_action_link(link, record, options)
content = content_tag(:li, content, :class => ('top' if options[:first_action])) unless options[:level] == 0
end
content = content_tag(options[:level_0_tag], content, options[:options_level_0_tag]) if options[:level] == 0 && options[:level_0_tag]
content
end
|
#display_action_links(action_links, record, options, &block) ⇒ Object
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 112
def display_action_links(action_links, record, options, &block)
options[:level_0_tag] ||= nil
options[:options_level_0_tag] ||= nil
options[:level] ||= 0
options[:first_action] = true
output = ActiveSupport::SafeBuffer.new
action_links.each(:reverse => options.delete(:reverse), :groups => true) do |link|
if link.is_a? ActiveScaffold::DataStructures::ActionLinks
unless link.empty?
options[:level] += 1
content = display_action_links(link, record, options, &block)
options[:level] -= 1
if content.present?
output << display_action_link(link, content, record, options)
options[:first_action] = false
end
end
elsif !skip_action_link?(link, *Array(options[:for]))
authorized = action_link_authorized?(link, *Array(options[:for]))
next if !authorized && options[:skip_unauthorized]
output << display_action_link(link, nil, record, options.merge(:authorized => authorized))
options[:first_action] = false
end
end
output
end
|
#display_message(message) ⇒ Object
528
529
530
531
532
533
534
535
536
537
538
539
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 528
def display_message(message)
if (highlights = active_scaffold_config.highlight_messages)
message = highlights.inject(message) do |msg, (phrases, highlighter)|
highlight(msg, phrases, highlighter)
end
end
if (format = active_scaffold_config.timestamped_messages)
format = :short if format == true
message = "#{content_tag :div, l(Time.current, :format => format), :class => 'timestamp'} #{content_tag :div, message, :class => 'message-content'}".html_safe
end
message
end
|
75
76
77
78
79
80
81
82
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 75
def form_remote_upload_tag(url_for_options = {}, options = {})
options[:target] = action_iframe_id(url_for_options)
options[:multipart] ||= true
options[:class] = "#{options[:class]} as_remote_upload".strip
output=""
output << form_tag(url_for_options, options)
(output << "<iframe id='#{action_iframe_id(url_for_options)}' name='#{action_iframe_id(url_for_options)}' style='display:none'></iframe>").html_safe
end
|
485
486
487
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 485
def format_column_calculation(column, calculation)
"#{"#{as_(column.calculate)}: " unless column.calculate.is_a? Proc}#{format_column_value nil, column, calculation}"
end
|
#get_action_link_id(link, record = nil, column = nil) ⇒ Object
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 359
def get_action_link_id(link, record = nil, column = nil)
column ||= link.column
id = record ? record.id.to_s : (nested? ? nested.parent_id : '')
if column && column.plural_association?
id = "#{column.association.name}-#{record.id}"
elsif column && column.singular_association?
if record.try(column.association.name.to_sym).present?
id = "#{column.association.name}-#{record.send(column.association.name).id}-#{record.id}"
else
id = "#{column.association.name}-#{record.id}" unless record.nil?
end
end
action_id = "#{id_from_controller("#{link.controller}-") if params[:parent_controller] || (link.controller && link.controller != controller.controller_path)}#{link.action}"
action_link_id(action_id, id)
end
|
Should this column be displayed in the subform?
63
64
65
66
67
68
69
70
71
72
73
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 63
def in_subform?(column, parent_record)
return true unless column.association
return false if column.polymorphic_association?
return false if column.association.inverse_for?(parent_record.class)
return true
end
|
#link_to_visibility_toggle(id, options = {}) ⇒ Object
Creates a javascript-based link that toggles the visibility of some element on the page. By default, it toggles the visibility of the sibling after the one it’s nested in. You may pass custom javascript logic in options to change that, though. For example, you could say :of => ‘$(“my_div_id”)’. You may also flag whether the other element is visible by default or not, and the initial text will adjust accordingly.
92
93
94
95
96
97
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 92
def link_to_visibility_toggle(id, options = {})
options[:default_visible] = true if options[:default_visible].nil?
options[:hide_label] = as_(:hide)
options[:show_label] = as_(:show)
javascript_tag("ActiveScaffold.create_visibility_toggle('#{id}', #{options.to_json});")
end
|
#list_row_class(record) ⇒ Object
421
422
423
424
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 421
def list_row_class(record)
class_override_helper = list_row_class_method(record)
class_override_helper ? send(class_override_helper, record) : ''
end
|
#list_row_class_method(record) ⇒ Object
415
416
417
418
419
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 415
def list_row_class_method(record)
return @_list_row_class_method if defined? @_list_row_class_method
class_override_helper = :"#{clean_class_name(record.class.name)}_list_row_class"
@_list_row_class_method = (class_override_helper if respond_to?(class_override_helper))
end
|
#loading_indicator_tag(options) ⇒ Object
a general-use loading indicator (the “stuff is happening, please wait” feedback)
85
86
87
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 85
def loading_indicator_tag(options)
image_tag "active_scaffold/indicator.gif", :style => "visibility:hidden;", :id => loading_indicator_id(options), :alt => "loading indicator", :class => "loading-indicator"
end
|
Turns [[label, value]] into <option> tags Takes optional parameter of :include_blank
54
55
56
57
58
59
60
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 54
def option_tags_for(select_options, options = {})
select_options.insert(0,[as_(:_select_),nil]) if options[:include_blank]
select_options.collect do |option|
label, value = option[0], option[1]
value.nil? ? "<option value="">#{label}</option>" : "<option value=\"#{value}\">#{label}</option>"
end
end
|
#override_helper(column, suffix) ⇒ Object
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 512
def override_helper(column, suffix)
@_override_helpers ||= {}
@_override_helpers[suffix] ||= {}
@_override_helpers[suffix][@record.class.name] ||= {}
return @_override_helpers[suffix][@record.class.name][column.name] if @_override_helpers[suffix][@record.class.name].include? column.name
@_override_helpers[suffix][@record.class.name][column.name] = begin
method_with_class = override_helper_name(column, suffix, true)
if respond_to?(method_with_class)
method_with_class
else
method = override_helper_name(column, suffix)
method if respond_to?(method)
end
end
end
|
#override_helper_name(column, suffix, class_prefix = false) ⇒ Object
the naming convention for overriding with helpers
508
509
510
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 508
def override_helper_name(column, suffix, class_prefix = false)
"#{clean_class_name(column.active_record_class.name) + '_' if class_prefix}#{clean_column_name(column.name)}_#{suffix}"
end
|
#query_string_for_action_links(link) ⇒ Object
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 263
def query_string_for_action_links(link)
if defined?(@query_string) && link.parameters.none? { |k, v| @query_string_params.include? k }
return [@query_string, @non_nested_query_string]
end
keep = true
@query_string_params ||= Set.new
query_string_for_all = nil
query_string_options = []
non_nested_query_string_options = []
params_for.except(:controller, :action, :id).each do |key, value|
@query_string_params << key
if link.parameters.include? key
keep = false
next
end
qs = "#{key}=#{value}"
if NESTED_PARAMS.include?(key) || conditions_from_params.include?(key) || (nested? && nested.param_name == key)
non_nested_query_string_options << qs
else
query_string_options << qs
end
end
query_string = URI.escape(query_string_options.join('&')) if query_string_options.present?
if non_nested_query_string_options.present?
non_nested_query_string = "#{'&' if query_string}#{URI.escape(non_nested_query_string_options.join('&'))}"
end
if keep
@query_string = query_string
@non_nested_query_string = non_nested_query_string
end
[query_string, non_nested_query_string]
end
|
#render_action_link(link, record = nil, options = {}) ⇒ Object
161
162
163
164
165
166
167
168
169
170
171
172
173
174
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 161
def render_action_link(link, record = nil, options = {})
if link.action.nil? || link.column.try(:polymorphic_association?)
link = action_link_to_inline_form(link, record)
options[:authorized] = false if link.action.nil? || link.controller.nil?
options.delete :link if link.crud_type == :create
end
if link.action.nil? || (link.type == :member && options.has_key?(:authorized) && !options[:authorized])
action_link_html(link, nil, {:link => action_link_text(link, options), :class => "disabled #{link.action}#{" #{link.html_options[:class]}" unless link.html_options[:class].blank?}"}, record)
else
url = action_link_url(link, record)
html_options = action_link_html_options(link, record, options)
action_link_html(link, url, html_options, record)
end
end
|
#render_column_calculation(column) ⇒ Object
478
479
480
481
482
483
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 478
def render_column_calculation(column)
calculation = column_calculation(column)
override_formatter = "render_#{column.name}_#{column.calculate.is_a?(Proc) ? :calculate : column.calculate}"
calculation = send(override_formatter, calculation) if respond_to? override_formatter
format_column_calculation(column, calculation)
end
|
#skip_action_link?(link, *args) ⇒ Boolean
99
100
101
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 99
def skip_action_link?(link, *args)
!link.ignore_method.nil? && controller.respond_to?(link.ignore_method, true) && controller.send(link.ignore_method, *args)
end
|
#template_exists?(template_name, partial = false) ⇒ Boolean
This is the template finder logic, keep it updated with however we find stuff in rails currently this very similar to the logic in ActionBase::Base.render for options file
48
49
50
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 48
def template_exists?(template_name, partial = false)
lookup_context.exists? template_name, '', partial
end
|
#url_options_for_nested_link(column, record, link, url_options) ⇒ Object
385
386
387
388
389
390
391
392
393
394
395
396
397
398
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 385
def url_options_for_nested_link(column, record, link, url_options)
if column && column.association
url_options[:parent_scaffold] = controller_path
url_options[column.association.active_record.name.foreign_key.to_sym] = url_options.delete(:id)
if column.singular_association? && url_options[:action].to_sym != :index
url_options[:id] = '--CHILD_ID--'
else
url_options[:id] = nil
end
elsif link.parameters && link.parameters[:named_scope]
url_options[:parent_scaffold] = controller_path
url_options[active_scaffold_config.model.name.foreign_key.to_sym] = url_options.delete(:id)
end
end
|
#url_options_for_sti_link(column, record, link, url_options) ⇒ Object
400
401
402
403
404
405
406
407
408
409
410
411
412
413
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 400
def url_options_for_sti_link(column, record, link, url_options)
if link.column.nil?
sti_controller_path = controller_path_for_activerecord(record.class)
if sti_controller_path
url_options[:controller] = sti_controller_path
url_options[:parent_sti] = controller_path
end
end
end
|