active_scaffold 3.2.20 → 3.3.0.rc

Sign up to get free protection for your applications and to get access to all the features.
Files changed (152) hide show
  1. data/CHANGELOG +19 -13
  2. data/README +66 -0
  3. data/app/assets/javascripts/jquery/active_scaffold.js +156 -113
  4. data/app/assets/javascripts/jquery/active_scaffold_chosen.js +11 -0
  5. data/app/assets/javascripts/jquery/date_picker_bridge.js.erb +0 -1
  6. data/app/assets/javascripts/jquery/jquery.editinplace.js +132 -128
  7. data/app/assets/javascripts/prototype/active_scaffold.js +68 -25
  8. data/{frontends/default/views/_horizontal_subform_footer.html.erb → app/assets/javascripts/prototype/active_scaffold_chosen.js} +0 -0
  9. data/app/assets/stylesheets/active_scaffold_colors.css.scss +8 -1
  10. data/app/assets/stylesheets/active_scaffold_layout.css +14 -8
  11. data/{frontends/default/views → app/views/active_scaffold_overrides}/_add_existing_form.html.erb +0 -0
  12. data/{frontends/default/views → app/views/active_scaffold_overrides}/_base_form.html.erb +0 -0
  13. data/{frontends/default/views → app/views/active_scaffold_overrides}/_create_form.html.erb +0 -0
  14. data/{frontends/default/views → app/views/active_scaffold_overrides}/_create_form_on_list.html.erb +0 -0
  15. data/{frontends/default/views → app/views/active_scaffold_overrides}/_field_search.html.erb +0 -0
  16. data/{frontends/default/views → app/views/active_scaffold_overrides}/_form.html.erb +0 -0
  17. data/{frontends/default/views → app/views/active_scaffold_overrides}/_form_association.html.erb +8 -3
  18. data/{frontends/default/views → app/views/active_scaffold_overrides}/_form_association_footer.html.erb +5 -4
  19. data/app/views/active_scaffold_overrides/_form_association_record.html.erb +85 -0
  20. data/app/views/active_scaffold_overrides/_form_attribute.html.erb +23 -0
  21. data/{frontends/default/views → app/views/active_scaffold_overrides}/_form_hidden_attribute.html.erb +0 -0
  22. data/{frontends/default/views → app/views/active_scaffold_overrides}/_form_messages.html.erb +0 -0
  23. data/app/views/active_scaffold_overrides/_horizontal_subform.html.erb +12 -0
  24. data/app/views/active_scaffold_overrides/_horizontal_subform_footer.html.erb +0 -0
  25. data/{frontends/default/views → app/views/active_scaffold_overrides}/_horizontal_subform_header.html.erb +3 -2
  26. data/{frontends/default/views → app/views/active_scaffold_overrides}/_human_conditions.html.erb +0 -0
  27. data/app/views/active_scaffold_overrides/_list.html.erb +35 -0
  28. data/{frontends/default/views → app/views/active_scaffold_overrides}/_list_calculations.html.erb +0 -0
  29. data/{frontends/default/views → app/views/active_scaffold_overrides}/_list_column_headings.html.erb +0 -0
  30. data/app/views/active_scaffold_overrides/_list_header.html.erb +8 -0
  31. data/{frontends/default/views → app/views/active_scaffold_overrides}/_list_inline_adapter.html.erb +0 -0
  32. data/{frontends/default/views → app/views/active_scaffold_overrides}/_list_messages.html.erb +4 -4
  33. data/{frontends/default/views → app/views/active_scaffold_overrides}/_list_pagination.html.erb +0 -0
  34. data/{frontends/default/views → app/views/active_scaffold_overrides}/_list_pagination_links.html.erb +0 -0
  35. data/app/views/active_scaffold_overrides/_list_record.html.erb +30 -0
  36. data/{frontends/default/views → app/views/active_scaffold_overrides}/_list_with_header.html.erb +0 -0
  37. data/{frontends/default/views → app/views/active_scaffold_overrides}/_messages.html.erb +0 -0
  38. data/app/views/active_scaffold_overrides/_refresh_list.js.erb +1 -0
  39. data/{frontends/default/views → app/views/active_scaffold_overrides}/_render_field.js.erb +9 -1
  40. data/{frontends/default/views → app/views/active_scaffold_overrides}/_row.html.erb +0 -0
  41. data/{frontends/default/views → app/views/active_scaffold_overrides}/_search.html.erb +0 -0
  42. data/{frontends/default/views → app/views/active_scaffold_overrides}/_search_attribute.html.erb +0 -0
  43. data/{frontends/default/views → app/views/active_scaffold_overrides}/_show.html.erb +0 -0
  44. data/{frontends/default/views → app/views/active_scaffold_overrides}/_show_columns.html.erb +0 -0
  45. data/app/views/active_scaffold_overrides/_update_actions.html.erb +9 -0
  46. data/{frontends/default/views → app/views/active_scaffold_overrides}/_update_calculations.js.erb +0 -0
  47. data/app/views/active_scaffold_overrides/_update_column.js.erb +16 -0
  48. data/{frontends/default/views → app/views/active_scaffold_overrides}/_update_form.html.erb +0 -0
  49. data/{frontends/default/views → app/views/active_scaffold_overrides}/_update_messages.js.erb +0 -0
  50. data/app/views/active_scaffold_overrides/_vertical_subform.html.erb +8 -0
  51. data/{frontends/default/views → app/views/active_scaffold_overrides}/action_confirmation.html.erb +0 -0
  52. data/{frontends/default/views → app/views/active_scaffold_overrides}/add_existing.js.erb +0 -0
  53. data/{frontends/default/views → app/views/active_scaffold_overrides}/add_existing_form.html.erb +0 -0
  54. data/{frontends/default/views → app/views/active_scaffold_overrides}/create.html.erb +0 -0
  55. data/{frontends/default/views → app/views/active_scaffold_overrides}/delete.html.erb +0 -0
  56. data/{frontends/default/views → app/views/active_scaffold_overrides}/destroy.js.erb +0 -0
  57. data/{frontends/default/views → app/views/active_scaffold_overrides}/edit_associated.js.erb +1 -1
  58. data/{frontends/default/views → app/views/active_scaffold_overrides}/field_search.html.erb +0 -0
  59. data/{frontends/default/views → app/views/active_scaffold_overrides}/form_messages.js.erb +0 -0
  60. data/{frontends/default/views → app/views/active_scaffold_overrides}/list.html.erb +0 -0
  61. data/{frontends/default/views → app/views/active_scaffold_overrides}/on_action_update.js.erb +3 -3
  62. data/{frontends/default/views → app/views/active_scaffold_overrides}/on_create.js.erb +1 -1
  63. data/{frontends/default/views → app/views/active_scaffold_overrides}/on_mark.js.erb +0 -0
  64. data/{frontends/default/views → app/views/active_scaffold_overrides}/on_update.js.erb +4 -4
  65. data/{frontends/default/views → app/views/active_scaffold_overrides}/render_field.js.erb +0 -0
  66. data/{frontends/default/views → app/views/active_scaffold_overrides}/row.js.erb +1 -1
  67. data/{frontends/default/views → app/views/active_scaffold_overrides}/search.html.erb +0 -0
  68. data/{frontends/default/views → app/views/active_scaffold_overrides}/show.html.erb +0 -0
  69. data/{frontends/default/views → app/views/active_scaffold_overrides}/update.html.erb +1 -1
  70. data/app/views/active_scaffold_overrides/update_column.js.erb +26 -0
  71. data/{frontends/default/views → app/views/active_scaffold_overrides}/update_row.js.erb +0 -0
  72. data/config/locales/de.yml +1 -0
  73. data/config/locales/en.yml +1 -0
  74. data/config/locales/es.yml +1 -0
  75. data/config/locales/fr.yml +1 -0
  76. data/config/locales/hu.yml +1 -0
  77. data/config/locales/ja.yml +1 -0
  78. data/config/locales/ru.yml +1 -0
  79. data/lib/active_scaffold.rb +14 -26
  80. data/lib/active_scaffold/actions/core.rb +14 -11
  81. data/lib/active_scaffold/actions/create.rb +3 -3
  82. data/lib/active_scaffold/actions/delete.rb +3 -0
  83. data/lib/active_scaffold/actions/list.rb +9 -6
  84. data/lib/active_scaffold/actions/mark.rb +1 -1
  85. data/lib/active_scaffold/actions/nested.rb +8 -6
  86. data/lib/active_scaffold/actions/show.rb +6 -1
  87. data/lib/active_scaffold/actions/update.rb +39 -19
  88. data/lib/active_scaffold/active_record_permissions.rb +29 -12
  89. data/lib/active_scaffold/attribute_params.rb +14 -7
  90. data/lib/active_scaffold/bridges/calendar_date_select.rb +1 -1
  91. data/lib/active_scaffold/bridges/cancan/cancan_bridge.rb +1 -2
  92. data/lib/active_scaffold/bridges/carrierwave/list_ui.rb +1 -1
  93. data/lib/active_scaffold/bridges/chosen.rb +14 -0
  94. data/lib/active_scaffold/bridges/chosen/helpers.rb +48 -0
  95. data/lib/active_scaffold/bridges/date_picker/helper.rb +7 -6
  96. data/lib/active_scaffold/bridges/dragonfly/form_ui.rb +1 -1
  97. data/lib/active_scaffold/bridges/dragonfly/list_ui.rb +1 -1
  98. data/lib/active_scaffold/bridges/file_column.rb +1 -1
  99. data/lib/active_scaffold/bridges/file_column/as_file_column_bridge.rb +1 -1
  100. data/lib/active_scaffold/bridges/file_column/file_column_helpers.rb +2 -2
  101. data/lib/active_scaffold/bridges/file_column/list_ui.rb +4 -4
  102. data/lib/active_scaffold/bridges/paperclip.rb +1 -1
  103. data/lib/active_scaffold/bridges/paperclip/form_ui.rb +1 -1
  104. data/lib/active_scaffold/bridges/paperclip/list_ui.rb +1 -1
  105. data/lib/active_scaffold/bridges/paperclip/paperclip_bridge_helpers.rb +1 -1
  106. data/lib/active_scaffold/bridges/shared/date_bridge.rb +1 -1
  107. data/lib/active_scaffold/bridges/tiny_mce/helpers.rb +1 -1
  108. data/lib/active_scaffold/config/core.rb +9 -2
  109. data/lib/active_scaffold/config/list.rb +9 -13
  110. data/lib/active_scaffold/config/nested.rb +11 -2
  111. data/lib/active_scaffold/data_structures/action_columns.rb +19 -5
  112. data/lib/active_scaffold/data_structures/action_link.rb +9 -2
  113. data/lib/active_scaffold/data_structures/action_links.rb +5 -36
  114. data/lib/active_scaffold/data_structures/column.rb +21 -21
  115. data/lib/active_scaffold/data_structures/nested_info.rb +31 -44
  116. data/lib/active_scaffold/extensions/action_controller_rescueing.rb +1 -0
  117. data/lib/active_scaffold/extensions/action_view_rendering.rb +30 -36
  118. data/lib/active_scaffold/extensions/reverse_associations.rb +10 -6
  119. data/lib/active_scaffold/extensions/routing_mapper.rb +6 -5
  120. data/lib/active_scaffold/extensions/unsaved_associated.rb +1 -1
  121. data/lib/active_scaffold/finder.rb +18 -10
  122. data/lib/active_scaffold/helpers/association_helpers.rb +21 -2
  123. data/lib/active_scaffold/helpers/controller_helpers.rb +14 -16
  124. data/lib/active_scaffold/helpers/form_column_helpers.rb +161 -21
  125. data/lib/active_scaffold/helpers/id_helpers.rb +7 -7
  126. data/lib/active_scaffold/helpers/list_column_helpers.rb +42 -92
  127. data/lib/active_scaffold/helpers/search_column_helpers.rb +10 -3
  128. data/lib/active_scaffold/helpers/show_column_helpers.rb +4 -9
  129. data/lib/active_scaffold/helpers/view_helpers.rb +278 -78
  130. data/lib/active_scaffold/version.rb +2 -2
  131. data/lib/generators/active_scaffold_controller/templates/controller.rb +1 -1
  132. data/test/bridges/paperclip_test.rb +2 -2
  133. data/vendor/assets/javascripts/jquery-ui-timepicker-addon.js +1882 -1276
  134. metadata +79 -80
  135. data/README.md +0 -67
  136. data/frontends/default/views/_action_group.html.erb +0 -24
  137. data/frontends/default/views/_form_attribute.html.erb +0 -23
  138. data/frontends/default/views/_horizontal_subform.html.erb +0 -22
  139. data/frontends/default/views/_horizontal_subform_record.html.erb +0 -43
  140. data/frontends/default/views/_list.html.erb +0 -18
  141. data/frontends/default/views/_list_actions.html.erb +0 -15
  142. data/frontends/default/views/_list_header.html.erb +0 -10
  143. data/frontends/default/views/_list_record.html.erb +0 -13
  144. data/frontends/default/views/_list_record_columns.html.erb +0 -8
  145. data/frontends/default/views/_refresh_list.js.erb +0 -1
  146. data/frontends/default/views/_update_actions.html.erb +0 -9
  147. data/frontends/default/views/_vertical_subform.html.erb +0 -12
  148. data/frontends/default/views/_vertical_subform_record.html.erb +0 -43
  149. data/frontends/default/views/refresh_list.js.erb +0 -2
  150. data/frontends/default/views/update_column.js.erb +0 -15
  151. data/lib/active_scaffold/extensions/active_record_offset.rb +0 -12
  152. data/lib/active_scaffold/extensions/nil_id_in_url_params.rb +0 -7
