activity_notification 1.0.2 → 1.1.0

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.
Files changed (105) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +33 -0
  3. data/.rubocop.yml +1157 -0
  4. data/.yardopts +3 -0
  5. data/CHANGELOG.md +25 -0
  6. data/Gemfile.lock +15 -17
  7. data/README.md +154 -27
  8. data/activity_notification.gemspec +1 -1
  9. data/app/controllers/activity_notification/notifications_controller.rb +30 -104
  10. data/app/controllers/activity_notification/notifications_with_devise_controller.rb +1 -33
  11. data/app/controllers/activity_notification/subscriptions_controller.rb +184 -0
  12. data/app/controllers/activity_notification/subscriptions_with_devise_controller.rb +6 -0
  13. data/app/mailers/activity_notification/mailer.rb +3 -3
  14. data/app/views/activity_notification/notifications/default/_index.html.erb +3 -0
  15. data/app/views/activity_notification/notifications/default/index.html.erb +8 -10
  16. data/app/views/activity_notification/notifications/default/show.html.erb +24 -2
  17. data/app/views/activity_notification/subscriptions/default/_form.html.erb +52 -0
  18. data/app/views/activity_notification/subscriptions/default/_notification_keys.html.erb +89 -0
  19. data/app/views/activity_notification/subscriptions/default/_subscription.html.erb +73 -0
  20. data/app/views/activity_notification/subscriptions/default/_subscriptions.html.erb +13 -0
  21. data/app/views/activity_notification/subscriptions/default/create.js.erb +5 -0
  22. data/app/views/activity_notification/subscriptions/default/destroy.js.erb +5 -0
  23. data/app/views/activity_notification/subscriptions/default/index.html.erb +197 -0
  24. data/app/views/activity_notification/subscriptions/default/show.html.erb +177 -0
  25. data/app/views/activity_notification/subscriptions/default/subscribe.js.erb +8 -0
  26. data/app/views/activity_notification/subscriptions/default/subscribe_to_email.js.erb +6 -0
  27. data/app/views/activity_notification/subscriptions/default/unsubscribe.js.erb +8 -0
  28. data/app/views/activity_notification/subscriptions/default/unsubscribe_to_email.js.erb +6 -0
  29. data/gemfiles/Gemfile.rails-4.2.lock +18 -20
  30. data/gemfiles/Gemfile.rails-5.0.lock +18 -20
  31. data/lib/activity_notification.rb +7 -3
  32. data/lib/activity_notification/apis/notification_api.rb +95 -61
  33. data/lib/activity_notification/apis/subscription_api.rb +51 -0
  34. data/lib/activity_notification/common.rb +1 -1
  35. data/lib/activity_notification/config.rb +65 -17
  36. data/lib/activity_notification/controllers/common_controller.rb +118 -0
  37. data/lib/activity_notification/controllers/devise_authentication_controller.rb +41 -0
  38. data/lib/activity_notification/helpers/view_helpers.rb +131 -3
  39. data/lib/activity_notification/mailers/helpers.rb +6 -8
  40. data/lib/activity_notification/models/concerns/notifiable.rb +45 -27
  41. data/lib/activity_notification/models/concerns/subscriber.rb +149 -0
  42. data/lib/activity_notification/models/concerns/target.rb +100 -66
  43. data/lib/activity_notification/models/notification.rb +7 -5
  44. data/lib/activity_notification/models/subscription.rb +93 -0
  45. data/lib/activity_notification/rails/routes.rb +148 -33
  46. data/lib/activity_notification/renderable.rb +3 -4
  47. data/lib/activity_notification/roles/acts_as_notifiable.rb +14 -1
  48. data/lib/activity_notification/roles/acts_as_target.rb +11 -8
  49. data/lib/activity_notification/version.rb +1 -1
  50. data/lib/generators/activity_notification/controllers_generator.rb +2 -2
  51. data/lib/generators/activity_notification/install_generator.rb +0 -1
  52. data/lib/generators/activity_notification/migration/migration_generator.rb +8 -2
  53. data/lib/generators/activity_notification/models_generator.rb +53 -0
  54. data/lib/generators/activity_notification/views_generator.rb +7 -7
  55. data/lib/generators/templates/activity_notification.rb +17 -3
  56. data/lib/generators/templates/controllers/notifications_controller.rb +18 -17
  57. data/lib/generators/templates/controllers/notifications_with_devise_controller.rb +18 -17
  58. data/lib/generators/templates/controllers/subscriptions_controller.rb +79 -0
  59. data/lib/generators/templates/controllers/subscriptions_with_devise_controller.rb +87 -0
  60. data/lib/generators/templates/migrations/migration.rb +57 -0
  61. data/lib/generators/templates/models/README +10 -0
  62. data/lib/generators/templates/{notification → models}/notification.rb +1 -3
  63. data/lib/generators/templates/models/subscription.rb +4 -0
  64. data/spec/concerns/apis/notification_api_spec.rb +48 -11
  65. data/spec/concerns/apis/subscription_api_spec.rb +167 -0
  66. data/spec/concerns/models/notifiable_spec.rb +60 -0
  67. data/spec/concerns/models/subscriber_spec.rb +525 -0
  68. data/spec/concerns/models/target_spec.rb +271 -42
  69. data/spec/controllers/common_controller_spec.rb +25 -0
  70. data/spec/controllers/dummy_common_controller.rb +5 -0
  71. data/spec/controllers/notifications_controller_shared_examples.rb +2 -6
  72. data/spec/controllers/subscriptions_controller_shared_examples.rb +735 -0
  73. data/spec/controllers/subscriptions_controller_spec.rb +12 -0
  74. data/spec/controllers/subscriptions_with_devise_controller_spec.rb +91 -0
  75. data/spec/factories/dummy/dummy_subscriber.rb +4 -0
  76. data/spec/factories/subscriptions.rb +8 -0
  77. data/spec/generators/controllers_generator_spec.rb +25 -2
  78. data/spec/generators/migration/migration_generator_spec.rb +3 -3
  79. data/spec/generators/models_generator_spec.rb +96 -0
  80. data/spec/generators/views_generator_spec.rb +84 -0
  81. data/spec/helpers/view_helpers_spec.rb +143 -0
  82. data/spec/mailers/mailer_spec.rb +5 -4
  83. data/spec/models/dummy/dummy_subscriber_spec.rb +5 -0
  84. data/spec/models/notification_spec.rb +7 -7
  85. data/spec/models/subscription_spec.rb +158 -0
  86. data/spec/rails_app/app/controllers/users/notifications_controller.rb +67 -0
  87. data/spec/rails_app/app/controllers/users/notifications_with_devise_controller.rb +75 -0
  88. data/spec/rails_app/app/controllers/users/subscriptions_controller.rb +79 -0
  89. data/spec/rails_app/app/controllers/users/subscriptions_with_devise_controller.rb +87 -0
  90. data/spec/rails_app/app/models/admin.rb +1 -0
  91. data/spec/rails_app/app/models/dummy/dummy_subscriber.rb +4 -0
  92. data/spec/rails_app/app/models/user.rb +2 -1
  93. data/spec/rails_app/app/views/activity_notification/mailer/dummy_subscribers/test_key.text.erb +1 -0
  94. data/spec/rails_app/app/views/articles/index.html.erb +6 -0
  95. data/spec/rails_app/config/initializers/activity_notification.rb +17 -3
  96. data/spec/rails_app/config/routes.rb +2 -2
  97. data/spec/rails_app/db/migrate/20160715050420_create_activity_notification_tables.rb +33 -0
  98. data/spec/rails_app/db/schema.rb +18 -0
  99. data/spec/roles/acts_as_notifiable_spec.rb +1 -1
  100. data/spec/roles/acts_as_target_spec.rb +1 -1
  101. metadata +70 -11
  102. data/lib/generators/activity_notification/notification/notification_generator.rb +0 -20
  103. data/lib/generators/templates/active_record/migration.rb +0 -18
  104. data/spec/generators/notification/notification_generator_spec.rb +0 -41
  105. data/spec/rails_app/db/migrate/20160715050420_create_notifications.rb +0 -18
