social_stream-base 2.0.4 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/README.rdoc +2 -0
  3. data/app/assets/javascripts/social_stream/relation_customs.js +8 -3
  4. data/app/assets/javascripts/social_stream/timeline.js +1 -2
  5. data/app/assets/javascripts/social_stream/wall.js +11 -0
  6. data/app/assets/stylesheets/social_stream/base/contacts/_contacts.css.sass +1 -0
  7. data/app/assets/stylesheets/social_stream/base/contacts/layouts/_contacts.css.sass +1 -42
  8. data/app/assets/stylesheets/social_stream/base/footer/layout/_footer.css.sass +3 -2
  9. data/app/assets/stylesheets/social_stream/base/layouts/_layout.css.sass +4 -1
  10. data/app/assets/stylesheets/social_stream/base/mixins/_layout.css.sass +48 -0
  11. data/app/assets/stylesheets/social_stream/base/profile/_profile.css.sass +21 -25
  12. data/app/assets/stylesheets/social_stream/base/sidebar/_sidebar.css.sass +1 -27
  13. data/app/assets/stylesheets/social_stream/base/sidebar/layout/_sidebar.css.sass +1 -24
  14. data/app/assets/stylesheets/social_stream/base/toolbar/_toolbar.css.sass +2 -11
  15. data/app/assets/stylesheets/social_stream/base/toolbar/layout/_toolbar.css.sass +18 -5
  16. data/app/controllers/contacts_controller.rb +17 -22
  17. data/app/controllers/permissions_controller.rb +3 -1
  18. data/app/helpers/contacts_helper.rb +9 -14
  19. data/app/models/actor.rb +28 -2
  20. data/app/models/contact.rb +18 -1
  21. data/app/models/permission.rb +21 -1
  22. data/app/models/relation.rb +14 -15
  23. data/app/models/relation/custom.rb +27 -24
  24. data/app/views/activities/_new.html.erb +1 -1
  25. data/app/views/contacts/{_link_custom.html.erb → _button.html.erb} +0 -0
  26. data/app/views/contacts/_contact.html.erb +1 -1
  27. data/app/views/contacts/index.html.erb +1 -1
  28. data/app/views/devise/passwords/new.html.erb +6 -8
  29. data/app/views/devise/registrations/new.html.erb +5 -7
  30. data/app/views/layouts/application.html.erb +7 -8
  31. data/app/views/permissions/_index.html.erb +12 -12
  32. data/app/views/permissions/_list.html.erb +10 -0
  33. data/app/views/permissions/index.js.erb +1 -15
  34. data/app/views/posts/create.js.erb +5 -4
  35. data/app/views/profiles/_personal.html.erb +2 -2
  36. data/app/views/relation/customs/_custom.html.erb +2 -27
  37. data/app/views/relation/customs/_form.html.erb +1 -1
  38. data/app/views/relation/customs/_index.html.erb +1 -1
  39. data/app/views/relation/customs/_list.html.erb +5 -4
  40. data/app/views/relation/customs/index.html.erb +1 -1
  41. data/app/views/relations/_relation.html.erb +33 -0
  42. data/config/locales/en.yml +10 -5
  43. data/config/locales/es.yml +20 -40
  44. data/config/locales/pt.yml +5 -1
  45. data/config/locales/zh.yml +17 -9
  46. data/lib/generators/social_stream/base/install_generator.rb +0 -4
  47. data/lib/generators/social_stream/base/templates/initializer.rb +24 -0
  48. data/lib/social_stream/base.rb +70 -0
  49. data/lib/social_stream/base/ability.rb +13 -1
  50. data/lib/social_stream/base/version.rb +1 -1
  51. data/lib/social_stream/test_helpers/controllers.rb +12 -6
  52. data/social_stream-base.gemspec +1 -1
  53. data/spec/controllers/permissions_controller_spec.rb +2 -6
  54. metadata +7 -7
  55. data/app/helpers/permissions_helper.rb +0 -21
  56. data/lib/generators/social_stream/base/templates/relations.yml +0 -39
@@ -25,6 +25,76 @@ module SocialStream
25
25
  mattr_accessor :single_relations