@@ -48,6 +48,7 @@ $nested_bg: #DAFFCD !default;
48
48
  $nested_border_color: #7FCF00 !default;
49
49
  $nested_footer_color: #444 !default;
50
50
  $nested_column_bg: #ECFFE7 !default;
51
+ $nested_column_even_bg: #fff !default;
51
52
  $nested_column_border_color: $column_border_color !default;
52
53
 
53
54
  $second_nested_bg: #FFFFBB !default;
@@ -228,10 +229,13 @@ border-color: $nested_border_color;
228
229
  color: $nested_footer_color;
229
230
  }
230
231
 
231
- .active-scaffold .active-scaffold td {
232
+ .active-scaffold .active-scaffold tr.record {
232
233
  background-color: $nested_column_bg;
233
234
  border-color: $nested_column_border_color;
234
235
  }
236
+ .active-scaffold .active-scaffold tr.even-record {
237
+ background-color: $nested_column_even_bg;
238
+ }
235
239
 
236
240
  .active-scaffold .active-scaffold td.inline-adapter-cell {
237
241
  background-color: $second_nested_bg;
@@ -335,6 +339,9 @@ color: $placeholder_color;
335
339
  border-color: $input_border_color;
336
340
  }
337
341
 
342
+ .active-scaffold input:invalid,
343
+ .active-scaffold textarea:invalid,
344
+ .active-scaffold select:invalid,
338
345
  .active-scaffold .fieldWithErrors input,
339
346
  .active-scaffold .field_with_errors input,
340
347
  .active-scaffold .fieldWithErrors textarea,
@@ -139,13 +139,6 @@ background-color: transparent;
139
139
  cursor: default;
140
140
  }
