active_scaffold_batch_vho 3.0.1 → 3.0.3
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.
- data/Rakefile +1 -1
 - data/active_scaffold_batch_vho.gemspec +15 -5
 - data/frontends/default/views/_batch_create_form.html.erb +7 -0
 - data/frontends/default/views/_batch_create_form_attribute.html.erb +19 -0
 - data/frontends/default/views/_batch_create_form_body.html.erb +25 -0
 - data/frontends/default/views/_batch_update_form_attribute_scope.html.erb +8 -3
 - data/frontends/default/views/batch_create.html.erb +5 -0
 - data/frontends/default/views/on_batch_create.js.rjs +19 -0
 - data/init.rb +10 -2
 - data/lib/active_scaffold/actions/batch_create.rb +198 -0
 - data/lib/active_scaffold/actions/batch_update.rb +4 -0
 - data/lib/active_scaffold/config/batch_create.rb +57 -0
 - data/lib/active_scaffold/config/batch_update.rb +9 -2
 - data/lib/active_scaffold/helpers/batch_create_column_helpers.rb +30 -0
 - data/lib/active_scaffold/helpers/update_column_helpers.rb +15 -6
 - data/lib/active_scaffold_batch/config/core.rb +2 -0
 - data/lib/active_scaffold_batch/locale/de.yml +10 -0
 - data/lib/active_scaffold_batch/locale/en.yml +10 -0
 - data/lib/active_scaffold_batch/version.rb +1 -1
 - data/lib/active_scaffold_batch.rb +12 -10
 - data/lib/active_scaffold_batch_vho.rb +1 -1
 - metadata +18 -7
 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -22,7 +22,7 @@ Jeweler::Tasks.new do |gem| 
     | 
|
| 
       22 
22 
     | 
    
         
             
              gem.description = %Q{You want to destroy/update many records at once with activescaffold?}
         
     | 
| 
       23 
23 
     | 
    
         
             
              gem.email = "activescaffold@googlegroups.com"
         
     | 
| 
       24 
24 
     | 
    
         
             
              gem.authors = ["Volker Hochstein"]
         
     | 
| 
       25 
     | 
    
         
            -
              gem.add_runtime_dependency 'active_scaffold_vho', ' 
     | 
| 
      
 25 
     | 
    
         
            +
              gem.add_runtime_dependency 'active_scaffold_vho', '> 3.0.12'
         
     | 
| 
       26 
26 
     | 
    
         
             
              # Include your dependencies below. Runtime dependencies are required when using your gem,
         
     | 
| 
       27 
27 
     | 
    
         
             
              # and development dependencies are only needed for development (ie running rake tasks, tests, etc)
         
     | 
| 
       28 
28 
     | 
    
         
             
              #  gem.add_runtime_dependency 'jabber4r', '> 0.1'
         
     | 
| 
         @@ -5,11 +5,11 @@ 
     | 
|
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            Gem::Specification.new do |s|
         
     | 
| 
       7 
7 
     | 
    
         
             
              s.name = %q{active_scaffold_batch_vho}
         
     | 
| 
       8 
     | 
    
         
            -
              s.version = "3.0. 
     | 
| 
      
 8 
     | 
    
         
            +
              s.version = "3.0.3"
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         
     | 
| 
       11 
11 
     | 
    
         
             
              s.authors = ["Volker Hochstein"]
         
     | 
