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
@@ -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