]> git.cworth.org Git - sup/blob - lib/sup/modes/forward-mode.rb
move module-style spawn_xxx to class method style
[sup] / lib / sup / modes / forward-mode.rb
1 module Redwood
2
3 class ForwardMode < EditMessageMode
4
5   ## todo: share some of this with reply-mode
6   def initialize m, opts={}
7     header = {
8       "From" => AccountManager.default_account.full_address,
9       "Subject" => "Fwd: #{m.subj}",
10     }
11
12     header["To"] = opts[:to].map { |p| p.full_address }.join(", ") if opts[:to]
13     header["Cc"] = opts[:cc].map { |p| p.full_address }.join(", ") if opts[:cc]
14     header["Bcc"] = opts[:bcc].map { |p| p.full_address }.join(", ") if opts[:bcc]
15
16     super :header => header, :body => forward_body_lines(m)
17   end
18
19   def self.spawn_nicely m, opts={}
20     to = opts[:to] || BufferManager.ask_for_contacts(:people, "To: ") or return
21     cc = opts[:cc] || BufferManager.ask_for_contacts(:people, "Cc: ") or return if $config[:ask_for_cc]
22     bcc = opts[:bcc] || BufferManager.ask_for_contacts(:people, "Bcc: ") or return if $config[:ask_for_bcc]
23     
24     mode = ForwardMode.new m, :to => to, :cc => cc, :bcc => bcc
25     BufferManager.spawn "Forwarding #{m.subj}", mode
26     mode.edit_message
27   end
28
29 protected
30
31   def forward_body_lines m
32     ["--- Begin forwarded message from #{m.from.mediumname} ---"] + 
33       m.quotable_header_lines + [""] + m.quotable_body_lines +
34       ["--- End forwarded message ---"]
35   end
36 end
37
38 end