@@ -3,6 +3,7 @@ describe ActivityNotification::Mailer do
3
3
  let(:notification) { create(:notification) }
4
4
  let(:test_target) { notification.target }
5
5
  let(:notifications) { [create(:notification, target: test_target), create(:notification, target: test_target)] }
6
+ let(:batch_key) { 'test_batch_key' }
6
7
 
7
8
  before do
8
9
  ActivityNotification::Mailer.deliveries.clear
@@ -117,7 +118,7 @@ describe ActivityNotification::Mailer do
117
118
  context "with deliver_now" do
118
119
  context "as default" do
119
120
  before do
120
- ActivityNotification::Mailer.send_batch_notification_email(test_target, notifications).deliver_now
121
+ ActivityNotification::Mailer.send_batch_notification_email(test_target, notifications, batch_key).deliver_now
121
122
  end
122
123
 
123
124
  it "sends batch notification email now" do
@@ -132,7 +133,7 @@ describe ActivityNotification::Mailer do
132
133
 
133
134
  context "when fallback option is :none and the template is missing" do
134
135
  it "raise ActionView::MissingTemplate" do
135
- expect { ActivityNotification::Mailer.send_batch_notification_email(test_target, notifications, fallback: :none).deliver_now }
136
+ expect { ActivityNotification::Mailer.send_batch_notification_email(test_target, notifications, batch_key, fallback: :none).deliver_now }
136
137
  .to raise_error(ActionView::MissingTemplate)
