mailboxer 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
data/.yardopts ADDED
@@ -0,0 +1,2 @@
1
+ lib/**/*.rb
2
+ app/**/*.rb
@@ -2,30 +2,34 @@ class MailboxerConversation < ActiveRecord::Base
2
2
  attr_reader :originator, :original_message, :last_sender, :last_message, :users
3
3
  has_many :mailboxer_messages
4
4
  has_many :mailboxer_mails, :through => :mailboxer_messages
5
- # before_create :clean
5
+ # before_create :clean
6
6
  scope :participant, lambda {|participant|
7
7
  joins(:mailboxer_mails).select('DISTINCT mailboxer_conversations.*').where('mailboxer_mails.receiver_id' => participant.id,'mailboxer_mails.receiver_type' => participant.class.to_s)
8
8
  }
9
9
  scope :inbox, lambda {|participant|
10
- joins(:mailboxer_mails).select('DISTINCT mailboxer_conversations.*').where('mailboxer_mails.receiver_id' => participant.id,'mailboxer_mails.receiver_type' => participant.class.to_s, 'mailboxer_mails.mailbox_type' => 'inbox')
10
+ joins(:mailboxer_mails).select('DISTINCT mailboxer_conversations.*').where('mailboxer_mails.receiver_id' => participant.id,'mailboxer_mails.receiver_type' => participant.class.to_s, 'mailboxer_mails.mailbox_type' => 'inbox','mailboxer_mails.trashed' => false)
11
11
  }
12
12
  scope :sentbox, lambda {|participant|
13
- joins(:mailboxer_mails).select('DISTINCT mailboxer_conversations.*').where('mailboxer_mails.receiver_id' => participant.id,'mailboxer_mails.receiver_type' => participant.class.to_s, 'mailboxer_mails.mailbox_type' => 'sentbox')
13
+ joins(:mailboxer_mails).select('DISTINCT mailboxer_conversations.*').where('mailboxer_mails.receiver_id' => participant.id,'mailboxer_mails.receiver_type' => participant.class.to_s, 'mailboxer_mails.mailbox_type' => 'sentbox','mailboxer_mails.trashed' => false)
14
+ }
15
+ scope :trash, lambda {|participant|
16
+ joins(:mailboxer_mails).select('DISTINCT mailboxer_conversations.*').where('mailboxer_mails.receiver_id' => participant.id,'mailboxer_mails.receiver_type' => participant.class.to_s,'mailboxer_mails.trashed' => true)
17
+ }
18
+ scope :unread, lambda {|participant|
19
+ joins(:mailboxer_mails).select('DISTINCT mailboxer_conversations.*').where('mailboxer_mails.receiver_id' => participant.id,'mailboxer_mails.receiver_type' => participant.class.to_s,'mailboxer_mails.read' => false)
14
20
  }
15
- scope :trash, joins(:mailboxer_mails).select('DISTINCT mailboxer_conversations.*').where('mailboxer_mails.trashed' => true)
16
- scope :unread, joins(:mailboxer_mails).select('DISTINCT mailboxer_conversations.*').where('mailboxer_mails.read' => false)
17
21
 
18
22
  class << self
19
23
  def total
20
24
  count('DISTINCT mailboxer_conversations.id')
21
25
  end
22
26
  end
23
-
27
+
24
28
  def mark_as_read(participant)
25
29
  return if participant.nil?
26
30
  return MailboxerMail.conversation(self).receiver(participant).mark_as_read
27
31
  end
28
-
32
+
29
33
  def mark_as_unread(participant)
30
34
  return if participant.nil?
31
35
  return MailboxerMail.conversation(self).receiver(participant).mark_as_unread
@@ -87,12 +91,12 @@ class MailboxerConversation < ActiveRecord::Base
87
91
  return MailboxerMessage.conversation(self).count
88
92
  end
89
93
 
90
- # protected
91
- # #[empty method]
92
- # #
93
- # #this gets called before_create. Implement this if you wish to clean out illegal content such as scripts or anything that will break layout. This is left empty because what is considered illegal content varies.
94
- # def clean
95
- # return if subject.nil?
96
- # #strip all illegal content here. (scripts, shit that will break layout, etc.)
97
- # end
94
+ # protected
95
+ # #[empty method]
96
+ # #
97
+ # #this gets called before_create. Implement this if you wish to clean out illegal content such as scripts or anything that will break layout. This is left empty because what is considered illegal content varies.
98
+ # def clean
99
+ # return if subject.nil?
100
+ # #strip all illegal content here. (scripts, shit that will break layout, etc.)
101
+ # end
98
102
  end
@@ -4,7 +4,7 @@ class MailboxerMailbox
4
4
  #the user/owner of this mailbox, set when initialized.
