global_alerts 0.0.2 → 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: 80c6008fc3858caacc9c80d6868f6312d9428e5a1a017f1b031786d6a0b6c2dc
4
- data.tar.gz: 01030bb0d1f820819ce83a591da2897731b73c3c35868b8405b43e416fdbc093
3
+ metadata.gz: b2d276ba651ab199596da21e5cb21f6df96f799c095a06a7df9a54f155adc6c8
4
+ data.tar.gz: 3edc15a256ecac67413234f6b244b44a045206e6645aa1f7cd762a656072e4a4
5
5
  SHA512:
6
- metadata.gz: 8952e26ab3864ad79cd94ce744477ff64aa725edcd4096ee03c7304b52c763f134c8ae1521112131ecfda1286f577a2d3043b235e6724c9353661ca62957fdb5
7
- data.tar.gz: 919a4c120b77c8379fb390478bd083cf3456f22199a050feee0fcd510127ab9eddba106503ec32796a34ba6c08c4c4478fb7170d52b8da77bc1127abc9cfd4fb
6
+ metadata.gz: bee7b578178af6d0151486664d193d768879dd3153967e4d96feaf69a1bca77d127557f4087fba2fcf44747f332c10be3d6c21ba7e534ed8e42c3f71bb000352
7
+ data.tar.gz: d8a26ecee06b70f5679e07e7fca6395979649391ddb6a44b839a7436eef3cafb98d0d7e04804165d1852ddd9f1211d7be8b59cde2f9fea894dfe525446d0dbbb
data/README.md CHANGED
@@ -1,8 +1,68 @@
1
1
  # GlobalAlerts
2
- Short description and motivation.
2
+ A gem for managing user-facing alerts across the portfolio.
3
+ ⚠️[See current alerts](https://github.com/sul-dlss/global_alerts/blob/main/sul.yaml)
3
4
 
4
5
  ## Usage
5
- How to use my plugin.
6
+
7
+ ### Consuming
8
+
9
+ - Add the gem
10
+ - Set GLOBAL_ALERTS to `<%= true %>` in the application settings.
11
+ - Set any engine configuration in the consuming application's initializers:
12
+ - GlobalAlerts::Engine.config.cache (Cache for the alerts feed; defaults to the Rails cache)
13
+ - GlobalAlerts::Engine.config.application_name (Used for app-specific alerts, default is derived from the application name)
14
+ - GlobalAlerts::Engine.config.url (URL to pull alerts from)
15
+ - Render the global_alerts/alerts partial
16
+
17
+ ### Publishing alerts
18
+
19
+ In a YAML file (e.g. https://github.com/sul-dlss/global_alerts/blob/main/sul.yaml by default), configure alerts using:
20
+
21
+ - `html`: the HTML-safe alert text
22
+ - `application_name`: used for application-specific alert text; matches against the consumer's `GlobalAlerts::Engine.config.application_name`
23
+ - `from`/`to`: schedule alerts for particular times (also supports open-ended ranges with only `from` or only `to`)
24
+
25
+ Consuming applications will pick only the first relevant alert.
26
+
27
+ Restart any consuming applications.
28
+
29
+ ### Example Alerts
30
+
31
+ #### Basic alert
32
+ ```
33
+ alerts:
34
+ - html: A single <em>sample alert</em> across all apps. This will appear until manually removed from the YML file.
35
+ ```
36
+
37
+ #### `to`
38
+ ```
39
+ alerts:
40
+ - to: '2020-12-07T12:00:00-07:00'
41
+ html: This message will appear immediately and will expire on December 7th at noon.
42
+ ```
43
+
44
+ #### `from`
45
+ ```
46
+ alerts:
47
+ - from: '2020-12-07T12:00:00-07:00'
48
+ html: This message will begin on December 7th at noon and must be manually removed.
49
+ ```
50
+ #### `from` and `to`
51
+ ```
52
+ alerts:
53
+ - from: '2020-12-24T12:00:00-07:00'
54
+ to: '2020-12-25T12:00:00-07:00'
55
+ html: This message will appear from December 24th at noon and expire on December 25th at noon. This YML should be removed later.
56
+ ```
57
+
58
+ #### `application_name`
59
+ ```
60
+ alerts:
61
+ - application_name: 'MyLibrary
62
+ html: This message will appear on MyLibrary until manually removed.
63
+ - html: This alert will appear on all other applications with GLOBAL_ALERTS enabled
64
+ ```
65
+
6
66
 
7
67
  ## Installation
8
68
  Add this line to your application's Gemfile:
@@ -20,6 +80,3 @@ Or install it yourself as:
20
80
  ```bash
21
81
  $ gem install global_alerts
22
82
  ```
23
-
24
- ## Contributing
25
- Contribution directions go here.
@@ -1,3 +1,5 @@
1
+ require 'http'
2
+
1
3
  module GlobalAlerts
2
4
  class Alert
3
5
  include ActiveModel::Model
@@ -44,10 +46,19 @@ module GlobalAlerts
44
46
  delegate :present?, to: :html
45
47
 
46
48
  def active?(time: Time.zone.now, for_application: nil)
47
- return false if for_application == application_name
49
+ return false if for_application != application_name
48
50
 
49
51
  return true if from.nil? && to.nil?
50
- ((from.presence && Time.zone.parse(from))...(to.presence && Time.zone.parse(to))).cover?(time)
52
+
53
+ range.cover?(time)
54
+ end
55
+
56
+ def range
57
+ start_of_range = from.presence && Time.zone.parse(from)
58
+ start_of_range ||= Time.at(0) unless RUBY_VERSION > '2.7'
59
+
60
+ end_of_range = to.presence && Time.zone.parse(to)
61
+ start_of_range...end_of_range
51
62
  end
52
63
 
53
64
  def as_html
@@ -4,10 +4,11 @@ module GlobalAlerts
4
4
 
5
5
  config.cache = nil #defaults to Rails.cache
6
6
  config.application_name = nil
7
- config.url = 'https://github.com/sul-dlss/global-alerts/raw/main/sul.json'
7
+ config.url = 'https://github.com/sul-dlss/global-alerts/raw/main/sul.yaml'
8
8
 
9
9
  initializer('global_alerts_default') do |app|
10
- config.application_name ||= app.class.parent_name.underscore
10
+ # parent_name is deprecated in Rails 6.1
11
+ config.application_name ||= app.class.respond_to?(:parent_name) ? app.class.parent_name.underscore : app.class.module_parent_name.underscore
11
12
  end
12
13
  end
13
14
  end
@@ -1,3 +1,3 @@
1
1
  module GlobalAlerts
2
- VERSION = '0.0.2'
2
+ VERSION = '0.3.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: global_alerts
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Beer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-24 00:00:00.000000000 Z
11
+ date: 2021-01-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails