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