lib/active_scaffold/actions/mark.rb in active_scaffold-3.0.12 vs lib/active_scaffold/actions/mark.rb in active_scaffold-3.0.21

- old
+ new

@@ -6,45 +6,70 @@ base.prepend_before_filter :assign_marked_records_to_model base.helper_method :marked_records end def mark_all - if mark_all? + if mark_all? || mark_all_scope_forced? do_mark_all else do_demark_all end + respond_to_action(:mark_all) + end + protected + + def mark_all_respond_to_html do_list - respond_to_action(:list) + list_respond_to_html end - protected + def mark_all_respond_to_js + do_list + render :action => 'on_mark_all', :locals => {:mark_all => mark_all?} + end + # We need to give the ActiveRecord classes a handle to currently marked records. We don't want to just pass the object, # because the object may change. So we give ActiveRecord a proc that ties to the # marked_records_method on this ApplicationController. def assign_marked_records_to_model active_scaffold_config.model.marked_records = marked_records end - + def marked_records active_scaffold_session_storage[:marked_records] ||= Set.new end - + def mark_all? @mark_all ||= [true, 'true', 1, '1', 'T', 't'].include?(params[:value].class == String ? params[:value].downcase : params[:value]) end + def mark_all_scope_forced? + !params[:mark_target].nil? && params[:mark_target]=='scope' + end + def do_mark_all - each_record_in_scope {|record| marked_records << record.id} + if active_scaffold_config.mark.mark_all_mode == :page && !mark_all_scope_forced? then + each_record_in_page {|record| marked_records << record.id} + else + each_record_in_scope {|record| marked_records << record.id} + end end def do_demark_all - each_record_in_scope {|record| marked_records.delete(record.id)} + if active_scaffold_config.mark.mark_all_mode == :page then + each_record_in_page {|record| marked_records.delete(record.id)} + else + each_record_in_scope {|record| marked_records.delete(record.id)} + end end - + # The default security delegates to ActiveRecordPermissions. # You may override the method to customize. def mark_authorized? authorized_for?(:action => :read) end + + def mark_all_formats + (default_formats + active_scaffold_config.formats).uniq + end end -end +end \ No newline at end of file