141
141
 
142
- .active-scaffold-header div.actions {
143
- position: absolute;
144
- right: 5px;
145
- top: 5px;
146
- text-align: right;
147
- }
148
-
149
142
  /* Table :: Column Headers
150
143
  ============================= */
151
144
 
@@ -264,6 +257,11 @@ line-height: 200%;
264
257
  display: none;
265
258
  width: 150px;
266
259
  right: 0px;
260
+ z-index: 2;
261
+ }
262
+ .active-scaffold .actions .action_group.dyn ul {
263
+ width: auto;
264
+ display: block;
267
265
  }
268
266
 
269
267
  .active-scaffold .actions .action_group ul ul {
@@ -279,7 +277,7 @@ border-top: 1px dashed;
279
277
  display: block;
280
278
  position: relative;
281
279
  width: auto;
282
- z-index: 2;
280
+ text-align: left;
283
281
  }
284
282
 
285
283
  .active-scaffold .actions .action_group ul li div {
@@ -296,6 +294,9 @@ z-index: 2;
296
294
  background-position: 5px 50%;
297
295
  background-repeat: no-repeat;
298
296
  }
297
+ .active-scaffold .actions .action_group.dyn ul li a {
298
+ padding-left: 5px;
299
+ }
299
300
 
300
301
  .active-scaffold .actions .action_group ul li.top {
301
302
  border-top-width: 0px;
@@ -787,6 +788,11 @@ background: none;
787
788
  display: none;
788
789
  }
