>From 31bb0fd8f6e701107ce79ad2dbd9d42da4635742 Mon Sep 17 00:00:00 2001From: Mike Stipicevic <stipim at rpi.edu> Date: Mon, 16 Feb 2009 00:06:36 -0500 Subject: [PATCH] Added undo for spam --- lib/sup/modes/thread-index-mode.rb | 22 ++++++++++++++++++---- 1 files changed, 18 insertions(+), 4 deletions(-) diff --git a/lib/sup/modes/thread-index-mode.rb b/lib/sup/modes/thread-index-mode.rb index 62fdb85..1e02b5b 100644 --- a/lib/sup/modes/thread-index-mode.rb +++ b/lib/sup/modes/thread-index-mode.rb @@ -300,13 +300,28 @@ EOS end def actually_toggle_spammed t + thread = t if t.has_label? :spam + undo = lambda { + thread.apply_label :spam + self.hide_thread thread + UpdateManager.relay self,:spammed, thread.first + } t.remove_label :spam + add_or_unhide t.first UpdateManager.relay self, :unspammed, t.first else + undo = lambda { + thread.remove_label :spam + add_or_unhide thread.first + UpdateManager.relay self,:unspammed, thread.first + } t.apply_label :spam + hide_thread t UpdateManager.relay self, :spammed, t.first end + + return undo end def actually_toggle_deleted t @@ -390,10 +405,9 @@ EOS ## see deleted or spam emails, and when you undelete or unspam them ## you also want them to disappear immediately. def multi_toggle_spam threads - threads.each do |t| - actually_toggle_spammed t - hide_thread t - end + undo = threads.map{ |t| actually_toggle_spammed t} + UndoManager.register("marking/unmarking #{threads.size} #{threads.size.pluralize ''thread''} as spam", + undo << lambda {self.regen_text}) regen_text end -- 1.5.3