Module: Mailboxer::Models::Messageable
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/mailboxer/models/messageable.rb
Defined Under Namespace
Modules: ActiveRecord
Instance Method Summary collapse
-
#mailbox ⇒ Object
Gets the mailbox of the messageable.
-
#mark_as_read(obj) ⇒ Object
Mark the object as read for messageable.
-
#mark_as_unread(obj) ⇒ Object
Mark the object as unread for messageable.
-
#notify(subject, body, obj = nil, sanitize_text = true, notification_code = nil) ⇒ Object
Sends a notification to the messageable.
-
#reply(conversation, recipients, reply_body, subject = nil, sanitize_text = true, attachment = nil) ⇒ Object
Basic reply method.
-
#reply_to_all(receipt, reply_body, subject = nil, sanitize_text = true, attachment = nil) ⇒ Object
Replies to all the recipients of the message in the conversation.
-
#reply_to_conversation(conversation, reply_body, subject = nil, should_untrash = true, sanitize_text = true, attachment = nil) ⇒ Object
Replies to all the recipients of the last message in the conversation and untrash any trashed message by messageable if should_untrash is set to true (this is so by default).
-
#reply_to_sender(receipt, reply_body, subject = nil, sanitize_text = true, attachment = nil) ⇒ Object
Replies to the sender of the message in the conversation.
- #search_messages(query) ⇒ Object
-
#send_message(recipients, msg_body, subject, sanitize_text = true, attachment = nil, message_timestamp = Time.now) ⇒ Object
Sends a messages, starting a new conversation, with the messageable as originator.
-
#trash(obj) ⇒ Object
Mark the object as trashed for messageable.
-
#untrash(obj) ⇒ Object
Mark the object as not trashed for messageable.
Instance Method Details
#mailbox ⇒ Object
Gets the mailbox of the messageable
48 49 50 51 52 |
# File 'lib/mailboxer/models/messageable.rb', line 48 def mailbox @mailbox = Mailbox.new(self) if @mailbox.nil? @mailbox.type = :all return @mailbox end |
#mark_as_read(obj) ⇒ Object
Mark the object as read for messageable.
Object can be:
-
A Receipt
-
A Message
-
A Notification
-
A Conversation
-
An array with any of them
114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
# File 'lib/mailboxer/models/messageable.rb', line 114 def mark_as_read(obj) case obj when Receipt return obj.mark_as_read if obj.receiver == self when Message, Notification obj.mark_as_read(self) when Conversation obj.mark_as_read(self) when Array obj.map{ |sub_obj| mark_as_read(sub_obj) } else return nil end end |
#mark_as_unread(obj) ⇒ Object
Mark the object as unread for messageable.
Object can be:
-
A Receipt
-
A Message
-
A Notification
-
A Conversation
-
An array with any of them
137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
# File 'lib/mailboxer/models/messageable.rb', line 137 def mark_as_unread(obj) case obj when Receipt return obj.mark_as_unread if obj.receiver == self when Message, Notification obj.mark_as_unread(self) when Conversation obj.mark_as_unread(self) when Array obj.map{ |sub_obj| mark_as_unread(sub_obj) } else return nil end end |
#notify(subject, body, obj = nil, sanitize_text = true, notification_code = nil) ⇒ Object
Sends a notification to the messageable
55 56 57 |
# File 'lib/mailboxer/models/messageable.rb', line 55 def notify(subject,body,obj = nil,sanitize_text=true,notification_code=nil) return Notification.notify_all([self],subject,body,obj,sanitize_text,notification_code) end |
#reply(conversation, recipients, reply_body, subject = nil, sanitize_text = true, attachment = nil) ⇒ Object
Basic reply method. USE NOT RECOMENDED. Use reply_to_sender, reply_to_all and reply_to_conversation instead.
76 77 78 79 80 81 82 83 84 |
# File 'lib/mailboxer/models/messageable.rb', line 76 def reply(conversation, recipients, reply_body, subject=nil, sanitize_text=true, =nil) subject = subject || "RE: #{conversation.subject}" response = .new({:body => reply_body, :subject => subject, :attachment => }) response.conversation = conversation response.recipients = recipients.is_a?(Array) ? recipients : [recipients] response.recipients = response.recipients.uniq response.recipients.delete(self) return response.deliver true, sanitize_text end |
#reply_to_all(receipt, reply_body, subject = nil, sanitize_text = true, attachment = nil) ⇒ Object
Replies to all the recipients of the message in the conversation
92 93 94 |
# File 'lib/mailboxer/models/messageable.rb', line 92 def reply_to_all(receipt, reply_body, subject=nil, sanitize_text=true, =nil) return reply(receipt.conversation, receipt..recipients, reply_body, subject, sanitize_text, ) end |
#reply_to_conversation(conversation, reply_body, subject = nil, should_untrash = true, sanitize_text = true, attachment = nil) ⇒ Object
Replies to all the recipients of the last message in the conversation and untrash any trashed message by messageable if should_untrash is set to true (this is so by default)
98 99 100 101 102 103 104 |
# File 'lib/mailboxer/models/messageable.rb', line 98 def reply_to_conversation(conversation, reply_body, subject=nil, should_untrash=true, sanitize_text=true, =nil) #move conversation to inbox if it is currently in the trash and should_untrash parameter is true. if should_untrash && mailbox.is_trashed?(conversation) mailbox.receipts_for(conversation).untrash end return reply(conversation, conversation..recipients, reply_body, subject, sanitize_text, ) end |
#reply_to_sender(receipt, reply_body, subject = nil, sanitize_text = true, attachment = nil) ⇒ Object
Replies to the sender of the message in the conversation
87 88 89 |
# File 'lib/mailboxer/models/messageable.rb', line 87 def reply_to_sender(receipt, reply_body, subject=nil, sanitize_text=true, =nil) return reply(receipt.conversation, receipt..sender, reply_body, subject, sanitize_text, ) end |
#search_messages(query) ⇒ Object
198 199 200 201 202 203 204 205 |
# File 'lib/mailboxer/models/messageable.rb', line 198 def (query) @search = Receipt.search do fulltext query with :receiver_id, self.id end @search.results.map { |r| r.conversation }.uniq end |
#send_message(recipients, msg_body, subject, sanitize_text = true, attachment = nil, message_timestamp = Time.now) ⇒ Object
Sends a messages, starting a new conversation, with the messageable as originator
61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/mailboxer/models/messageable.rb', line 61 def (recipients, msg_body, subject, sanitize_text=true, =nil, = Time.now) convo = Conversation.new({:subject => subject}) convo.created_at = convo.updated_at = = .new({:body => msg_body, :subject => subject, :attachment => }) .created_at = .updated_at = .conversation = convo .recipients = recipients.is_a?(Array) ? recipients : [recipients] .recipients = .recipients.uniq return .deliver false,sanitize_text end |
#trash(obj) ⇒ Object
Mark the object as trashed for messageable.
Object can be:
-
A Receipt
-
A Message
-
A Notification
-
A Conversation
-
An array with any of them
160 161 162 163 164 165 166 167 168 169 170 171 172 173 |
# File 'lib/mailboxer/models/messageable.rb', line 160 def trash(obj) case obj when Receipt return obj.move_to_trash if obj.receiver == self when Message, Notification obj.move_to_trash(self) when Conversation obj.move_to_trash(self) when Array obj.map{ |sub_obj| trash(sub_obj) } else return nil end end |
#untrash(obj) ⇒ Object
Mark the object as not trashed for messageable.
Object can be:
-
A Receipt
-
A Message
-
A Notification
-
A Conversation
-
An array with any of them
183 184 185 186 187 188 189 190 191 192 193 194 195 196 |
# File 'lib/mailboxer/models/messageable.rb', line 183 def untrash(obj) case obj when Receipt return obj.untrash if obj.receiver == self when Message, Notification obj.untrash(self) when Conversation obj.untrash(self) when Array obj.map{ |sub_obj| untrash(sub_obj) } else return nil end end |