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