5
5
  attr_reader :messageable
6
6
  #creates a new Mailbox instance with the given user and optional type.
7
-
7
+
8
8
  def initialize(recipient, box = :all)
9
9
  @messageable = recipient
10
10
  @type = box
@@ -13,23 +13,43 @@ class MailboxerMailbox
13
13
  def type=(val)
14
14
  @type = val.to_sym
15
15
  end
16
-
16
+
17
17
  def conversations(options = {})
18
- return MailboxerConversation.where(options).participant(@messageable).uniq
18
+ conv = MailboxerConversation.participant(@messageable)
19
+
20
+ if options[:mailbox_type].present?
21
+ case options[:mailbox_type]
22
+ when 'inbox'
23
+ conv = MailboxerConversation.inbox(@messageable)
24
+ when 'sentbox'
25
+ conv = MailboxerConversation.sentbox(@messageable)
26
+ when 'trash'
27
+ conv = MailboxerConversation.trash(@messageable)
28
+ end
29
+ end
30
+
31
+ if (options[:read].present? and options[:read]==false) or (options[:unread].present? and options[:unread]==true)
32
+ conv = conv.unread(@messageable)
33
+ end
34
+
35
+ return conv.uniq
19
36
  end
20
37
 
21
38
  def inbox(options={})
22
- return MailboxerConversation.where(options).inbox(@messageable).uniq
39
+ options = options.merge(:mailbox_type => 'inbox')
40
+ return self.conversations(options)
23
41
  end
24
42
 
25
43
  def sentbox(options={})
26
- return MailboxerConversation.where(options).sentbox(@messageable).uniq
44
+ options = options.merge(:mailbox_type => 'sentbox')
45
+ return self.conversations(options)
27
46
  end
28
47
 
29
48
  def trash(options={})
30
- return MailboxerConversation.where(options).participant(@messageable).trash.uniq
49
+ options = options.merge(:mailbox_type => 'trash')
50
+ return self.conversations(options)
31
51
  end
32
-
52
+
33
53
  def mail(options = {})
34
54
  return MailboxerMail.where(options).receiver(@messageable)
35
55
  end
@@ -38,11 +58,11 @@ class MailboxerMailbox
38
58
  self.type = mailbox_type
39
59
  return self
40
60
  end
41
-
61
+
42
62
  def <<(msg)
43
63
  return self.add(msg)
44
64
  end
45
-
65
+
46
66
  def add(msg)
47
67
  mail_msg = MailboxerMail.new
48
68
  mail_msg.mailboxer_message = msg
@@ -52,20 +72,20 @@ class MailboxerMailbox
52
72
  @messageable.mailboxer_mails << mail_msg
53
73
  return mail_msg
54
74
  end
55
-
75
+
56
76
  def empty_trash(options = {})
57
77
  return self.mail.trash(options).delete_all
58
78
  end
59
-
79
+
60
80
  def has_conversation?(conversation)
61
81
  return self.mail.conversation(converstaion).count!=0
62
82
  end
63
-
83
+
64
84
  def is_trashed?(conversation)
65
85
  return self.mail.trash.conversation(conversation).count!=0
66
86
  end
67
87
  def is_completely_trashed?(conversation)
68
88
  return self.mail.trash.conversation(conversation).count==self.mail.conversation(conversation).count
69
89
  end
70
-
90
+
71
91
  end
data/mailboxer.gemspec CHANGED
@@ -1,11 +1,11 @@
1
1
 
2
2
  Gem::Specification.new do |s|
3
3
  s.name = "mailboxer"
4
- s.version = "0.0.5"
4
+ s.version = "0.0.6"
5
5
 
6
6
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
7
7
  s.authors = ["Eduardo Casanova Cuesta"]
8
- s.date = %q{2011-03-14}
8
+ s.date = %q{2011-03-17}
9
9
  s.description = %q{A Rails engine that allows any model to act as messageable, permitting it interchange messages with any other messageable model. }
10
10
  s.email = %q{ecasanovac@gmail.com}
11
11
  s.extra_rdoc_files = [
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mailboxer
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 19
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 5
10
- version: 0.0.5
9
+ - 6
10
+ version: 0.0.6
11
11
  platform: ruby
12
12
  authors:
13
13
  - Eduardo Casanova Cuesta
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-03-14 00:00:00 +01:00
18
+ date: 2011-03-17 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -187,6 +187,7 @@ extra_rdoc_files:
187
187
  - README.rdoc
188
188
  files:
189
189
  - .gitignore
190
+ - .yardopts
190
191
  - Gemfile
191
192
  - LICENSE.txt
192
193
  - README.rdoc