acts_as_notifiable_redmine 0.1 → 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 +4 -4
- data/.gitignore +1 -0
- data/README.md +125 -3
- data/acts_as_notifiable_redmine.gemspec +2 -0
- data/lib/acts_as_notifiable_redmine/couriers/pusher_courier.rb +2 -0
- data/lib/acts_as_notifiable_redmine/version.rb +1 -1
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e5726f65e38236c68fc89eaee4993903cd29fa9c
|
4
|
+
data.tar.gz: 276818b7c41e1e55160b417b15a5745ef4b33b8f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a962403064e8c8c7e2923587fdd66fe953eaf25940a50259d9f921dea8c6328cd14826356bcb41d5146af04399afefef4ad6607dbe9df4a61e5006bb0af0a1bb
|
7
|
+
data.tar.gz: 9fd8bc029266aad45630b02964efad6faf57e361b121593d660457720c11e3357edff6ea1bf15f59220974eea21110a4ac5093164bed42fcf06bece691a8c1e2
|
data/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
*.gem
|
data/README.md
CHANGED
@@ -1,11 +1,10 @@
|
|
1
1
|
### A gem which makes notifying your Redmine instance easy ;)
|
2
2
|
|
3
|
-
This gem is designed to integrate the [Pusher Notification System](http://pusher.com) in Redmine
|
4
|
-
|
5
|
-
It must be used with [Redmine Pusher Notifications](https://github.com/jbox-web/redmine_pusher_notifications).
|
3
|
+
This gem is designed to integrate the [Pusher Notification System](http://pusher.com) in Redmine but you may use it for other Rails apps ;)
|
6
4
|
|
7
5
|
## Code status
|
8
6
|
|
7
|
+
* [](http://badge.fury.io/rb/acts_as_notifiable_redmine)
|
9
8
|
* [](https://codeclimate.com/github/jbox-web/acts_as_notifiable_redmine)
|
10
9
|
|
11
10
|
## Requirements
|
@@ -17,6 +16,129 @@ It must be used with [Redmine Pusher Notifications](https://github.com/jbox-web/
|
|
17
16
|
|
18
17
|
gem install acts_as_notifiable_redmine
|
19
18
|
|
19
|
+
## Example usage
|
20
|
+
First you need to configure you Pusher account :
|
21
|
+
|
22
|
+
ActsAsNotifiableRedmine::Notifications.register_courier :pusher do
|
23
|
+
app_id 'xxxxx'
|
24
|
+
key 'xxxxxxxxxxxxxxxxxxxx'
|
25
|
+
secret 'xxxxxxxxxxxxxxxxxxxx'
|
26
|
+
encrypted true
|
27
|
+
end
|
28
|
+
|
29
|
+
Then you need to register your channels and events : each channel can have many events.
|
30
|
+
It may also have an optional ```target``` parameter which can be a string or a Proc.
|
31
|
+
|
32
|
+
ActsAsNotifiableRedmine::Notifications.register_channel :channel_test do
|
33
|
+
target Proc.new { User.current.login }
|
34
|
+
event :event1, :sticky => true
|
35
|
+
event :event2, :sticky => false
|
36
|
+
event :event3
|
37
|
+
end
|
38
|
+
|
39
|
+
ActsAsNotifiableRedmine::Notifications.register_channel :broadcast do
|
40
|
+
target 'broadcast'
|
41
|
+
event :event1, :sticky => true
|
42
|
+
event :event2, :sticky => false
|
43
|
+
event :event3
|
44
|
+
end
|
45
|
+
|
46
|
+
Once done, you can get the registered channels and events with :
|
47
|
+
|
48
|
+
ActsAsNotifiableRedmine::Notifications.channels.each do |name, channel|
|
49
|
+
puts "#############"
|
50
|
+
puts "Channel :"
|
51
|
+
puts "name : #{channel.name}"
|
52
|
+
puts "identifier : #{channel.identifier}"
|
53
|
+
puts "token : #{channel.token}"
|
54
|
+
puts "events :"
|
55
|
+
channel.events.each do |event|
|
56
|
+
puts " * #{event.name} (sticky : #{event.sticky?})"
|
57
|
+
end
|
58
|
+
puts ""
|
59
|
+
end
|
60
|
+
|
61
|
+
To get the Pusher parameters :
|
62
|
+
|
63
|
+
courier = ActsAsNotifiableRedmine::Notifications.courier
|
64
|
+
|
65
|
+
puts "#############"
|
66
|
+
puts "Courier :"
|
67
|
+
puts "name : #{courier.name}"
|
68
|
+
puts "app_id : #{courier.app_id}"
|
69
|
+
puts "key : #{courier.key}"
|
70
|
+
puts "secret : #{courier.secret}"
|
71
|
+
puts "encrypted : #{courier.encrypted}"
|
72
|
+
|
73
|
+
Finally to send notifications :
|
74
|
+
|
75
|
+
ActsAsNotifiableRedmine::Notifications.send_notification([channel.token], event.name, {:title => 'Hello!', :message => 'This is a test message !'})
|
76
|
+
|
77
|
+
**Note** : The logic to determine wether or not to send a notification is let to the developer. You can easily do this with callbacks :
|
78
|
+
|
79
|
+
class Comment < ActiveRecord::Base
|
80
|
+
has_many :watchers
|
81
|
+
after_create :send_notification
|
82
|
+
|
83
|
+
private
|
84
|
+
|
85
|
+
def send_notification
|
86
|
+
channels = []
|
87
|
+
watchers.each do |watcher|
|
88
|
+
token = '<channel_name>-' + watcher.login
|
89
|
+
channels.push(token)
|
90
|
+
end
|
91
|
+
ActsAsNotifiableRedmine::Notifications.send_notification(channels, <event_name>, {:title => 'Hello!', :message => 'This is a test message !'})
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
And to display them (put this in the layout) :
|
96
|
+
|
97
|
+
<% if User.current.logged? %>
|
98
|
+
|
99
|
+
<%= javascript_tag do %>
|
100
|
+
|
101
|
+
$(document).ready(function() {
|
102
|
+
$.extend($.gritter.options, {
|
103
|
+
fade_in_speed: 'fast',
|
104
|
+
fade_out_speed: 'fast',
|
105
|
+
time: 6000,
|
106
|
+
});
|
107
|
+
|
108
|
+
$(function() {
|
109
|
+
var pusher = new Pusher('<%= ActsAsNotifiableRedmine::Notifications.courier.key %>');
|
110
|
+
|
111
|
+
<% ActsAsNotifiableRedmine::Notifications.channels.each do |name, channel| %>
|
112
|
+
var <%= j channel.identifier %> = pusher.subscribe('<%= channel.token %>');
|
113
|
+
|
114
|
+
<%= channel.identifier %>.bind('subscription_error', function(status) {
|
115
|
+
$.gritter.add({
|
116
|
+
title: 'Pusher : <%= channel.identifier %>',
|
117
|
+
text: 'Subscription error'
|
118
|
+
});
|
119
|
+
});
|
120
|
+
|
121
|
+
<% channel.events.each do |event| %>
|
122
|
+
<%= channel.identifier %>.bind('<%= event.name %>', function(data) {
|
123
|
+
$.gritter.add({
|
124
|
+
title: data.title,
|
125
|
+
text: data.message,
|
126
|
+
image: data.image,
|
127
|
+
sticky: <%= event.sticky? %>,
|
128
|
+
});
|
129
|
+
});
|
130
|
+
|
131
|
+
<% end %>
|
132
|
+
|
133
|
+
<% end %>
|
134
|
+
|
135
|
+
});
|
136
|
+
});
|
137
|
+
<% end %>
|
138
|
+
<% end %>
|
139
|
+
|
140
|
+
**Note** : [gritter](http://boedesign.com/blog/2009/07/11/growl-for-jquery-gritter/) is not bundled with the gem.
|
141
|
+
|
20
142
|
## Copyrights & License
|
21
143
|
acts_as_notifiable_redmine is completely free and open source and released under the [MIT License](https://github.com/jbox-web/acts_as_notifiable_redmine/blob/devel/LICENSE.txt).
|
22
144
|
|
@@ -14,6 +14,8 @@ Gem::Specification.new do |s|
|
|
14
14
|
|
15
15
|
s.rubyforge_project = "acts_as_notifiable_redmine"
|
16
16
|
|
17
|
+
s.add_dependency "pusher"
|
18
|
+
|
17
19
|
s.files = `git ls-files`.split("\n")
|
18
20
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
21
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acts_as_notifiable_redmine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nicolas Rodriguez
|
@@ -9,7 +9,21 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
date: 2014-05-31 00:00:00.000000000 Z
|
12
|
-
dependencies:
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: pusher
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
description:
|
14
28
|
email:
|
15
29
|
- nrodriguez@jbox-web.com
|
@@ -17,6 +31,7 @@ executables: []
|
|
17
31
|
extensions: []
|
18
32
|
extra_rdoc_files: []
|
19
33
|
files:
|
34
|
+
- .gitignore
|
20
35
|
- Gemfile
|
21
36
|
- LICENSE.txt
|
22
37
|
- README.md
|