active_scaffold 3.2.20 → 3.3.0.rc

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
@@ -0,0 +1,9 @@
1
+ <div class="active-scaffold-header">
2
+ <div class="actions">
3
+ <% active_scaffold_config.action_links.member.each do |link| -%>
4
+ <% next unless link.action == 'index' -%>
5
+ <% next if skip_action_link?(link, record) || !action_link_authorized?(link, record) -%>
6
+ <%= render_action_link(link, record, :authorized => true) -%>
7
+ <% end -%>
8
+ </div>
9
+ </div>
@@ -0,0 +1,16 @@
1
+ <%
2
+ column = if update_column.is_a? ActiveScaffold::DataStructures::Column
3
+ update_column
4
+ else
5
+ active_scaffold_config.columns[update_column.to_sym]
6
+ end
7
+ @rendered ||= Set.new
8
+ return if @rendered.include? column.name
9
+ @rendered << column.name
10
+ -%>
11
+ <% if @record.authorized_for?(:crud_type => :read, :column => column.name) -%>
12
+ ActiveScaffold.replace_html('<%= row_id %> .<%= column.name %>-column','<%= escape_javascript(render_list_column(get_column_value(@record, column), column, @record)) %>');
13
+ <% end -%>
14
+ <% if column.update_columns && !column.update_columns.empty? %>
15
+ <%= render(:partial => 'update_column', :collection => column.update_columns & active_scaffold_config.list.columns.names, :locals => {:row_id => row_id})%>
16
+ <% end %>
@@ -0,0 +1,8 @@
1
+ <div id="<%= sub_form_list_id(:association => column.name) %>">
2
+ <% associated.each_index do |index| %>
3
+ <div class="sub-form-record">
4
+ <% @record = associated[index] -%>
5
+ <%= 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} %>
6
+ </div>
7
+ <% end -%>
8
+ </div>
@@ -1,5 +1,5 @@
1
1
  <%
2
- associated_form = render :partial => "#{subform_partial_for_column(@column)}_record", :locals => {:scope => @scope, :parent_record => @parent_record, :column => @column, :locked => @record.new_record? && @column.singular_association?}
2
+ associated_form = render :partial => "form_association_record", :locals => {:scope => @scope, :parent_record => @parent_record, :column => @column, :locked => @record.new_record? && @column.singular_association?}
3
3
  options = {:singular => false}
4
4
  if @column.singular_association?
5
5
  options[:singular] = true
@@ -2,15 +2,15 @@
2
2
  <% if @record %>
3
3
  <%= render :partial => 'update_messages' %>
4
4
  <% row = escape_javascript(render(:partial => 'list_record', :locals => {:record => @record})) -%>
5
- <% if @action_link.nil? || @action_link.position %>
6
- ActiveScaffold.find_action_link('<%= element_row_id(:action => :list, :id => @record.id) %>').close('<%= row %>');
5
+ <% if @action_link.try(:position) %>
6
+ ActiveScaffold.find_action_link('<%= element_form_id(:action => action_name) %>').close('<%= row %>');
7
7
  <% else %>
8
8
  ActiveScaffold.update_row('<%= element_row_id(:action => :list, :id => @record.id) %>', '<%= row %>');
9
9
  ActiveScaffold.scroll_to('<%= element_row_id(:action => :list, :id => @record.id) %>', true);
10
10
  <% end %>
11
11
  <%= render :partial => 'update_calculations', :formats => [:js] %>
12
12
  <% else %>
13
- <% if @action_link.nil? || @action_link.position %>
13
+ <% if @action_link.try(:position) %>
14
14
  ActiveScaffold.find_action_link('<%= element_row_id(:action => action_name) %>').close();
15
15
  <% end %>
16
16
  <%= render :partial => 'refresh_list' %>