| 
       12 
     | 
    
         
            -
              s.date = %q{2011- 
     | 
| 
      
 12 
     | 
    
         
            +
              s.date = %q{2011-02-18}
         
     | 
| 
       13 
13 
     | 
    
         
             
              s.description = %q{You want to destroy/update many records at once with activescaffold?}
         
     | 
| 
       14 
14 
     | 
    
         
             
              s.email = %q{activescaffold@googlegroups.com}
         
     | 
| 
       15 
15 
     | 
    
         
             
              s.extra_rdoc_files = [
         
     | 
| 
         @@ -22,25 +22,35 @@ Gem::Specification.new do |s| 
     | 
|
| 
       22 
22 
     | 
    
         
             
                "README",
         
     | 
| 
       23 
23 
     | 
    
         
             
                "Rakefile",
         
     | 
| 
       24 
24 
     | 
    
         
             
                "active_scaffold_batch_vho.gemspec",
         
     | 
| 
      
 25 
     | 
    
         
            +
                "frontends/default/views/_batch_create_form.html.erb",
         
     | 
| 
      
 26 
     | 
    
         
            +
                "frontends/default/views/_batch_create_form_attribute.html.erb",
         
     | 
| 
      
 27 
     | 
    
         
            +
                "frontends/default/views/_batch_create_form_body.html.erb",
         
     | 
| 
       25 
28 
     | 
    
         
             
                "frontends/default/views/_batch_update_form.html.erb",
         
     | 
| 
       26 
29 
     | 
    
         
             
                "frontends/default/views/_batch_update_form_attribute.html.erb",
         
     | 
| 
       27 
30 
     | 
    
         
             
                "frontends/default/views/_batch_update_form_attribute_scope.html.erb",
         
     | 
| 
       28 
31 
     | 
    
         
             
                "frontends/default/views/_batch_update_form_body.html.erb",
         
     | 
| 
      
 32 
     | 
    
         
            +
                "frontends/default/views/batch_create.html.erb",
         
     | 
| 
       29 
33 
     | 
    
         
             
                "frontends/default/views/batch_update.html.erb",
         
     | 
| 
       30 
34 
     | 
    
         
             
                "frontends/default/views/on_batch_base.js.rjs",
         
     | 
| 
      
 35 
     | 
    
         
            +
                "frontends/default/views/on_batch_create.js.rjs",
         
     | 
| 
       31 
36 
     | 
    
         
             
                "frontends/default/views/on_batch_update.js.rjs",
         
     | 
| 
       32 
37 
     | 
    
         
             
                "init.rb",
         
     | 
| 
       33 
38 
     | 
    
         
             
                "lib/active_scaffold/actions/batch_base.rb",
         
     | 
| 
      
 39 
     | 
    
         
            +
                "lib/active_scaffold/actions/batch_create.rb",
         
     | 
| 
       34 
40 
     | 
    
         
             
                "lib/active_scaffold/actions/batch_destroy.rb",
         
     | 
| 
       35 
41 
     | 
    
         
             
                "lib/active_scaffold/actions/batch_update.rb",
         
     | 
| 
       36 
42 
     | 
    
         
             
                "lib/active_scaffold/config/batch_base.rb",
         
     | 
| 
      
 43 
     | 
    
         
            +
                "lib/active_scaffold/config/batch_create.rb",
         
     | 
| 
       37 
44 
     | 
    
         
             
                "lib/active_scaffold/config/batch_destroy.rb",
         
     | 
| 
       38 
45 
     | 
    
         
             
                "lib/active_scaffold/config/batch_update.rb",
         
     | 
| 
      
 46 
     | 
    
         
            +
                "lib/active_scaffold/helpers/batch_create_column_helpers.rb",
         
     | 
| 
       39 
47 
     | 
    
         
             
                "lib/active_scaffold/helpers/calendar_date_select_update_column_helpers.rb",
         
     | 
| 
       40 
48 
     | 
    
         
             
                "lib/active_scaffold/helpers/datepicker_update_column_helpers.rb",
         
     | 
| 
       41 
49 
     | 
    
         
             
                "lib/active_scaffold/helpers/update_column_helpers.rb",
         
     | 
| 
       42 
50 
     | 
    
         
             
                "lib/active_scaffold_batch.rb",
         
     | 
| 
       43 
51 
     | 
    
         
             
                "lib/active_scaffold_batch/config/core.rb",
         
     | 
| 
      
 52 
     | 
    
         
            +
                "lib/active_scaffold_batch/locale/de.yml",
         
     | 
| 
      
 53 
     | 
    
         
            +
                "lib/active_scaffold_batch/locale/en.yml",
         
     | 
| 
       44 
54 
     | 
    
         
             
                "lib/active_scaffold_batch/version.rb",
         
     | 
| 
       45 
55 
     | 
    
         
             
                "lib/active_scaffold_batch_vho.rb",
         
     | 
| 
       46 
56 
     | 
    
         
             
                "uninstall.rb"
         
     | 
| 
         @@ -60,20 +70,20 @@ Gem::Specification.new do |s| 
     | 
|
| 
       60 
70 
     | 
    
         
             
                  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
         
     | 
| 
       61 
71 
     | 
    
         
             
                  s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
         
     | 
| 
       62 
72 
     | 
    
         
             
                  s.add_development_dependency(%q<rcov>, [">= 0"])
         
     | 
| 
       63 
     | 
    
         
            -
                  s.add_runtime_dependency(%q<active_scaffold_vho>, [" 
     | 
| 
      
 73 
     | 
    
         
            +
                  s.add_runtime_dependency(%q<active_scaffold_vho>, ["> 3.0.12"])
         
     | 
| 
       64 
74 
     | 
    
         
             
                else
         
     | 
| 
       65 
75 
     | 
    
         
             
                  s.add_dependency(%q<shoulda>, [">= 0"])
         
     | 
| 
       66 
76 
     | 
    
         
             
                  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
         
     | 
| 
       67 
77 
     | 
    
         
             
                  s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
         
     | 
| 
       68 
78 
     | 
    
         
             
                  s.add_dependency(%q<rcov>, [">= 0"])
         
     | 
| 
       69 
     | 
    
         
            -
                  s.add_dependency(%q<active_scaffold_vho>, [" 
     | 
| 
      
 79 
     | 
    
         
            +
                  s.add_dependency(%q<active_scaffold_vho>, ["> 3.0.12"])
         
     | 
| 
       70 
80 
     | 
    
         
             
                end
         
     | 
| 
       71 
81 
     | 
    
         
             
              else
         
     | 
| 
       72 
82 
     | 
    
         
             
                s.add_dependency(%q<shoulda>, [">= 0"])
         
     | 
| 
       73 
83 
     | 
    
         
             
                s.add_dependency(%q<bundler>, ["~> 1.0.0"])
         
     | 
| 
       74 
84 
     | 
    
         
             
                s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
         
     | 
| 
       75 
85 
     | 
    
         
             
                s.add_dependency(%q<rcov>, [">= 0"])
         
     | 
| 
       76 
     | 
    
         
            -
                s.add_dependency(%q<active_scaffold_vho>, [" 
     | 
| 
      
 86 
     | 
    
         
            +
                s.add_dependency(%q<active_scaffold_vho>, ["> 3.0.12"])
         
     | 
| 
       77 
87 
     | 
    
         
             
              end
         
     | 
| 
       78 
88 
     | 
    
         
             
            end
         
     | 
| 
       79 
89 
     | 
    
         | 
| 
         @@ -0,0 +1,7 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <%= render :partial => "base_form", :locals => {:xhr => xhr ||= nil,
         
     | 
| 
      
 2 
     | 
    
         
            +
                                                            :form_action => form_action ||= :batch_create,
         
     | 
| 
      
 3 
     | 
    
         
            +
                                                            :method => method ||= :post,
         
     | 
| 
      
 4 
     | 
    
         
            +
                                                            :cancel_link => cancel_link ||= true,
         
     | 
| 
      
 5 
     | 
    
         
            +
                                                            :body_partial => 'batch_create_form_body',
         
     | 
| 
      
 6 
     | 
    
         
            +
                                                            :headline => headline ||= active_scaffold_config.batch_create.label} %>
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
         @@ -0,0 +1,19 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <% scope ||= nil %>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <dl>
         
     | 
| 
      
 3 
     | 
    
         
            +
              <dt>
         
     | 
| 
      
 4 
     | 
    
         
            +
                <label for="<%= active_scaffold_input_options(column, scope)[:id] %>"><%= column.label %></label>
         
     | 
| 
      
 5 
     | 
    
         
            +
              </dt>
         
     | 
| 
      
 6 
     | 
    
         
            +
              <dd>
         
     | 
| 
      
 7 
     | 
    
         
            +
                <% if column.name == batch_create_by_column %>
         
     | 
| 
      
 8 
     | 
    
         
            +
                  <%= active_scaffold_batch_create_by_column column, scope %>
         
     | 
| 
      
 9 
     | 
    
         
            +
                <% else %>
         
     | 
| 
      
 10 
     | 
    
         
            +
                  <%= active_scaffold_input_for column, scope %>
         
     | 
| 
      
 11 
     | 
    
         
            +
                  <% if column.update_columns -%>
         
     | 
| 
      
 12 
     | 
    
         
            +
                    <%= loading_indicator_tag(:action => :render_field, :id => params[:id]) %>
         
     | 
| 
      
 13 
     | 
    
         
            +
                  <% end -%>
         
     | 
| 
      
 14 
     | 
    
         
            +
                <% end %>
         
     | 
| 
      
 15 
     | 
    
         
            +
                <% if column.description -%>
         
     | 
| 
      
 16 
     | 
    
         
            +
                  <span class="description"><%= column.description %></span>
         
     | 
| 
      
 17 
     | 
    
         
            +
                <% end -%>
         
     | 
| 
      
 18 
     | 
    
         
            +
              </dd>
         
     | 
| 
      
 19 
     | 
    
         
            +
            </dl>
         
     | 
| 
         @@ -0,0 +1,25 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <% subsection_id ||= nil %>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <ol class="form" <%= "id=#{subsection_id}" unless subsection_id.nil? %>  <%= 'style="display: none;"' if columns.collapsed -%>>
         
     | 
| 
      
 3 
     | 
    
         
            +
              <li class="form-element">
         
     | 
| 
      
 4 
     | 
    
         
            +
                <%= hidden_field_tag("batch_scope", (batch_scope || 'LISTED')) %>
         
     | 
| 
      
 5 
     | 
    
         
            +
              </li>
         
     | 
| 
      
 6 
     | 
    
         
            +
              <% columns.each :for => @record do |column| %>
         
     | 
| 
      
 7 
     | 
    
         
            +
              <% next if column.plural_association? || (column.association && [:has_one].include?(column.association.macro)) %>
         
     | 
| 
      
 8 
     | 
    
         
            +
              <% renders_as = column_renders_as(column) %>
         
     | 
| 
      
 9 
     | 
    
         
            +
              <% if renders_as == :subsection -%>
         
     | 
| 
      
 10 
     | 
    
         
            +
                <% subsection_id = sub_section_id(:sub_section => column.label) %>
         
     | 
| 
      
 11 
     | 
    
         
            +
              <li class="sub-section">
         
     | 
| 
      
 12 
     | 
    
         
            +
                <h5><%= column.label %></h5>
         
     | 
| 
      
 13 
     | 
    
         
            +
                <%= render :partial => 'form', :locals => { :columns => column, :subsection_id => subsection_id} %>
         
     | 
| 
      
 14 
     | 
    
         
            +
                <%= link_to_visibility_toggle(subsection_id, {:default_visible => !column.collapsed}) -%>
         
     | 
| 
      
 15 
     | 
    
         
            +
              </li>
         
     | 
| 
      
 16 
     | 
    
         
            +
              <% elsif column.readonly_association?
         
     | 
| 
      
 17 
     | 
    
         
            +
                next %>
         
     | 
| 
      
 18 
     | 
    
         
            +
              <% else
         
     | 
| 
      
 19 
     | 
    
         
            +
                renders_as = :field if renders_as == :subform -%>
         
     | 
| 
      
 20 
     | 
    
         
            +
              <li class="form-element <%= column.css_class unless column.css_class.nil? %>">
         
     | 
| 
      
 21 
     | 
    
         
            +
                <%= render :partial => 'batch_create_form_attribute', :locals => { :column => column } -%>
         
     | 
| 
      
 22 
     | 
    
         
            +
              </li>
         
     | 
| 
      
 23 
     | 
    
         
            +
              <% end -%>
         
     | 
| 
      
 24 
     | 
    
         
            +
              <% end -%>
         
     | 
| 
      
 25 
     | 
    
         
            +
            </ol>
         
     | 
| 
         @@ -1,9 +1,14 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            <% scope ||= nil 
     | 
| 
      
 1 
     | 
    
         
            +
            <% scope ||= nil
         
     | 
| 
      
 2 
     | 
    
         
            +
              scope_select_options = active_scaffold_update_scope_select_options %>
         
     | 
| 
      
 3 
     | 
    
         
            +
            <% if scope_select_options.length < 2 %>
         
     | 
| 
      
 4 
     | 
    
         
            +
              <%= active_scaffold_update_scope_select(scope_select_options) %>
         
     | 
| 
      
 5 
     | 
    
         
            +
            <% else %>
         
     | 
| 
       2 
6 
     | 
    
         
             
            <dl>
         
     | 
| 
       3 
7 
     | 
    
         
             
              <dt>
         
     | 
| 
       4 
8 
     | 
    
         
             
                <label for="record_batch_scope"><%= as_(:records) %></label>
         
     | 
| 
       5 
9 
     | 
    
         
             
              </dt>
         
     | 
| 
       6 
10 
     | 
    
         
             
              <dd>
         
     | 
| 
       7 
     | 
    
         
            -
                <%= active_scaffold_update_scope_select %>
         
     | 
| 
      
 11 
     | 
    
         
            +
                <%= active_scaffold_update_scope_select(scope_select_options) %>
         
     | 
| 
       8 
12 
     | 
    
         
             
              </dd>
         
     | 
| 
       9 
     | 
    
         
            -
            </dl>
         
     | 
| 
      
 13 
     | 
    
         
            +
            </dl>
         
     | 
| 
      
 14 
     | 
    
         
            +
            <% end %>
         
     | 
| 
         @@ -0,0 +1,19 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            form_selector = "#{element_form_id(:action => :batch_create)}"
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            if controller.send :batch_successful?
         
     | 
| 
      
 4 
     | 
    
         
            +
              called_by_controller = params.delete(:batch_create_by)
         
     | 
| 
      
 5 
     | 
    
         
            +
              if called_by_controller.nil?
         
     | 
| 
      
 6 
     | 
    
         
            +
                page.call 'ActiveScaffold.replace_html', active_scaffold_content_id, render(:partial => 'list', :layout => false)
         
     | 
| 
      
 7 
     | 
    
         
            +
              else
         
     | 
| 
      
 8 
     | 
    
         
            +
                options = {:checked => false,
         
     | 
| 
      
 9 
     | 
    
         
            +
                           :include_mark_all => false}
         
     | 
| 
      
 10 
     | 
    
         
            +
                tbody_id = "#{controller_id(called_by_controller)}-tbody"
         
     | 
| 
      
 11 
     | 
    
         
            +
                page << "ActiveScaffold.mark_records('#{tbody_id}', #{options.to_json});"
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
              page << "ActiveScaffold.find_action_link('#{form_selector}').close();"
         
     | 
| 
      
 14 
     | 
    
         
            +
            else
         
     | 
| 
      
 15 
     | 
    
         
            +
              page << "ActiveScaffold.find_action_link('#{form_selector}').update_flash_messages('#{escape_javascript(render(:partial => 'messages').strip)}');"
         
     | 
| 
      
 16 
     | 
    
         
            +
              page.call 'ActiveScaffold.replace', form_selector, render(:partial => 'batch_create_form', :locals => {:xhr => true})
         
     | 
| 
      
 17 
     | 
    
         
            +
              page.call 'ActiveScaffold.scroll_to', form_selector
         
     | 
| 
      
 18 
     | 
    
         
            +
              #have to uncheck successfully created marked_records
         
     | 
| 
      
 19 
     | 
    
         
            +
            end
         
     | 
    
        data/init.rb
    CHANGED
    
    | 
         @@ -1,9 +1,17 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            ACTIVE_SCAFFOLD_BATCH_INSTALLED = :plugin
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
1 
     | 
    
         
             
            require 'active_scaffold_batch'
         
     | 
| 
       4 
2 
     | 
    
         | 
| 
       5 
3 
     | 
    
         
             
            begin
         
     | 
| 
       6 
4 
     | 
    
         
             
              ActiveScaffoldAssets.copy_to_public(ActiveScaffoldBatch.root)
         
     | 
| 
       7 
5 
     | 
    
         
             
            rescue
         
     | 
| 
       8 
6 
     | 
    
         
             
              raise $! unless Rails.env == 'production'
         
     | 
| 
      
 7 
     | 
    
         
            +
            end
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            ActionView::Base.class_eval do
         
     | 
| 
      
 10 
     | 
    
         
            +
              include ActiveScaffold::Helpers::UpdateColumnHelpers
         
     | 
| 
      
 11 
     | 
    
         
            +
              if ActiveScaffold.js_framework == :jquery
         
     | 
| 
      
 12 
     | 
    
         
            +
                include ActiveScaffold::Helpers::DatepickerUpdateColumnHelpers
         
     | 
| 
      
 13 
     | 
    
         
            +
              elsif ActiveScaffold.js_framework == :prototype
         
     | 
| 
      
 14 
     | 
    
         
            +
                include ActiveScaffold::Helpers::CalendarDateSelectUpdateColumnHelpers
         
     | 
| 
      
 15 
     | 
    
         
            +
              end
         
     | 
| 
      
 16 
     | 
    
         
            +
              include ActiveScaffold::Helpers::BatchCreateColumnHelpers
         
     | 
| 
       9 
17 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,198 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module ActiveScaffold::Actions
         
     | 
| 
      
 2 
     | 
    
         
            +
              module BatchCreate
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
                def self.included(base)
         
     | 
| 
      
 5 
     | 
    
         
            +
                  base.before_filter :batch_create_authorized_filter, :only => [:batch_new, :batch_create]
         
     | 
| 
      
 6 
     | 
    
         
            +
                  base.verify :method => [:post, :put],
         
     | 
| 
      
 7 
     | 
    
         
            +
                              :only => :batch_create,
         
     | 
| 
      
 8 
     | 
    
         
            +
                              :redirect_to => { :action => :index }
         
     | 
| 
      
 9 
     | 
    
         
            +
                  base.helper_method :batch_create_values
         
     | 
| 
      
 10 
     | 
    
         
            +
                  base.helper_method :batch_create_by_column
         
     | 
| 
      
 11 
     | 
    
         
            +
                  base.helper_method :batch_create_by_records
         
     | 
| 
      
 12 
     | 
    
         
            +
                end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                def batch_new
         
     | 
| 
      
 15 
     | 
    
         
            +
                  do_batch_new
         
     | 
| 
      
 16 
     | 
    
         
            +
                  respond_to_action(:batch_new)
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                def batch_create
         
     | 
| 
      
 20 
     | 
    
         
            +
                  batch_action
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                
         
     | 
| 
      
 24 
     | 
    
         
            +
                protected
         
     | 
| 
      
 25 
     | 
    
         
            +
                def batch_new_respond_to_html
         
     | 
| 
      
 26 
     | 
    
         
            +
                  if batch_successful?
         
     | 
| 
      
 27 
     | 
    
         
            +
                    render(:action => 'batch_create')
         
     | 
| 
      
 28 
     | 
    
         
            +
                  else
         
     | 
| 
      
 29 
     | 
    
         
            +
                    return_to_main
         
     | 
| 
      
 30 
     | 
    
         
            +
                  end
         
     | 
| 
      
 31 
     | 
    
         
            +
                end
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                def batch_new_respond_to_js
         
     | 
| 
      
 34 
     | 
    
         
            +
                  render(:partial => 'batch_create_form')
         
     | 
| 
      
 35 
     | 
    
         
            +
                end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                def batch_create_values
         
     | 
| 
      
 38 
     | 
    
         
            +
                  @batch_create_values || {}
         
     | 
| 
      
 39 
     | 
    
         
            +
                end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                def batch_create_by_records
         
     | 
| 
      
 42 
     | 
    
         
            +
                  @batch_create_by_records || []
         
     | 
| 
      
 43 
     | 
    
         
            +
                end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                def batch_create_respond_to_html
         
     | 
| 
      
 46 
     | 
    
         
            +
                  if params[:iframe]=='true' # was this an iframe post ?
         
     | 
| 
      
 47 
     | 
    
         
            +
                    responds_to_parent do
         
     | 
| 
      
 48 
     | 
    
         
            +
                      render :action => 'on_batch_create.js', :layout => false
         
     | 
| 
      
 49 
     | 
    
         
            +
                    end
         
     | 
| 
      
 50 
     | 
    
         
            +
                  else # just a regular post
         
     | 
| 
      
 51 
     | 
    
         
            +
                    if batch_successful?
         
     | 
| 
      
 52 
     | 
    
         
            +
                      flash[:info] = as_(:created_model, :model => @record.to_label)
         
     | 
| 
      
 53 
     | 
    
         
            +
                      return_to_main
         
     | 
| 
      
 54 
     | 
    
         
            +
                    else
         
     | 
| 
      
 55 
     | 
    
         
            +
                      render(:action => 'batch_create')
         
     | 
| 
      
 56 
     | 
    
         
            +
                    end
         
     | 
| 
      
 57 
     | 
    
         
            +
                  end
         
     | 
| 
      
 58 
     | 
    
         
            +
                end
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
                def batch_create_respond_to_js
         
     | 
| 
      
 61 
     | 
    
         
            +
                  render :action => 'on_batch_create'
         
     | 
| 
      
 62 
     | 
    
         
            +
                end
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
                def do_batch_new
         
     | 
| 
      
 65 
     | 
    
         
            +
                  self.successful = true
         
     | 
| 
      
 66 
     | 
    
         
            +
                  do_new
         
     | 
| 
      
 67 
     | 
    
         
            +
                  if marked_records_parent
         
     | 
| 
      
 68 
     | 
    
         
            +
                    batch_scope # that s a dummy call to remove batch_scope parameter
         
     | 
| 
      
 69 
     | 
    
         
            +
                    column = active_scaffold_config.columns[batch_create_by_column.to_sym]
         
     | 
| 
      
 70 
     | 
    
         
            +
                    @batch_create_by_records = column_plural_assocation_value_from_value(column, marked_records_parent)
         
     | 
| 
      
 71 
     | 
    
         
            +
                  end
         
     | 
| 
      
 72 
     | 
    
         
            +
                end
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
                def marked_records_parent
         
     | 
| 
      
 75 
     | 
    
         
            +
                  if params[:batch_create_by]
         
     | 
| 
      
 76 
     | 
    
         
            +
                    session_parent = active_scaffold_session_storage(params[:batch_create_by])
         
     | 
| 
      
 77 
     | 
    
         
            +
                    @marked_records_parent = session_parent[:marked_records] || Set.new
         
     | 
| 
      
 78 
     | 
    
         
            +
                  else
         
     | 
| 
      
 79 
     | 
    
         
            +
                    @marked_records_parent = false
         
     | 
| 
      
 80 
     | 
    
         
            +
                  end if @marked_records_parent.nil?
         
     | 
| 
      
 81 
     | 
    
         
            +
                  @marked_records_parent
         
     | 
| 
      
 82 
     | 
    
         
            +
                end
         
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
      
 84 
     | 
    
         
            +
                def before_do_batch_create
         
     | 
| 
      
 85 
     | 
    
         
            +
                  create_columns = active_scaffold_config.batch_create.columns
         
     | 
| 
      
 86 
     | 
    
         
            +
                  @batch_create_values = attribute_values_from_params(create_columns, params[:record])
         
     | 
| 
      
 87 
     | 
    
         
            +
                end
         
     | 
| 
      
 88 
     | 
    
         
            +
             
     | 
| 
      
 89 
     | 
    
         
            +
                # in case of an error we have to prepare @record object to have assigned all
         
     | 
| 
      
 90 
     | 
    
         
            +
                # defined batch_update values, however, do not set those ones with an override
         
     | 
| 
      
 91 
     | 
    
         
            +
                # these ones will manage on their own
         
     | 
| 
      
 92 
     | 
    
         
            +
                def prepare_error_record
         
     | 
| 
      
 93 
     | 
    
         
            +
                  do_new
         
     | 
| 
      
 94 
     | 
    
         
            +
                  batch_create_values.each do |attribute, value|
         
     | 
| 
      
 95 
     | 
    
         
            +
                    form_ui = colunm_form_ui(value[:column])
         
     | 
| 
      
 96 
     | 
    
         
            +
                    set_record_attribute(value[:column], attribute, value[:value]) unless form_ui && override_batch_create_value?(form_ui)
         
     | 
| 
      
 97 
     | 
    
         
            +
                  end
         
     | 
| 
      
 98 
     | 
    
         
            +
                end
         
     | 
| 
      
 99 
     | 
    
         
            +
             
     | 
| 
      
 100 
     | 
    
         
            +
                def batch_create_listed
         
     | 
| 
      
 101 
     | 
    
         
            +
                  case active_scaffold_config.batch_create.process_mode
         
     | 
| 
      
 102 
     | 
    
         
            +
                  when :create then
         
     | 
| 
      
 103 
     | 
    
         
            +
                    batch_create_by_records.each {|batch_record| create_record(batch_record)}
         
     | 
| 
      
 104 
     | 
    
         
            +
                  else
         
     | 
| 
      
 105 
     | 
    
         
            +
                    Rails.logger.error("Unknown process_mode: #{active_scaffold_config.batch_create.process_mode} for action batch_create")
         
     | 
| 
      
 106 
     | 
    
         
            +
                  end
         
     | 
| 
      
 107 
     | 
    
         
            +
                end
         
     | 
| 
      
 108 
     | 
    
         
            +
             
     | 
| 
      
 109 
     | 
    
         
            +
                def batch_create_marked
         
     | 
| 
      
 110 
     | 
    
         
            +
                  case active_scaffold_config.batch_create.process_mode
         
     | 
| 
      
 111 
     | 
    
         
            +
                  when :create then
         
     | 
| 
      
 112 
     | 
    
         
            +
                    batch_create_by_records.each do |by_record|
         
     | 
| 
      
 113 
     | 
    
         
            +
                      create_record(by_record)
         
     | 
| 
      
 114 
     | 
    
         
            +
                    end
         
     | 
| 
      
 115 
     | 
    
         
            +
                  else
         
     | 
| 
      
 116 
     | 
    
         
            +
                    Rails.logger.error("Unknown process_mode: #{active_scaffold_config.batch_create.process_mode} for action batch_create")
         
     | 
| 
      
 117 
     | 
    
         
            +
                  end
         
     | 
| 
      
 118 
     | 
    
         
            +
                end
         
     | 
| 
      
 119 
     | 
    
         
            +
             
     | 
| 
      
 120 
     | 
    
         
            +
                def create_record(batch_record)
         
     | 
| 
      
 121 
     | 
    
         
            +
                  @successful = nil
         
     | 
| 
      
 122 
     | 
    
         
            +
                  @record = new_model
         
     | 
| 
      
 123 
     | 
    
         
            +
                  @record.send("#{batch_create_by_column.to_s}=", batch_record)
         
     | 
| 
      
 124 
     | 
    
         
            +
                  batch_create_values.each do |attribute, value|
         
     | 
| 
      
 125 
     | 
    
         
            +
                    set_record_attribute(value[:column], attribute, value[:value])
         
     | 
| 
      
 126 
     | 
    
         
            +
                  end
         
     | 
| 
      
 127 
     | 
    
         
            +
             
     | 
| 
      
 128 
     | 
    
         
            +
                  if authorized_for_job?(@record)
         
     | 
| 
      
 129 
     | 
    
         
            +
                    create_save
         
     | 
| 
      
 130 
     | 
    
         
            +
                    if successful?
         
     | 
| 
      
 131 
     | 
    
         
            +
                      marked_records_parent.delete(batch_record.id) if batch_scope == 'MARKED' && marked_records_parent
         
     | 
| 
      
 132 
     | 
    
         
            +
                    else
         
     | 
| 
      
 133 
     | 
    
         
            +
                      error_records << @record
         
     | 
| 
      
 134 
     | 
    
         
            +
                    end
         
     | 
| 
      
 135 
     | 
    
         
            +
                  end
         
     | 
| 
      
 136 
     | 
    
         
            +
                end
         
     | 
| 
      
 137 
     | 
    
         
            +
             
     | 
| 
      
 138 
     | 
    
         
            +
                def set_record_attribute(column, attribute, value)
         
     | 
| 
      
 139 
     | 
    
         
            +
                  form_ui = colunm_form_ui(column)
         
     | 
| 
      
 140 
     | 
    
         
            +
                  if form_ui && override_batch_create_value?(form_ui)
         
     | 
| 
      
 141 
     | 
    
         
            +
                    @record.send("#{attribute}=", send(override_batch_create_value(form_ui), column, @record, value))
         
     | 
| 
      
 142 
     | 
    
         
            +
                  else
         
     | 
| 
      
 143 
     | 
    
         
            +
                    @record.send("#{attribute}=", value)
         
     | 
| 
      
 144 
     | 
    
         
            +
                  end
         
     | 
| 
      
 145 
     | 
    
         
            +
                end
         
     | 
| 
      
 146 
     | 
    
         
            +
             
     | 
| 
      
 147 
     | 
    
         
            +
                def colunm_form_ui(column)
         
     | 
| 
      
 148 
     | 
    
         
            +
                  form_ui = column.form_ui
         
     | 
| 
      
 149 
     | 
    
         
            +
                  form_ui = column.column.type if form_ui.nil? && column.column
         
     | 
| 
      
 150 
     | 
    
         
            +
                end
         
     | 
| 
      
 151 
     | 
    
         
            +
             
     | 
| 
      
 152 
     | 
    
         
            +
                def batch_create_by_column
         
     | 
| 
      
 153 
     | 
    
         
            +
                  active_scaffold_config.batch_create.default_batch_by_column
         
     | 
| 
      
 154 
     | 
    
         
            +
                end
         
     | 
| 
      
 155 
     | 
    
         
            +
             
     | 
| 
      
 156 
     | 
    
         
            +
             
     | 
| 
      
 157 
     | 
    
         
            +
                def attribute_values_from_params(columns, attributes)
         
     | 
| 
      
 158 
     | 
    
         
            +
                  values = {}
         
     | 
| 
      
 159 
     | 
    
         
            +
                  columns.each :for => active_scaffold_config.model.new, :crud_type => :create, :flatten => true do |column|
         
     | 
| 
      
 160 
     | 
    
         
            +
                    if batch_create_by_column == column.name
         
     | 
| 
      
 161 
     | 
    
         
            +
                      @batch_create_by_records = column_plural_assocation_value_from_value(column, attributes[column.name])
         
     | 
| 
      
 162 
     | 
    
         
            +
                    else
         
     | 
| 
      
 163 
     | 
    
         
            +
                      values[column.name] = {:column => column, :value => column_value_from_param_value(nil, column, attributes[column.name])}
         
     | 
| 
      
 164 
     | 
    
         
            +
                    end if attributes.has_key?(column.name)
         
     | 
| 
      
 165 
     | 
    
         
            +
                  end
         
     | 
| 
      
 166 
     | 
    
         
            +
                  values
         
     | 
| 
      
 167 
     | 
    
         
            +
                end
         
     | 
| 
      
 168 
     | 
    
         
            +
             
     | 
| 
      
 169 
     | 
    
         
            +
                
         
     | 
| 
      
 170 
     | 
    
         
            +
                # The default security delegates to ActiveRecordPermissions.
         
     | 
| 
      
 171 
     | 
    
         
            +
                # You may override the method to customize.
         
     | 
| 
      
 172 
     | 
    
         
            +
                def batch_create_authorized?(record = nil)
         
     | 
| 
      
 173 
     | 
    
         
            +
                  authorized_for?(:crud_type => :create)
         
     | 
| 
      
 174 
     | 
    
         
            +
                end
         
     | 
| 
      
 175 
     | 
    
         
            +
             
     | 
| 
      
 176 
     | 
    
         
            +
                def batch_create_ignore?(record = nil)
         
     | 
| 
      
 177 
     | 
    
         
            +
                  false
         
     | 
| 
      
 178 
     | 
    
         
            +
                end
         
     | 
| 
      
 179 
     | 
    
         
            +
             
     | 
| 
      
 180 
     | 
    
         
            +
                def override_batch_create_value?(form_ui)
         
     | 
| 
      
 181 
     | 
    
         
            +
                  respond_to?(override_batch_create_value(form_ui))
         
     | 
| 
      
 182 
     | 
    
         
            +
                end
         
     | 
| 
      
 183 
     | 
    
         
            +
             
     | 
| 
      
 184 
     | 
    
         
            +
                def override_batch_create_value(form_ui)
         
     | 
| 
      
 185 
     | 
    
         
            +
                  "batch_create_value_for_#{form_ui}"
         
     | 
| 
      
 186 
     | 
    
         
            +
                end
         
     | 
| 
      
 187 
     | 
    
         
            +
             
     | 
| 
      
 188 
     | 
    
         
            +
                private
         
     | 
| 
      
 189 
     | 
    
         
            +
             
     | 
| 
      
 190 
     | 
    
         
            +
                def batch_create_authorized_filter
         
     | 
| 
      
 191 
     | 
    
         
            +
                  link = active_scaffold_config.batch_create.link || active_scaffold_config.batch_create.class.link
         
     | 
| 
      
 192 
     | 
    
         
            +
                  raise ActiveScaffold::ActionNotAllowed unless self.send(link.security_method)
         
     | 
| 
      
 193 
     | 
    
         
            +
                end
         
     | 
| 
      
 194 
     | 
    
         
            +
                def batch_new_formats
         
     | 
| 
      
 195 
     | 
    
         
            +
                  (default_formats + active_scaffold_config.formats).uniq
         
     | 
| 
      
 196 
     | 
    
         
            +
                end
         
     | 
| 
      
 197 
     | 
    
         
            +
              end
         
     | 
| 
      
 198 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -219,6 +219,10 @@ module ActiveScaffold::Actions 
     | 
|
| 
       219 
219 
     | 
    
         
             
                  authorized_for?(:crud_type => :update)
         
     | 
| 
       220 
220 
     | 
    
         
             
                end
         
     | 
| 
       221 
221 
     | 
    
         | 
| 
      
 222 
     | 
    
         
            +
                def batch_update_ignore?(record = nil)
         
     | 
| 
      
 223 
     | 
    
         
            +
                  false
         
     | 
| 
      
 224 
     | 
    
         
            +
                end
         
     | 
| 
      
 225 
     | 
    
         
            +
             
     | 
| 
       222 
226 
     | 
    
         
             
                def batch_update_value_for_numeric(column, record, calculation_info)
         
     | 
| 
       223 
227 
     | 
    
         
             
                  current_value = record.send(column.name)
         
     | 
| 
       224 
228 
     | 
    
         
             
                  if ActiveScaffold::Actions::BatchUpdate::GenericOperators.include?(calculation_info[:operator]) || ActiveScaffold::Actions::BatchUpdate::NumericOperators.include?(calculation_info[:operator])
         
     | 
| 
         @@ -0,0 +1,57 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module ActiveScaffold::Config
         
     | 
| 
      
 2 
     | 
    
         
            +
              class BatchCreate < ActiveScaffold::Config::Form
         
     | 
| 
      
 3 
     | 
    
         
            +
                self.crud_type = :create
         
     | 
| 
      
 4 
     | 
    
         
            +
                def initialize(*args)
         
     | 
| 
      
 5 
     | 
    
         
            +
                  super
         
     | 
| 
      
 6 
     | 
    
         
            +
                  @process_mode = self.class.process_mode
         
     | 
| 
      
 7 
     | 
    
         
            +
                  @action_group ||= 'collection.batch'
         
     | 
| 
      
 8 
     | 
    
         
            +
                  @list_mode_enabled = self.class.list_mode_enabled
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                # global level configuration
         
     | 
| 
      
 12 
     | 
    
         
            +
                # --------------------------
         
     | 
| 
      
 13 
     | 
    
         
            +
                # the ActionLink for this action
         
     | 
| 
      
 14 
     | 
    
         
            +
                def self.link
         
     | 
| 
      
 15 
     | 
    
         
            +
                  @@link
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
                def self.link=(val)
         
     | 
| 
      
 18 
     | 
    
         
            +
                  @@link = val
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
                @@link = ActiveScaffold::DataStructures::ActionLink.new('batch_new', :label => :create, :type => :collection, :security_method => :batch_create_authorized?, :ignore_method => :batch_create_ignore?)
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                # configures where the plugin itself is located. there is no instance version of this.
         
     | 
| 
      
 23 
     | 
    
         
            +
                cattr_accessor :plugin_directory
         
     | 
| 
      
 24 
     | 
    
         
            +
                @@plugin_directory = File.expand_path(__FILE__).match(%{(^.*)/lib/active_scaffold/config/batch_create.rb})[1]
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                # configures how batch create should be processed
         
     | 
| 
      
 27 
     | 
    
         
            +
                # :create => standard activerecord create including validations
         
     | 
| 
      
 28 
     | 
    
         
            +
                cattr_accessor :process_mode
         
     | 
| 
      
 29 
     | 
    
         
            +
                @@process_mode = :create
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                # you may update all records in list view or all marked records
         
     | 
| 
      
 32 
     | 
    
         
            +
                # you might disable list mode with this switch if you think it is
         
     | 
| 
      
 33 
     | 
    
         
            +
                # too "dangerous"
         
     | 
| 
      
 34 
     | 
    
         
            +
                cattr_accessor :list_mode_enabled
         
     | 
| 
      
 35 
     | 
    
         
            +
                @@list_mode_enabled = true
         
     | 
| 
      
 36 
     | 
    
         
            +
                # instance-level configuration
         
     | 
| 
      
 37 
     | 
    
         
            +
                # ----------------------------
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                # see class accessor
         
     | 
| 
      
 40 
     | 
    
         
            +
                attr_accessor :process_mode
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
                attr_accessor :list_mode_enabled
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                # you may use create_batch to create a record for each record
         
     | 
| 
      
 45 
     | 
    
         
            +
                # of a belong_to association (reverse must be has_many)
         
     | 
| 
      
 46 
     | 
    
         
            +
                # eg. player belongs to team
         
     | 
| 
      
 47 
     | 
    
         
            +
                # you may batch create a player records for a list of teams
         
     | 
| 
      
 48 
     | 
    
         
            +
                attr_accessor :default_batch_by_column
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                # the label= method already exists in the Form base class
         
     | 
| 
      
 52 
     | 
    
         
            +
                def label(model = nil)
         
     | 
| 
      
 53 
     | 
    
         
            +
                  model ||= @core.label(:count => 2)
         
     | 
| 
      
 54 
     | 
    
         
            +
                  @label ? as_(@label) : as_(:create_model, :model => model)
         
     | 
| 
      
 55 
     | 
    
         
            +
                end
         
     | 
| 
      
 56 
     | 
    
         
            +
              end
         
     | 
| 
      
 57 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -5,6 +5,7 @@ module ActiveScaffold::Config 
     | 
|
| 
       5 
5 
     | 
    
         
             
                  super
         
     | 
| 
       6 
6 
     | 
    
         
             
                  @process_mode = self.class.process_mode
         
     | 
| 
       7 
7 
     | 
    
         
             
                  @action_group ||= 'collection.batch'
         
     | 
| 
      
 8 
     | 
    
         
            +
                  @list_mode_enabled = self.class.list_mode_enabled
         
     | 
| 
       8 
9 
     | 
    
         
             
                end
         
     | 
| 
       9 
10 
     | 
    
         | 
| 
       10 
11 
     | 
    
         
             
                # global level configuration
         
     | 
| 
         @@ -16,7 +17,7 @@ module ActiveScaffold::Config 
     | 
|
| 
       16 
17 
     | 
    
         
             
                def self.link=(val)
         
     | 
| 
       17 
18 
     | 
    
         
             
                  @@link = val
         
     | 
| 
       18 
19 
     | 
    
         
             
                end
         
     | 
| 
       19 
     | 
    
         
            -
                @@link = ActiveScaffold::DataStructures::ActionLink.new('batch_edit', :label => :edit, :type => :collection, :security_method => :batch_update_authorized?)
         
     | 
| 
      
 20 
     | 
    
         
            +
                @@link = ActiveScaffold::DataStructures::ActionLink.new('batch_edit', :label => :edit, :type => :collection, :security_method => :batch_update_authorized?, :ignore_method => :batch_update_ignore?)
         
     | 
| 
       20 
21 
     | 
    
         | 
| 
       21 
22 
     | 
    
         
             
                # configures where the plugin itself is located. there is no instance version of this.
         
     | 
| 
       22 
23 
     | 
    
         
             
                cattr_accessor :plugin_directory
         
     | 
| 
         @@ -28,13 +29,19 @@ module ActiveScaffold::Config 
     | 
|
| 
       28 
29 
     | 
    
         
             
                cattr_accessor :process_mode
         
     | 
| 
       29 
30 
     | 
    
         
             
                @@process_mode = :update
         
     | 
| 
       30 
31 
     | 
    
         | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
      
 32 
     | 
    
         
            +
                # you may update all records in list view or all marked records
         
     | 
| 
      
 33 
     | 
    
         
            +
                # you might disable list mode with this switch if you think it is
         
     | 
| 
      
 34 
     | 
    
         
            +
                # too "dangerous"
         
     | 
| 
      
 35 
     | 
    
         
            +
                cattr_accessor :list_mode_enabled
         
     | 
| 
      
 36 
     | 
    
         
            +
                @@list_mode_enabled = true
         
     | 
| 
       32 
37 
     | 
    
         
             
                # instance-level configuration
         
     | 
| 
       33 
38 
     | 
    
         
             
                # ----------------------------
         
     | 
| 
       34 
39 
     | 
    
         | 
| 
       35 
40 
     | 
    
         
             
                # see class accessor
         
     | 
| 
       36 
41 
     | 
    
         
             
                attr_accessor :process_mode
         
     | 
| 
       37 
42 
     | 
    
         | 
| 
      
 43 
     | 
    
         
            +
                attr_accessor :list_mode_enabled
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
       38 
45 
     | 
    
         | 
| 
       39 
46 
     | 
    
         
             
                # the label= method already exists in the Form base class
         
     | 
| 
       40 
47 
     | 
    
         
             
                def label(model = nil)
         
     | 
| 
         @@ -0,0 +1,30 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module ActiveScaffold
         
     | 
| 
      
 2 
     | 
    
         
            +
              module Helpers
         
     | 
| 
      
 3 
     | 
    
         
            +
                # Helpers that assist with the rendering of a Form Column
         
     | 
| 
      
 4 
     | 
    
         
            +
                module BatchCreateColumnHelpers
         
     | 
| 
      
 5 
     | 
    
         
            +
                  # This method decides which input to use for the given column.
         
     | 
| 
      
 6 
     | 
    
         
            +
                  # It does not do any rendering. It only decides which method is responsible for rendering.
         
     | 
| 
      
 7 
     | 
    
         
            +
                  def active_scaffold_batch_create_by_column(column, scope = nil, options = {})
         
     | 
| 
      
 8 
     | 
    
         
            +
                    options = active_scaffold_input_options(column, scope, options)
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                    if column.form_ui == :record_select
         
     | 
| 
      
 11 
     | 
    
         
            +
                      active_scaffold_record_select(column, options, batch_create_by_records, true)
         
     | 
| 
      
 12 
     | 
    
         
            +
                    else
         
     | 
| 
      
 13 
     | 
    
         
            +
                      active_scaffold_batch_create_singular_association(column, options)
         
     | 
| 
      
 14 
     | 
    
         
            +
                    end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                  end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                  def active_scaffold_batch_create_singular_association(column, html_options)
         
     | 
| 
      
 19 
     | 
    
         
            +
                    associated_options = batch_create_by_records.collect {|r| r.id}
         
     | 
| 
      
 20 
     | 
    
         
            +
                    select_options = options_for_association(column.association)
         
     | 
| 
      
 21 
     | 
    
         
            +
                    html_options.update(column.options[:html_options] || {})
         
     | 
| 
      
 22 
     | 
    
         
            +
                    options = {}
         
     | 
| 
      
 23 
     | 
    
         
            +
                    options.update(column.options)
         
     | 
| 
      
 24 
     | 
    
         
            +
                    html_options[:name] = "#{html_options[:name]}[]" 
         
     | 
| 
      
 25 
     | 
    
         
            +
                    html_options[:multiple] = true
         
     | 
| 
      
 26 
     | 
    
         
            +
                    select_tag(column.name, options_for_select(select_options.uniq, associated_options), html_options)
         
     | 
| 
      
 27 
     | 
    
         
            +
                  end
         
     | 
| 
      
 28 
     | 
    
         
            +
                end
         
     | 
| 
      
 29 
     | 
    
         
            +
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -13,7 +13,7 @@ module ActiveScaffold 
     | 
|
| 
       13 
13 
     | 
    
         
             
                    # second, check if the dev has specified a valid form_ui for this column, using specific ui for searches
         
     | 
| 
       14 
14 
     | 
    
         
             
                    elsif column.form_ui and override_update?(column.form_ui)
         
     | 
| 
       15 
15 
     | 
    
         
             
                      send(override_update(column.form_ui), column, options)
         
     | 
| 
       16 
     | 
    
         
            -
                   elsif column.column  
     | 
| 
      
 16 
     | 
    
         
            +
                   elsif column.column && column.form_ui.nil? && override_update?(column.column.type)
         
     | 
| 
       17 
17 
     | 
    
         
             
                      send(override_update(column.column.type), column, options)
         
     | 
| 
       18 
18 
     | 
    
         
             
                    else
         
     | 
| 
       19 
19 
     | 
    
         
             
                      active_scaffold_update_generic_operators_select(column, options)<< ' ' << active_scaffold_render_input(column, options.merge(:name => "record[#{column.name}][value]"))
         
     | 
| 
         @@ -57,12 +57,21 @@ module ActiveScaffold 
     | 
|
| 
       57 
57 
     | 
    
         
             
                  alias_method :active_scaffold_update_decimal, :active_scaffold_update_numeric
         
     | 
| 
       58 
58 
     | 
    
         
             
                  alias_method :active_scaffold_update_float, :active_scaffold_update_numeric
         
     | 
| 
       59 
59 
     | 
    
         | 
| 
       60 
     | 
    
         
            -
                  def active_scaffold_update_scope_select
         
     | 
| 
       61 
     | 
    
         
            -
                    select_options  
     | 
| 
      
 60 
     | 
    
         
            +
                  def active_scaffold_update_scope_select(select_options = active_scaffold_update_scope_select_options)
         
     | 
| 
      
 61 
     | 
    
         
            +
                    if select_options.length > 1
         
     | 
| 
      
 62 
     | 
    
         
            +
                      select_tag("batch_scope",
         
     | 
| 
      
 63 
     | 
    
         
            +
                                 options_for_select(select_options, batch_scope || select_options.last[1]),
         
     | 
| 
      
 64 
     | 
    
         
            +
                                 :class => "text_input")
         
     | 
| 
      
 65 
     | 
    
         
            +
                    else
         
     | 
| 
      
 66 
     | 
    
         
            +
                      hidden_field_tag("batch_scope", select_options.first[1]) unless select_options.empty?
         
     | 
| 
      
 67 
     | 
    
         
            +
                    end
         
     | 
| 
      
 68 
     | 
    
         
            +
                  end
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
                  def active_scaffold_update_scope_select_options
         
     | 
| 
      
 71 
     | 
    
         
            +
                    select_options = []
         
     | 
| 
      
 72 
     | 
    
         
            +
                    select_options << [as_(:listed), 'LISTED'] if active_scaffold_config.batch_update.list_mode_enabled
         
     | 
| 
       62 
73 
     | 
    
         
             
                    select_options << [as_(:marked), 'MARKED'] if active_scaffold_config.actions.include?(:mark)
         
     | 
| 
       63 
     | 
    
         
            -
                     
     | 
| 
       64 
     | 
    
         
            -
                               options_for_select(select_options, batch_scope || select_options.last[1]),
         
     | 
| 
       65 
     | 
    
         
            -
                               :class => "text_input")
         
     | 
| 
      
 74 
     | 
    
         
            +
                    select_options
         
     | 
| 
       66 
75 
     | 
    
         
             
                  end
         
     | 
| 
       67 
76 
     | 
    
         | 
| 
       68 
77 
     | 
    
         
             
                  ##
         
     | 
| 
         @@ -2,6 +2,8 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            ActiveScaffold::Config::Core.class_eval do
         
     | 
| 
       3 
3 
     | 
    
         
             
              ActionDispatch::Routing::ACTIVE_SCAFFOLD_CORE_ROUTING[:collection][:batch_edit] = :get
         
     | 
| 
       4 
4 
     | 
    
         
             
              ActionDispatch::Routing::ACTIVE_SCAFFOLD_CORE_ROUTING[:collection][:batch_update] = :post
         
     | 
| 
      
 5 
     | 
    
         
            +
              ActionDispatch::Routing::ACTIVE_SCAFFOLD_CORE_ROUTING[:collection][:batch_new] = :get
         
     | 
| 
      
 6 
     | 
    
         
            +
              ActionDispatch::Routing::ACTIVE_SCAFFOLD_CORE_ROUTING[:collection][:batch_create] = :post
         
     | 
| 
       5 
7 
     | 
    
         
             
              #not working because routing picks show route instead
         
     | 
| 
       6 
8 
     | 
    
         
             
              #ActionDispatch::Routing::ACTIVE_SCAFFOLD_CORE_ROUTING[:collection][:batch_destroy] = :get
         
     | 
| 
       7 
9 
     | 
    
         
             
              #you may define a route for your controller before resource routes
         
     | 
| 
         @@ -2,7 +2,7 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            ActiveScaffold rescue throw "should have included ActiveScaffold plug in first.  Please make sure that this overwrite plugging comes alphabetically after the ActiveScaffold plug in"
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            # Load our overrides
         
     | 
| 
       5 
     | 
    
         
            -
            require " 
     | 
| 
      
 5 
     | 
    
         
            +
            require "active_scaffold_batch/config/core.rb"
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
            module ActiveScaffoldBatch
         
     | 
| 
       8 
8 
     | 
    
         
             
              def self.root
         
     | 
| 
         @@ -24,14 +24,7 @@ module ActiveScaffold 
     | 
|
| 
       24 
24 
     | 
    
         
             
              end
         
     | 
| 
       25 
25 
     | 
    
         
             
            end
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
              include ActiveScaffold::Helpers::UpdateColumnHelpers
         
     | 
| 
       29 
     | 
    
         
            -
              if ActiveScaffold.js_framework == :jquery
         
     | 
| 
       30 
     | 
    
         
            -
                include ActiveScaffold::Helpers::DatepickerUpdateColumnHelpers
         
     | 
| 
       31 
     | 
    
         
            -
              elsif ActiveScaffold.js_framework == :prototype
         
     | 
| 
       32 
     | 
    
         
            -
                include ActiveScaffold::Helpers::CalendarDateSelectUpdateColumnHelpers
         
     | 
| 
       33 
     | 
    
         
            -
              end
         
     | 
| 
       34 
     | 
    
         
            -
            end
         
     | 
| 
      
 27 
     | 
    
         
            +
            I18n.load_path += Dir[File.join(File.dirname(__FILE__), 'active_scaffold_batch', 'locale', '*.{rb,yml}')]
         
     | 
| 
       35 
28 
     | 
    
         | 
| 
       36 
29 
     | 
    
         
             
            ##
         
     | 
| 
       37 
30 
     | 
    
         
             
            ## Run the install assets script, too, just to make sure
         
     | 
| 
         @@ -40,7 +33,16 @@ end 
     | 
|
| 
       40 
33 
     | 
    
         
             
            Rails::Application.initializer("active_scaffold_batch.install_assets", :after => "active_scaffold.install_assets") do
         
     | 
| 
       41 
34 
     | 
    
         
             
              begin
         
     | 
| 
       42 
35 
     | 
    
         
             
                ActiveScaffoldAssets.copy_to_public(ActiveScaffoldBatch.root)
         
     | 
| 
      
 36 
     | 
    
         
            +
                ActionView::Base.class_eval do
         
     | 
| 
      
 37 
     | 
    
         
            +
                  include ActiveScaffold::Helpers::UpdateColumnHelpers
         
     | 
| 
      
 38 
     | 
    
         
            +
                  if ActiveScaffold.js_framework == :jquery
         
     | 
| 
      
 39 
     | 
    
         
            +
                    include ActiveScaffold::Helpers::DatepickerUpdateColumnHelpers
         
     | 
| 
      
 40 
     | 
    
         
            +
                  elsif ActiveScaffold.js_framework == :prototype
         
     | 
| 
      
 41 
     | 
    
         
            +
                    include ActiveScaffold::Helpers::CalendarDateSelectUpdateColumnHelpers
         
     | 
| 
      
 42 
     | 
    
         
            +
                  end
         
     | 
| 
      
 43 
     | 
    
         
            +
                  include ActiveScaffold::Helpers::BatchCreateColumnHelpers
         
     | 
| 
      
 44 
     | 
    
         
            +
                end
         
     | 
| 
       43 
45 
     | 
    
         
             
              rescue
         
     | 
| 
       44 
46 
     | 
    
         
             
                raise $! unless Rails.env == 'production'
         
     | 
| 
       45 
47 
     | 
    
         
             
              end
         
     | 
| 
       46 
     | 
    
         
            -
            end  
     | 
| 
      
 48 
     | 
    
         
            +
            end if defined?(ACTIVE_SCAFFOLD_BATCH_GEM)
         
     | 
| 
         @@ -1,2 +1,2 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            ACTIVE_SCAFFOLD_BATCH_GEM = true
         
     | 
| 
       2 
2 
     | 
    
         
             
            require 'active_scaffold_batch'
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,13 +1,13 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: active_scaffold_batch_vho
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
              hash:  
     | 
| 
      
 4 
     | 
    
         
            +
              hash: 1
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       6 
6 
     | 
    
         
             
              segments: 
         
     | 
| 
       7 
7 
     | 
    
         
             
              - 3
         
     | 
| 
       8 
8 
     | 
    
         
             
              - 0
         
     | 
| 
       9 
     | 
    
         
            -
              -  
     | 
| 
       10 
     | 
    
         
            -
              version: 3.0. 
     | 
| 
      
 9 
     | 
    
         
            +
              - 3
         
     | 
| 
      
 10 
     | 
    
         
            +
              version: 3.0.3
         
     | 
| 
       11 
11 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       12 
12 
     | 
    
         
             
            authors: 
         
     | 
| 
       13 
13 
     | 
    
         
             
            - Volker Hochstein
         
     | 
| 
         @@ -15,7 +15,7 @@ autorequire: 
     | 
|
| 
       15 
15 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       16 
16 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
     | 
    
         
            -
            date: 2011- 
     | 
| 
      
 18 
     | 
    
         
            +
            date: 2011-02-18 00:00:00 +01:00
         
     | 
| 
       19 
19 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       20 
20 
     | 
    
         
             
            dependencies: 
         
     | 
| 
       21 
21 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
         @@ -84,13 +84,14 @@ dependencies: 
     | 
|
| 
       84 
84 
     | 
    
         
             
              version_requirements: &id005 !ruby/object:Gem::Requirement 
         
     | 
| 
       85 
85 
     | 
    
         
             
                none: false
         
     | 
| 
       86 
86 
     | 
    
         
             
                requirements: 
         
     | 
| 
       87 
     | 
    
         
            -
                - -  
     | 
| 
      
 87 
     | 
    
         
            +
                - - ">"
         
     | 
| 
       88 
88 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
       89 
     | 
    
         
            -
                    hash:  
     | 
| 
      
 89 
     | 
    
         
            +
                    hash: 31
         
     | 
| 
       90 
90 
     | 
    
         
             
                    segments: 
         
     | 
| 
       91 
91 
     | 
    
         
             
                    - 3
         
     | 
| 
       92 
92 
     | 
    
         
             
                    - 0
         
     | 
| 
       93 
     | 
    
         
            -
                     
     | 
| 
      
 93 
     | 
    
         
            +
                    - 12
         
     | 
| 
      
 94 
     | 
    
         
            +
                    version: 3.0.12
         
     | 
| 
       94 
95 
     | 
    
         
             
              requirement: *id005
         
     | 
| 
       95 
96 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       96 
97 
     | 
    
         
             
            description: You want to destroy/update many records at once with activescaffold?
         
     | 
| 
         @@ -108,25 +109,35 @@ files: 
     | 
|
| 
       108 
109 
     | 
    
         
             
            - README
         
     | 
| 
       109 
110 
     | 
    
         
             
            - Rakefile
         
     | 
| 
       110 
111 
     | 
    
         
             
            - active_scaffold_batch_vho.gemspec
         
     | 
| 
      
 112 
     | 
    
         
            +
            - frontends/default/views/_batch_create_form.html.erb
         
     | 
| 
      
 113 
     | 
    
         
            +
            - frontends/default/views/_batch_create_form_attribute.html.erb
         
     | 
| 
      
 114 
     | 
    
         
            +
            - frontends/default/views/_batch_create_form_body.html.erb
         
     | 
| 
       111 
115 
     | 
    
         
             
            - frontends/default/views/_batch_update_form.html.erb
         
     | 
| 
       112 
116 
     | 
    
         
             
            - frontends/default/views/_batch_update_form_attribute.html.erb
         
     | 
| 
       113 
117 
     | 
    
         
             
            - frontends/default/views/_batch_update_form_attribute_scope.html.erb
         
     | 
| 
       114 
118 
     | 
    
         
             
            - frontends/default/views/_batch_update_form_body.html.erb
         
     | 
| 
      
 119 
     | 
    
         
            +
            - frontends/default/views/batch_create.html.erb
         
     | 
| 
       115 
120 
     | 
    
         
             
            - frontends/default/views/batch_update.html.erb
         
     | 
| 
       116 
121 
     | 
    
         
             
            - frontends/default/views/on_batch_base.js.rjs
         
     | 
| 
      
 122 
     | 
    
         
            +
            - frontends/default/views/on_batch_create.js.rjs
         
     | 
| 
       117 
123 
     | 
    
         
             
            - frontends/default/views/on_batch_update.js.rjs
         
     | 
| 
       118 
124 
     | 
    
         
             
            - init.rb
         
     | 
| 
       119 
125 
     | 
    
         
             
            - lib/active_scaffold/actions/batch_base.rb
         
     | 
| 
      
 126 
     | 
    
         
            +
            - lib/active_scaffold/actions/batch_create.rb
         
     | 
| 
       120 
127 
     | 
    
         
             
            - lib/active_scaffold/actions/batch_destroy.rb
         
     | 
| 
       121 
128 
     | 
    
         
             
            - lib/active_scaffold/actions/batch_update.rb
         
     | 
| 
       122 
129 
     | 
    
         
             
            - lib/active_scaffold/config/batch_base.rb
         
     | 
| 
      
 130 
     | 
    
         
            +
            - lib/active_scaffold/config/batch_create.rb
         
     | 
| 
       123 
131 
     | 
    
         
             
            - lib/active_scaffold/config/batch_destroy.rb
         
     | 
| 
       124 
132 
     | 
    
         
             
            - lib/active_scaffold/config/batch_update.rb
         
     | 
| 
      
 133 
     | 
    
         
            +
            - lib/active_scaffold/helpers/batch_create_column_helpers.rb
         
     | 
| 
       125 
134 
     | 
    
         
             
            - lib/active_scaffold/helpers/calendar_date_select_update_column_helpers.rb
         
     | 
| 
       126 
135 
     | 
    
         
             
            - lib/active_scaffold/helpers/datepicker_update_column_helpers.rb
         
     | 
| 
       127 
136 
     | 
    
         
             
            - lib/active_scaffold/helpers/update_column_helpers.rb
         
     | 
| 
       128 
137 
     | 
    
         
             
            - lib/active_scaffold_batch.rb
         
     | 
| 
       129 
138 
     | 
    
         
             
            - lib/active_scaffold_batch/config/core.rb
         
     | 
| 
      
 139 
     | 
    
         
            +
            - lib/active_scaffold_batch/locale/de.yml
         
     | 
| 
      
 140 
     | 
    
         
            +
            - lib/active_scaffold_batch/locale/en.yml
         
     | 
| 
       130 
141 
     | 
    
         
             
            - lib/active_scaffold_batch/version.rb
         
     | 
| 
       131 
142 
     | 
    
         
             
            - lib/active_scaffold_batch_vho.rb
         
     | 
| 
       132 
143 
     | 
    
         
             
            - uninstall.rb
         
     |