activity_notification 2.4.1 → 2.5.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 (250) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -2
  3. data/app/jobs/activity_notification/cascading_notification_job.rb +123 -0
  4. data/docs/Functions.md +197 -1
  5. data/lib/activity_notification/apis/cascading_notification_api.rb +208 -0
  6. data/lib/activity_notification/apis/notification_api.rb +3 -0
  7. data/lib/activity_notification/config.rb +10 -0
  8. data/lib/activity_notification/mailers/helpers.rb +27 -1
  9. data/lib/activity_notification/version.rb +1 -1
  10. data/lib/generators/templates/activity_notification.rb +8 -0
  11. metadata +5 -441
  12. data/.codeclimate.yml +0 -33
  13. data/.coveralls.yml +0 -1
  14. data/.github/ISSUE_TEMPLATE/bug_report.md +0 -22
  15. data/.github/ISSUE_TEMPLATE/feature_request.md +0 -17
  16. data/.github/pull_request_template.md +0 -13
  17. data/.github/workflows/build.yml +0 -100
  18. data/.gitignore +0 -74
  19. data/.rspec +0 -3
  20. data/.rubocop.yml +0 -1157
  21. data/.yardopts +0 -6
  22. data/CHANGELOG.md +0 -452
  23. data/Gemfile +0 -31
  24. data/Procfile +0 -2
  25. data/Rakefile +0 -28
  26. data/activity_notification.gemspec +0 -44
  27. data/ai-curated-specs/issues/172/design.md +0 -220
  28. data/ai-curated-specs/issues/172/tasks.md +0 -326
  29. data/ai-curated-specs/issues/188/design.md +0 -227
  30. data/ai-curated-specs/issues/188/requirements.md +0 -78
  31. data/ai-curated-specs/issues/188/tasks.md +0 -203
  32. data/ai-curated-specs/issues/188/upstream-contributions.md +0 -592
  33. data/ai-curated-specs/issues/50/design.md +0 -235
  34. data/ai-curated-specs/issues/50/requirements.md +0 -49
  35. data/ai-curated-specs/issues/50/tasks.md +0 -232
  36. data/bin/_dynamodblocal +0 -4
  37. data/bin/bundle_update.sh +0 -7
  38. data/bin/deploy_on_heroku.sh +0 -16
  39. data/bin/install_dynamodblocal.sh +0 -5
  40. data/bin/start_dynamodblocal.sh +0 -47
  41. data/bin/stop_dynamodblocal.sh +0 -34
  42. data/gemfiles/Gemfile.rails-5.0 +0 -25
  43. data/gemfiles/Gemfile.rails-5.1 +0 -25
  44. data/gemfiles/Gemfile.rails-5.2 +0 -24
  45. data/gemfiles/Gemfile.rails-6.0 +0 -23
  46. data/gemfiles/Gemfile.rails-6.1 +0 -22
  47. data/gemfiles/Gemfile.rails-7.0 +0 -25
  48. data/gemfiles/Gemfile.rails-7.1 +0 -23
  49. data/gemfiles/Gemfile.rails-7.2 +0 -23
  50. data/gemfiles/Gemfile.rails-8.0 +0 -24
  51. data/package.json +0 -8
  52. data/spec/channels/notification_api_channel_shared_examples.rb +0 -59
  53. data/spec/channels/notification_api_channel_spec.rb +0 -49
  54. data/spec/channels/notification_api_with_devise_channel_spec.rb +0 -76
  55. data/spec/channels/notification_channel_shared_examples.rb +0 -59
  56. data/spec/channels/notification_channel_spec.rb +0 -48
  57. data/spec/channels/notification_with_devise_channel_spec.rb +0 -97
  58. data/spec/concerns/apis/notification_api_spec.rb +0 -1627
  59. data/spec/concerns/apis/subscription_api_spec.rb +0 -474
  60. data/spec/concerns/common_spec.rb +0 -213
  61. data/spec/concerns/models/group_spec.rb +0 -61
  62. data/spec/concerns/models/notifiable_spec.rb +0 -782
  63. data/spec/concerns/models/notifier_spec.rb +0 -71
  64. data/spec/concerns/models/subscriber_spec.rb +0 -800
  65. data/spec/concerns/models/target_spec.rb +0 -1285
  66. data/spec/concerns/renderable_spec.rb +0 -129
  67. data/spec/config_spec.rb +0 -85
  68. data/spec/controllers/common_controller_spec.rb +0 -25
  69. data/spec/controllers/controller_spec_utility.rb +0 -100
  70. data/spec/controllers/dummy_common_controller.rb +0 -5
  71. data/spec/controllers/notifications_api_controller_shared_examples.rb +0 -619
  72. data/spec/controllers/notifications_api_controller_spec.rb +0 -19
  73. data/spec/controllers/notifications_api_with_devise_controller_spec.rb +0 -60
  74. data/spec/controllers/notifications_controller_shared_examples.rb +0 -743
  75. data/spec/controllers/notifications_controller_spec.rb +0 -11
  76. data/spec/controllers/notifications_with_devise_controller_spec.rb +0 -97
  77. data/spec/controllers/subscriptions_api_controller_shared_examples.rb +0 -750
  78. data/spec/controllers/subscriptions_api_controller_spec.rb +0 -19
  79. data/spec/controllers/subscriptions_api_with_devise_controller_spec.rb +0 -60
  80. data/spec/controllers/subscriptions_controller_shared_examples.rb +0 -946
  81. data/spec/controllers/subscriptions_controller_spec.rb +0 -11
  82. data/spec/controllers/subscriptions_with_devise_controller_spec.rb +0 -97
  83. data/spec/factories/admins.rb +0 -5
  84. data/spec/factories/articles.rb +0 -5
  85. data/spec/factories/comments.rb +0 -6
  86. data/spec/factories/dummy/dummy_group.rb +0 -4
  87. data/spec/factories/dummy/dummy_notifiable.rb +0 -4
  88. data/spec/factories/dummy/dummy_notifier.rb +0 -4
  89. data/spec/factories/dummy/dummy_subscriber.rb +0 -4
  90. data/spec/factories/dummy/dummy_target.rb +0 -4
  91. data/spec/factories/notifications.rb +0 -7
  92. data/spec/factories/subscriptions.rb +0 -8
  93. data/spec/factories/users.rb +0 -11
  94. data/spec/generators/controllers_generator_spec.rb +0 -85
  95. data/spec/generators/install_generator_spec.rb +0 -43
  96. data/spec/generators/migration/migration_generator_spec.rb +0 -80
  97. data/spec/generators/models_generator_spec.rb +0 -96
  98. data/spec/generators/views_generator_spec.rb +0 -195
  99. data/spec/helpers/polymorphic_helpers_spec.rb +0 -89
  100. data/spec/helpers/view_helpers_spec.rb +0 -547
  101. data/spec/jobs/notification_resilience_job_spec.rb +0 -167
  102. data/spec/jobs/notify_all_job_spec.rb +0 -23
  103. data/spec/jobs/notify_job_spec.rb +0 -23
  104. data/spec/jobs/notify_to_job_spec.rb +0 -23
  105. data/spec/mailers/mailer_spec.rb +0 -214
  106. data/spec/mailers/notification_resilience_spec.rb +0 -263
  107. data/spec/models/dummy/dummy_group_spec.rb +0 -10
  108. data/spec/models/dummy/dummy_notifiable_spec.rb +0 -10
  109. data/spec/models/dummy/dummy_notifier_spec.rb +0 -10
  110. data/spec/models/dummy/dummy_subscriber_spec.rb +0 -8
  111. data/spec/models/dummy/dummy_target_spec.rb +0 -10
  112. data/spec/models/notification_spec.rb +0 -472
  113. data/spec/models/subscription_spec.rb +0 -215
  114. data/spec/optional_targets/action_cable_api_channel_spec.rb +0 -34
  115. data/spec/optional_targets/action_cable_channel_spec.rb +0 -41
  116. data/spec/optional_targets/amazon_sns_spec.rb +0 -47
  117. data/spec/optional_targets/base_spec.rb +0 -45
  118. data/spec/optional_targets/slack_spec.rb +0 -44
  119. data/spec/orm/dynamoid_spec.rb +0 -115
  120. data/spec/rails_app/Rakefile +0 -15
  121. data/spec/rails_app/app/assets/config/manifest.js +0 -3
  122. data/spec/rails_app/app/assets/images/.keep +0 -0
  123. data/spec/rails_app/app/assets/javascripts/application.js +0 -3
  124. data/spec/rails_app/app/assets/javascripts/cable.js +0 -12
  125. data/spec/rails_app/app/assets/stylesheets/application.css +0 -15
  126. data/spec/rails_app/app/assets/stylesheets/reset.css +0 -85
  127. data/spec/rails_app/app/assets/stylesheets/style.css +0 -244
  128. data/spec/rails_app/app/controllers/admins_controller.rb +0 -21
  129. data/spec/rails_app/app/controllers/application_controller.rb +0 -5
  130. data/spec/rails_app/app/controllers/articles_controller.rb +0 -67
  131. data/spec/rails_app/app/controllers/comments_controller.rb +0 -36
  132. data/spec/rails_app/app/controllers/concerns/.keep +0 -0
  133. data/spec/rails_app/app/controllers/spa_controller.rb +0 -7
  134. data/spec/rails_app/app/controllers/users/notifications_controller.rb +0 -2
  135. data/spec/rails_app/app/controllers/users/notifications_with_devise_controller.rb +0 -2
  136. data/spec/rails_app/app/controllers/users/subscriptions_controller.rb +0 -2
  137. data/spec/rails_app/app/controllers/users/subscriptions_with_devise_controller.rb +0 -2
  138. data/spec/rails_app/app/controllers/users_controller.rb +0 -26
  139. data/spec/rails_app/app/helpers/application_helper.rb +0 -2
  140. data/spec/rails_app/app/helpers/devise_helper.rb +0 -2
  141. data/spec/rails_app/app/javascript/App.vue +0 -40
  142. data/spec/rails_app/app/javascript/components/DeviseTokenAuth.vue +0 -82
  143. data/spec/rails_app/app/javascript/components/Top.vue +0 -98
  144. data/spec/rails_app/app/javascript/components/notifications/Index.vue +0 -200
  145. data/spec/rails_app/app/javascript/components/notifications/Notification.vue +0 -133
  146. data/spec/rails_app/app/javascript/components/notifications/NotificationContent.vue +0 -122
  147. data/spec/rails_app/app/javascript/components/subscriptions/Index.vue +0 -279
  148. data/spec/rails_app/app/javascript/components/subscriptions/NewSubscription.vue +0 -112
  149. data/spec/rails_app/app/javascript/components/subscriptions/NotificationKey.vue +0 -141
  150. data/spec/rails_app/app/javascript/components/subscriptions/Subscription.vue +0 -226
  151. data/spec/rails_app/app/javascript/config/development.js +0 -5
  152. data/spec/rails_app/app/javascript/config/environment.js +0 -7
  153. data/spec/rails_app/app/javascript/config/production.js +0 -5
  154. data/spec/rails_app/app/javascript/config/test.js +0 -5
  155. data/spec/rails_app/app/javascript/packs/application.js +0 -18
  156. data/spec/rails_app/app/javascript/packs/spa.js +0 -14
  157. data/spec/rails_app/app/javascript/router/index.js +0 -73
  158. data/spec/rails_app/app/javascript/store/index.js +0 -37
  159. data/spec/rails_app/app/mailers/.keep +0 -0
  160. data/spec/rails_app/app/mailers/custom_notification_mailer.rb +0 -5
  161. data/spec/rails_app/app/models/admin.rb +0 -35
  162. data/spec/rails_app/app/models/article.rb +0 -54
  163. data/spec/rails_app/app/models/comment.rb +0 -81
  164. data/spec/rails_app/app/models/dummy/dummy_base.rb +0 -11
  165. data/spec/rails_app/app/models/dummy/dummy_group.rb +0 -23
  166. data/spec/rails_app/app/models/dummy/dummy_notifiable.rb +0 -15
  167. data/spec/rails_app/app/models/dummy/dummy_notifiable_target.rb +0 -27
  168. data/spec/rails_app/app/models/dummy/dummy_notifier.rb +0 -15
  169. data/spec/rails_app/app/models/dummy/dummy_subscriber.rb +0 -14
  170. data/spec/rails_app/app/models/dummy/dummy_target.rb +0 -16
  171. data/spec/rails_app/app/models/user.rb +0 -73
  172. data/spec/rails_app/app/views/activity_notification/mailer/dummy_subscribers/test_key.text.erb +0 -1
  173. data/spec/rails_app/app/views/activity_notification/notifications/default/article/_update.html.erb +0 -146
  174. data/spec/rails_app/app/views/activity_notification/notifications/default/custom/_path_test.html.erb +0 -1
  175. data/spec/rails_app/app/views/activity_notification/notifications/default/custom/_test.html.erb +0 -1
  176. data/spec/rails_app/app/views/activity_notification/notifications/users/_custom_index.html.erb +0 -1
  177. data/spec/rails_app/app/views/activity_notification/notifications/users/custom/_test.html.erb +0 -1
  178. data/spec/rails_app/app/views/activity_notification/notifications/users/overridden/custom/_test.html.erb +0 -1
  179. data/spec/rails_app/app/views/activity_notification/optional_targets/admins/amazon_sns/comment/_default.text.erb +0 -10
  180. data/spec/rails_app/app/views/articles/_form.html.erb +0 -24
  181. data/spec/rails_app/app/views/articles/edit.html.erb +0 -8
  182. data/spec/rails_app/app/views/articles/index.html.erb +0 -113
  183. data/spec/rails_app/app/views/articles/new.html.erb +0 -7
  184. data/spec/rails_app/app/views/articles/show.html.erb +0 -49
  185. data/spec/rails_app/app/views/layouts/_header.html.erb +0 -46
  186. data/spec/rails_app/app/views/layouts/application.html.erb +0 -15
  187. data/spec/rails_app/app/views/spa/index.html.erb +0 -2
  188. data/spec/rails_app/babel.config.js +0 -72
  189. data/spec/rails_app/bin/bundle +0 -3
  190. data/spec/rails_app/bin/rails +0 -4
  191. data/spec/rails_app/bin/rake +0 -4
  192. data/spec/rails_app/bin/setup +0 -29
  193. data/spec/rails_app/bin/webpack +0 -18
  194. data/spec/rails_app/bin/webpack-dev-server +0 -18
  195. data/spec/rails_app/config/application.rb +0 -54
  196. data/spec/rails_app/config/boot.rb +0 -5
  197. data/spec/rails_app/config/cable.yml +0 -8
  198. data/spec/rails_app/config/database.yml +0 -36
  199. data/spec/rails_app/config/dynamoid.rb +0 -13
  200. data/spec/rails_app/config/environment.rb +0 -26
  201. data/spec/rails_app/config/environments/development.rb +0 -60
  202. data/spec/rails_app/config/environments/production.rb +0 -85
  203. data/spec/rails_app/config/environments/test.rb +0 -53
  204. data/spec/rails_app/config/initializers/activity_notification.rb +0 -104
  205. data/spec/rails_app/config/initializers/assets.rb +0 -11
  206. data/spec/rails_app/config/initializers/backtrace_silencers.rb +0 -7
  207. data/spec/rails_app/config/initializers/cookies_serializer.rb +0 -3
  208. data/spec/rails_app/config/initializers/copy_it.aws.rb.template +0 -6
  209. data/spec/rails_app/config/initializers/devise.rb +0 -278
  210. data/spec/rails_app/config/initializers/devise_token_auth.rb +0 -55
  211. data/spec/rails_app/config/initializers/filter_parameter_logging.rb +0 -4
  212. data/spec/rails_app/config/initializers/inflections.rb +0 -16
  213. data/spec/rails_app/config/initializers/mime_types.rb +0 -4
  214. data/spec/rails_app/config/initializers/mysql.rb +0 -9
  215. data/spec/rails_app/config/initializers/session_store.rb +0 -3
  216. data/spec/rails_app/config/initializers/wrap_parameters.rb +0 -14
  217. data/spec/rails_app/config/initializers/zeitwerk.rb +0 -10
  218. data/spec/rails_app/config/locales/activity_notification.en.yml +0 -26
  219. data/spec/rails_app/config/locales/devise.en.yml +0 -62
  220. data/spec/rails_app/config/mongoid.yml +0 -13
  221. data/spec/rails_app/config/routes.rb +0 -50
  222. data/spec/rails_app/config/secrets.yml +0 -22
  223. data/spec/rails_app/config/webpack/development.js +0 -5
  224. data/spec/rails_app/config/webpack/environment.js +0 -7
  225. data/spec/rails_app/config/webpack/loaders/vue.js +0 -6
  226. data/spec/rails_app/config/webpack/production.js +0 -5
  227. data/spec/rails_app/config/webpack/test.js +0 -5
  228. data/spec/rails_app/config/webpacker.yml +0 -97
  229. data/spec/rails_app/config.ru +0 -4
  230. data/spec/rails_app/db/migrate/20160716000000_create_test_tables.rb +0 -42
  231. data/spec/rails_app/db/migrate/20181209000000_create_activity_notification_tables.rb +0 -33
  232. data/spec/rails_app/db/migrate/20191201000000_add_tokens_to_users.rb +0 -10
  233. data/spec/rails_app/db/schema.rb +0 -98
  234. data/spec/rails_app/db/seeds.rb +0 -95
  235. data/spec/rails_app/lib/custom_optional_targets/console_output.rb +0 -16
  236. data/spec/rails_app/lib/custom_optional_targets/raise_error.rb +0 -14
  237. data/spec/rails_app/lib/custom_optional_targets/wrong_target.rb +0 -13
  238. data/spec/rails_app/lib/mailer_previews/mailer_preview.rb +0 -29
  239. data/spec/rails_app/package.json +0 -23
  240. data/spec/rails_app/postcss.config.js +0 -12
  241. data/spec/rails_app/public/404.html +0 -67
  242. data/spec/rails_app/public/422.html +0 -67
  243. data/spec/rails_app/public/500.html +0 -66
  244. data/spec/rails_app/public/favicon.ico +0 -0
  245. data/spec/roles/acts_as_group_spec.rb +0 -30
  246. data/spec/roles/acts_as_notifiable_spec.rb +0 -432
  247. data/spec/roles/acts_as_notifier_spec.rb +0 -30
  248. data/spec/roles/acts_as_target_spec.rb +0 -36
  249. data/spec/spec_helper.rb +0 -56
  250. data/spec/version_spec.rb +0 -31