26
26
  @@single_relations = [ :public, :follow, :reject ]
27
27
 
28
+ mattr_accessor :custom_relations
29
+ @@custom_relations = {
30
+ 'user' => {
31
+ 'friend' => {
32
+ 'name' => 'friend',
33
+ 'permissions' => [
34
+ [ 'follow' ],
35
+ [ 'create', 'activity' ],
36
+ [ 'read', 'activity' ]
37
+ ]
38
+ },
39
+ 'acquaintance' => {
40
+ 'name' => 'acquaintance',
41
+ 'permissions' => [
42
+ [ 'read', 'activity' ]
43
+ ]
44
+ },
45
+ 'colleague' => {
46
+ 'name' => 'colleague',
47
+ 'permissions' => [
48
+ [ 'follow' ],
49
+ [ 'create', 'activity' ],
50
+ [ 'read', 'activity' ]
51
+ ]
52
+ }
53
+ },
54
+ 'group' => {
55
+ 'member' => {
56
+ 'name' => 'member',
57
+ 'permissions' => [
58
+ [ 'represent' ],
59
+ [ 'create', 'activity' ],
60
+ [ 'read', 'activity' ],
61
+ [ 'read', 'tie' ]
62
+ ]
63
+ },
64
+ 'partner' => {
65
+ 'name' => 'partner',
66
+ 'permissions' => [
67
+ [ 'read', 'activity' ]
68
+ ]
69
+ }
70
+ },
71
+ 'site/current' => {}
72
+ }
73
+
74
+ mattr_accessor :list_relations
75
+ @@list_relations = {
76
+ user: [],
77
+ group: []
78
+ }
79
+
80
+ mattr_accessor :available_permissions
81
+ @@available_permissions = {
82
+ 'user' => [
83
+ [ "read", "activity" ],
84
+ [ "create", "activity" ],
85
+ [ "follow", nil ],
86
+ [ "represent", nil ],
87
+ [ "notify", nil ]
88
+ ],
89
+ 'group' => [
90
+ [ "read", "activity" ],
91
+ [ "create", "activity" ],
92
+ [ "follow", nil ],
93
+ [ "represent", nil ],
94
+ [ "notify", nil ]
95
+ ]
96
+ }
97
+
28
98
  mattr_accessor :suggested_models
29
99
  @@suggested_models = [ :user, :group ]
30
100
 
@@ -59,6 +59,13 @@ module SocialStream
59
59
  a.audience.include?(subject.actor)
60
60
  end
61
61
 
62
+ can :read, Contact
63
+
64
+ can :manage, Contact do |c|
65
+ c.sender == subject.actor ||
66
+ c.sender.allow?(subject, 'manage', 'contact')
67
+ end
68
+
62
69
  # Users
63
70
  can :read, User
64
71
 
@@ -90,7 +97,12 @@ module SocialStream
90
97
  end
91
98
 
92
99
  # Privacy
93
- can [:create, :read, :update, :destroy], ::Relation::Custom, :actor_id => subject.try(:actor_id)
100
+ can :manage, ::Relation::Custom do |r|
101
+ subject.present? && (
102
+ r.actor_id == subject.actor_id ||
103
+ r.actor.allow?(subject, 'manage', 'relation/custom')
104
+ )
105
+ end
94
106
  end
95
107
  end
96
108
  end
@@ -1,5 +1,5 @@
1
1
  module SocialStream
2
2
  module Base
3
- VERSION = "2.0.4".freeze
3
+ VERSION = "2.1.0".freeze
4
4
  end
5
5
  end
@@ -13,6 +13,12 @@ module SocialStream
13
13
  model_class.to_s.underscore.to_sym
14
14
  end
15
15
 
16
+ # :client for Site::ClientsController
17
+ def demodulized_model_sym
18
+ @demodulized_model_sym ||=
19
+ model_class.to_s.demodulize.underscore.to_sym
20
+ end
21
+
16
22
  # Factory.attributes_for(:post) for PostsController
17
23
  def model_attributes
18
24
  @model_attributes ||=
@@ -42,7 +48,7 @@ module SocialStream
42
48
  count = model_count
43
49
  post :create, attributes
44
50
 
