effective_messaging 0.2.1 → 0.3.0

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
  SHA256:
3
- metadata.gz: be48cb89363c5dd4146206380ab6c0debf9a846d92d617237d9efd38ab7ea77c
4
- data.tar.gz: '014369c2395911329879c116344837106cb6722ceb70f6e7413e71bff527fe52'
3
+ metadata.gz: 3aec5e478f15d3fb2fbc704273ebd3b0b9b8c7da1c604f53dca646b9458c7851
4
+ data.tar.gz: 144b0067e81f347f90fae2b6568b0fe2f138058a809080a68ac67598d2a17ce6
5
5
  SHA512:
6
- metadata.gz: f60c2115c09f7237c2a9d1ddcf0109e2f728d615d0ac364344692c0fea0872c3ce53a1960f8d801223d9deebc5f6d8e8f6037e92bab11bfcedc39ef9c7b6f4ce
7
- data.tar.gz: c68ce9e88599ad0267615e43f860d13cce6c0f65f3ef799277923b100211648923abecedfd7496402101581b1c3749a168a3364e3bc32f41143eb615a60e1904
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
 
@@ -53,13 +53,13 @@
53
53
  - froms = Array(EffectiveMessaging.froms) - [nil, '']
54
54
 
55
55
  - if froms.present?
56
- = f.select :from, Array(froms).map { |from| [from, from] }
56
+ = f.radios :from, froms
57
57
  - else
58
58
  = f.email_field :from
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.1'.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.1
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