unobtrusive_flash 3.0.0 → 3.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.
- checksums.yaml +4 -4
- data/.travis.yml +6 -0
- data/CHANGELOG.md +7 -0
- data/README.markdown +10 -5
- data/lib/assets/javascripts/unobtrusive_flash.js +3 -3
- data/lib/assets/javascripts/unobtrusive_flash_bootstrap.js +6 -4
- data/lib/assets/javascripts/unobtrusive_flash_ui.js +3 -1
- data/lib/unobtrusive_flash/controller_mixin.rb +12 -1
- data/lib/unobtrusive_flash/version.rb +1 -1
- data/spec/domain_spec.rb +25 -0
- data/spec/sanitize_flash_spec.rb +2 -2
- data/unobtrusive_flash.gemspec +2 -1
- metadata +33 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2eb8a0a2384eecefacf6fd3aff7dc0799567aca4
|
4
|
+
data.tar.gz: c4d0f68f87e5fc0f7b4b39725ad12b1b384e90e3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b7ed858fbdb382db5a0823e3677a6f4609062710d9789fbd2924f86fd47bf1a0843ba90f9e2edd31297f9ae413a5281cf393c01940fbb910c02296fab3c00e95
|
7
|
+
data.tar.gz: ea0a2251c0366a6a81aae1f230d4a3982da82148d86cca0bc4ed0ee120fdecb9d2e6d7e9858602c37a7bd23da0d3fd4f980c1814a24c1d5e40168e538d3617ab
|
data/.travis.yml
ADDED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
## 2014-06-23 3.1.0
|
2
|
+
|
3
|
+
* Extracted default flash options to `UnobtrusiveFlash.flashOptions` so you can set the message timeout.
|
4
|
+
* Use `hostname` when nuking cookies by @zeppelin [#14]
|
5
|
+
* Check $flashContainer dynamically by @nfedyashev [#15].
|
6
|
+
* Fixed issues with applications on the .herokuapp.com domain [#16].
|
7
|
+
|
1
8
|
## 2014-03-07 3.0.0
|
2
9
|
|
3
10
|
* Moved Javascript methods to an `UnobtrusiveFlash` module. This breaks calling `$.showFlashMessage`, hence another major release [#11]
|
data/README.markdown
CHANGED
@@ -1,6 +1,4 @@
|
|
1
|
-
# Unobtrusive flash messages for Rails
|
2
|
-
|
3
|
-
**Version 1 users:** this gem got a major redesign in version 2, please read the documentation
|
1
|
+
# Unobtrusive flash messages for Rails [](https://travis-ci.org/leonid-shevtsov/unobtrusive_flash)
|
4
2
|
|
5
3
|
Ever got tired of pages that can't be cached because they contain flash messages?
|
6
4
|
|
@@ -52,10 +50,18 @@ Also `require unobtrusive_flash_bootstrap` in your `application.js`. This file c
|
|
52
50
|
|
53
51
|
Either declare a `.unobtrusive-flash-container` element somewhere on the page to contain the alerts, or Unobtrusive flash will choose the first `.container` or `.container-fluid` element on the page, or fall back to the `body`.
|
54
52
|
|
53
|
+
If you want the flash messages to disappear automatically, set this in your Javascript:
|
54
|
+
|
55
|
+
UnobtrusiveFlash.flashOptions['timeout'] = 2000; // milliseconds
|
56
|
+
|
55
57
|
### Option 2: For non-Bootstrap projects
|
56
58
|
|
57
59
|
Also `require unobtrusive_flash_ui` in your `application.js` and `require unobtrusive_flash_ui` in your `application.css`. These files contain a no-frills flash message UI that works out of the box.
|
58
60
|
|
61
|
+
If you want the flash messages to disappear automatically, set this in your Javascript:
|
62
|
+
|
63
|
+
UnobtrusiveFlash.flashOptions['timeout'] = 2000; // milliseconds
|
64
|
+
|
59
65
|
### Option 3: Roll your own
|
60
66
|
|
61
67
|
Unobtrusive Flash triggers jQuery events when flash is received. If you want to integrate it with your own UI, implement and bind a handler:
|
@@ -66,7 +72,6 @@ Unobtrusive Flash triggers jQuery events when flash is received. If you want to
|
|
66
72
|
|
67
73
|
$(window).bind('rails:flash', flashHandler);
|
68
74
|
|
69
|
-
|
70
75
|
## Using UnobtrusiveFlash with a frontend framework that doesn't use jQuery for AJAX
|
71
76
|
|
72
77
|
Call `UnobtrusiveFlash.showFlashFromCookies()` in your Javascript after a completed request.
|
@@ -82,4 +87,4 @@ Both Bootstrap and non-Bootstrap versions contain a function to display flash me
|
|
82
87
|
|
83
88
|
* * *
|
84
89
|
|
85
|
-
© 2010-2014 Leonid Shevtsov, released under the MIT license
|
90
|
+
© 2010-2014 [Leonid Shevtsov](http://leonid.shevtsov.me) and [contributors](https://github.com/leonid-shevtsov/unobtrusive_flash/graphs/contributors), released under the MIT license
|
@@ -1,12 +1,13 @@
|
|
1
|
+
window.UnobtrusiveFlash = {}
|
2
|
+
|
1
3
|
$(function() {
|
2
4
|
// Delete the cookie regardless of the domain it was set from
|
3
5
|
// Partial credit to http://stackoverflow.com/a/2959110/6678
|
4
6
|
function nukeCookie(cookieName) {
|
5
7
|
var yesterday = new Date();
|
6
8
|
yesterday.setDate(yesterday.getDate() - 1);
|
7
|
-
var hostParts = window.location.
|
9
|
+
var hostParts = window.location.hostname.split('.').reverse();
|
8
10
|
var expireHost = hostParts.shift();
|
9
|
-
expireHost = expireHost.replace(/^([a-z]{1,})\:[0-9]{1,5}/, '$1');
|
10
11
|
$.each(hostParts, function(i,part) {
|
11
12
|
expireHost = part + '.' + expireHost;
|
12
13
|
document.cookie = cookieName+'=; path=/;expires='+yesterday+'; domain='+expireHost;
|
@@ -43,7 +44,6 @@ $(function() {
|
|
43
44
|
}
|
44
45
|
|
45
46
|
// Reads flash messages from cookies and fires corresponding events
|
46
|
-
window.UnobtrusiveFlash = {}
|
47
47
|
window.UnobtrusiveFlash['showFlashFromCookies'] = function() {
|
48
48
|
var flashMessages = extractFlashFromCookies();
|
49
49
|
if (flashMessages !== null) {
|
@@ -3,11 +3,12 @@
|
|
3
3
|
//
|
4
4
|
// Declare a .unobtrusive-flash-container wherever you want the messages to appear
|
5
5
|
// Defaults to .container, .container-fluid (core Bootstrap classes), or just the body tag, whichever is present
|
6
|
-
$(function() {
|
7
|
-
var $flashContainer = $($('.unobtrusive-flash-container')[0] || $('.container')[0] || $('.container-fluid')[0] || $('body')[0]);
|
8
6
|
|
7
|
+
window.UnobtrusiveFlash.flashOptions = {type: 'notice', timeout: 0};
|
8
|
+
|
9
|
+
$(function() {
|
9
10
|
UnobtrusiveFlash.showFlashMessage = function(message, options) {
|
10
|
-
options = $.extend(
|
11
|
+
options = $.extend(UnobtrusiveFlash.flashOptions, options);
|
11
12
|
|
12
13
|
// Workaround for common Rails flash type to match common Bootstrap alert type
|
13
14
|
if (options.type=='notice') {
|
@@ -20,6 +21,7 @@ $(function() {
|
|
20
21
|
|
21
22
|
var $flash = $('<div class="alert alert-'+options.type+'"><button type="button" class="close" data-dismiss="alert">×</button>'+message+'</div>');
|
22
23
|
|
24
|
+
var $flashContainer = $($('.unobtrusive-flash-container')[0] || $('.container')[0] || $('.container-fluid')[0] || $('body')[0]);
|
23
25
|
$flashContainer.prepend($flash);
|
24
26
|
|
25
27
|
$flash.hide().delay(300).slideDown(100);
|
@@ -38,4 +40,4 @@ $(function() {
|
|
38
40
|
};
|
39
41
|
|
40
42
|
$(window).bind('rails:flash', flashHandler);
|
41
|
-
});
|
43
|
+
});
|
@@ -2,6 +2,8 @@
|
|
2
2
|
// Remember to link unobtrusive_flash_ui.css as well
|
3
3
|
//
|
4
4
|
// Shows flash messages as translucent bars on top of the page
|
5
|
+
window.UnobtrusiveFlash.flashOptions = {type: 'notice', timeout: 0};
|
6
|
+
|
5
7
|
$(function() {
|
6
8
|
$('<div id="unobtrusive-flash-messages"></div>').prependTo('body');
|
7
9
|
|
@@ -12,7 +14,7 @@ $(function() {
|
|
12
14
|
}
|
13
15
|
|
14
16
|
UnobtrusiveFlash.showFlashMessage = function(message, options) {
|
15
|
-
options = $.extend(
|
17
|
+
options = $.extend(UnobtrusiveFlash.flashOptions, options);
|
16
18
|
|
17
19
|
var $flash = $('<div class="unobtrusive-flash-message-wrapper unobtrusive-flash-'+options.type+'"><div class="unobtrusive-flash-message">'+message+'</div></div>');
|
18
20
|
|
@@ -13,11 +13,22 @@ module UnobtrusiveFlash
|
|
13
13
|
end
|
14
14
|
|
15
15
|
cookie_flash += UnobtrusiveFlash::ControllerMixin.sanitize_flash(flash)
|
16
|
-
cookies[:flash] = {:value => cookie_flash.to_json, :domain =>
|
16
|
+
cookies[:flash] = {:value => cookie_flash.to_json, :domain => unobtrusive_flash_domain}
|
17
17
|
flash.discard
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
+
# Setting cookies for :all domains is broken for Heroku apps, read this article for details
|
22
|
+
# https://devcenter.heroku.com/articles/cookies-and-herokuapp-com
|
23
|
+
# You can also override this method in your controller if you need to customize the cookie domain
|
24
|
+
def unobtrusive_flash_domain
|
25
|
+
if request.host =~ /\.herokuapp\.com$/
|
26
|
+
request.host
|
27
|
+
else
|
28
|
+
:all
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
21
32
|
class << self
|
22
33
|
def sanitize_flash(flash)
|
23
34
|
flash.to_a.map do |key, value|
|
data/spec/domain_spec.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe UnobtrusiveFlash::ControllerMixin do
|
4
|
+
describe '#unobtrusive_flash_domain' do
|
5
|
+
let(:controller_class) { Struct.new(:request) }
|
6
|
+
before(:each) { controller_class.send(:include, UnobtrusiveFlash::ControllerMixin) }
|
7
|
+
subject { controller_class.new( double('request', host: host) ) }
|
8
|
+
|
9
|
+
context 'not on Heroku' do
|
10
|
+
let(:host) { 'microsoft.com' }
|
11
|
+
|
12
|
+
it 'should use :all' do
|
13
|
+
expect(subject.send(:unobtrusive_flash_domain)).to eq(:all)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
context 'on Heroku' do
|
18
|
+
let(:host) { 'myapp.herokuapp.com' }
|
19
|
+
|
20
|
+
it 'should use the host' do
|
21
|
+
expect(subject.send(:unobtrusive_flash_domain)).to eq('myapp.herokuapp.com')
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/spec/sanitize_flash_spec.rb
CHANGED
@@ -3,11 +3,11 @@ require 'spec_helper'
|
|
3
3
|
describe UnobtrusiveFlash::ControllerMixin do
|
4
4
|
describe '.sanitize_flash' do
|
5
5
|
it 'should escape messages that are not html safe' do
|
6
|
-
described_class.sanitize_flash({:foo => '<bar>'}).
|
6
|
+
expect(described_class.sanitize_flash({:foo => '<bar>'})).to eq([[:foo, '<bar>']])
|
7
7
|
end
|
8
8
|
|
9
9
|
it 'should not escape messages that are html safe' do
|
10
|
-
described_class.sanitize_flash({:foo => '<bar>'.html_safe}).
|
10
|
+
expect(described_class.sanitize_flash({:foo => '<bar>'.html_safe})).to eq([[:foo, '<bar>']])
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|
data/unobtrusive_flash.gemspec
CHANGED
metadata
CHANGED
@@ -1,71 +1,85 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: unobtrusive_flash
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Leonid Shevtsov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-06-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '1.3'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.3'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '3'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '3'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec-mocks
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '3'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3'
|
69
83
|
description: |
|
70
84
|
unobtrusive_flash takes your flash messages for the backend and automagically passes them to the frontend via HTTP cookies.
|
71
85
|
This works with both regular page loads and AJAX requests, does not tamper with the page body and requires about 3 extra
|
@@ -76,7 +90,8 @@ executables: []
|
|
76
90
|
extensions: []
|
77
91
|
extra_rdoc_files: []
|
78
92
|
files:
|
79
|
-
- .gitignore
|
93
|
+
- ".gitignore"
|
94
|
+
- ".travis.yml"
|
80
95
|
- CHANGELOG.md
|
81
96
|
- Gemfile
|
82
97
|
- README.markdown
|
@@ -89,6 +104,7 @@ files:
|
|
89
104
|
- lib/unobtrusive_flash/controller_mixin.rb
|
90
105
|
- lib/unobtrusive_flash/engine.rb
|
91
106
|
- lib/unobtrusive_flash/version.rb
|
107
|
+
- spec/domain_spec.rb
|
92
108
|
- spec/sanitize_flash_spec.rb
|
93
109
|
- spec/spec_helper.rb
|
94
110
|
- unobtrusive_flash.gemspec
|
@@ -101,20 +117,21 @@ require_paths:
|
|
101
117
|
- lib
|
102
118
|
required_ruby_version: !ruby/object:Gem::Requirement
|
103
119
|
requirements:
|
104
|
-
- -
|
120
|
+
- - ">="
|
105
121
|
- !ruby/object:Gem::Version
|
106
122
|
version: '0'
|
107
123
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
108
124
|
requirements:
|
109
|
-
- -
|
125
|
+
- - ">="
|
110
126
|
- !ruby/object:Gem::Version
|
111
127
|
version: '0'
|
112
128
|
requirements: []
|
113
129
|
rubyforge_project:
|
114
|
-
rubygems_version: 2.
|
130
|
+
rubygems_version: 2.2.2
|
115
131
|
signing_key:
|
116
132
|
specification_version: 4
|
117
133
|
summary: Unobtrusive flash messages for Rails
|
118
134
|
test_files:
|
135
|
+
- spec/domain_spec.rb
|
119
136
|
- spec/sanitize_flash_spec.rb
|
120
137
|
- spec/spec_helper.rb
|