45
- resource = assigns(model_sym)
51
+ resource = assigns(demodulized_model_sym)
46
52
 
47
53
  model_count.should eq(count + 1)
48
54
  resource.should be_valid
@@ -58,7 +64,7 @@ module SocialStream
58
64
  rescue CanCan::AccessDenied
59
65
  end
60
66
 
61
- resource = assigns(model_sym)
67
+ resource = assigns(demodulized_model_sym)
62
68
 
63
69
  model_count.should eq(count)
64
70
  resource.should be_new_record
@@ -88,7 +94,7 @@ module SocialStream
88
94
  it "should update" do
89
95
  put :update, updating_attributes
90
96
 
91
- resource = assigns(model_sym)
97
+ resource = assigns(demodulized_model_sym)
92
98
 
93
99
  resource.should_receive(:update_attributes).with(attributes)
94
100
  assert resource.valid?
@@ -103,7 +109,7 @@ module SocialStream
103
109
  rescue CanCan::AccessDenied
104
110
  end
105
111
 
106
- resource = assigns(model_sym)
112
+ resource = assigns(demodulized_model_sym)
107
113
 
108
114
  resource.should_not_receive(:update_attributes)
109
115
  end
@@ -114,7 +120,7 @@ module SocialStream
114
120
  count = model_count
115
121
  delete :destroy, :id => @current_model.to_param
116
122
 
117
- resource = assigns(model_sym)
123
+ resource = assigns(demodulized_model_sym)
118
124
 
119
125
  model_count.should eq(count - 1)
120
126
  end
@@ -128,7 +134,7 @@ module SocialStream
128
134
  rescue CanCan::AccessDenied
129
135
  end
130
136
 
131
- resource = assigns(model_sym)
137
+ resource = assigns(demodulized_model_sym)
132
138
 
133
139
  model_count.should eq(count)
134
140
  end
@@ -59,7 +59,7 @@ Gem::Specification.new do |s|
59
59
  # Syntactically Awesome Stylesheets
60
60
  s.add_runtime_dependency('sass-rails', '>= 3.1.0')
61
61
  # Bootstrap for Sass
62
- s.add_runtime_dependency('bootstrap-sass', '~> 2.3.1.0')
62
+ s.add_runtime_dependency('bootstrap-sass', '~> 2.3.2.0')
63
63
  # Customize ERB views
64
64
  s.add_runtime_dependency('deface', '~> 0.9.1')
65
65
  # Autolink text blocks
@@ -30,13 +30,9 @@ describe PermissionsController do
30
30
  end
31
31
 
32
32
  it "should not render index" do
33
- begin
33
+ expect {
34
34
  get :index, :relation_id => @relation.id, :format => "html"
35
-
36
- assert false
37
- rescue ActiveRecord::RecordNotFound
38
- assigns(:permissions).should be_nil
39
- end
35
+ }.to raise_error(CanCan::AccessDenied)
40
36
  end
41
37
  end
42
38
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: social_stream-base
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.4
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GING - DIT - UPM
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-06-18 00:00:00.000000000 Z
11
+ date: 2013-07-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: deep_merge
@@ -338,14 +338,14 @@ dependencies:
338
338
  requirements:
339
339
  - - ~>
340
340
  - !ruby/object:Gem::Version
341
- version: 2.3.1.0
341
+ version: 2.3.2.0
342
342
  type: :runtime
343
343
  prerelease: false
344
344
  version_requirements: !ruby/object:Gem::Requirement
345
345
  requirements:
346
346
  - - ~>
347
347
  - !ruby/object:Gem::Version
348
- version: 2.3.1.0
348
+ version: 2.3.2.0
349
349
  - !ruby/object:Gem::Dependency
350
350
  name: deface
351
351
  requirement: !ruby/object:Gem::Requirement
@@ -780,7 +780,6 @@ files:
780
780
  - app/helpers/layouts_helper.rb
781
781
  - app/helpers/location_helper.rb
782
782
  - app/helpers/notifications_helper.rb
783
- - app/helpers/permissions_helper.rb
784
783
  - app/helpers/posts_helper.rb
785
784
  - app/helpers/profiles_helper.rb
