inboxes 0.1.0 → 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.
@@ -1,3 +1,7 @@
1
1
  class Inboxes::BaseController < ApplicationController
2
+ private
2
3
 
4
+ def init_discussion
5
+ @discussion = Discussion.find(params[:discussion_id])
6
+ end
3
7
  end
@@ -1,6 +1,7 @@
1
1
  class Inboxes::DiscussionsController < Inboxes::BaseController
2
- before_filter :authenticate_user!
3
- before_filter :init_and_check_permissions, :only => :show
2
+ load_and_authorize_resource
3
+ # before_filter :authenticate_user!
4
+ # before_filter :init_and_check_permissions, :only => :show
4
5
  before_filter :load_and_check_discussion_recipient, :only => [:create, :new]
5
6
 
6
7
  def index
@@ -10,6 +11,7 @@ class Inboxes::DiscussionsController < Inboxes::BaseController
10
11
  # GET /discussions/1
11
12
  # GET /discussions/1.json
12
13
  def show
14
+ # @discussion = Discussion.includes(:messages, :speakers).find(params[:id])
13
15
  @discussion.mark_as_read_for(current_user)
14
16
  end
15
17
 
@@ -40,10 +42,10 @@ class Inboxes::DiscussionsController < Inboxes::BaseController
40
42
 
41
43
  private
42
44
 
43
- def init_and_check_permissions
44
- @discussion = Discussion.includes(:messages, :speakers).find(params[:id])
45
- redirect_to discussions_url, :notice => t("inboxes.discussions.can_not_participate") unless @discussion.can_participate?(current_user)
46
- end
45
+ # def init_and_check_permissions
46
+ # @discussion = Discussion.includes(:messages, :speakers).find(params[:id])
47
+ # redirect_to discussions_url, :notice => t("inboxes.discussions.can_not_participate") unless @discussion.can_participate?(current_user)
48
+ # end
47
49
 
48
50
  def load_and_check_discussion_recipient
49
51
  # initializing model fir new and create actions
@@ -1,10 +1,10 @@
1
1
  class Inboxes::MessagesController < Inboxes::BaseController
2
+ # before_filter :init_discussion
3
+ # load_and_authorize_resource
4
+ load_and_authorize_resource :discussion
5
+ load_resource :message, :through => :discussion, :shallow => true
2
6
 
3
7
  def create
4
- @discussion = Discussion.find(params[:discussion_id])
5
- redirect_to root_url, :notice => t("inboxes.discussions.can_not_participate") unless @discussion.can_participate?(current_user)
6
-
7
- @message = Message.new(params[:message])
8
8
  @message.user = current_user
9
9
  @message.discussion = @discussion
10
10
  @message.save
@@ -14,5 +14,11 @@ class Inboxes::MessagesController < Inboxes::BaseController
14
14
  format.js
15
15
  end
16
16
  end
17
-
17
+
18
+ # private
19
+ #
20
+ # def init_and_check_permissions
21
+ # @discussion = Discussion.find(params[:discussion_id])
22
+ # redirect_to discussions_url, :notice => t("inboxes.discussions.can_not_participate") unless @discussion.can_participate?(current_user)
23
+ # end
18
24
  end
@@ -1,12 +1,13 @@
1
1
  class Inboxes::SpeakersController < Inboxes::BaseController
2
- before_filter :init_and_check_permissions
2
+ # before_filter :init_discussion
3
+ load_and_authorize_resource :discussion
4
+ load_resource :speaker, :through => :discussion, :shallow => true
5
+ # load_and_authorize_resource
3
6
 
4
7
  def create
5
- # check permissions
6
8
  raise ActiveRecord::RecordNotFound unless params[:speaker] && params[:speaker][:user_id]
7
9
  @user = User.find(params[:speaker][:user_id])
8
-
9
- flash[:notice] = t("views.speakers.added") if @discussion.add_speaker(@user)
10
+ flash[:notice] = t("inboxes.speakers.added") if @discussion.add_speaker(@user)
10
11
  redirect_to @discussion
11
12
  end
12
13
 
@@ -16,11 +17,4 @@ class Inboxes::SpeakersController < Inboxes::BaseController
16
17
  flash[:notice] = @speaker.user == current_user ? t("inboxes.discussions.leaved") : t("inboxes.speakers.removed")
17
18
  redirect_to @discussion.speakers.any? && @discussion.can_participate?(current_user) ? @discussion : discussions_url
18
19
  end
