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
377
378
379
380
381
382
383
384
385
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 377
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
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
358
359
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 330
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
html_options[:target] = '_blank' if link.
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
325
326
327
328
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 325
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
262
263
264
265
266
|
# 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)
model = active_scaffold_config.model
is_sti_record = record && model.columns_hash.include?(model.inheritance_column) &&
record[model.inheritance_column].present?
unless link.dynamic_parameters.is_a?(Proc) || is_sti_record
@action_links_urls[link.name_to_cache_link_url] = url
end
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
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 303
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
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
600
601
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 543
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
459
460
461
462
463
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 459
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
505
506
507
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 505
def clean_class_name(name)
name.underscore.gsub('/', '_')
end
|
#clean_column_name(name) ⇒ Object
501
502
503
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 501
def clean_column_name(name)
name.to_s.gsub('?', '')
end
|
#column_attributes(column, record) ⇒ Object
428
429
430
431
432
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 428
def column_attributes(column, record)
method = override_helper column, 'column_attributes'
return send(method, record) if method
{}
end
|
#column_calculation(column) ⇒ Object
472
473
474
475
476
477
478
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 472
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
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 434
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
465
466
467
468
469
470
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 465
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
452
453
454
455
456
457
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 452
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
491
492
493
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 491
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
495
496
497
498
499
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 495
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
530
531
532
533
534
535
536
537
538
539
540
541
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 530
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
|
487
488
489
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 487
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
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 361
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
423
424
425
426
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 423
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
417
418
419
420
421
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 417
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
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 514
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
510
511
512
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 510
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
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
297
298
299
300
301
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 268
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
480
481
482
483
484
485
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 480
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
387
388
389
390
391
392
393
394
395
396
397
398
399
400
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 387
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
402
403
404
405
406
407
408
409
410
411
412
413
414
415
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 402
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
|