786
785
  - app/helpers/search_helper.rb
@@ -853,9 +852,9 @@ files:
853
852
  - app/views/comments/_search_result.html.erb
854
853
  - app/views/comments/create.js.erb
855
854
  - app/views/comments/destroy.js.erb
855
+ - app/views/contacts/_button.html.erb
856
856
  - app/views/contacts/_contact.html.erb
857
857
  - app/views/contacts/_form.html.erb
858
- - app/views/contacts/_link_custom.html.erb
859
858
  - app/views/contacts/_link_follow.html.erb
860
859
  - app/views/contacts/_pendings.html.erb
861
860
  - app/views/contacts/_suggestions.html.erb
@@ -978,6 +977,7 @@ files:
978
977
  - app/views/objects/_show.html.erb
979
978
  - app/views/objects/_timeline_description.html.erb
980
979
  - app/views/permissions/_index.html.erb
980
+ - app/views/permissions/_list.html.erb
981
981
  - app/views/permissions/index.js.erb
982
982
  - app/views/posts/_post.html.erb
983
983
  - app/views/posts/_quick_search_result.html.erb
@@ -1004,6 +1004,7 @@ files:
1004
1004
  - app/views/relation/customs/destroy.js.erb
1005
1005
  - app/views/relation/customs/index.html.erb
1006
1006
  - app/views/relation/customs/update.js.erb
1007
+ - app/views/relations/_relation.html.erb
1007
1008
  - app/views/repositories/_filter.html.erb
1008
1009
  - app/views/repositories/show.html.erb
1009
1010
  - app/views/search/_extended_search.html.erb
@@ -1062,7 +1063,6 @@ files:
1062
1063
  - lib/acts_as_taggable_on/social_stream.rb
1063
1064
  - lib/generators/social_stream/base/install_generator.rb
1064
1065
  - lib/generators/social_stream/base/templates/initializer.rb
1065
- - lib/generators/social_stream/base/templates/relations.yml
1066
1066
  - lib/generators/social_stream/base/templates/social_stream.css.sass
1067
1067
  - lib/generators/social_stream/base/templates/sphinx.yml
1068
1068
  - lib/i18n-js/social_stream-base.rb
@@ -1,21 +0,0 @@
1
- module PermissionsHelper
2
- DEFAULT_PERMISSIONS =
3
- [
4
- [ "read", "activity" ],
5
- [ "create", "activity" ],
6
- [ "follow", nil ],
7
- [ "represent", nil ],
8
- [ "notify", nil ]
9
- ]
10
-
11
- def default_permissions
12
- @default_permissions ||=
13
- DEFAULT_PERMISSIONS.map{ |p|
14
- Permission.find_or_create_by_action_and_object *p
15
- }
16
- end
17
-
18
- def disable_permission_edit? perm
19
- (perm.action == 'represent') and (@relation.ties.size > 0) and perm.relations.include?(@relation) and (perm.relations.where(:actor_id => @relation.actor_id).find_all{|r| r.ties.size > 0}.size <= 1)
20
- end
21
- end
@@ -1,39 +0,0 @@
1
- # Default relations for Social Stream
2
- #
3
- # Define the default relations and permissions offered by your application
4
- # Though subjects (user, groups, etc.) can customize their own relations,
5
- # these are the defaults to start up with
6
- #
7
- # Detailed information on permissions is available at:
8
- # http://rdoc.info/gems/social_stream-base/Permission
9
- #
10
- user:
11
- friend:
12
- name: friend
13
- permissions:
14
- - [ follow ]
15
- - [ create, activity ]
16
- - [ read, activity ]
17
- acquaintance:
18
- name: acquaintance
19
- permissions:
20
- - [ read, activity ]
21
- colleague:
22
- name: colleague
23
- permissions:
24
- - [ follow ]
25
- - [ create, activity ]
26
- - [ read, activity ]
27
-
28
- group:
29
- member:
30
- name: member
31
- permissions:
32
- - [ represent ]
33
- - [ create, activity ]
34
- - [ read, activity ]
35
- - [ read, tie ]
36
- partner:
37
- name: partner
38
- permissions:
39
- - [ read, activity ]