effective_messaging 0.2.2 → 0.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: eaebf1e8bccc037bfa5c5234f1c30ea60f454da39dded702004e8048fc440dfb
4
- data.tar.gz: 95415065976237d4c6008351e79d11f5174ce9671d53b248862eee8b9d3ff190
3
+ metadata.gz: 3aec5e478f15d3fb2fbc704273ebd3b0b9b8c7da1c604f53dca646b9458c7851
4
+ data.tar.gz: 144b0067e81f347f90fae2b6568b0fe2f138058a809080a68ac67598d2a17ce6
5
5
  SHA512:
6
- metadata.gz: 15919df42267f976f10ffbcf37f2e1314ee904825eb90d22273f10f02de0844b3c42e541827cbb6ca23da33ac961ebe069cbbbd25ac9153dfe7291beff7114a9
7
- data.tar.gz: 4294c145b19e78868f0f5a000c8f84731093e4cc46f7ceb65c5237a3955f26ad9ab72b72fd8ccf4654d2651c15ab2259cb570572f6355d9e28f6ae021568dd1f
6
+ metadata.gz: b765eab3df759ffe21ccd8f80d36a8b0f68e233dcfcc8dd79e69a04234a566def85bfaf1b58213af2ee3ca12a12d73da8e4a6d015ef192a4722ef602c6364f4a
7
+ data.tar.gz: 9b509ff5f1efa7497479fab6910985da6c4a9441529839a16ce887e354191123470e5d9579fa6183c05ee99e34b463325d1dbaf3391137c963d0a4051224962d
@@ -34,6 +34,10 @@ module Admin
34
34
 
35
35
  col :report, search: Effective::Report.notifiable.sorted
36
36
 
37
+ col(:rows_count) do |notification|
38
+ notification.report.collection().count
39
+ end
40
+
37
41
  col :subject
38
42
  col :body, visible: false
39
43
 
@@ -6,8 +6,8 @@ module Effective
6
6
  raise('expected an Effective::Notification') unless notification.kind_of?(Effective::Notification)
7
7
 
8
8
  # Returns a Hash of params to pass to mail()
9
- # Includes a :to, :from, etc
10
- rendered = notification.render_email
9
+ # Includes a :to, :from, :subject and :body, etc
10
+ rendered = notification.assign_renderer(view_context).render_email
11
11
 
12
12
  # Attach report
13
13
  attach_report!(notification)
@@ -31,8 +31,8 @@ module Effective
31
31
  raise('expected an acts_as_reportable resource') unless resource.class.try(:acts_as_reportable?)
32
32
 
33
33
  # Returns a Hash of params to pass to mail()
34
- # Includes a :to, :from, etc
35
- rendered = notification.render_email(resource)
34
+ # Includes a :to, :from, :subject and :body
35
+ rendered = notification.assign_renderer(view_context).render_email(resource)
36
36
 
37
37
  # Works with effective_logging to associate this email with the notification
38
38
  headers = headers_for(notification, opts)
@@ -6,6 +6,7 @@ module Effective
6
6
 
7
7
  attr_accessor :current_user
8
8
  attr_accessor :current_resource
9
+ attr_accessor :view_context
9
10
 
10
11
  log_changes if respond_to?(:log_changes)
11
12
 
@@ -192,7 +193,17 @@ module Effective
192
193
  end
193
194
 
194
195
  def report_variables
195
- Array(report&.report_columns).map(&:name)
196
+ assigns_for().keys
197
+ end
198
+
199
+ def assign_renderer(view_context)
200
+ raise('expected renderer to respond to') unless view_context.respond_to?(:root_url)
201
+ assign_attributes(view_context: view_context)
202
+ self
203
+ end
204
+
205
+ def renderer
206
+ view_context || ApplicationController.renderer
196
207
  end
197
208
 
198
209
  def rows_count
@@ -316,13 +327,25 @@ module Effective
316
327
  }.compact
317
328
  end
318
329
 
319
- def assigns_for(resource)
320
- return {} unless resource.present?
330
+ # We pull the Assigns from 3 places:
331
+ # 1. The report.report_columns
332
+ # 2. The class's def reportable_view_assigns(view) method
333
+ def assigns_for(resource = nil)
334
+ return {} unless report.present?
321
335
 
322
- Array(report&.report_columns).inject({}) do |h, column|
336
+ resource ||= report.reportable.new
337
+ raise('expected an acts_as_reportable resource') unless resource.class.try(:acts_as_reportable?)
338
+
339
+ report_assigns = Array(report.report_columns).inject({}) do |h, column|
323
340
  value = resource.send(column.name)
324
341
  h[column.name] = column.format(value); h
325
342
  end
343
+
344
+ reportable_view_assigns = resource.reportable_view_assigns(renderer).deep_stringify_keys
345
+ raise('expected notification assigns to return a Hash') unless reportable_view_assigns.kind_of?(Hash)
346
+
347
+ # Merge all 3
348
+ report_assigns.merge(reportable_view_assigns)
326
349
  end
327
350
 
328
351
  def build_notification_log(resource: nil)
@@ -3,7 +3,7 @@
3
3
  = render 'admin/notifications/form_notification', notification: notification
4
4
 
5
5
  - if notification.persisted? && notification.respond_to?(:logs_datatable)
6
- = tab 'Notification Logs' do
6
+ = tab 'Email Logs' do
7
7
  - datatable = Admin::EffectiveNotificationLogsDatatable.new(notification: notification)
8
8
  = render_inline_datatable(datatable)
9
9
 
@@ -59,7 +59,7 @@
59
59
 
60
60
  = f.email_field :bcc
61
61
  = f.text_field :subject
62
- = f.text_area :body
62
+ = f.text_area :body, rows: 20
63
63
 
64
64
  #effective-messaging-ajax
65
65
  - if f.object.report.present?
@@ -13,7 +13,7 @@
13
13
 
14
14
  = card('Preview of Notification') do
15
15
  - resource = notification.report.collection.order('RANDOM()').first
16
- - rendered = notification.render_email(resource)
16
+ - rendered = notification.assign_renderer(self).render_email(resource)
17
17
 
18
18
  %table.table
19
19
  %tbody
@@ -1,3 +1,3 @@
1
1
  module EffectiveMessaging
2
- VERSION = '0.2.2'.freeze
2
+ VERSION = '0.3.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_messaging
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-14 00:00:00.000000000 Z
11
+ date: 2023-08-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails