gossiper 0.3.4 → 0.3.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3cdc61bdd2db605d54aea6be7862aaa8b50a7f26
4
- data.tar.gz: 8fd27aadb81931eece3a78e724ede6b5d5650a5b
3
+ metadata.gz: bc1480aab310d0621df06090ef44c953c3422cc6
4
+ data.tar.gz: f0bf08f5a7c011c1110435016dde51829bb1d53b
5
5
  SHA512:
6
- metadata.gz: 6345c4c5611f258aebd3386d62584e6edcfe37c5a925541fffc1d57b4880e076da6123a28e6c42754bdc0ba5475e2b75f3993c1a6af116f4ccbba60356e77c17
7
- data.tar.gz: fa3aa48780490cf68b38bab6757f5e816edbc7d87f0641e8a91acf2221e49079616e76aab2294fc4fb8bf802cdf64e2161fe1e74ade902e816019d5505173aea
6
+ metadata.gz: f033f5024be39161393719659a7408a3c4b4cea217a1457f2dcbfb1193f7ae95cc78cd51ab8f1d334a2fb9e83868bdaa8af3a18537d1a2d72fb617236a1a8e33
7
+ data.tar.gz: b3cc4b64668113a7fe3f7c7caad4010a550d02b51fca04a5fcbd3217ca6a3b526f4fa4b58b3a6211d89d1689c7e2d65a2c44e02f1b257fa6dfa5415e95de78c7
@@ -6,20 +6,7 @@ module Gossiper
6
6
  serialize :data, JSON
7
7
 
8
8
  validates :kind, presence: true
9
-
10
- def user=(user)
11
- @user = user
12
- self.user_class = user.class.to_s
13
- self.user_id = user.id
14
- end
15
-
16
- def user
17
- @user ||= user_class.constantize.find(user_id)
18
- end
19
-
20
- def user_class
21
- read_attribute(:user_class).presence || Gossiper.configuration.default_notification_user_class
22
- end
9
+ belongs_to :user, polymorphic: true
23
10
 
24
11
  def status
25
12
  read_attribute(:status).presence || STATUSES.first
@@ -44,6 +31,16 @@ module Gossiper
44
31
  write_attribute(:kind, value)
45
32
  end
46
33
 
34
+ def config
35
+ begin
36
+ klass = "Notifications::#{kind.classify}Notification"
37
+ klass.constantize.new(self)
38
+ rescue NameError
39
+ klass = Gossiper.configuration.default_notification_config_class
40
+ klass.constantize.new(self)
41
+ end
42
+ end
43
+
47
44
  def method_missing(method, *args, &block)
48
45
  STATUSES.each do |status|
49
46
  if method.to_s == "#{status}?"
@@ -2,7 +2,7 @@ class CreateGossiperNotifications < ActiveRecord::Migration
2
2
  def change
3
3
  create_table :gossiper_notifications do |t|
4
4
  t.integer :user_id
5
- t.string :user_class
5
+ t.string :user_type
6
6
  t.string :kind
7
7
  t.string :status
8
8
  t.datetime :delivered_at
@@ -1,14 +1,16 @@
1
1
  <%- test_folder = defined?(RSpec) ? 'spec' : 'test' -%>
2
2
  Gossiper.configure do |config|
3
- # Change the default user class
4
- config.default_notification_user_class = 'User'
5
3
 
6
4
  # change the default class of the configurations
7
5
  config.default_notification_config_class = 'Gossiper::EmailConfig'
8
6
 
9
- # email the email sender
7
+ # the email sender
10
8
  config.default_from = 'from@example.com'
11
9
 
10
+ # the default reply to
11
+ # when not present, it defaults to the same email addres ass the default_from
12
+ # config.default_reply_to = 'reply@example.com'
13
+
12
14
  # The list of emails to send copies to
13
15
  # config.default_cc = ['user@example.com']
14
16
 
@@ -1,13 +1,19 @@
1
1
  module Notifications
2
2
  class <%= class_name %>Notification < Gossiper::EmailConfig
3
3
 
4
- # def to
4
+ # def initialize(notification)
5
5
  # end
6
6
 
7
- # def bcc
7
+ # def from
8
8
  # end
9
9
 
