growlyflash 0.1.1
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 +15 -0
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/README.md +39 -0
- data/Rakefile +1 -0
- data/growlyflash.gemspec +24 -0
- data/lib/growlyflash.rb +22 -0
- data/lib/growlyflash/controller.rb +22 -0
- data/lib/growlyflash/engine.rb +6 -0
- data/lib/growlyflash/helpers.rb +11 -0
- data/lib/growlyflash/railtie.rb +14 -0
- data/lib/growlyflash/version.rb +3 -0
- data/vendor/assets/javascripts/growlyflash/bootstrap-growl.js.coffee +57 -0
- data/vendor/assets/javascripts/growlyflash/growlyflash.js.coffee +51 -0
- metadata +129 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
YWY1NDI1MzcxMzgyZTMyZjBjM2Q4MzRlZmYzNGFlNWZmZTBkOWExYw==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
NzBkNGY1NTJmN2EyZmExMWQ3NjZiZGQwNjk3NzBjNGU0N2RiY2IyZA==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
YzRhMzU4OWE2NzI1Mjg3YjVmZTQzNjRjMWNiYjZhZDlmYmRmZWVmN2U2NTQx
|
10
|
+
ZGZlOThiZGFiNDhkNmE0NzQ1NWQ3NDRiM2FjMWRhMDUwMmI5YTMyYzM2Zjcw
|
11
|
+
ZWQ1N2ZmYWI2ZWI0ZTUwYWNiYTlkNTE0N2QxMDVlZTQ0Yjc1ZmE=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
ZGU3ODg0ODA4YTAzNTg3NGJmZWUwNTg4MTAyNDEzODg3OTdiOWRkYzVhN2Jl
|
14
|
+
MDEwYmNkY2YyNzljMmY1YTEwOWQ0NmZjNDJiZTEzYWUwNTI3MzVjNzgyN2E0
|
15
|
+
NDYxMTc4ODI3ODJhMmZiNzA5ZTI2Yzc2NmZkNTQxMmMzZTBiZGQ=
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
# Growlyflash
|
2
|
+
|
3
|
+
Tiny gem which provides growl-styled flash messages for Ruby on Rails with Bootstrap.
|
4
|
+
|
5
|
+
For XHR requests flash messages are transfering in 'X-Messages' headers, otherwise they are storing in js variables.
|
6
|
+
|
7
|
+
Based on [Bootstrap Growl](https://github.com/ifightcrime/bootstrap-growl) and little bit on [Bootstrap Flash Messages](https://github.com/RobinBrouwer/bootstrap_flash_messages)
|
8
|
+
|
9
|
+
## Installation
|
10
|
+
|
11
|
+
Add this line to your application's Gemfile:
|
12
|
+
|
13
|
+
gem 'growlyflash'
|
14
|
+
|
15
|
+
And then execute:
|
16
|
+
|
17
|
+
$ bundle
|
18
|
+
|
19
|
+
Or install it yourself as:
|
20
|
+
|
21
|
+
$ gem install growlyflash
|
22
|
+
|
23
|
+
Also you need to put this line inside `head` tag in your layout, before any different javascripts:
|
24
|
+
|
25
|
+
<%= growlyflash_static_notices %>
|
26
|
+
|
27
|
+
And require it in your javascript:
|
28
|
+
|
29
|
+
//= require growlyflash/growlyflash
|
30
|
+
|
31
|
+
See [Bootstrap Growl](https://github.com/ifightcrime/bootstrap-growl) for any customisations.
|
32
|
+
|
33
|
+
## Contributing
|
34
|
+
|
35
|
+
1. Fork it
|
36
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
37
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
38
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
39
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/growlyflash.gemspec
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'growlyflash/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "growlyflash"
|
8
|
+
spec.version = Growlyflash::VERSION
|
9
|
+
spec.authors = ["Tõnis Simo"]
|
10
|
+
spec.email = ["anton.estum@gmail.com"]
|
11
|
+
spec.homepage = "https://github.com/tonissimo/growlyflash"
|
12
|
+
spec.summary = %q{Tiny gem which provides growl-styled flash messages for Ruby on Rails with Bootstrap.}
|
13
|
+
spec.description = %q{For XHR requests flash messages are transfering in 'X-Messages' headers, otherwise they are storing in js variables.}
|
14
|
+
|
15
|
+
spec.files = `git ls-files`.split($/)
|
16
|
+
spec.require_paths = %w(lib vendor)
|
17
|
+
|
18
|
+
spec.add_dependency "railties", "~> 3.1"
|
19
|
+
|
20
|
+
spec.add_development_dependency "rake"
|
21
|
+
spec.add_development_dependency "rails", '>= 3.2.0'
|
22
|
+
spec.add_development_dependency 'coffee-rails', '~> 3.2.1'
|
23
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
24
|
+
end
|
data/lib/growlyflash.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require "growlyflash/version"
|
2
|
+
require "growlyflash/controller"
|
3
|
+
require "growlyflash/helpers"
|
4
|
+
|
5
|
+
module Growlyflash
|
6
|
+
# Your code goes here...
|
7
|
+
def self.initialize
|
8
|
+
return if @initialized
|
9
|
+
raise "ActionController is not available yet." unless defined?(ActionController)
|
10
|
+
ActionController::Base.send(:helper, Growlyflash::Helpers)
|
11
|
+
ActionController::Base.send(:include, Growlyflash::Controller)
|
12
|
+
@initialized = true
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
if defined?(Rails)
|
17
|
+
require 'growlyflash/engine'
|
18
|
+
end
|
19
|
+
|
20
|
+
if defined?(Rails::Railtie)
|
21
|
+
require 'growlyflash/railtie'
|
22
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'active_support/concern'
|
2
|
+
|
3
|
+
module Growlyflash
|
4
|
+
module Controller
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
|
7
|
+
included do
|
8
|
+
after_filter :flash_to_headers, if: :is_xhr_request?
|
9
|
+
|
10
|
+
def flash_to_headers
|
11
|
+
flash_json = Hash[ flash.map { |type, msg| [type, msg] } ].to_json
|
12
|
+
response.headers['X-Message'] = flash_json.clone
|
13
|
+
flash.discard # don't want the flash to appear when you reload page
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
def is_xhr_request?
|
18
|
+
request.xhr?
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module Growlyflash
|
2
|
+
module Helpers
|
3
|
+
|
4
|
+
# Insert in head tag in your layout before any js.
|
5
|
+
def growlyflash_static_notices
|
6
|
+
if flash.any?
|
7
|
+
javascript_tag "window.flashes = #{ raw(Hash[ flash.map { |type, msg| [type, msg] } ].to_json) };", defer: 'defer'
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
if defined?(Rails::Railtie)
|
2
|
+
module Growlyflash
|
3
|
+
|
4
|
+
class Railtie < ::Rails::Railtie
|
5
|
+
# initializer 'growlyflash.active_controller' do
|
6
|
+
initializer :growlyflash do
|
7
|
+
Growlyflash.initialize
|
8
|
+
# ActiveSupport.on_load(:action_controller) do
|
9
|
+
# include Growlyflash::Controller
|
10
|
+
# end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# https://github.com/ifightcrime/bootstrap-growl
|
2
|
+
|
3
|
+
$ = jQuery
|
4
|
+
|
5
|
+
$.extend
|
6
|
+
bootstrapGrowl: (message, options) ->
|
7
|
+
settings =
|
8
|
+
ele: 'body'
|
9
|
+
type: null
|
10
|
+
offset: from:'top', amount:20
|
11
|
+
align: "right"
|
12
|
+
width: 250
|
13
|
+
delay: 4000
|
14
|
+
allow_dismiss: true
|
15
|
+
stackup_spacing: 10
|
16
|
+
|
17
|
+
settings = $.extend settings, options
|
18
|
+
|
19
|
+
console.log settings
|
20
|
+
|
21
|
+
html_attrs =
|
22
|
+
class: 'bootstrap-growl alert'
|
23
|
+
html: ''
|
24
|
+
html_attrs.class += " alert-#{settings.type}" if settings.type?
|
25
|
+
html_attrs.html += """<a class="close" data-dismiss="alert" href="#">×</a>""" if settings.allow_dismiss
|
26
|
+
html_attrs.html += message
|
27
|
+
|
28
|
+
$alert = $ '<div />', html_attrs
|
29
|
+
|
30
|
+
# Prevent BC breaks
|
31
|
+
if settings.top_offset?
|
32
|
+
settings.offset = from:'top', amount:settings.top_offset
|
33
|
+
|
34
|
+
# calculate any 'stack-up'
|
35
|
+
offsetAmount = settings.offset.amount
|
36
|
+
$(".bootstrap-growl").each ->
|
37
|
+
offsetAmount = Math.max(offsetAmount, parseInt($(@).css(settings.offset.from)) + $(@).outerHeight() + settings.stackup_spacing)
|
38
|
+
|
39
|
+
$alert.css
|
40
|
+
position: (if (settings.ele == 'body') then 'fixed' else 'absolute')
|
41
|
+
margin: 0
|
42
|
+
zIndex: 9999
|
43
|
+
display: 'none'
|
44
|
+
width: (if (settings.width != 'auto') then "#{settings.width}px" else 'auto')
|
45
|
+
$alert.css settings.offset.from, "#{offsetAmount}px"
|
46
|
+
|
47
|
+
# have to append before we can use outerWidth()
|
48
|
+
$(settings.ele).append $alert
|
49
|
+
$alert.css switch settings.align
|
50
|
+
when "center" then left:'50%', marginLeft:"-#{($alert.outerWidth() / 2)}px"
|
51
|
+
when "left" then left:'20px'
|
52
|
+
else right:'20px'
|
53
|
+
$alert.fadeIn()
|
54
|
+
|
55
|
+
# Only remove after delay if delay is more than 0
|
56
|
+
if settings.delay > 0
|
57
|
+
$alert.delay(settings.delay).fadeOut -> $(@).remove()
|
@@ -0,0 +1,51 @@
|
|
1
|
+
#= require growlyflash/bootstrap-growl
|
2
|
+
|
3
|
+
# unless $.Growlyflash then $.Growlyflash = $.bootstrapGrowl
|
4
|
+
|
5
|
+
root = global ? window
|
6
|
+
|
7
|
+
class Growlyflash
|
8
|
+
TYPE_MAPPING =
|
9
|
+
warning: null
|
10
|
+
error : 'error'
|
11
|
+
notice : 'info'
|
12
|
+
success: 'success'
|
13
|
+
|
14
|
+
constructor: () ->
|
15
|
+
@flashes_log = []
|
16
|
+
@growl(window.flashes) if window.flashes?
|
17
|
+
$(document).on 'ajax:complete', @ajax_complete
|
18
|
+
$(document).ajaxComplete @ajax_complete
|
19
|
+
|
20
|
+
growl: (flashes) ->
|
21
|
+
for type, msg of flashes when msg?
|
22
|
+
@flashes_log.push type:type, msg:msg
|
23
|
+
$.bootstrapGrowl msg,
|
24
|
+
type: TYPE_MAPPING[type]
|
25
|
+
|
26
|
+
messages: (flashes) ->
|
27
|
+
{ type:type, msg:msg } for type, msg of flashes
|
28
|
+
|
29
|
+
ajax_complete: (e, req) =>
|
30
|
+
flashes = $.parseJSON req.getResponseHeader 'X-Message'
|
31
|
+
return false if $.isEmptyObject flashes
|
32
|
+
|
33
|
+
messages = @messages flashes
|
34
|
+
|
35
|
+
if @flashes_log.length > 0
|
36
|
+
last_log = @flashes_log.slice( - messages.length )
|
37
|
+
not_matches = 0
|
38
|
+
not_matches++ for id, f of messages when (last_log[id].type isnt f.type) and (last_log[id].msg isnt f.msg)
|
39
|
+
unless not_matches > 0
|
40
|
+
@flashes_log = []
|
41
|
+
return true
|
42
|
+
|
43
|
+
$.merge @flashes_log, messages
|
44
|
+
@growl flashes
|
45
|
+
true
|
46
|
+
|
47
|
+
root.Growlyflash = Growlyflash
|
48
|
+
|
49
|
+
jQuery ->
|
50
|
+
|
51
|
+
new Growlyflash()
|
metadata
ADDED
@@ -0,0 +1,129 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: growlyflash
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Tõnis Simo
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-04-06 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: railties
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3.1'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '3.1'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ! '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rails
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ! '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 3.2.0
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 3.2.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: coffee-rails
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 3.2.1
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 3.2.1
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: bundler
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ~>
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1.3'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.3'
|
83
|
+
description: For XHR requests flash messages are transfering in 'X-Messages' headers,
|
84
|
+
otherwise they are storing in js variables.
|
85
|
+
email:
|
86
|
+
- anton.estum@gmail.com
|
87
|
+
executables: []
|
88
|
+
extensions: []
|
89
|
+
extra_rdoc_files: []
|
90
|
+
files:
|
91
|
+
- .gitignore
|
92
|
+
- Gemfile
|
93
|
+
- README.md
|
94
|
+
- Rakefile
|
95
|
+
- growlyflash.gemspec
|
96
|
+
- lib/growlyflash.rb
|
97
|
+
- lib/growlyflash/controller.rb
|
98
|
+
- lib/growlyflash/engine.rb
|
99
|
+
- lib/growlyflash/helpers.rb
|
100
|
+
- lib/growlyflash/railtie.rb
|
101
|
+
- lib/growlyflash/version.rb
|
102
|
+
- vendor/assets/javascripts/growlyflash/bootstrap-growl.js.coffee
|
103
|
+
- vendor/assets/javascripts/growlyflash/growlyflash.js.coffee
|
104
|
+
homepage: https://github.com/tonissimo/growlyflash
|
105
|
+
licenses: []
|
106
|
+
metadata: {}
|
107
|
+
post_install_message:
|
108
|
+
rdoc_options: []
|
109
|
+
require_paths:
|
110
|
+
- lib
|
111
|
+
- vendor
|
112
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - ! '>='
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '0'
|
117
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
|
+
requirements:
|
119
|
+
- - ! '>='
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: '0'
|
122
|
+
requirements: []
|
123
|
+
rubyforge_project:
|
124
|
+
rubygems_version: 2.0.3
|
125
|
+
signing_key:
|
126
|
+
specification_version: 4
|
127
|
+
summary: Tiny gem which provides growl-styled flash messages for Ruby on Rails with
|
128
|
+
Bootstrap.
|
129
|
+
test_files: []
|