@@ -1,14 +0,0 @@
1
- unless ENV['AN_TEST_DB'] == 'mongodb'
2
- class Dummy::DummySubscriber < ActiveRecord::Base
3
- self.table_name = :users
4
- acts_as_target email: 'dummy@example.com', email_allowed: true, batch_email_allowed: true, subscription_allowed: true
5
- end
6
- else
7
- class Dummy::DummySubscriber
8
- include Mongoid::Document
9
- include Mongoid::Timestamps
10
- include GlobalID::Identification
11
- include ActivityNotification::Models
12
- acts_as_target email: 'dummy@example.com', email_allowed: true, batch_email_allowed: true, subscription_allowed: true
13
- end
14
- end
@@ -1,16 +0,0 @@
1
- unless ENV['AN_TEST_DB'] == 'mongodb'
2
- class Dummy::DummyTarget < ActiveRecord::Base
3
- self.table_name = :users
4
- include ActivityNotification::Target
5
- end
6
- else
7
- class Dummy::DummyTarget
8
- include Mongoid::Document
9
- include Mongoid::Timestamps
10
- include GlobalID::Identification
11
- include ActivityNotification::Models
12
- include ActivityNotification::Target
13
- field :email, type: String, default: ""
14
- field :name, type: String
15
- end
16
- end
@@ -1,73 +0,0 @@
1
- module UserModel
2
- extend ActiveSupport::Concern
3
-
4
- included do
5
- devise :database_authenticatable, :confirmable
6
- include DeviseTokenAuth::Concerns::User
7
- validates :email, presence: true
8
- has_one :admin, dependent: :destroy
9
- has_many :articles, dependent: :destroy
10
-
11
- acts_as_target email: :email,
12
- email_allowed: :confirmed_at, batch_email_allowed: :confirmed_at,
13
- subscription_allowed: true,
14
- action_cable_allowed: true, action_cable_with_devise: true,
15
- printable_name: :name
16
-
17
- acts_as_notifier printable_name: :name
18
- end
19
-
20
- def admin?
21
- admin.present?
22
- end
23
-
24
- def as_json(_options = {})
25
- options = _options.deep_dup
26
- options[:include] = (options[:include] || {}).merge(admin: { methods: [:printable_target_name, :notification_action_cable_allowed?, :notification_action_cable_with_devise?] })
27
- options[:methods] = (options[:methods] || []).push(:printable_target_name, :notification_action_cable_allowed?, :notification_action_cable_with_devise?)
28
- super(options)
29
- end
30
- end
31
-
32
- unless ENV['AN_TEST_DB'] == 'mongodb'
33
- class User < ActiveRecord::Base
34
- include UserModel
35
- default_scope { order(:id) }
36
- end
37
- else
38
- require 'mongoid'
39
- require 'mongoid-locker'
40
- class User
41
- include Mongoid::Document
42
- include Mongoid::Timestamps
43
- include Mongoid::Locker
44
- include GlobalID::Identification
45
-
46
- # Devise
47
- ## Database authenticatable
48
- field :email, type: String, default: ""
49
- field :encrypted_password, type: String, default: ""
50
- ## Confirmable
51
- field :confirmation_token, type: String
52
- field :confirmed_at, type: Time
53
- field :confirmation_sent_at, type: Time
54
- ## Required
55
- field :provider, type: String, default: "email"
56
- field :uid, type: String, default: ""
57
- ## Tokens
58
- field :tokens, type: Hash, default: {}
59
- # Apps
60
- field :name, type: String
61
-
62
- include ActivityNotification::Models
63
- include UserModel
64
-
65
- # To avoid Devise Token Auth issue
66
- # https://github.com/lynndylanhurley/devise_token_auth/issues/1335
67
- if Rails::VERSION::MAJOR == 6
68
- def saved_change_to_attribute?(attr_name, **options)
69
- true
70
- end
71
- end
72
- end
73
- end
@@ -1 +0,0 @@
1
- Dummy subscriber's notification email template.
@@ -1,146 +0,0 @@
1
- <% content_for :notification_content, flush: true do %>
2
- <div class='notification_list <%= notification.opened? ? "opened" : "unopened" %>'>
3
- <div class="notification_list_cover"></div>
4
- <div class="list_image"></div>
5
- <div class="list_text_wrapper">
6
- <p class="list_text">
7
- <strong><%= notification.notifier.name %></strong> updated his or her article "<%= notification.notifiable.title %>".
8
- <br>
9
- <span><%= notification.created_at.strftime("%b %d %H:%M") %></span>
10
- </p>
11
- </div>
12
- </div>
13
- <% end %>
14
-
15
- <div class='<%= "notification_#{notification.id}" %>'>
16
- <% if notification.unopened? %>
17
- <%= link_to open_notification_path_for(notification, parameters.slice(:routing_scope, :devise_default_routes).merge(reload: false)), method: :put, remote: true, class: "unopened_wrapper" do %>
18
- <div class="unopened_circle"></div>
19
- <div class="unopened_description_wrapper">
20
- <p class="unopened_description">Open</p>
21
- </div>
22
- <% end %>
23
- <%= link_to open_notification_path_for(notification, parameters.slice(:routing_scope, :devise_default_routes).merge(move: true)), method: :put do %>
24
- <%= yield :notification_content %>
25
- <% end %>
26
- <div class="unopened_wrapper"></div>
27
- <% else %>
28
- <%= link_to move_notification_path_for(notification, parameters.slice(:routing_scope, :devise_default_routes)) do %>
29
- <%= yield :notification_content %>
30
- <% end %>
31
- <% end %>
32
-
33
- </div>
34
-
35
- <style>
36
- /* unopened_circle */
37
- .unopened_wrapper{
38
- position: absolute;
39
- margin-top: 20px;
40
- margin-left: 56px;
41
- }
42
- .unopened_wrapper .unopened_circle {
43
- display: block;
44
- width: 10px;
45
- height: 10px;
46
- position: absolute;
47
- border-radius: 50%;
48
- background-color: #27a5eb;
49
- z-index: 2;
50
- }
51
- .unopened_wrapper:hover > .unopened_description_wrapper{
52
- display: block;
53
- }
54
- .unopened_wrapper .unopened_description_wrapper {
55
- display: none;
56
- position: absolute;
57
- margin-top: 26px;
58
- margin-left: -24px;
59
- }
60
- .unopened_wrapper .unopened_description_wrapper .unopened_description {
61
- position: absolute;
62
- color: #fff;
63
- font-size: 12px;
64
- text-align: center;
65
-
66
- border-radius: 4px;
67
- background: rgba(0, 0, 0, 0.8);
68
- padding: 4px 12px;
69
- z-index: 999;
70
- }
71
- .unopened_wrapper .unopened_description_wrapper .unopened_description:before {
72
- border: solid transparent;
73
- border-top-width: 0;
74
- content: "";
75
- display: block;
76
- position: absolute;
77
- width: 0;
78
- left: 50%;
79
- top: -5px;
80
- margin-left: -5px;
81
- height: 0;
82
- border-width: 0 5px 5px 5px;
83
- border-color: transparent transparent rgba(0, 0, 0, 0.8) transparent;
84
- z-index: 0;
85
- }
86
-
87
- /* list */
88
- .notification_list {
89
- padding: 15px 10px;
90
- position: relative;
91
- border-bottom: 1px solid #e5e5e5;
92
- }
93
- .notification_list.unopened {
94
- background-color: #eeeff4;
95
- }
96
- .notification_list:hover {
97
- background-color: #f8f9fb;
98
- }
99
- .notification_list:last-child {
100
- border-bottom: none;
101
- }
102
- .notification_list:after{
103
- content: "";
104
- clear: both;
105
- display: block;
106
- }
107
- .notification_list .notification_list_cover{
108
- position: absolute;
109
- opacity: 0;
110
- top: 0;
111
- left: 0;
112
- width: 100%;
113
- height: 100%;
114
- z-index: 1;
115
-
116
- }
117
- .notification_list .list_image {
118
- float: left;
119
- width: 40px;
120
- height: 40px;
121
- background-position: center;
122
- background-repeat: no-repeat;
123
- background-size: cover;
124
- background-color: #979797;
125
- }
126
- .notification_list .list_text_wrapper {
127
- float: left;
128
- width: calc(100% - 60px);
129
- margin-left: 20px;
130
- }
131
- .notification_list .list_text_wrapper .list_text {
132
- color: #4f4f4f;
133
- font-size: 14px;
134
- line-height: 1.4;
135
- margin-top: 0;
136
- height: auto;
137
- font-weight: normal;
138
- }
139
- .notification_list .list_text_wrapper .list_text strong{
140
- font-weight: bold;
141
- }
142
- .notification_list .list_text_wrapper .list_text span {
143
- color: #979797;
144
- font-size: 13px;
145
- }
146
- </style>
@@ -1 +0,0 @@
1
- Custom template root for path test: <%= notification.id %>
@@ -1 +0,0 @@
1
- Custom template root for default target: <%= notification.id %>
@@ -1 +0,0 @@
1
- Custom index: <%= yield :notification_index %>
@@ -1 +0,0 @@
1
- Custom template root for user target: <%= notification.id %>
@@ -1 +0,0 @@
1
- Overridden custom template root for user target: <%= notification.id %>
@@ -1,10 +0,0 @@
1
- [This notification is delivered by ActivityNotification with Amazon SNS]
2
-
3
- Dear <%= @target.printable_target_name %>
4
-
5
- <%= @notification.notifier.present? ? @notification.notifier.printable_notifier_name : 'Someone' %> notified you of <%= @notification.notifiable.printable_notifiable_name(@notification.target) %><%= " in #{@notification.group.printable_group_name}" if @notification.group.present? %>.
6
-
7
- <%= "Move to notified #{@notification.notifiable.printable_type.downcase}:" %>
8
- <%= move_notification_url_for(@notification, parameters.slice(:routing_scope, :devise_default_routes).merge(open: true)) %>
9
-
10
- Thank you!
@@ -1,24 +0,0 @@
1
- <%= form_for(@article) do |f| %>
2
- <% if @article.errors.any? %>
3
- <div id="error_explanation">
4
- <h2><%= pluralize(@article.errors.count, "error") %> prohibited this article from being saved:</h2>
5
- <ul>
6
- <% @article.errors.full_messages.each do |message| %>
7
- <li><%= message %></li>
8
- <% end %>
9
- </ul>
10
- </div>
11
- <% end %>
12
-
13
- <div class="input_wrapper">
14
- <%= f.text_field :title, placeholder: "title..." %>
15
- </div>
16
- <div class="textarea_wrapper">
17
- <%= f.text_area :body, placeholder: "body..." %>
18
- </div>
19
- <div class="submit_button_wrapper">
20
- <button class="green_button" type="submit">
21
- <%= submit_message %>
22
- </button>
23
- </div>
24
- <% end %>
@@ -1,8 +0,0 @@
1
- <section>
2
- <h1>Editing Article</h1>
3
- <%= render partial: 'form', locals: { submit_message: "Update Article" } %>
4
- <div class="left_button_wrapper">
5
- <%= link_to 'Show', @article, class: "gray_button" %>
6
- <%= link_to 'Back', articles_path, class: "gray_button" %>
7
- </div>
8
- </section>
@@ -1,113 +0,0 @@
1
- <% if @exists_notifications_routes %>
2
- <section>
3
- <h1>Authentecated User</h1>
4
- <div class="list_wrapper">
5
- <div class="list_image"></div>
6
- <div class="list_description_wrapper">
7
- <p class="list_description">
8
- <% if user_signed_in? %>
9
- <span><%= current_user.name %></span> · <%= current_user.email %> · <%= link_to 'Logout', destroy_user_session_path, method: :delete %><br>
10
- <% else %>
11
- <span>Not logged in</span> · <%= link_to 'Login', new_user_session_path %><br>
12
- <% end %>
13
- <%= link_to 'Notifications', notifications_path %> /
14
- <% if User.subscription_enabled? %>
15
- <%= link_to 'Subscriptions', subscriptions_path %>
16
- <% end %>
17
- </p>
18
- </div>
19
- </div>
20
- </section>
21
- <% end %>
22
-
23
- <% if @exists_user_notifications_routes %>
24
- <section>
25
- <h1>Listing Users</h1>
26
- <% User.all.each do |user| %>
27
- <div class="list_wrapper">
28
- <div class="list_image"></div>
29
- <div class="list_description_wrapper">
30
- <p class="list_description">
31
- <span><%= user.name %></span> · <%= user.email %><br>
32
- <%= link_to 'Notifications', user_notifications_path(user) %> /
33
- <% if User.subscription_enabled? %>
34
- <%= link_to 'Subscriptions', user_subscriptions_path(user) %>
35
- <% end %>
36
- </p>
37
- </div>
38
- </div>
39
- <% end %>
40
- </section>
41
- <% end %>
42
-
43
- <% if @exists_admins_notifications_routes %>
44
- <section>
45
- <h1>Authentecated User as Admin</h1>
46
- <div class="list_wrapper">
47
- <div class="list_image"></div>
48
- <div class="list_description_wrapper">
49
- <p class="list_description">
50
- <% if user_signed_in? %>
51
- <span><%= current_user.name %></span> · <%= current_user.email %> <span><%= current_user.admin? ? "(admin)" : "(not admin)" %></span><br>
52
- <% else %>
53
- <span>Not logged in</span> · <%= link_to 'Login', new_user_session_path %><br>
54
- <% end %>
55
- <%= link_to 'Notifications', admins_notifications_path %> /
56
- <% if User.subscription_enabled? %>
57
- <%= link_to 'Subscriptions', admins_subscriptions_path %>
58
- <% end %>
59
- </p>
60
- </div>
61
- </div>
62
- </section>
63
- <% end %>
64
-
65
- <% if @exists_admin_notifications_routes %>
66
- <section>
67
- <h1>Listing Admins</h1>
68
- <% Admin.all.each do |admin| %>
69
- <div class="list_wrapper">
70
- <div class="list_image"></div>
71
- <div class="list_description_wrapper">
72
- <p class="list_description">
73
- <span><%= admin.user.name %></span> · <%= admin.user.email %><br>
74
- <%= link_to 'Notifications', admin_notifications_path(admin) %> /
75
- <% if Admin.subscription_enabled? %>
76
- <%= link_to 'Subscriptions', admin_subscriptions_path(admin) %>
77
- <% end %>
78
- </p>
79
- </div>
80
- </div>
81
- <% end %>
82
- </section>
83
- <% end %>
84
-
85
- <section>
86
- <div class="create_button_wrapper">
87
- <%= link_to 'New Article', new_article_path, class: "create_button green_button" %>
88
- </div>
89
- <h1>Listing Articles</h1>
90
- <% @articles.each do |article| %>
91
- <div class="list_wrapper">
92
- <div class="list_image large"></div>
93
- <div class="list_description_wrapper">
94
- <h3 class="list_title">
95
- <%= link_to article.title, article %>
96
- </h3>
97
- <p class="list_description">
98
- <span><%= article.user.name %></span> · <%= article.created_at.strftime("%b %d %H:%M") %><br>
99
- <%= article.body.truncate(60) if article.body.present? %><br>
100
- <%= link_to 'Read', article %>
101
- </p>
102
- <div class="list_button_wrapper">
103
- <% if user_signed_in? and article.author?(current_user) %>
104
- <%= link_to 'Edit Article', edit_article_path(article), class: "gray_button" %>
105
- <% end %>
106
- <%# if user_signed_in? and (article.author?(current_user) or current_user.admin?) %>
107
- <%#= link_to 'Destroy Article', article, method: :delete, data: { confirm: 'Are you sure?' }, class: "gray_button" %>
108
- <%# end %>
109
- </div>
110
- </div>
111
- </div>
112
- <% end %>
113
- </section>
@@ -1,7 +0,0 @@
1
- <section>
2
- <h1>New Article</h1>
3
- <%= render partial: 'form', locals: { submit_message: "Create Article" } %>
4
- <div class="left_button_wrapper">
5
- <%= link_to 'Back', articles_path, class: "gray_button" %>
6
- </div>
7
- </section>
@@ -1,49 +0,0 @@
1
- <section>
2
- <h1><%= @article.title %></h1>
3
- <p><%= @article.body %></p>
4
- <div class="list_wrapper">
5
- <div class="list_image"></div>
6
- <div class="list_description_wrapper">
7
- <p class="list_description">
8
- <span><%= @article.user.name %></span> · <%= @article.created_at.strftime("%b %d %H:%M") %><br>
9
- </p>
10
- <div class="list_button_wrapper">
11
- <%= link_to 'Edit Article', edit_article_path(@article), class: "gray_button" %>
12
- <%#= link_to 'Destroy Article', @article, method: :delete, data: { confirm: 'Are you sure?' }, class: "gray_button" %>
13
- </div>
14
- </div>
15
- </div>
16
- <h2>Listing Comments</h2>
17
- <% @article.comments.includes(:user).each do |comment| %>
18
- <div class="list_wrapper">
19
- <div class="list_image"></div>
20
- <div class="list_description_wrapper">
21
- <p class="list_description">
22
- <span><%= comment.user.name %></span> · <%= comment.created_at.strftime("%b %d %H:%M") %><br>
23
- <%= comment.body %>
24
- </p>
25
- <div class="list_button_wrapper">
26
- <% if user_signed_in? and (comment.author?(current_user) or current_user.admin?) %>
27
- <%= link_to 'Destroy Comment', comment, method: :delete, data: { confirm: 'Are you sure?' }, class: "gray_button" %>
28
- <% end %>
29
- </div>
30
- </div>
31
- </div>
32
- <% end %>
33
- <% if user_signed_in? %>
34
- <%= form_for(@comment) do |f| %>
35
- <%= f.hidden_field :article_id, value: @article.id %>
36
- <div class="textarea_wrapper">
37
- <%= f.text_area :body, placeholder: "Write a comment..." %>
38
- </div>
39
- <div class="submit_button_wrapper">
40
- <button class="green_button" type="submit">
41
- Create Comment
42
- </button>
43
- </div>
44
- <% end %>
45
- <% end %>
46
- <div class="left_button_wrapper">
47
- <%= link_to 'Back', articles_path, class: "gray_button" %>
48
- </div>
49
- </section>
@@ -1,46 +0,0 @@
1
- <% if notice.present? %>
2
- <div class="notice_wrapper">
3
- <p class="notice">
4
- <%= notice %>
5
- </p>
6
- </div>
7
- <% end %>
8
-
9
- <header>
10
- <div class="header_area">
11
- <div class="header_root_wrapper">
12
- <%= link_to 'ActivityNotification', root_path %>
13
- </div>
14
- <div class="header_menu_wrapper">
15
- <p>
16
- <% if user_signed_in? %>
17
- <%= current_user.name %>
18
- <%= "(admin)" if current_user.admin? %>
19
- <%= link_to 'Logout', destroy_user_session_path, method: :delete %>
20
- <% else %>
21
- <%= link_to 'Login', new_user_session_path %>
22
- <% end %>
23
- </p>
24
- </div>
25
- <div class="header_notification_wrapper">
26
- <% if user_signed_in? %>
27
- <%= render_notifications_of current_user, fallback: :default, index_content: :with_attributes, devise_default_routes: respond_to?('notifications_path') %>
28
- <%#= render_notifications_of current_user, fallback: :default, index_content: :unopened_with_attributes, reverse: true %>
29
- <%#= render_notifications_of current_user, fallback: :default, index_content: :with_attributes, as_latest_group_member: true %>
30
- <%#= render_notifications_of current_user, fallback: :default_without_grouping, index_content: :with_attributes, with_group_members: true %>
31
- <% end %>
32
- </div>
33
- <div class="header_menu_wrapper">
34
- <p>
35
- <%= link_to 'Preview Email', "/rails/mailers" %>
36
- <%= " · " if !user_signed_in? or (current_user.admin? and respond_to?('admins_notifications_path')) %>
37
- </p>
38
- </div>
39
- <div class="header_menu_wrapper">
40
- <p>
41
- <%= link_to 'SPA', "/spa/" %>
42
- <%= " · " %>
43
- </p>
44
- </div>
45
- </div>
46
- </header>
@@ -1,15 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <title>ActivityNotification</title>
5
- <%= stylesheet_link_tag 'application', media: 'all' %>
6
- <%= javascript_include_tag 'application' %>
7
- <%= csrf_meta_tags %>
8
- </head>
9
- <body>
10
- <%= render 'layouts/header' %>
11
- <article>
12
- <%= yield %>
13
- </article>
14
- </body>
15
- </html>
@@ -1,2 +0,0 @@
1
- <div id='spa'/>
2
- <%= javascript_pack_tag 'spa' %>
@@ -1,72 +0,0 @@
1
- module.exports = function(api) {
2
- var validEnv = ['development', 'test', 'production']
3
- var currentEnv = api.env()
4
- var isDevelopmentEnv = api.env('development')
5
- var isProductionEnv = api.env('production')
6
- var isTestEnv = api.env('test')
7
-
8
- if (!validEnv.includes(currentEnv)) {
9
- throw new Error(
10
- 'Please specify a valid `NODE_ENV` or ' +
11
- '`BABEL_ENV` environment variables. Valid values are "development", ' +
12
- '"test", and "production". Instead, received: ' +
13
- JSON.stringify(currentEnv) +
14
- '.'
15
- )
16
- }
17
-
18
- return {
19
- presets: [
20
- isTestEnv && [
21
- '@babel/preset-env',
22
- {
23
- targets: {
24
- node: 'current'
25
- }
26
- }
27
- ],
28
- (isProductionEnv || isDevelopmentEnv) && [
29
- '@babel/preset-env',
30
- {
31
- forceAllTransforms: true,
32
- useBuiltIns: 'entry',
33
- corejs: 3,
34
- modules: false,
35
- exclude: ['transform-typeof-symbol']
36
- }
37
- ]
38
- ].filter(Boolean),
39
- plugins: [
40
- 'babel-plugin-macros',
41
- '@babel/plugin-syntax-dynamic-import',
42
- isTestEnv && 'babel-plugin-dynamic-import-node',
43
- '@babel/plugin-transform-destructuring',
44
- [
45
- '@babel/plugin-proposal-class-properties',
46
- {
47
- loose: true
48
- }
49
- ],
50
- [
51
- '@babel/plugin-proposal-object-rest-spread',
52
- {
53
- useBuiltIns: true
54
- }
55
- ],
56
- [
57
- '@babel/plugin-transform-runtime',
58
- {
59
- helpers: false,
60
- regenerator: true,
61
- corejs: false
62
- }
63
- ],
64
- [
65
- '@babel/plugin-transform-regenerator',
66
- {
67
- async: false
68
- }
69
- ]
70
- ].filter(Boolean)
71
- }
72
- }
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env ruby
2
- ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
3
- load Gem.bin_path('bundler', 'bundle')
@@ -1,4 +0,0 @@
1
- #!/usr/bin/env ruby
2
- APP_PATH = File.expand_path('../../config/application', __FILE__)
3
- require_relative '../config/boot'
4
- require 'rails/commands'
@@ -1,4 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require_relative '../config/boot'
3
- require 'rake'
4
- Rake.application.run