10
- # def from
10
+ # def reply_to
11
+ # end
12
+
13
+ # def to
14
+ # end
15
+
16
+ # def bcc
11
17
  # end
12
18
 
13
19
  # def cc
@@ -21,12 +27,17 @@ module Notifications
21
27
 
22
28
  # def subject
23
29
  # end
30
+ #
31
+ # def subject_variables
32
+ # {}
33
+ # end
24
34
 
25
35
  # def attachments
36
+ # {}
26
37
  # end
27
38
 
28
39
  # def instance_variables
40
+ # {}
29
41
  # end
30
-
31
42
  end
32
43
  end
@@ -19,6 +19,7 @@ module Gossiper
19
19
  attribute :default_notification_user_class
20
20
  attribute :default_notification_config_class
21
21
  attribute :default_from
22
+ attribute :default_reply_to
22
23
  attribute :default_cc
23
24
  attribute :default_bcc
24
25
 
@@ -4,13 +4,17 @@ module Gossiper
4
4
 
5
5
  def initialize(notification)
6
6
  @notification = notification
7
- @user = notification.user
7
+ @user = notification.user rescue nil
8
8
  end
9
9
 
10
10
  def from
11
11
  config.default_from
12
12
  end
13
13
 
14
+ def reply_to
15
+ config.default_reply_to.presence || config.default_from
16
+ end
17
+
14
18
  def to
15
19
  if user.respond_to?(:name)
16
20
  ["#{user.name} <#{user.email}>"]
@@ -36,7 +40,7 @@ module Gossiper
36
40
  end
37
41
 
38
42
  def subject
39
- I18n.t("gossiper.notifications.#{notification.kind}.subject")
43
+ I18n.t("gossiper.notifications.#{notification.kind}.subject", subject_variables)
40
44
  end
41
45
 
42
46
  def attachments
@@ -47,6 +51,10 @@ module Gossiper
47
51
  {}
48
52
  end
49
53
 
54
+ def subject_variables
55
+ {}
56
+ end
57
+
50
58
  private
51
59
  def config
52
60
  Gossiper.configuration
@@ -2,7 +2,7 @@ module Gossiper
2
2
  class Mailer < ActionMailer::Base
3
3
 
4
4
  def mail_for(notification)
5
- config = config_for(notification)
5
+ config = notification.config
6
6
 
7
7
  config.attachments.each do |filename, file|
8
8
  attachments[filename] = file
@@ -15,25 +15,16 @@ module Gossiper
15
15
  end
16
16
 
17
17
  mail(
18
- from: config.from,
19
- to: config.to,
20
- cc: config.cc,
21
- bcc: config.bcc,
18
+ from: config.from,
19
+ reply_to: config.reply_to,
20
+ to: config.to,
21
+ cc: config.cc,
22
+ bcc: config.bcc,
22
23
  subject: config.subject,
23
24
  template_name: config.template_name,
24
25
  template_path: config.template_path
25
26
  )
26
27
  end
27
28
 
28
- def config_for(notification)
29
- begin
30
- klass = "Notifications::#{notification.kind.classify}Notification"
31
- klass.constantize.new(notification)
32
- rescue NameError
33
- klass = Gossiper.configuration.default_notification_config_class
34
- klass.constantize.new(notification)
35
- end
36
-
37
- end
38
29
  end
39
30
  end
@@ -1,3 +1,3 @@
1
1
  module Gossiper
2
- VERSION = "0.3.4"
2
+ VERSION = "0.3.5"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gossiper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
4
+ version: 0.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcelo Jacobus
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-14 00:00:00.000000000 Z
11
+ date: 2013-12-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sqlite3
@@ -124,7 +124,6 @@ files:
124
124
  - app/assets/stylesheets/gossiper/application.css
125
125
  - app/assets/stylesheets/gossiper/notifications.css
126
126
  - app/helpers/gossiper/notifications_helper.rb
127
- - app/helpers/gossiper/application_helper.rb
128
127
  - app/models/gossiper/notification.rb
129
128
  - app/views/layouts/gossiper/application.html.erb
130
129
  - app/views/kaminari/_gap.html.erb
@@ -1,4 +0,0 @@
1
- module Gossiper
2
- module ApplicationHelper
3
- end
4
- end