mailboxer 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.yardopts +2 -0
 - data/app/models/mailboxer_conversation.rb +19 -15
 - data/app/models/mailboxer_mailbox.rb +33 -13
 - data/mailboxer.gemspec +2 -2
 - metadata +5 -4
 
    
        data/.yardopts
    ADDED
    
    
| 
         @@ -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 
     | 
    
         
            -
                 
     | 
| 
      
 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 
     | 
    
         
            -
                 
     | 
| 
      
 39 
     | 
    
         
            +
                options = options.merge(:mailbox_type => 'inbox')
         
     | 
| 
      
 40 
     | 
    
         
            +
                return self.conversations(options)   
         
     | 
| 
       23 
41 
     | 
    
         
             
              end
         
     | 
| 
       24 
42 
     | 
    
         | 
| 
       25 
43 
     | 
    
         
             
              def sentbox(options={})
         
     | 
| 
       26 
     | 
    
         
            -
                 
     | 
| 
      
 44 
     | 
    
         
            +
                options = options.merge(:mailbox_type => 'sentbox')
         
     | 
| 
      
 45 
     | 
    
         
            +
                return self.conversations(options)   
         
     | 
| 
       27 
46 
     | 
    
         
             
              end
         
     | 
| 
       28 
47 
     | 
    
         | 
| 
       29 
48 
     | 
    
         
             
              def trash(options={})
         
     | 
| 
       30 
     | 
    
         
            -
                 
     | 
| 
      
 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. 
     | 
| 
      
 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- 
     | 
| 
      
 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:  
     | 
| 
      
 4 
     | 
    
         
            +
              hash: 19
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       6 
6 
     | 
    
         
             
              segments: 
         
     | 
| 
       7 
7 
     | 
    
         
             
              - 0
         
     | 
| 
       8 
8 
     | 
    
         
             
              - 0
         
     | 
| 
       9 
     | 
    
         
            -
              -  
     | 
| 
       10 
     | 
    
         
            -
              version: 0.0. 
     | 
| 
      
 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- 
     | 
| 
      
 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
         
     |