137
138
  end
138
139
  end
@@ -142,7 +143,7 @@ describe ActivityNotification::Mailer do
142
143
  it "sends notification email later" do
143
144
  expect {
144
145
  perform_enqueued_jobs do
145
- ActivityNotification::Mailer.send_batch_notification_email(test_target, notifications).deliver_later
146
+ ActivityNotification::Mailer.send_batch_notification_email(test_target, notifications, batch_key).deliver_later
146
147
  end
147
148
  }.to change { ActivityNotification::Mailer.deliveries.size }.by(1)
148
149
  expect(ActivityNotification::Mailer.deliveries.size).to eq(1)
@@ -150,7 +151,7 @@ describe ActivityNotification::Mailer do
150
151
 
151
152
  it "sends notification email with active job queue" do
152
153
  expect {
153
- ActivityNotification::Mailer.send_batch_notification_email(test_target, notifications).deliver_later
154
+ ActivityNotification::Mailer.send_batch_notification_email(test_target, notifications, batch_key).deliver_later
154
155
  }.to change(ActiveJob::Base.queue_adapter.enqueued_jobs, :size).by(1)
155
156
  end
156
157
  end
@@ -0,0 +1,5 @@
1
+ describe Dummy::DummySubscriber, type: :model do
2
+
3
+ it_behaves_like :subscriber
4
+
5
+ end
@@ -55,19 +55,19 @@ describe ActivityNotification::Notification, type: :model do
55
55
  it "is valid with target, notifiable and key" do
56
56
  expect(@notification).to be_valid
57
57
  end
58
-
58
+
59
59
  it "is invalid with blank target" do
60
60
  @notification.target = nil
61
61
  expect(@notification).to be_invalid
62
62
  expect(@notification.errors[:target].size).to eq(1)
63
63
  end
64
-
64
+
65
65
  it "is invalid with blank notifiable" do
66
66
  @notification.notifiable = nil
67
67
  expect(@notification).to be_invalid
68
68
  expect(@notification.errors[:notifiable].size).to eq(1)
69
69
  end
70
-
70
+
71
71
  it "is invalid with blank key" do
72
72
  @notification.key = nil
73
73
  expect(@notification).to be_invalid
@@ -81,8 +81,8 @@ describe ActivityNotification::Notification, type: :model do
81
81
  ActivityNotification::Notification.delete_all
82
82
  @unopened_group_owner = create(:notification, group_owner: nil)
83
83
  @unopened_group_member = create(:notification, group_owner: @unopened_group_owner)
84
- @opened_group_owner = create(:notification, group_owner: nil, opened_at: DateTime.now)
85
- @opened_group_member = create(:notification, group_owner: @opened_group_owner, opened_at: DateTime.now)
84
+ @opened_group_owner = create(:notification, group_owner: nil, opened_at: Time.current)
85
+ @opened_group_member = create(:notification, group_owner: @opened_group_owner, opened_at: Time.current)
86
86
  end
87
87
 
88
88
  it "works with group_owners_only scope" do
@@ -291,8 +291,8 @@ describe ActivityNotification::Notification, type: :model do
291
291
  ActivityNotification::Notification.delete_all
292
292
  unopened_group_owner = create(:notification, group_owner: nil)
293
293
  unopened_group_member = create(:notification, group_owner: unopened_group_owner)