789
790
 
791
+ .active-scaffold .horizontal-sub-form .associated-record dl {
792
+ float: left;
793
+ margin-right: 5px;
794
+ }
795
+
790
796
  .active-scaffold .sub-form .checkbox-list {
791
797
  padding: 0 2px 2px 2px;
792
798
  border: solid 1px;
@@ -5,13 +5,18 @@ associated = associated.sort_by {|r| r.new_record? ? 99999999999 : r.id} unless
5
5
  if show_blank_record = column.show_blank_record?(associated)
6
6
  associated << build_associated(column, parent_record)
7
7
  end
8
+ @disable_required_for_new = show_blank_record unless (column.singular_association? && column.required?)
8
9
  subform_div_id = "#{sub_form_id({:association => column.name, :id => parent_record.id || 99999999999})}-div"
9
10
  -%>
10
11
  <h5><%= column.label -%></h5>
11
12
  <div id ="<%= subform_div_id %>" <%= 'style="display: none;"'.html_safe if column.collapsed -%>>
12
13
  <%# HACK to be able to delete all associated records %>
13
- <%= hidden_field_tag "#{active_scaffold_input_options(column, scope)[:name]}[0]", '' if column.plural_association? %>
14
- <%= render :partial => subform_partial_for_column(column), :locals => {:column => column, :parent_record => parent_record, :associated => associated, :show_blank_record => show_blank_record, :scope => scope} %>
14
+ <%= hidden_field_tag "#{active_scaffold_input_options(column, scope)[:name]}[0]", '' if column.plural_association? %>
15
+ <%= render :partial => subform_partial_for_column(column), :locals => {:column => column, :parent_record => parent_record, :associated => associated, :show_blank_record => show_blank_record, :scope => scope} %>
16
+ <%= render :partial => 'form_association_footer', :locals => {:parent_record => parent_record, :column => column, :associated => associated, :scope => scope} -%>
15
17
  </div>
16
18
  <%= link_to_visibility_toggle(subform_div_id, {:default_visible => !column.collapsed}) -%>
17
- <% @record = parent_record -%>
19
+ <%
20
+ @record = parent_record
21
+ @disable_required_for_new = nil
22
+ -%>
@@ -34,12 +34,13 @@ add_new_url = params_for(:action => 'edit_associated', :child_association => col
34
34
 
35
35
  <% if show_add_existing -%>
36
36
  <% if remote_controller and remote_controller.respond_to? :uses_record_select? and remote_controller.uses_record_select? -%>
37
- <%= link_to_record_select as_(:add_existing), remote_controller.controller_path, :onselect => "ActiveScaffold.record_select_onselect(#{url_for(edit_associated_url).to_json}, #{active_scaffold_id.to_json}, id);" -%>
37
+ <%= link_to_record_select as_(:add_existing), remote_controller.controller_path, :onselect => "ActiveScaffold.record_select_onselect(#{edit_associated_url.to_json}, #{active_scaffold_id.to_json}, id);" -%>
38
38
  <% else -%>
39
- <% select_options = options_for_select(options_for_association(column.association))
40
- add_existing_id = "#{sub_form_id(:association => column.name)}-add-existing" %>
39
+ <% select_options = options_from_collection_for_select(sorted_association_options_find(column.association), :id, :to_label)
40
+ add_existing_id = "#{sub_form_id(:association => column.name)}-add-existing"
41
+ add_existing_label = column.plural_association? ? :add_existing : :replace_existing %>
41
42
  <%= select_tag 'associated_id', '<option value="">'.html_safe + as_(:_select_) + '</option>'.html_safe + select_options %>
42
- <%= link_to as_(:add_existing), edit_associated_url, :id => add_existing_id, :remote => true, :class=> column.plural_association? ? 'as_add_existing' : 'as_replace_existing', :style => "display: none;" %>
43
+ <%= link_to as_(add_existing_label), edit_associated_url, :id => add_existing_id, :remote => true, :class=> "as_#{add_existing_label}", :style => "display: none;" %>
43
44
  <%= javascript_tag("ActiveScaffold.show('#{add_existing_id}');") %>
44
45
  <% end -%>
45
46
  <% end -%>
@@ -0,0 +1,85 @@
1
+ <%
2
+ record_column = column
3
+ readonly = (@record.readonly? or not @record.authorized_for?(:crud_type => :update))
4
+ crud_type = @record.new_record? ? :create : (readonly ? :read : :update)
5
+ show_actions = false
6
+ config = active_scaffold_config_for(@record.class)
7
+ options = active_scaffold_input_options(config.columns[@record.class.primary_key], scope)
8
+ tr_id = "association-#{options[:id]}"
9
+
10
+ if config.subform.layout == :vertical
11
+ record_tag ||= :div
12
+ row_tag ||= :ol
13
+ column_tag ||= :li
14
+ error_tag ||= :div
15
+ error_inner_tag ||= nil
16
+ default_col_class = ['form-element']
17
+ flatten = true unless local_assigns.has_key? :flatten
18
+ else
19
+ record_tag ||= :tbody
20
+ row_tag ||= :tr
21
+ column_tag ||= :td
22
+ error_tag ||= :tr
23
+ error_inner_tag ||= :td
24
+ default_col_class = []
25
+ flatten ||= false
26
+ end
27
+ index ||= nil
28
+
29
+ columns_length = 0
30
+ columns_groups = []
31
+ -%>
32
+ <<%= record_tag %> class="sub-form-record">
33
+ <% unless @record.errors.empty? -%>
34
+ <%= content_tag error_tag, :class => "association-record-errors", :id => element_messages_id(:action => @record.class.name.underscore, :id => "#{parent_record.id}-#{index}") do %>
35
+ <% errors = active_scaffold_error_messages_for(:record, :object_name => @record.class.model_name.human.downcase) %>
36
+ <%= error_inner_tag ? content_tag(error_inner_tag, errors, :colspan => (active_scaffold_config_for(@record.class).subform.columns.length + 1 if error_inner_tag == :td)) : errors %>
37
+ <% end %>
38
+ <% end %>
39
+ <%= content_tag row_tag, :id => tr_id, :class => "association-record#{' association-record-new' if @record.new_record?}#{' locked' if locked}" do %>
40
+ <% config.subform.columns.each :for => @record.class, :crud_type => :read, :flatten => flatten do |column| %>
41
+ <%
42
+ if column.is_a? ActiveScaffold::DataStructures::ActionColumns
43
+ columns_groups << column
44
+ next
45
+ end
46
+
47
+ next unless in_subform?(column, parent_record)
48
+ columns_length += 1
49
+ show_actions = true
50
+ column = column.clone
51
+ column.form_ui ||= :select if column.association
52
+
53
+ col_class = default_col_class.clone
54
+ col_class << 'required' if column.required?
55
+ col_class << column.css_class unless column.css_class.nil? || column.css_class.is_a?(Proc)
56
+ col_class << 'hidden' if column_renders_as(column) == :hidden
57
+ -%>
58
+ <%= content_tag column_tag, :class => col_class.join(' ') do %>
59
+ <%= active_scaffold_render_subform_column(column, scope, crud_type, readonly) %>
60
+ <% end %>
61
+ <% end -%>
62
+ <% if show_actions -%>
63
+ <%= content_tag column_tag, :class => "actions" do %>
64
+ <% if record_column.plural_association? and (@record.authorized_for?(:crud_type => :delete) or not [:destroy, :delete_all].include?(record_column.association.options[:dependent])) %>
65
+ <% destroy_id = "#{options[:id]}-destroy" %>
66
+ <%= link_to as_(:remove), '#', :class => 'destroy', :id => destroy_id , :onclick => "ActiveScaffold.delete_subform_record(\"#{tr_id}\"); return false;", :style=> "display: none;" %>
67
+ <%= javascript_tag("ActiveScaffold.show('#{destroy_id}');") if !locked %>
68
+ <% end %>
69
+ <% unless @record.new_record? %>
70
+ <input type="hidden" name="<%= options[:name] -%>" id="<%= options[:id] -%>" value="<%= @record.id -%>" />
71
+ <% end -%>
72
+ <% end %>
73
+ <% end -%>
74
+ <% end %>
75
+
76
+ <% columns_groups.each do |column| %>
77
+ <%= content_tag row_tag, :class => 'associated-record' do %>
78
+ <%= content_tag column_tag, :colspan => (columns_length if column_tag == :td) do %>
79
+ <% column.each :for => @record.class, :crud_type => :read, :flatten => true do |col| %>
80
+ <%= active_scaffold_render_subform_column(col, scope, crud_type, readonly, true) %>
81
+ <% end %>
82
+ <% end %>
83
+ <% end %>
84
+ <% end %>
85
+ </<%= record_tag %>>
@@ -0,0 +1,23 @@
1
+ <%
2
+ scope ||= nil
3
+ column_options = active_scaffold_input_options(column, scope)
4
+ %>
5
+ <dl<%= " class=\"#{col_class}\"".html_safe if local_assigns[:col_class].present? %>>
6
+ <dt>
7
+ <label for="<%= column_options[:id] %>"><%= column.label %></label>
8
+ </dt>
9
+ <dd>
10
+ <% unless local_assigns[:only_value] %>
11
+ <%=raw active_scaffold_input_for column, scope %>
12
+ <% else %>
13
+ <%= content_tag :span, get_column_value(@record, column), column_options.except(:name) %>
14
+ <%= hidden_field :record, column.association ? column.association.foreign_key : column.name, column_options -%>
15
+ <% end %>
16
+ <% if column.update_columns -%>
17
+ <%= loading_indicator_tag(:action => :render_field, :id => params[:id]) %>
18
+ <% end -%>
19
+ <% if column.description.present? -%>
20
+ <span class="description"><%= column.description %></span>
21
+ <% end -%>
22
+ </dd>
23
+ </dl>
@@ -0,0 +1,12 @@
1
+ <table cellpadding="0" cellspacing="0" id="<%= sub_form_list_id(:association => column.name) %>">
2
+ <% @record = associated.empty? ? build_associated(column, parent_record) : associated.last -%>
3
+ <%= render :partial => 'horizontal_subform_header', :locals => {:parent_record => parent_record, :record => @record} %>
4
+
5
+ <% associated.each_index do |index| %>
6
+ <% @record = associated[index] -%>
7
+ <%= render :partial => 'form_association_record', :locals => {:scope => column_scope(column, scope), :parent_record => parent_record, :column => column, :locked => show_blank_record && @record.new_record? && @record == associated.last, :index => index} %>
8
+ <% end -%>
9
+ <tfoot>
10
+ <%= render :partial => 'horizontal_subform_footer', :locals => {:scope => column_scope(column, scope), :parent_record => parent_record, :column => column} %>
11
+ </tfoot>
12
+ </table>
@@ -1,9 +1,10 @@
1
1
  <thead>
2
2
  <tr>
3
3
  <%
4
- active_scaffold_config_for(record.class).subform.columns.each :for => record.class, :crud_type => :read, :flatten => true do |column|
5
- hidden = column_renders_as(column) == :hidden
4
+ active_scaffold_config_for(record.class).subform.columns.each :for => record.class, :crud_type => :read do |column|
5
+ next if column.is_a? ActiveScaffold::DataStructures::ActionColumns
6
6
  next unless in_subform?(column, parent_record)
7
+ hidden = column_renders_as(column) == :hidden
7
8
  -%>
8
9
  <th class="<%= "#{column.name}-column #{'required' if column.required?} #{'hidden' if hidden}" %>"><label><%= column.label unless hidden %></label></th>
9
10
  <% end -%>
@@ -0,0 +1,35 @@
1
+ <% if active_scaffold_config.list.messages_above_header %>
2
+ <table>
3
+ <tbody>
4
+ <tr>
5
+ <td class="messages-container">
6
+ <p class="error-message message server-error" style="display:none;">
7
+ <%= as_(:internal_error).html_safe %>
8
+ <a href="#" class="close" title="<%= as_(:close).html_safe %>"><%= as_(:close).html_safe %></a>
9
+ </p>
10
+ <div id="<%= active_scaffold_messages_id -%>" class="action-messages">
11
+ <%= render :partial => 'messages' %>
12
+ </div>
13
+ </td>
14
+ </tr>
15
+ </tbody>
16
+ </table>
17
+ <% end %>
18
+ <table cellpadding="0" cellspacing="0">
19
+ <thead>
20
+ <tr>
21
+ <% columns = list_columns %>
22
+ <%= render :partial => 'list_column_headings', :locals => {:columns => columns} %>
23
+ </tr>
24
+ </thead>
25
+ <%= render :partial => 'list_messages', :locals => {:columns => columns} %>
26
+ <tbody class="records" id="<%= active_scaffold_tbody_id %>">
27
+ <% if !@records.empty? -%>
28
+ <%= render :partial => 'list_record', :collection => @page.items, :locals => {:hidden => false, :columns => columns, :action_links => active_scaffold_config.action_links.member, :data_refresh => url_for(params_for(:action => :row, :id => '--ID--', :_method => :get))} %>
29
+ <% end -%>
30
+ <% if columns.any? {|c| c.calculation?} -%>
31
+ <%= render :partial => 'list_calculations', :locals => {:columns => columns} %>
32
+ <% end -%>
33
+ </tbody>
34
+ </table>
35
+ <%= render :partial => 'list_pagination' %>
@@ -0,0 +1,8 @@
1
+ <% action_links = active_scaffold_config.action_links.collection
2
+ unless action_links.empty? -%>
3
+ <div class="actions">
4
+ <%= display_action_links(action_links, nil, :skip_unauthorized => true, :reverse => nested?) %>
5
+ <%= loading_indicator_tag(:action => :table) %>
6
+ </div>
7
+ <% end %>
8
+ <h2><%= active_scaffold_config.list.user.label %></h2>
@@ -2,19 +2,21 @@
2
2
  <tbody class="messages">
3
3
  <tr class="record even-record">
4
4
  <td colspan="<%= column_count -%>" class="messages-container">
5
+ <% unless active_scaffold_config.list.messages_above_header %>
5
6
  <p class="error-message message server-error" style="display:none;">
6
7
  <%= as_(:internal_error).html_safe %>
7
8
  <a href="#" class="close" title="<%= as_(:close).html_safe %>"><%= as_(:close).html_safe %></a>
8
9
  </p>
9
- <div id="<%= active_scaffold_messages_id -%>">
10
+ <div id="<%= active_scaffold_messages_id -%>" class="action-messages">
10
11
  <%= render :partial => 'messages' %>
11
12
  </div>
13
+ <% end %>
12
14
  <div class="filtered-message" <%= ' style="display:none;" '.html_safe unless @filtered %>>
13
15
  <%= @filtered.is_a?(Array) ? render(:partial => 'human_conditions', :locals => {:columns => @filtered}) : as_(active_scaffold_config.list.filtered_message) %>
14
16
  <% if active_scaffold_config.list.show_search_reset && @filtered -%>
15
17
  <div class="reset">
16
18
  <%= loading_indicator_tag(:action => :record, :id => nil) %>
17
- <%= render_action_link(active_scaffold_config.list.reset_link, params_for(:search => '')) %>
19
+ <%= render_action_link(active_scaffold_config.list.reset_link) %>
18
20
  </div>
19
21
  <% end -%>
20
22
  </div>
@@ -24,5 +26,3 @@
24
26
  </td>
25
27
  </tr>
26
28
  </tbody>
27
-
28
-
@@ -0,0 +1,30 @@
1
+ <%
2
+ record = list_record if list_record # compat with render :partial :collection
3
+ columns ||= list_columns
4
+ tr_class = cycle("", "even-record") + ' ' + list_row_class(record)
5
+ action_links ||= active_scaffold_config.action_links.member
6
+ data_refresh ||= url_for(params_for(:action => :row, :id => '--ID--', :_method => :get))
7
+ -%>
8
+
9
+ <tr class="record <%= tr_class %>" id="<%= element_row_id(:action => :list, :id => record.id) %>" data-refresh="<%= data_refresh.sub('--ID--', record.id.to_s).html_safe %>">
10
+ <% columns.each do |column| %>
11
+ <% authorized = record.authorized_for?(:crud_type => :read, :column => column.name) -%>
12
+ <% column_value = authorized ? get_column_value(record, column) : active_scaffold_config.list.empty_field_text -%>
13
+
14
+ <%= content_tag :td, column_attributes(column, record).merge(:class => column_class(column, column_value, record)) do %>
15
+ <%= authorized ? render_list_column(column_value, column, record) : column_value %>
16
+ <% end %>
17
+ <% end -%>
18
+
19
+ <td class="actions"><table cellpadding="0" cellspacing="0">
20
+ <tr>
21
+ <td class="indicator-container">
22
+ <%= loading_indicator_tag(:action => :record, :id => record.id) %>
23
+ </td>
24
+ <%= display_action_links(action_links, record, :level_0_tag => :td, :for => record.persisted? ? record : record.class) %>
25
+ </tr>
26
+ </table></td>
27
+
28
+
29
+ <%= render_nested_view(action_links, record) unless @nested_auto_open.nil? %>
30
+ </tr>
@@ -0,0 +1 @@
1
+ ActiveScaffold.replace_html('<%= active_scaffold_content_id %>', '<%= escape_javascript(render('list')) %>');
@@ -4,6 +4,7 @@
4
4
  else
5
5
  active_scaffold_config.columns[render_field.to_sym]
6
6
  end
7
+ return unless @main_columns.include? column.name
7
8
  @rendered ||= Set.new
8
9
  return if @rendered.include? column.name
9
10
  @rendered << column.name
@@ -12,9 +13,16 @@
12
13
  else
13
14
  options = {:is_subform => false, :field_class => "#{column.name}-input"}
14
15
  end
16
+ html = if scope
17
+ readonly = (@record.readonly? or not @record.authorized_for?(:crud_type => :update))
18
+ crud_type = @record.new_record? ? :create : (readonly ? :read : :update)
19
+ active_scaffold_render_subform_column(column, scope, crud_type, readonly, !active_scaffold_config.subform.columns.names_without_auth_check.include?(column.name))
20
+ else
21
+ render(:partial => form_partial_for_column(column), :locals => { :column => column, :scope => scope })
22
+ end
15
23
  -%>
16
24
 
17
- ActiveScaffold.render_form_field('<%= source_id %>','<%= escape_javascript(render(:partial => form_partial_for_column(column), :locals => { :column => column, :scope => scope })) %>', <%= options.to_json.html_safe %>);
25
+ ActiveScaffold.render_form_field('<%= source_id %>','<%= escape_javascript(html) %>', <%= options.to_json.html_safe %>);
18
26
  <%if column.update_columns && !column.update_columns.empty?%>
19
27
  <%= render(:partial => "render_field", :collection => column.update_columns, :locals => {:source_id => source_id, :scope => scope})%>
20
28
  <%end%>