gritter 1.0.3 → 1.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 +7 -0
- data/.gitignore +5 -5
- data/README.md +440 -353
- data/gritter.gemspec +3 -3
- data/lib/generators/gritter/templates/gflash.en.yml +8 -0
- data/lib/gritter.rb +9 -0
- data/lib/gritter/gflash.rb +85 -50
- data/lib/gritter/helpers.rb +92 -90
- data/lib/gritter/version.rb +2 -2
- data/{app → vendor}/assets/images/error.png +0 -0
- data/{app → vendor}/assets/images/gritter-close.png +0 -0
- data/{app → vendor}/assets/images/gritter.png +0 -0
- data/{app → vendor}/assets/images/ie-spacer.gif +0 -0
- data/{app → vendor}/assets/images/notice.png +0 -0
- data/{app → vendor}/assets/images/progress.gif +0 -0
- data/{app → vendor}/assets/images/success.png +0 -0
- data/{app → vendor}/assets/images/warning.png +0 -0
- data/{app → vendor}/assets/javascripts/gritter.js +1 -1
- data/{app → vendor}/assets/stylesheets/gritter.css.scss +0 -0
- metadata +34 -58
data/gritter.gemspec
CHANGED
@@ -6,9 +6,9 @@ Gem::Specification.new do |s|
|
|
6
6
|
s.name = "gritter"
|
7
7
|
s.version = Gritter::VERSION
|
8
8
|
s.platform = Gem::Platform::RUBY
|
9
|
-
s.authors = ["Robin Brouwer"
|
10
|
-
s.email = ["robin@
|
11
|
-
s.homepage = "http://www.
|
9
|
+
s.authors = ["Robin Brouwer"]
|
10
|
+
s.email = ["robin@montblanc.nl"]
|
11
|
+
s.homepage = "http://www.montblanc.nl"
|
12
12
|
s.summary = %q{Growl notifications for your Rails application.}
|
13
13
|
s.description = %q{This Ruby on Rails gem allows you to easily add Growl-like notifications to your application using a jQuery plugin called 'gritter'.}
|
14
14
|
|
@@ -10,6 +10,14 @@ en:
|
|
10
10
|
error: "Error"
|
11
11
|
progress: "Progress"
|
12
12
|
#
|
13
|
+
# Add default gflash messages:
|
14
|
+
# defaults:
|
15
|
+
# success: "This is a notification"
|
16
|
+
# error: "Something went wrong"
|
17
|
+
# create:
|
18
|
+
# success: "Successfully created!"
|
19
|
+
# error: "Something went wrong. Please take a look at the form to see what went wrong."
|
20
|
+
#
|
13
21
|
# Add gflash messages for controller actions:
|
14
22
|
# products:
|
15
23
|
# create:
|
data/lib/gritter.rb
CHANGED
@@ -4,6 +4,15 @@ require 'gritter/engine'
|
|
4
4
|
require 'fileutils'
|
5
5
|
|
6
6
|
module Gritter
|
7
|
+
@rails_flash_fallback = false
|
8
|
+
|
9
|
+
def self.rails_flash_fallback
|
10
|
+
@rails_flash_fallback
|
11
|
+
end
|
12
|
+
def self.rails_flash_fallback=(val)
|
13
|
+
@rails_flash_fallback = val
|
14
|
+
end
|
15
|
+
|
7
16
|
def self.initialize
|
8
17
|
return if @initialized
|
9
18
|
raise "ActionController is not available yet." unless defined?(ActionController)
|
data/lib/gritter/gflash.rb
CHANGED
@@ -1,51 +1,86 @@
|
|
1
|
-
module Gritter
|
2
|
-
module Gflash
|
3
|
-
def redirect_to(options = {}, response_status_and_flash = {})
|
4
|
-
if response_status_and_flash.has_key?(:gflash)
|
5
|
-
gflash(response_status_and_flash[:gflash])
|
6
|
-
response_status_and_flash.delete(:gflash)
|
7
|
-
end
|
8
|
-
super(options, response_status_and_flash)
|
9
|
-
end
|
10
|
-
|
11
|
-
def gflash *args
|
12
|
-
session[:gflash] ||= {}
|
13
|
-
options = args.extract_options!
|
14
|
-
|
15
|
-
if args.
|
16
|
-
args
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
1
|
+
module Gritter
|
2
|
+
module Gflash
|
3
|
+
def redirect_to(options = {}, response_status_and_flash = {})
|
4
|
+
if response_status_and_flash.has_key?(:gflash)
|
5
|
+
gflash(response_status_and_flash[:gflash])
|
6
|
+
response_status_and_flash.delete(:gflash)
|
7
|
+
end
|
8
|
+
super(options, response_status_and_flash)
|
9
|
+
end
|
10
|
+
|
11
|
+
def gflash *args
|
12
|
+
session[:gflash] ||= {}
|
13
|
+
options = args.extract_options!
|
14
|
+
|
15
|
+
if args.size == 1 && args.first.is_a?(Array)
|
16
|
+
args = args.first
|
17
|
+
end
|
18
|
+
|
19
|
+
flash_now = args.include?(:now)
|
20
|
+
args.delete(:now) if flash_now
|
21
|
+
|
22
|
+
if args.present?
|
23
|
+
args.each do |key|
|
24
|
+
gflash_push(key, gflash_translation(key, options[:locals]), flash_now)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
options.except(:locals).each do |key, value|
|
29
|
+
if value.is_a?(Hash)
|
30
|
+
if value.has_key?(:value)
|
31
|
+
value[:value] = gflash_text(key, value[:value], value[:locals])
|
32
|
+
else
|
33
|
+
value[:value] = gflash_translation(key, value[:locals])
|
34
|
+
end
|
35
|
+
else
|
36
|
+
value = gflash_text(key, value, options[:locals])
|
37
|
+
end
|
38
|
+
gflash_push(key, value, flash_now)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def gflash_text(key, value, options={})
|
45
|
+
value == true ? gflash_translation(key, options) : value
|
46
|
+
end
|
47
|
+
|
48
|
+
def gflash_push(key, value, now=false)
|
49
|
+
session[:gflash][key] ||= []
|
50
|
+
session[:gflash][key].push(value)
|
51
|
+
|
52
|
+
if Gritter.rails_flash_fallback
|
53
|
+
if now
|
54
|
+
flash.now[key] ||= []
|
55
|
+
flash.now[key].push(value.is_a?(Hash) ? value[:value] : value)
|
56
|
+
else
|
57
|
+
flash[key] ||= []
|
58
|
+
flash[key].push(value.is_a?(Hash) ? value[:value] : value)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def gflash_translation(key, options)
|
64
|
+
options ||= {}
|
65
|
+
|
66
|
+
i18n_default_key = "gflash.defaults.#{key}"
|
67
|
+
i18n_default_action_key = "gflash.defaults.#{params[:action]}.#{key}"
|
68
|
+
i18n_key = "gflash.#{params[:controller]}.#{params[:action]}.#{key}"
|
69
|
+
i18n_key.gsub!(/\//, ".")
|
70
|
+
|
71
|
+
begin
|
72
|
+
options[:raise] = true
|
73
|
+
translation = I18n.t(i18n_key, options)
|
74
|
+
rescue I18n::MissingTranslationData
|
75
|
+
begin
|
76
|
+
translation = I18n.t(i18n_default_action_key, options)
|
77
|
+
rescue I18n::MissingTranslationData
|
78
|
+
options.delete(:raise)
|
79
|
+
translation = I18n.t(i18n_default_key, options)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
translation
|
84
|
+
end
|
85
|
+
end
|
51
86
|
end
|
data/lib/gritter/helpers.rb
CHANGED
@@ -1,90 +1,92 @@
|
|
1
|
-
module Gritter
|
2
|
-
module Helpers
|
3
|
-
def add_gritter text, *args
|
4
|
-
options = args.extract_options!
|
5
|
-
options[:title] = "Notification" if options[:title].blank?
|
6
|
-
options[:image] = asset_path("#{options[:image]}#{options[:image] == 'progress' ? '.gif' : '.png'}") if %w(success warning error notice progress).include?(options[:image].to_s)
|
7
|
-
notification = Array.new
|
8
|
-
notification.push("jQuery(function(){") if
|
9
|
-
notification.push("jQuery.gritter.add({")
|
10
|
-
notification.push("image:'#{options[:image]}',") if options[:image].present?
|
11
|
-
notification.push("sticky:#{options[:sticky]},") if options[:sticky].present?
|
12
|
-
notification.push("time:#{options[:time]},") if options[:time].present?
|
13
|
-
notification.push("class_name:'#{options[:class_name]}',") if options[:class_name].present?
|
14
|
-
notification.push("before_open:function(e){#{options[:before_open]}},") if options[:before_open].present?
|
15
|
-
notification.push("after_open:function(e){#{options[:after_open]}},") if options[:after_open].present?
|
16
|
-
notification.push("before_close:function(e){#{options[:before_close]}},") if options[:before_close].present?
|
17
|
-
notification.push("after_close:function(e){#{options[:after_close]}},") if options[:after_close].present?
|
18
|
-
notification.push("title:'#{escape_javascript(options[:title])}',")
|
19
|
-
notification.push("text:'#{escape_javascript(text)}'")
|
20
|
-
notification.push("});")
|
21
|
-
notification.push("});") if
|
22
|
-
text.present? ? notification.join.html_safe : nil
|
23
|
-
end
|
24
|
-
|
25
|
-
def remove_gritter *args
|
26
|
-
options = args.extract_options!
|
27
|
-
removed = ["jQuery.gritter.removeAll({"]
|
28
|
-
removed.push("before_close:function(e){#{options[:before_close]}},") if options[:before_close].present?
|
29
|
-
removed.push("after_close:function(e){#{options[:after_close]}},") if options[:after_close].present?
|
30
|
-
removed.push("});")
|
31
|
-
removed.join.html_safe
|
32
|
-
end
|
33
|
-
|
34
|
-
def extend_gritter *args
|
35
|
-
options = args.extract_options!
|
36
|
-
options[:fade_in_speed] = "'#{options[:fade_in_speed]}'" if options[:fade_in_speed].is_a?(String)
|
37
|
-
options[:fade_out_speed] = "'#{options[:fade_out_speed]}'" if options[:fade_out_speed].is_a?(String)
|
38
|
-
options[:position] = "'#{options[:position].to_s.gsub("_", "-")}'" if options[:position]
|
39
|
-
extended = ["jQuery.extend($.gritter.options,{"]
|
40
|
-
extended.push("fade_in_speed:#{options[:fade_in_speed]},") if options[:fade_in_speed].present?
|
41
|
-
extended.push("fade_out_speed:#{options[:fade_out_speed]},") if options[:fade_out_speed].present?
|
42
|
-
extended.push("time:#{options[:time]},") if options[:time].present?
|
43
|
-
extended.push("position:#{options[:position]}") if options[:position].present?
|
44
|
-
extended.push("});")
|
45
|
-
extended.join.html_safe
|
46
|
-
end
|
47
|
-
|
48
|
-
def gflash *args
|
49
|
-
if session[:gflash].present?
|
50
|
-
options = args.extract_options!
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
text = gflash_value
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
options
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
end
|
1
|
+
module Gritter
|
2
|
+
module Helpers
|
3
|
+
def add_gritter text, *args
|
4
|
+
options = args.extract_options!
|
5
|
+
options[:title] = "Notification" if options[:title].blank?
|
6
|
+
options[:image] = asset_path("#{options[:image]}#{options[:image].to_s == 'progress' ? '.gif' : '.png'}") if %w(success warning error notice progress).include?(options[:image].to_s)
|
7
|
+
notification = Array.new
|
8
|
+
notification.push("jQuery(function(){") if options[:nodom_wrap].blank?
|
9
|
+
notification.push("jQuery.gritter.add({")
|
10
|
+
notification.push("image:'#{options[:image]}',") if options[:image].present?
|
11
|
+
notification.push("sticky:#{options[:sticky]},") if options[:sticky].present?
|
12
|
+
notification.push("time:#{options[:time]},") if options[:time].present?
|
13
|
+
notification.push("class_name:'#{options[:class_name]}',") if options[:class_name].present?
|
14
|
+
notification.push("before_open:function(e){#{options[:before_open]}},") if options[:before_open].present?
|
15
|
+
notification.push("after_open:function(e){#{options[:after_open]}},") if options[:after_open].present?
|
16
|
+
notification.push("before_close:function(e){#{options[:before_close]}},") if options[:before_close].present?
|
17
|
+
notification.push("after_close:function(e){#{options[:after_close]}},") if options[:after_close].present?
|
18
|
+
notification.push("title:'#{escape_javascript(options[:title])}',")
|
19
|
+
notification.push("text:'#{escape_javascript(text)}'")
|
20
|
+
notification.push("});")
|
21
|
+
notification.push("});") if options[:nodom_wrap].blank?
|
22
|
+
text.present? ? notification.join.html_safe : nil
|
23
|
+
end
|
24
|
+
|
25
|
+
def remove_gritter *args
|
26
|
+
options = args.extract_options!
|
27
|
+
removed = ["jQuery.gritter.removeAll({"]
|
28
|
+
removed.push("before_close:function(e){#{options[:before_close]}},") if options[:before_close].present?
|
29
|
+
removed.push("after_close:function(e){#{options[:after_close]}},") if options[:after_close].present?
|
30
|
+
removed.push("});")
|
31
|
+
removed.join.html_safe
|
32
|
+
end
|
33
|
+
|
34
|
+
def extend_gritter *args
|
35
|
+
options = args.extract_options!
|
36
|
+
options[:fade_in_speed] = "'#{options[:fade_in_speed]}'" if options[:fade_in_speed].is_a?(String)
|
37
|
+
options[:fade_out_speed] = "'#{options[:fade_out_speed]}'" if options[:fade_out_speed].is_a?(String)
|
38
|
+
options[:position] = "'#{options[:position].to_s.gsub("_", "-")}'" if options[:position]
|
39
|
+
extended = ["jQuery.extend($.gritter.options,{"]
|
40
|
+
extended.push("fade_in_speed:#{options[:fade_in_speed]},") if options[:fade_in_speed].present?
|
41
|
+
extended.push("fade_out_speed:#{options[:fade_out_speed]},") if options[:fade_out_speed].present?
|
42
|
+
extended.push("time:#{options[:time]},") if options[:time].present?
|
43
|
+
extended.push("position:#{options[:position]}") if options[:position].present?
|
44
|
+
extended.push("});")
|
45
|
+
extended.join.html_safe
|
46
|
+
end
|
47
|
+
|
48
|
+
def gflash *args
|
49
|
+
if session[:gflash].present?
|
50
|
+
options = args.extract_options!
|
51
|
+
nodom_wrap = options[:nodom_wrap]
|
52
|
+
options.delete(:nodom_wrap)
|
53
|
+
|
54
|
+
titles = gflash_titles(options)
|
55
|
+
flashes = []
|
56
|
+
session[:gflash].each do |key, value|
|
57
|
+
value.each do |gflash_value|
|
58
|
+
gritter_options = { :image => key, :title => titles[key], :nodom_wrap => nodom_wrap }
|
59
|
+
if gflash_value.is_a?(Hash)
|
60
|
+
text = gflash_value.has_key?(:value) ? (gflash_value[:value] and gflash_value.delete(:value)) : nil
|
61
|
+
gritter_options.merge!(gflash_value)
|
62
|
+
else
|
63
|
+
text = gflash_value
|
64
|
+
end
|
65
|
+
flashes.push(add_gritter(text, gritter_options))
|
66
|
+
end
|
67
|
+
end
|
68
|
+
session[:gflash] = nil
|
69
|
+
options[:js] ? flashes.join("\n") : js(flashes).html_safe
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def js *args
|
74
|
+
javascript_tag(args.join("\n"))
|
75
|
+
end
|
76
|
+
|
77
|
+
private
|
78
|
+
|
79
|
+
def gflash_titles *args
|
80
|
+
options = args.extract_options!
|
81
|
+
titles = { :success => get_translation(:success), :warning => get_translation(:warning), :error => get_translation(:error), :notice => get_translation(:notice), :progress => get_translation(:progress) }
|
82
|
+
options.each do |key, value|
|
83
|
+
titles[key] = value if titles.has_key?(key)
|
84
|
+
end
|
85
|
+
titles
|
86
|
+
end
|
87
|
+
|
88
|
+
def get_translation translation
|
89
|
+
I18n.t(translation, :scope => [:gflash, :titles])
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
data/lib/gritter/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
module Gritter
|
2
|
-
VERSION = "1.0
|
1
|
+
module Gritter
|
2
|
+
VERSION = "1.1.0"
|
3
3
|
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
metadata
CHANGED
@@ -1,49 +1,27 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: gritter
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease: false
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 0
|
9
|
-
- 3
|
10
|
-
version: 1.0.3
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.1.0
|
11
5
|
platform: ruby
|
12
|
-
authors:
|
6
|
+
authors:
|
13
7
|
- Robin Brouwer
|
14
|
-
- "Dani\xC3\xABl Zwijnenburg"
|
15
8
|
autorequire:
|
16
9
|
bindir: bin
|
17
10
|
cert_chain: []
|
18
|
-
|
19
|
-
date: 2013-01-26 00:00:00 +01:00
|
20
|
-
default_executable:
|
11
|
+
date: 2014-01-31 00:00:00.000000000 Z
|
21
12
|
dependencies: []
|
22
|
-
|
23
|
-
|
24
|
-
email:
|
25
|
-
- robin@
|
13
|
+
description: This Ruby on Rails gem allows you to easily add Growl-like notifications
|
14
|
+
to your application using a jQuery plugin called 'gritter'.
|
15
|
+
email:
|
16
|
+
- robin@montblanc.nl
|
26
17
|
executables: []
|
27
|
-
|
28
18
|
extensions: []
|
29
|
-
|
30
19
|
extra_rdoc_files: []
|
31
|
-
|
32
|
-
|
33
|
-
- .gitignore
|
20
|
+
files:
|
21
|
+
- ".gitignore"
|
34
22
|
- Gemfile
|
35
23
|
- README.md
|
36
24
|
- Rakefile
|
37
|
-
- app/assets/images/error.png
|
38
|
-
- app/assets/images/gritter-close.png
|
39
|
-
- app/assets/images/gritter.png
|
40
|
-
- app/assets/images/ie-spacer.gif
|
41
|
-
- app/assets/images/notice.png
|
42
|
-
- app/assets/images/progress.gif
|
43
|
-
- app/assets/images/success.png
|
44
|
-
- app/assets/images/warning.png
|
45
|
-
- app/assets/javascripts/gritter.js
|
46
|
-
- app/assets/stylesheets/gritter.css.scss
|
47
25
|
- gritter.gemspec
|
48
26
|
- init.rb
|
49
27
|
- lib/generators/gritter/USAGE
|
@@ -55,39 +33,37 @@ files:
|
|
55
33
|
- lib/gritter/helpers.rb
|
56
34
|
- lib/gritter/railtie.rb
|
57
35
|
- lib/gritter/version.rb
|
58
|
-
|
59
|
-
|
36
|
+
- vendor/assets/images/error.png
|
37
|
+
- vendor/assets/images/gritter-close.png
|
38
|
+
- vendor/assets/images/gritter.png
|
39
|
+
- vendor/assets/images/ie-spacer.gif
|
40
|
+
- vendor/assets/images/notice.png
|
41
|
+
- vendor/assets/images/progress.gif
|
42
|
+
- vendor/assets/images/success.png
|
43
|
+
- vendor/assets/images/warning.png
|
44
|
+
- vendor/assets/javascripts/gritter.js
|
45
|
+
- vendor/assets/stylesheets/gritter.css.scss
|
46
|
+
homepage: http://www.montblanc.nl
|
60
47
|
licenses: []
|
61
|
-
|
48
|
+
metadata: {}
|
62
49
|
post_install_message:
|
63
50
|
rdoc_options: []
|
64
|
-
|
65
|
-
require_paths:
|
51
|
+
require_paths:
|
66
52
|
- lib
|
67
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
68
|
-
|
69
|
-
requirements:
|
53
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
70
55
|
- - ">="
|
71
|
-
- !ruby/object:Gem::Version
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
version: "0"
|
76
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
77
|
-
none: false
|
78
|
-
requirements:
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '0'
|
58
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
79
60
|
- - ">="
|
80
|
-
- !ruby/object:Gem::Version
|
81
|
-
|
82
|
-
segments:
|
83
|
-
- 0
|
84
|
-
version: "0"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
85
63
|
requirements: []
|
86
|
-
|
87
64
|
rubyforge_project: nowarning
|
88
|
-
rubygems_version:
|
65
|
+
rubygems_version: 2.2.1
|
89
66
|
signing_key:
|
90
|
-
specification_version:
|
67
|
+
specification_version: 4
|
91
68
|
summary: Growl notifications for your Rails application.
|
92
69
|
test_files: []
|
93
|
-
|