294
- opened_group_owner = create(:notification, group_owner: nil, opened_at: DateTime.now)
295
- opened_group_member = create(:notification, group_owner: opened_group_owner, opened_at: DateTime.now)
294
+ opened_group_owner = create(:notification, group_owner: nil, opened_at: Time.current)
295
+ opened_group_member = create(:notification, group_owner: opened_group_owner, opened_at: Time.current)
296
296
  @earliest_notification = unopened_group_owner
297
297
  @latest_notification = opened_group_member
298
298
  end
@@ -0,0 +1,158 @@
1
+ describe ActivityNotification::Subscription, type: :model do
2
+
3
+ it_behaves_like :subscription_api
4
+
5
+ describe "with association" do
6
+ it "belongs to target" do
7
+ target = create(:confirmed_user)
8
+ subscription = create(:subscription, target: target)
9
+ expect(subscription.reload.target).to eq(target)
10
+ end
11
+ end
12
+
13
+ describe "with validation" do
14
+ before { @subscription = build(:subscription) }
15
+
16
+ it "is valid with target and key" do
17
+ expect(@subscription).to be_valid
18
+ end
19
+
20
+ it "is invalid with blank target" do
21
+ @subscription.target = nil
22
+ expect(@subscription).to be_invalid
23
+ expect(@subscription.errors[:target].size).to eq(1)
24
+ end
25
+
26
+ it "is invalid with blank key" do
27
+ @subscription.key = nil
28
+ expect(@subscription).to be_invalid
29
+ expect(@subscription.errors[:key].size).to eq(1)
30
+ end
31
+
32
+ #TODO
33
+ # it "is invalid with non boolean value of subscribing" do
34
+ # @subscription.subscribing = 'hoge'
35
+ # expect(@subscription).to be_invalid
36
+ # expect(@subscription.errors[:subscribing].size).to eq(1)
37
+ # end
38
+ #
39
+ # it "is invalid with non boolean value of subscribing_to_email" do
40
+ # @subscription.subscribing_to_email = 'hoge'
41
+ # expect(@subscription).to be_invalid
42
+ # expect(@subscription.errors[:subscribing_to_email].size).to eq(1)
43
+ # end
44
+
45
+ it "is invalid with true as subscribing_to_email and false as subscribing" do
46
+ @subscription.subscribing = false
47
+ @subscription.subscribing_to_email = true
48
+ expect(@subscription).to be_invalid
49
+ expect(@subscription.errors[:subscribing_to_email].size).to eq(1)
50
+ end
51
+ end
52
+
53
+ describe "with scope" do
54
+ context "to filter by association" do
55
+ before do
56
+ ActivityNotification::Subscription.delete_all
57
+ @target_1, @key_1 = create(:confirmed_user), "key.1"
58
+ @target_2, @key_2 = create(:confirmed_user), "key.2"
59
+ @subscription_1 = create(:subscription, target: @target_1, key: @key_1)
60
+ @subscription_2 = create(:subscription, target: @target_2, key: @key_2)
61
+ end
62
+
63
+ it "works with filtered_by_target scope" do
64
+ subscriptions = ActivityNotification::Subscription.filtered_by_target(@target_1)
65
+ expect(subscriptions.size).to eq(1)
66
+ expect(subscriptions.first).to eq(@subscription_1)
67
+ subscriptions = ActivityNotification::Subscription.filtered_by_target(@target_2)
68
+ expect(subscriptions.size).to eq(1)
69
+ expect(subscriptions.first).to eq(@subscription_2)
70
+ end
71
+
72
+ it "works with filtered_by_key scope" do
73
+ subscriptions = ActivityNotification::Subscription.filtered_by_key(@key_1)
74
+ expect(subscriptions.size).to eq(1)
75
+ expect(subscriptions.first).to eq(@subscription_1)
76
+ subscriptions = ActivityNotification::Subscription.filtered_by_key(@key_2)
77
+ expect(subscriptions.size).to eq(1)
78
+ expect(subscriptions.first).to eq(@subscription_2)
79
+ end
80
+
81
+ describe 'filtered_by_options scope' do
82
+ context 'with filtered_by_key options' do
83
+ it "works with filtered_by_options scope" do
84
+ subscriptions = ActivityNotification::Subscription.filtered_by_options({ filtered_by_key: @key_1 })
85
+ expect(subscriptions.size).to eq(1)
86
+ expect(subscriptions.first).to eq(@subscription_1)
87
+ subscriptions = ActivityNotification::Subscription.filtered_by_options({ filtered_by_key: @key_2 })
88
+ expect(subscriptions.size).to eq(1)
89
+ expect(subscriptions.first).to eq(@subscription_2)
90
+ end
91
+ end
92
+
93
+ context 'with custom_filter options' do
94
+ it "works with filtered_by_options scope" do
95
+ subscriptions = ActivityNotification::Subscription.filtered_by_options({ custom_filter: ["key = ?", @key_1] })
96
+ expect(subscriptions.size).to eq(1)
97
+ expect(subscriptions.first).to eq(@subscription_1)
98
+ subscriptions = ActivityNotification::Subscription.filtered_by_options({ custom_filter: { key: @key_2 } })
99
+ expect(subscriptions.size).to eq(1)
100
+ expect(subscriptions.first).to eq(@subscription_2)
101
+ end
102
+ end
103
+
104
+ context 'with no options' do
105
+ it "works with filtered_by_options scope" do
106
+ subscriptions = ActivityNotification::Subscription.filtered_by_options
107
+ expect(subscriptions.size).to eq(2)
108
+ end
109
+ end
110
+ end
111
+ end
112
+
113
+ context "to make order by created_at" do
114
+ before do
115
+ ActivityNotification::Subscription.delete_all
116
+ @subscription_1 = create(:subscription, key: 'key.1')
117
+ @subscription_2 = create(:subscription, key: 'key.2')
118
+ @subscription_3 = create(:subscription, key: 'key.3')
119
+ @subscription_4 = create(:subscription, key: 'key.4')
120
+ end
121
+
122
+ it "works with latest_order scope" do
123
+ subscriptions = ActivityNotification::Subscription.latest_order
124
+ expect(subscriptions.size).to eq(4)
125
+ expect(subscriptions.first).to eq(@subscription_4)
126
+ expect(subscriptions.last).to eq(@subscription_1)
127
+ end
128
+
129
+ it "works with earliest_order scope" do
130
+ subscriptions = ActivityNotification::Subscription.earliest_order
131
+ expect(subscriptions.size).to eq(4)
132
+ expect(subscriptions.first).to eq(@subscription_1)
133
+ expect(subscriptions.last).to eq(@subscription_4)
134
+ end
135
+
136
+ it "works with latest_subscribed_order scope" do
137
+ @subscription_2.subscribe
138
+ subscriptions = ActivityNotification::Subscription.latest_subscribed_order
139
+ expect(subscriptions.size).to eq(4)
140
+ expect(subscriptions.first).to eq(@subscription_2)
141
+ end
142
+
143
+ it "works with earliest_subscribed_order scope" do
144
+ @subscription_3.subscribe
145
+ subscriptions = ActivityNotification::Subscription.earliest_subscribed_order
146
+ expect(subscriptions.size).to eq(4)
147
+ expect(subscriptions.last).to eq(@subscription_3)
148
+ end
149
+
150
+ it "works with key_order scope" do
151
+ subscriptions = ActivityNotification::Subscription.key_order
152
+ expect(subscriptions.size).to eq(4)
153
+ expect(subscriptions.first).to eq(@subscription_1)
154
+ expect(subscriptions.last).to eq(@subscription_4)
155
+ end
156
+ end
157
+ end
158
+ end
@@ -0,0 +1,67 @@
1
+ class Users::NotificationsController < ActivityNotification::NotificationsController
2
+ # GET /:target_type/:target_id/notifications
3
+ # def index
4
+ # super
5
+ # end
6
+
7
+ # POST /:target_type/:target_id/notifications/open_all
8
+ # def open_all
9
+ # super
10
+ # end
11
+
12
+ # GET /:target_type/:target_id/notifications/:id
13
+ # def show
14
+ # super
15
+ # end
16
+
17
+ # DELETE /:target_type/:target_id/notifications/:id
18
+ # def destroy
19
+ # super
20
+ # end
21
+
22
+ # POST /:target_type/:target_id/notifications/:id/open
23
+ # def open
24
+ # super
25
+ # end
26
+
27
+ # GET /:target_type/:target_id/notifications/:id/move
28
+ # def move
29
+ # super
30
+ # end
31
+
32
+ # No action routing
33
+ # This method needs to be public since it is called from view helper
34
+ # def target_view_path
35
+ # super
36
+ # end
37
+
38
+ # protected
39
+
40
+ # def set_target
41
+ # super
42
+ # end
43
+
44
+ # def set_notification
45
+ # super
46
+ # end
47
+
48
+ # def set_index_options
49
+ # super
50
+ # end
51
+
52
+ # def load_notification_index(options = {})
53
+ # super(options)
54
+ # end
55
+
56
+ # def controller_path
57
+ # super
58
+ # end
59
+
60
+ # def set_view_prefixes
61
+ # super
62
+ # end
63
+
64
+ # def return_back_or_ajax
65
+ # super
66
+ # end
67
+ end
@@ -0,0 +1,75 @@
1
+ class Users::NotificationsWithDeviseController < ActivityNotification::NotificationsWithDeviseController
2
+ # GET /:target_type/:target_id/notifications
3
+ # def index
4
+ # super
5
+ # end
6
+
7
+ # POST /:target_type/:target_id/notifications/open_all
8
+ # def open_all
9
+ # super
10
+ # end
11
+
12
+ # GET /:target_type/:target_id/notifications/:id
13
+ # def show
14
+ # super
15
+ # end
16
+
17
+ # DELETE /:target_type/:target_id/notifications/:id
18
+ # def destroy
19
+ # super
20
+ # end
21
+
22
+ # POST /:target_type/:target_id/notifications/:id/open
23
+ # def open
24
+ # super
25
+ # end
26
+
27
+ # GET /:target_type/:target_id/notifications/:id/move
28
+ # def move
29
+ # super
30
+ # end
31
+
32
+ # No action routing
33
+ # This method needs to be public since it is called from view helper
34
+ # def target_view_path
35
+ # super
36
+ # end
37
+
38
+ # protected
39
+
40
+ # def set_target
41
+ # super
42
+ # end
43
+
44
+ # def set_notification
45
+ # super
46
+ # end
47
+
48
+ # def set_index_options
49
+ # super
50
+ # end
51
+
52
+ # def load_notification_index(options = {})
53
+ # super(options)
54
+ # end
55
+
56
+ # def controller_path
57
+ # super
58
+ # end
59
+
60
+ # def set_view_prefixes
61
+ # super
62
+ # end
63
+
64
+ # def return_back_or_ajax
65
+ # super
66
+ # end
67
+
68
+ # def authenticate_devise_resource!
69
+ # super
70
+ # end
71
+
72
+ # def authenticate_target!
73
+ # super
74
+ # end
75
+ end
@@ -0,0 +1,79 @@
1
+ class Users::SubscriptionsController < ActivityNotification::SubscriptionsController
2
+ # GET /:target_type/:target_id/subscriptions
3
+ # def index
4
+ # super
5
+ # end
6
+
7
+ # POST /:target_type/:target_id/subscriptions
8
+ # def create
9
+ # super
10
+ # end
11
+
12
+ # GET /:target_type/:target_id/subscriptions/:id
13
+ # def show
14
+ # super
15
+ # end
16
+
17
+ # DELETE /:target_type/:target_id/subscriptions/:id
18
+ # def destroy
19
+ # super
20
+ # end
21
+
22
+ # POST /:target_type/:target_id/subscriptions/:id/subscribe
23
+ # def subscribe
24
+ # super
25
+ # end
26
+
27
+ # POST /:target_type/:target_id/subscriptions/:id/unsubscribe
28
+ # def unsubscribe
29
+ # super
30
+ # end
31
+
32
+ # POST /:target_type/:target_id/subscriptions/:id/subscribe_to_email
33
+ # def subscribe_to_email
34
+ # super
35
+ # end
36
+
37
+ # POST /:target_type/:target_id/subscriptions/:id/unsubscribe_to_email
38
+ # def unsubscribe_to_email
39
+ # super
40
+ # end
41
+
42
+ # protected
43
+
44
+ # def set_target
45
+ # super
46
+ # end
47
+
48
+ # def set_subscription
49
+ # super
50
+ # end
51
+
52
+ # def subscription_params
53
+ # super
54
+ # end
55
+
56
+ # def set_index_options
57
+ # super
58
+ # end
59
+
60
+ # def load_subscription_index(options = {})
61
+ # super(options)
62
+ # end
63
+
64
+ # def controller_path
65
+ # super
66
+ # end
67
+
68
+ # def target_view_path
69
+ # super
70
+ # end
71
+
72
+ # def set_view_prefixes
73
+ # super
74
+ # end
75
+
76
+ # def return_back_or_ajax
77
+ # super
78
+ # end
79
+ end