19
-
20
- private
21
-
22
- def init_and_check_permissions
23
- @discussion = Discussion.find(params[:discussion_id])
24
- redirect_to discussions_url, :notice => t("inboxes.discussions.can_not_participate") unless @discussion.can_participate?(current_user)
25
- end
26
20
  end
@@ -1,6 +1,4 @@
1
1
  %h1 Discussions list
2
- %p
3
- Unread messages:
4
2
  %table
5
3
  %tr
6
4
  %th Last message
@@ -13,5 +13,5 @@ ru:
13
13
  can_not_participate: "Вы не состоите в этой дискуссии"
14
14
  choose_at_least_one_recipient: "Укажите хотя бы одного получателя"
15
15
  speakers:
16
- added: "Участник дискуссии добавлен"
17
- removed: "Участник дискуссии удален"
16
+ added: "Собеседник успешно добавлен"
17
+ removed: "Собеседник удален"
data/inboxes.gemspec CHANGED
@@ -21,6 +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
25
  # s.add_runtime_dependency "inherited_resources"
25
26
 
26
27
  # s.add_development_dependency 'dm-sqlite-adapter', ['>= 1.1.0']
@@ -0,0 +1,24 @@
1
+ module Inboxes
2
+ class InboxesAbility
3
+ include CanCan::Ability
4
+
5
+ def initialize(user)
6
+ # Discussion
7
+ can [:index, :create], Discussion
8
+ can :read, Discussion do |discussion|
9
+ discussion.can_participate?(user)
10
+ end
11
+
12
+ # Message
13
+ # can :create, Message do |message|
14
+ # message.discussion.can_participate?(user)
15
+ # end
16
+ #
17
+ # # Speaker
18
+ # can [:create, :destroy], Speaker do |speaker|
19
+ # speaker.discussion.can_participate?(user)
20
+ # end
21
+ end
22
+ end
23
+
24
+ end
@@ -1,4 +1,9 @@
1
+ require "inboxes/ability"
2
+
1
3
  module Inboxes
2
4
  class Engine < ::Rails::Engine
5
+ def self.activate
6
+ Ability.register_ability(InboxesAbility)
7
+ end
3
8
  end
4
9
  end
@@ -1,3 +1,3 @@
1
1
  module Inboxes
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
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: 27
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 0
10
- version: 0.1.0
9
+ - 1
10
+ version: 0.1.1
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-16 00:00:00 Z
18
+ date: 2011-11-17 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: haml-rails
@@ -32,7 +32,7 @@ dependencies:
32
32
  type: :runtime
33
33
  version_requirements: *id001
34
34
  - !ruby/object:Gem::Dependency
35
- name: rspec
35
+ name: cancan
36
36
  prerelease: false
37
37
  requirement: &id002 !ruby/object:Gem::Requirement
38
38
  none: false
@@ -43,10 +43,10 @@ dependencies:
43
43
  segments:
44
44
  - 0
45
45
  version: "0"
46
- type: :development
46
+ type: :runtime
47
47
  version_requirements: *id002
48
48
  - !ruby/object:Gem::Dependency
49
- name: rspec-rails
49
+ name: rspec
50
50
  prerelease: false
51
51
  requirement: &id003 !ruby/object:Gem::Requirement
52
52
  none: false
@@ -60,7 +60,7 @@ dependencies:
60
60
  type: :development
61
61
  version_requirements: *id003
62
62
  - !ruby/object:Gem::Dependency
63
- name: database_cleaner
63
+ name: rspec-rails
64
64
  prerelease: false
65
65
  requirement: &id004 !ruby/object:Gem::Requirement
66
66
  none: false
@@ -73,6 +73,20 @@ dependencies:
73
73
  version: "0"
74
74
  type: :development
75
75
  version_requirements: *id004
76
+ - !ruby/object:Gem::Dependency
77
+ name: database_cleaner
78
+ prerelease: false
79
+ requirement: &id005 !ruby/object:Gem::Requirement
80
+ none: false
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ hash: 3
85
+ segments:
86
+ - 0
87
+ version: "0"
88
+ type: :development
89
+ version_requirements: *id005
76
90
  description: Messaging system for Rails 3 app
77
91
  email:
78
92
  - razor.psp@gmail.com
@@ -109,6 +123,7 @@ files:
109
123
  - lib/generators/inboxes/templates/install.rb
110
124
  - lib/generators/inboxes/views_generator.rb
111
125
  - lib/inboxes.rb
126
+ - lib/inboxes/ability.rb
112
127
  - lib/inboxes/active_record_extension.rb
113
128
  - lib/inboxes/engine.rb
114
129
  - lib/inboxes/railtie.rb