inboxes 0.1.1 → 0.1.2
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.
- data/README.md +5 -9
- data/app/controllers/inboxes/base_controller.rb +6 -0
- data/app/controllers/inboxes/discussions_controller.rb +2 -2
- data/app/models/inboxes/ability.rb +38 -0
- data/inboxes.gemspec +1 -1
- data/lib/inboxes.rb +2 -0
- data/lib/inboxes/ability.rb +5 -1
- data/lib/inboxes/engine.rb +7 -0
- data/lib/inboxes/railtie.rb +5 -0
- data/lib/inboxes/version.rb +1 -1
- metadata +5 -4
data/README.md
CHANGED
@@ -33,19 +33,15 @@ By default, the gem provides localized phrases for Russian and English languages
|
|
33
33
|
#Integration with Faye
|
34
34
|
|
35
35
|
1. Add `gem "faye"` to your Gemfile and run `bundle install`. Install Faye by [the screencast](http://railscasts.com/episodes/260-messaging-with-faye)
|
36
|
-
2. Create `messaging.js` in `app/assets/javascripts/` with these
|
37
|
-
|
38
|
-
/*
|
39
|
-
= require inboxes/faye
|
40
|
-
*/
|
36
|
+
2. Create `messaging.js` in `app/assets/javascripts/` with these line: `= require inboxes/faye`
|
41
37
|
|
42
38
|
3. Copy or replace 2 views from Inboxes example app to your application: [app/views/inboxes/messages/_form](https://github.com/kirs/inboxes-app/blob/master/app/views/inboxes/messages/_form.html.haml) and [app/views/inboxes/messages/create](https://github.com/kirs/inboxes-app/blob/master/app/views/inboxes/messages/create.js.erb)
|
43
39
|
|
44
40
|
4. Add config parameters to your application config (last 2 are not necessary):
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
41
|
+
|
42
|
+
`config.inboxes.faye_enabled = true`
|
43
|
+
`config.inboxes.faye_host = "inboxes-app.dev" # localhost by default`
|
44
|
+
`config.inboxes.faye_port = 9292 # 9292 by default`
|
49
45
|
|
50
46
|
5. Faye installation is finished. If you have any troubles, check the [example app](https://github.com/kirs/inboxes-app/)
|
51
47
|
|
@@ -4,4 +4,10 @@ class Inboxes::BaseController < ApplicationController
|
|
4
4
|
def init_discussion
|
5
5
|
@discussion = Discussion.find(params[:discussion_id])
|
6
6
|
end
|
7
|
+
|
8
|
+
# Needs to be overriden so that we use Spree's Ability rather than anyone else's.
|
9
|
+
def current_ability
|
10
|
+
# raise "Loading Ability"
|
11
|
+
@current_ability ||= Inboxes::Ability.new(current_user)
|
12
|
+
end
|
7
13
|
end
|
@@ -48,8 +48,8 @@ class Inboxes::DiscussionsController < Inboxes::BaseController
|
|
48
48
|
# end
|
49
49
|
|
50
50
|
def load_and_check_discussion_recipient
|
51
|
-
# initializing model
|
52
|
-
@discussion = Discussion.new(
|
51
|
+
# initializing model for new and create actions
|
52
|
+
@discussion = Discussion.new(params[:discussion].presence || {})
|
53
53
|
# @discussion.recipient_tokens = params[:recipients] if params[:recipients] # pre-population
|
54
54
|
|
55
55
|
# checking if discussion with this user already exists
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# Implementation class for Cancan gem. Instead of overriding this class, consider adding new permissions
|
2
|
+
# using the special +register_ability+ method which allows extensions to add their own abilities.
|
3
|
+
#
|
4
|
+
# See http://github.com/ryanb/cancan for more details on cancan.
|
5
|
+
module Inboxes
|
6
|
+
class Ability
|
7
|
+
include CanCan::Ability
|
8
|
+
|
9
|
+
class_attribute :abilities
|
10
|
+
self.abilities = Set.new
|
11
|
+
|
12
|
+
# Allows us to go beyond the standard cancan initialize method which makes it difficult for engines to
|
13
|
+
# modify the default +Ability+ of an application. The +ability+ argument must be a class that includes
|
14
|
+
# the +CanCan::Ability+ module. The registered ability should behave properly as a stand-alone class
|
15
|
+
# and therefore should be easy to test in isolation.
|
16
|
+
def self.register_ability(ability)
|
17
|
+
self.abilities.add(ability)
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
def initialize(user)
|
22
|
+
# raise "Initializing 3rd patry"
|
23
|
+
# self.clear_aliased_actions
|
24
|
+
|
25
|
+
# can [:index, :create], Discussion
|
26
|
+
# can :read, Discussion do |discussion|
|
27
|
+
# discussion.can_participate?(user)
|
28
|
+
# end
|
29
|
+
|
30
|
+
#include any abilities registered by extensions, etc.
|
31
|
+
|
32
|
+
Ability.abilities.each do |clazz|
|
33
|
+
ability = clazz.send(:new, user)
|
34
|
+
@rules = rules + ability.send(:rules)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/inboxes.gemspec
CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
|
|
21
21
|
# specify any dependencies here; for example:
|
22
22
|
# s.add_development_dependency "ruby-debug"
|
23
23
|
s.add_runtime_dependency "haml-rails"
|
24
|
-
s.add_runtime_dependency "cancan"
|
24
|
+
s.add_runtime_dependency "cancan", ['>= 0']
|
25
25
|
# s.add_runtime_dependency "inherited_resources"
|
26
26
|
|
27
27
|
# s.add_development_dependency 'dm-sqlite-adapter', ['>= 1.1.0']
|
data/lib/inboxes.rb
CHANGED
data/lib/inboxes/ability.rb
CHANGED
@@ -1,9 +1,13 @@
|
|
1
|
+
require "cancan"
|
2
|
+
|
1
3
|
module Inboxes
|
2
4
|
class InboxesAbility
|
3
|
-
include CanCan::Ability
|
5
|
+
include ::CanCan::Ability
|
4
6
|
|
5
7
|
def initialize(user)
|
6
8
|
# Discussion
|
9
|
+
# raise "Registered!"
|
10
|
+
|
7
11
|
can [:index, :create], Discussion
|
8
12
|
can :read, Discussion do |discussion|
|
9
13
|
discussion.can_participate?(user)
|
data/lib/inboxes/engine.rb
CHANGED
@@ -2,8 +2,15 @@ require "inboxes/ability"
|
|
2
2
|
|
3
3
|
module Inboxes
|
4
4
|
class Engine < ::Rails::Engine
|
5
|
+
# raise "Engine Activated"
|
5
6
|
def self.activate
|
6
7
|
Ability.register_ability(InboxesAbility)
|
8
|
+
# raise "Activated"
|
7
9
|
end
|
10
|
+
|
11
|
+
def load_tasks
|
12
|
+
end
|
13
|
+
|
14
|
+
config.to_prepare &method(:activate).to_proc
|
8
15
|
end
|
9
16
|
end
|
data/lib/inboxes/railtie.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'rails'
|
2
|
+
require "inboxes/ability"
|
2
3
|
|
3
4
|
module Inboxes
|
4
5
|
class Railtie < ::Rails::Railtie
|
@@ -14,5 +15,9 @@ module Inboxes
|
|
14
15
|
|
15
16
|
# app.config.middleware.insert_before "::Rails::Rack::Logger", "Inboxes::Middleware"
|
16
17
|
end
|
18
|
+
|
19
|
+
# def self.activate
|
20
|
+
# Ability.register_ability(InboxesAbility)
|
21
|
+
# end
|
17
22
|
end
|
18
23
|
end
|
data/lib/inboxes/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: inboxes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 31
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 2
|
10
|
+
version: 0.1.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Kir Shatrov
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-11-
|
18
|
+
date: 2011-11-21 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: haml-rails
|
@@ -107,6 +107,7 @@ files:
|
|
107
107
|
- app/controllers/inboxes/speakers_controller.rb
|
108
108
|
- app/helpers/inboxes_helper.rb
|
109
109
|
- app/models/discussion.rb
|
110
|
+
- app/models/inboxes/ability.rb
|
110
111
|
- app/models/message.rb
|
111
112
|
- app/models/speaker.rb
|
112
113
|
- app/views/inboxes/discussions/_form.html.haml
|