@@ -17,7 +17,7 @@ action_link.update_flash_messages('<%=escape_javascript(render(:partial => 'mess
17
17
  <% elsif params[:parent_controller].nil? %>
18
18
  <% new_row = render :partial => 'list_record', :locals => {:record => @record} %>
19
19
  ActiveScaffold.create_record_row(action_link.scaffold(),'<%= escape_javascript(new_row) %>', <%= {:insert_at => insert_at}.to_json.html_safe %>);
20
- <%= render :partial => 'update_calculations.js' %>
20
+ <%= render :partial => 'update_calculations', :formats => [:js] %>
21
21
  <% end %>
22
22
 
23
23
  <% unless render_parent? %>
@@ -1,13 +1,13 @@
1
1
  try {
2
- <% form_selector = "#{element_form_id(:action => :update)}" %>
2
+ <% form_selector = "#{element_form_id(:action => :update, :id => @record.id)}" %>
3
3
  var action_link = ActiveScaffold.find_action_link('<%= form_selector %>');
4
4
  action_link.update_flash_messages('<%= escape_javascript(render(:partial => 'messages')) %>');
5
5
  <% if controller.send :successful? %>
6
6
  <% if params[:dont_close] %>
7
7
  <% row_selector = element_row_id(:action => :list, :id => @record.id) %>
8
8
  ActiveScaffold.update_row('<%= row_selector %>', '<%= escape_javascript(render(:partial => 'list_record', :locals => {:record => @record})) %>');
9
- <%= render :partial => 'update_calculations.js' %>
10
- ActiveScaffold.scroll_to('<%= row_selector %>', true);
9
+ action_link.target = $('#<%= row_selector %>');
10
+ <%= render :partial => 'update_calculations', :formats => [:js] %>
11
11
  <% else %>
12
12
  <% if render_parent? %>
13
13
  <% if nested_singular_association? || render_parent_action == :row %>
@@ -19,7 +19,7 @@ action_link.update_flash_messages('<%= escape_javascript(render(:partial => 'mes
19
19
  <%= render :partial => 'refresh_list' %>
20
20
  <% else %>
21
21
  action_link.close('<%= escape_javascript(render(:partial => 'list_record', :locals => {:record => @record})) %>');
22
- <%= render :partial => 'update_calculations.js' %>
22
+ <%= render :partial => 'update_calculations', :formats => [:js] %>
23
23
  <% end %>
24
24
  <% end %>
25
25
  <% else %>
@@ -1,2 +1,2 @@
1
- ActiveScaffold.update_row('<%= element_row_id(:action => :list) %>', '<%= escape_javascript render(:partial => 'row', :locals => {:record => @record}) %>');
1
+ ActiveScaffold.update_row('<%= element_row_id(:action => :list) %>', '<%= escape_javascript render('row', :record => @record) %>');
2
2
  <%= render :partial => 'update_calculations', :formats => [:js] %>
@@ -1,7 +1,7 @@
1
1
  <div class="active-scaffold">
2
2
  <div class="update-view <%= "#{id_from_controller params[:controller]}-view" %> view">
3
3
  <% if active_scaffold_config.update.nested_links and active_scaffold_config.action_links.member.empty? -%>
4
- <%= render :partial => 'update_actions', :locals => {:record => @record, :url_options => params_for(:action => :list, :id => @record.id)} %>
4
+ <%= render :partial => 'update_actions', :locals => {:record => @record} %>
5
5
  <% end -%>
6
6
  <%= render :partial => 'update_form' -%>
7
7
  </div>
@@ -0,0 +1,26 @@
1
+ <% @column_span_id ||= element_cell_id(:id => @record.id.to_s, :action => 'update_column', :name => @column.name) -%>
2
+ <% unless controller.send :successful? -%>
3
+ alert('<%= escape_javascript(@record.errors.full_messages.join("\n")) %>');
4
+ <% @record.reload -%>
5
+ <% end -%>
6
+ <% if @column.inplace_edit
7
+ ipe_update = @column.inplace_edit_update if controller.send :successful? -%>
8
+ <% case ipe_update
9
+ when :row -%>
10
+ ActiveScaffold.update_row('<%= element_row_id(:action => :list) %>', '<%= escape_javascript render('row', :record => @record) %>');
11
+ <% when :table -%>
12
+ ActiveScaffold.replace_html('<%= active_scaffold_content_id %>', '<%= escape_javascript(render('list')) %>');
13
+ <% else
14
+ formatted_value = get_column_value(@record, @column) -%>
15
+ ActiveScaffold.update_inplace_edit('<%= @column_span_id %>','<%= escape_javascript(formatted_value) %>', <%= column_empty?(formatted_value).to_json %>);
16
+ <% if ipe_update == :columns && @column.update_columns && !@column.update_columns.empty?
17
+ @rendered = Set.new([@column.name]) -%>
18
+ <%= render :partial => 'update_column', :collection => @column.update_columns & active_scaffold_config.list.columns.names, :locals => {:row_id => element_row_id(:action => :list, :id => @record.id)} %>
19
+ <% end %>
20
+ <% end -%>
21
+ <% else -%>
22
+ ActiveScaffold.replace_html('<%= @column_span_id %>','<%= escape_javascript(get_column_value(@record, @column)) %>');
23
+ <% end -%>
24
+ <% if @column.calculation? -%>
25
+ ActiveScaffold.replace_html('<%= active_scaffold_calculations_id(:column => @column) %>', '<%= escape_javascript(render_column_calculation(@column)) %>');
26
+ <% end -%>
@@ -50,6 +50,7 @@ de:
50
50
  refresh: 'Neu laden'
51
51
  remove: 'Entfernen'
52
52
  remove_file: 'Entferne oder Ersetze Datei'
53
+ replace_existing: 'Existierenden ersetzen'
53
54
  replace_with_new: 'Mit Neuer ersetzen'
54
55
  revisions_for_model: 'Revisionen für %{model}'
55
56
  reset: 'Zurücksetzen'
@@ -50,6 +50,7 @@ en:
50
50
  refresh: 'Refresh'
51
51
  remove: 'Remove'
52
52
  remove_file: 'Remove or Replace file'
53
+ replace_existing: 'Replace Existing'
53
54
  replace_with_new: 'Replace With New'
54
55
  revisions_for_model: 'Revisions for %{model}'
55
56
  reset: 'Reset'
@@ -52,6 +52,7 @@ es:
52
52
  refresh: 'Recargar'
53
53
  remove: 'Eliminar'
54
54
  remove_file: 'Eliminar o Reemplazar archivo'
55
+ replace_existing: 'Reemplazar existente'
55
56
  replace_with_new: 'Reemplazar con Nuevo'
56
57
  revisions_for_model: 'Revisiones de %{model}'
57
58
  reset: 'Restaurar'
@@ -50,6 +50,7 @@ fr:
50
50
  refresh: 'Rafraîchir'
51
51
  remove: 'Supprimer'
52
52
  remove_file: 'Supprimer et remplacer le fichier'
53
+ replace_existing: 'Remplacer existant(e)'
53
54
  replace_with_new: 'Remplacer avec le nouveau'
54
55
  revisions_for_model: 'Révision pour %{model}'
55
56
  reset: 'Annuler'
@@ -50,6 +50,7 @@ hu:
50
50
  refresh: 'Frissítés'
51
51
  remove: 'Törlés'
52
52
  remove_file: 'Fájl törlése, vagy cseréje'
53
+ replace_existing: 'Replace existing'
53
54
  replace_with_new: 'Csere újjal'
54
55
  revisions_for_model: '%{model} revíziói'
55
56
  reset: 'Alapállapot'
@@ -50,6 +50,7 @@ ja:
50
50
  refresh: 'Refresh' # needed?
51
51
  remove: '削除'
52
52
  remove_file: 'ファイルを削除または置換'
53
+ replace_existing: 'Replace existing'
53
54
  replace_with_new: '新しいもので置換'
54
55
  revisions_for_model: 'Revisions for %{model}' # neede?
55
56
  reset: 'リセット'
@@ -56,6 +56,7 @@ ru:
56
56
  refresh: 'Обновить'
57
57
  remove: 'Удалить'
58
58
  remove_file: 'Удалить или заменить файл'
59
+ replace_existing: 'Replace existing'
59
60
  replace_with_new: 'Заменить новым'
60
61
  revisions_for_model: '%{model}: редакции'
61
62
  reset: 'Сброс'
@@ -16,7 +16,6 @@ require 'active_scaffold/engine' unless defined? ACTIVE_SCAFFOLD_PLUGIN
16
16
  require 'json' # for js_config
17
17
 
18
18
  module ActiveScaffold
19
- METHOD_CONVERSION = RUBY_VERSION < '1.9' ? :to_s : :to_sym
20
19
  autoload :AttributeParams, 'active_scaffold/attribute_params'
21
20
  autoload :Configurable, 'active_scaffold/configurable'
22
21
  autoload :Constraints, 'active_scaffold/constraints'
@@ -163,6 +162,7 @@ module ActiveScaffold
163
162
 
164
163
  module ClassMethods
165
164
  def active_scaffold(model_id = nil, &block)
165
+ extend Prefixes
166
166
  # initialize bridges here
167
167
  ActiveScaffold::Bridges.run_all
168
168
 
@@ -173,16 +173,7 @@ module ActiveScaffold
173
173
  @active_scaffold_config = ActiveScaffold::Config::Core.new(model_id)
174
174
  @active_scaffold_config_block = block
175
175
  self.links_for_associations
176
-
177
- @active_scaffold_frontends = []
178
- if active_scaffold_config.frontend.to_sym != :default
179
- active_scaffold_custom_frontend_path = File.join(ActiveScaffold::Config::Core.plugin_directory, 'frontends', active_scaffold_config.frontend.to_s , 'views')
180
- @active_scaffold_frontends << active_scaffold_custom_frontend_path
181
- end
182
- active_scaffold_default_frontend_path = File.join(ActiveScaffold::Config::Core.plugin_directory, 'frontends', 'default' , 'views')
183
- @active_scaffold_frontends << active_scaffold_default_frontend_path
184
- @active_scaffold_custom_paths = []
185
-
176
+
186
177
  self.active_scaffold_superclasses_blocks.each {|superblock| self.active_scaffold_config.configure &superblock}
187
178
  self.active_scaffold_config.sti_children = nil # reset sti_children if set in parent block
188
179
  self.active_scaffold_config.configure &block if block_given?
@@ -212,12 +203,13 @@ module ActiveScaffold
212
203
  end
213
204
  end
214
205
  end
215
- self.append_view_path active_scaffold_paths
216
206
  self._add_sti_create_links if self.active_scaffold_config.add_sti_create_links?
217
207
  end
218
208
 
219
- def parent_prefixes
220
- @parent_prefixes ||= super << 'active_scaffold_overrides' << ''
209
+ module Prefixes
210
+ def parent_prefixes
211
+ @parent_prefixes ||= super << 'active_scaffold_overrides'
212
+ end
221
213
  end
222
214
 
223
215
  # To be called after include action modules
@@ -265,7 +257,7 @@ module ActiveScaffold
265
257
  controller = active_scaffold_controller_for_column(column, options)
266
258
 
267
259
  unless controller.nil?
268
- options.reverse_merge! :label => column.label, :position => :after, :type => :member, :controller => (controller == :polymorph ? controller : controller.controller_path), :column => column
260
+ options.reverse_merge! :position => :after, :type => :member, :controller => (controller == :polymorph ? controller : controller.controller_path), :column => column
269
261
  options[:parameters] ||= {}
270
262
  options[:parameters].reverse_merge! :association => column.association.name
271
263
  if column.plural_association?
@@ -291,17 +283,13 @@ module ActiveScaffold
291
283
  end
292
284
 
293
285
  def add_active_scaffold_path(path)
294
- @active_scaffold_paths = nil # Force active_scaffold_paths to rebuild
295
- @active_scaffold_custom_paths << path
296
- end
297
-
298
- def active_scaffold_paths
299
- return @active_scaffold_paths unless @active_scaffold_paths.nil?
300
-
301
- @active_scaffold_paths = []
302
- @active_scaffold_paths.concat @active_scaffold_custom_paths unless @active_scaffold_custom_paths.nil?
303
- @active_scaffold_paths.concat @active_scaffold_frontends unless @active_scaffold_frontends.nil?
304
- @active_scaffold_paths
286
+ as_path = File.join(ActiveScaffold::Config::Core.plugin_directory, 'app', 'views')
287
+ index = view_paths.find_index { |p| p.to_s == as_path }
288
+ if index
289
+ self.view_paths = view_paths[0..index-1] + Array(path) + view_paths[index..-1]
290
+ else
291
+ append_view_path path
292
+ end
305
293
  end
306
294
 
307
295
  def active_scaffold_config
@@ -11,7 +11,7 @@ module ActiveScaffold::Actions
11
11
  base.helper_method :new_model
12
12
  end
13
13
  def render_field
14
- if params[:in_place_editing]
14
+ if request.get?
15
15
  render_field_for_inplace_editing
16
16
  else
17
17
  render_field_for_update_columns
@@ -28,16 +28,17 @@ module ActiveScaffold::Actions
28
28
  end
29
29
 
30
30
  def render_field_for_inplace_editing
31
- @record = find_if_allowed(params[:id], :update)
31
+ @record = find_if_allowed(params[:id], :crud_type => :update, :column => params[:update_column])
32
32
  render :inline => "<%= active_scaffold_input_for(active_scaffold_config.columns[params[:update_column].to_sym]) %>"
33
33
  end
34
34
 
35
35
  def render_field_for_update_columns
36
- column = active_scaffold_config.columns[params[:column]]
36
+ column = active_scaffold_config.columns[params.delete(:column)]
37
37
  unless column.nil?
38
38
  @source_id = params.delete(:source_id)
39
39
  @columns = column.update_columns
40
- @scope = params[:scope]
40
+ @scope = params.delete(:scope)
41
+ @main_columns = active_scaffold_config.send(@scope ? :subform : (params[:id] ? :update : :create)).columns
41
42
 
42
43
  if column.send_form_on_update_column
43
44
  if @scope
@@ -50,10 +51,10 @@ module ActiveScaffold::Actions
50
51
  id = params[:id]
51
52
  end
52
53
  @record = id ? find_if_allowed(id, :update) : new_model
53
- @record = update_record_from_params(@record, active_scaffold_config.send(@scope ? :subform : (id ? :update : :create)).columns, hash)
54
+ @record = update_record_from_params(@record, @main_columns, hash)
54
55
  else
55
56
  @record = new_model
56
- value = column_value_from_param_value(@record, column, params[:value])
57
+ value = column_value_from_param_value(@record, column, params.delete(:value))
57
58
  @record.send "#{column.name}=", value
58
59
  end
59
60
 
@@ -157,11 +158,13 @@ module ActiveScaffold::Actions
157
158
  def conditions_from_params
158
159
  @conditions_from_params ||= begin
159
160
  conditions = {}
160
- params.reject {|key, value| [:controller, :action, :id, :page, :sort, :sort_direction].include?(key.to_sym)}.each do |key, value|
161
- next unless active_scaffold_config.model.columns_hash[key.to_s]
162
- next if active_scaffold_constraints[key.to_sym]
163
- next if nested? and nested.constrained_fields.include? key.to_sym
164
- conditions[key.to_sym] = value
161
+ params.except(:controller, :action, :page, :sort, :sort_direction).each do |key, value|
162
+ column = active_scaffold_config.model.columns_hash[key.to_s]
163
+ key = key.to_sym
164
+ next unless column
165
+ next if active_scaffold_constraints[key]
166
+ next if nested? and nested.param_name == key
167
+ conditions[key] = column.type_cast(value)
165
168
  end
166
169
  conditions
167
170
  end
@@ -34,7 +34,7 @@ module ActiveScaffold::Actions
34
34
  def create_respond_to_html
35
35
  if params[:iframe]=='true' # was this an iframe post ?
36
36
  responds_to_parent do
37
- render :action => 'on_create.js', :layout => false
37
+ render :action => 'on_create', :formats => [:js], :layout => false
38
38
  end
39
39
  else
40
40
  if successful?
@@ -92,7 +92,7 @@ module ActiveScaffold::Actions
92
92
  apply_constraints_to_record(@record, :allow_autosave => true)
93
93
  create_association_with_parent(@record) if nested?
94
94
  before_create_save(@record)
95
- self.successful = [@record.valid?, @record.associated_valid?].all? {|v| v == true} # this syntax avoids a short-circuit
95
+ self.successful = [@record.valid?, @record.associated_valid?].all? # this syntax avoids a short-circuit
96
96
  create_save(@record) unless options[:skip_save]
97
97
  end
98
98
  rescue ActiveRecord::ActiveRecordError => ex
@@ -122,7 +122,7 @@ module ActiveScaffold::Actions
122
122
  end
123
123
 
124
124
  def create_authorized?
125
- (!nested? || !nested.readonly? || !nested.through?) && authorized_for?(:crud_type => :create)
125
+ !(nested? && (nested.readonly? || nested.readonly_through_association?)) && authorized_for?(:crud_type => :create)
126
126
  end
127
127
  private
128
128
  def create_authorized_filter
@@ -62,6 +62,9 @@ module ActiveScaffold::Actions
62
62
  def delete_authorized?(record = nil)
63
63
  (!nested? || !nested.readonly?) && (record || self).send(:authorized_for?, :crud_type => :delete)
64
64
  end
65
+ def delete_ignore?(record = nil)
66
+ (nested? && nested.readonly?) || !self.send(:authorized_for?, :crud_type => :delete)
67
+ end
65
68
  private
66
69
  def delete_authorized_filter
67
70
  link = active_scaffold_config.delete.link || active_scaffold_config.delete.class.link