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.
- checksums.yaml +4 -4
- data/README.rdoc +2 -0
- data/app/assets/javascripts/social_stream/relation_customs.js +8 -3
- data/app/assets/javascripts/social_stream/timeline.js +1 -2
- data/app/assets/javascripts/social_stream/wall.js +11 -0
- data/app/assets/stylesheets/social_stream/base/contacts/_contacts.css.sass +1 -0
- data/app/assets/stylesheets/social_stream/base/contacts/layouts/_contacts.css.sass +1 -42
- data/app/assets/stylesheets/social_stream/base/footer/layout/_footer.css.sass +3 -2
- data/app/assets/stylesheets/social_stream/base/layouts/_layout.css.sass +4 -1
- data/app/assets/stylesheets/social_stream/base/mixins/_layout.css.sass +48 -0
- data/app/assets/stylesheets/social_stream/base/profile/_profile.css.sass +21 -25
- data/app/assets/stylesheets/social_stream/base/sidebar/_sidebar.css.sass +1 -27
- data/app/assets/stylesheets/social_stream/base/sidebar/layout/_sidebar.css.sass +1 -24
- data/app/assets/stylesheets/social_stream/base/toolbar/_toolbar.css.sass +2 -11
- data/app/assets/stylesheets/social_stream/base/toolbar/layout/_toolbar.css.sass +18 -5
- data/app/controllers/contacts_controller.rb +17 -22
- data/app/controllers/permissions_controller.rb +3 -1
- data/app/helpers/contacts_helper.rb +9 -14
- data/app/models/actor.rb +28 -2
- data/app/models/contact.rb +18 -1
- data/app/models/permission.rb +21 -1
- data/app/models/relation.rb +14 -15
- data/app/models/relation/custom.rb +27 -24
- data/app/views/activities/_new.html.erb +1 -1
- data/app/views/contacts/{_link_custom.html.erb → _button.html.erb} +0 -0
- data/app/views/contacts/_contact.html.erb +1 -1
- data/app/views/contacts/index.html.erb +1 -1
- data/app/views/devise/passwords/new.html.erb +6 -8
- data/app/views/devise/registrations/new.html.erb +5 -7
- data/app/views/layouts/application.html.erb +7 -8
- data/app/views/permissions/_index.html.erb +12 -12
- data/app/views/permissions/_list.html.erb +10 -0
- data/app/views/permissions/index.js.erb +1 -15
- data/app/views/posts/create.js.erb +5 -4
- data/app/views/profiles/_personal.html.erb +2 -2
- data/app/views/relation/customs/_custom.html.erb +2 -27
- data/app/views/relation/customs/_form.html.erb +1 -1
- data/app/views/relation/customs/_index.html.erb +1 -1
- data/app/views/relation/customs/_list.html.erb +5 -4
- data/app/views/relation/customs/index.html.erb +1 -1
- data/app/views/relations/_relation.html.erb +33 -0
- data/config/locales/en.yml +10 -5
- data/config/locales/es.yml +20 -40
- data/config/locales/pt.yml +5 -1
- data/config/locales/zh.yml +17 -9
- data/lib/generators/social_stream/base/install_generator.rb +0 -4
- data/lib/generators/social_stream/base/templates/initializer.rb +24 -0
- data/lib/social_stream/base.rb +70 -0
- data/lib/social_stream/base/ability.rb +13 -1
- data/lib/social_stream/base/version.rb +1 -1
- data/lib/social_stream/test_helpers/controllers.rb +12 -6
- data/social_stream-base.gemspec +1 -1
- data/spec/controllers/permissions_controller_spec.rb +2 -6
- metadata +7 -7
- data/app/helpers/permissions_helper.rb +0 -21
- data/lib/generators/social_stream/base/templates/relations.yml +0 -39
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9edd12a3c4ab23a1a4e0d1a705b3b4845da4cea7
|
4
|
+
data.tar.gz: 97bd53d433ddfa35717d0042dcbf4e4675d05e5b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 910cdbd7e6742a6f286da4670b7a3db5225c4a4966b4f4cec1bb04cba085d865e1c0afe5702eab6d3a56ae3cc12e92c61b3cfc109ec116d45f0a13335f99af84
|
7
|
+
data.tar.gz: 10309c56b8a9f96cd041c5fb2eb63b90c2c158660bed660796bda69c78dfac1e461efc0589a5b44335df6db6b086bb9fb6c417fd565a907a7fb52727383b6221
|
data/README.rdoc
CHANGED
@@ -5,6 +5,8 @@ Social Stream Base provides the basic functionality for
|
|
5
5
|
network websites. The features of this gem are limited, for a complete social
|
6
6
|
network environment see https://github.com/ging/social_stream
|
7
7
|
|
8
|
+
{<img src="https://badge.fury.io/rb/social_stream-base.png" />}[http://rubygems.org/gems/social_stream-base]
|
9
|
+
|
8
10
|
== Features
|
9
11
|
|
10
12
|
* Social network infrastructure
|
@@ -120,8 +120,6 @@ SocialStream.RelationCustom = (function(SS, $, undefined){
|
|
120
120
|
$('#new_relation').before(options.relation.html);
|
121
121
|
|
122
122
|
initList($('#relation_custom_' + options.relation.id));
|
123
|
-
|
124
|
-
resetNewForm();
|
125
123
|
};
|
126
124
|
|
127
125
|
var resetNameForm = function(options) {
|
@@ -153,6 +151,10 @@ SocialStream.RelationCustom = (function(SS, $, undefined){
|
|
153
151
|
el.find('input[name="relation_custom[name]"]').val('');
|
154
152
|
};
|
155
153
|
|
154
|
+
var selectNewItem = function(options) {
|
155
|
+
$('input[name^="relation"][value="' + options.relation.id + '"]').click();
|
156
|
+
};
|
157
|
+
|
156
158
|
var hideElement = function(options) {
|
157
159
|
$('#relation_custom_' + options.relation.id).hide();
|
158
160
|
$('#relation_' + options.relation.id + '_permissions').hide();
|
@@ -162,7 +164,10 @@ SocialStream.RelationCustom = (function(SS, $, undefined){
|
|
162
164
|
initList,
|
163
165
|
initPermission);
|
164
166
|
|
165
|
-
callback.register('create',
|
167
|
+
callback.register('create',
|
168
|
+
addToList,
|
169
|
+
resetNewForm,
|
170
|
+
selectNewItem);
|
166
171
|
|
167
172
|
callback.register('update',
|
168
173
|
resetNameForm,
|
@@ -11,8 +11,18 @@ SocialStream.Wall = (function(SS, $, undefined){
|
|
11
11
|
$('.wall_input [name="post[text]"]').autosize();
|
12
12
|
};
|
13
13
|
|
14
|
+
// Prevent sending the same post several times
|
15
|
+
var initShareButton = function() {
|
16
|
+
$('.wall_input input[type="submit"]').on('click', loadingShareButton);
|
17
|
+
};
|
18
|
+
|
19
|
+
var loadingShareButton = function() {
|
20
|
+
$(this).button('loading');
|
21
|
+
};
|
22
|
+
|
14
23
|
var resetWallInput = function(){
|
15
24
|
$('#post_text').val('');
|
25
|
+
$('.wall_input input[type="submit"]').button('reset');
|
16
26
|
};
|
17
27
|
|
18
28
|
var changeAction = function(path) {
|
@@ -37,6 +47,7 @@ SocialStream.Wall = (function(SS, $, undefined){
|
|
37
47
|
|
38
48
|
callback.register('show',
|
39
49
|
initInputAutosize,
|
50
|
+
initShareButton,
|
40
51
|
SS.Object.new_);
|
41
52
|
|
42
53
|
callback.register('new_',
|
@@ -30,48 +30,7 @@ input#group_name
|
|
30
30
|
padding-bottom: 50px
|
31
31
|
|
32
32
|
.contact
|
33
|
-
|
34
|
-
float: left
|
35
|
-
margin-left: 19px
|
36
|
-
min-height: 76px
|
37
|
-
margin-bottom: 14px
|
38
|
-
|
39
|
-
.avatar
|
40
|
-
float: left
|
41
|
-
margin-left: 0px
|
42
|
-
width: 50px
|
43
|
-
display: inline
|
44
|
-
margin-top: 10px
|
45
|
-
img
|
46
|
-
width: 45px
|
47
|
-
vertical-align: top
|
48
|
-
|
49
|
-
.data
|
50
|
-
float: left
|
51
|
-
margin-left: 0px
|
52
|
-
width: 175px
|
53
|
-
display: inline-block
|
54
|
-
margin-top: 11px
|
55
|
-
.name
|
56
|
-
@include ellipsis
|
57
|
-
.info
|
58
|
-
@include ellipsis
|
59
|
-
z-index: 1
|
60
|
-
padding-left: 2%
|
61
|
-
|
62
|
-
.add
|
63
|
-
z-index: 1
|
64
|
-
float: left
|
65
|
-
.edit_contact
|
66
|
-
margin-bottom: 0px
|
67
|
-
.dropdown-toggle
|
68
|
-
margin-left: 0
|
69
|
-
widht: 100%
|
70
|
-
.x
|
71
|
-
display: inline-block
|
72
|
-
float: right
|
73
|
-
margin-top: -40px
|
74
|
-
|
33
|
+
@include contact-layout
|
75
34
|
|
76
35
|
|
77
36
|
#contact-form
|
@@ -33,3 +33,51 @@
|
|
33
33
|
@mixin hidden-desktop
|
34
34
|
@extend .hidden-desktop
|
35
35
|
|
36
|
+
|
37
|
+
@mixin contact-style
|
38
|
+
.avatar
|
39
|
+
img
|
40
|
+
@include border-radius(5px)
|
41
|
+
.data
|
42
|
+
.name
|
43
|
+
color: $black
|
44
|
+
.x
|
45
|
+
font-size: 12px
|
46
|
+
color: $black
|
47
|
+
a
|
48
|
+
text-decoration: none
|
49
|
+
.info
|
50
|
+
font-size: 11px
|
51
|
+
color: #777
|
52
|
+
font-family: $sansFontFamilyLight
|
53
|
+
.add
|
54
|
+
@include btn-add
|
55
|
+
|
56
|
+
@mixin contact-layout
|
57
|
+
margin: 4px 0 19px 14px
|
58
|
+
width: 240px
|
59
|
+
min-height: 76px
|
60
|
+
float: left
|
61
|
+
.avatar
|
62
|
+
width: 45px !important
|
63
|
+
float: left
|
64
|
+
.data
|
65
|
+
display: inline-block
|
66
|
+
margin: 2px 0 3px 3px
|
67
|
+
float: left
|
68
|
+
width: 65%
|
69
|
+
.info
|
70
|
+
z-index: 1
|
71
|
+
a
|
72
|
+
display: inline
|
73
|
+
.x
|
74
|
+
a
|
75
|
+
float: right
|
76
|
+
display: inline-block
|
77
|
+
margin-right: 16px
|
78
|
+
margin-top: -98px
|
79
|
+
.info
|
80
|
+
z-index: 1
|
81
|
+
.add
|
82
|
+
margin-top: 2px
|
83
|
+
width: auto
|
@@ -7,32 +7,28 @@
|
|
7
7
|
margin-bottom: 10px
|
8
8
|
.colorfont-overlay
|
9
9
|
top: 20px !important
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
.
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
color:
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5)
|
27
|
-
p
|
28
|
-
border-top: 5px solid $whiteSmoke
|
29
|
-
background-color: none
|
30
|
-
|
10
|
+
input,
|
11
|
+
textarea
|
12
|
+
background-color: $whiteSmoke
|
13
|
+
.briefing
|
14
|
+
background-color: $white
|
15
|
+
color: $gray
|
16
|
+
span
|
17
|
+
@include border-radius(5px)
|
18
|
+
background-color: #D9EDF7
|
19
|
+
border: 1px solid #BCE8F1
|
20
|
+
color: #3A87AD
|
21
|
+
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5)
|
22
|
+
p
|
23
|
+
border-top: 5px solid $whiteSmoke
|
24
|
+
background-color: none
|
25
|
+
|
31
26
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
27
|
+
form.edit_profile
|
28
|
+
input
|
29
|
+
&[type="submit"]
|
30
|
+
@include btn-secundary
|
31
|
+
|
36
32
|
.personal
|
37
33
|
form.edit_profile
|
38
34
|
h6
|
@@ -3,31 +3,5 @@
|
|
3
3
|
#pendings
|
4
4
|
h4
|
5
5
|
font-size: 33.5px
|
6
|
-
|
7
6
|
.contact
|
8
|
-
|
9
|
-
img
|
10
|
-
@include border-radius(5px)
|
11
|
-
|
12
|
-
.data
|
13
|
-
.name
|
14
|
-
color: $black
|
15
|
-
.x
|
16
|
-
font-size: 12px
|
17
|
-
color: $black
|
18
|
-
a
|
19
|
-
text-decoration: none
|
20
|
-
.info
|
21
|
-
font-size: 11px
|
22
|
-
color: #777
|
23
|
-
font-family: $sansFontFamilyLight
|
24
|
-
|
25
|
-
.add
|
26
|
-
@include btn-add
|
27
|
-
|
28
|
-
.see-more
|
29
|
-
font-size: 12px
|
30
|
-
line-height: 20px
|
31
|
-
a
|
32
|
-
text-decoration: none
|
33
|
-
color: $grayLight
|
7
|
+
@include contact-style
|
@@ -4,30 +4,7 @@
|
|
4
4
|
width: 22.85714%
|
5
5
|
float: right
|
6
6
|
.contact
|
7
|
-
|
8
|
-
.avatar
|
9
|
-
width: 45px !important
|
10
|
-
float: left
|
11
|
-
.data
|
12
|
-
display: inline-block
|
13
|
-
margin: 2px 0 3px 3px
|
14
|
-
float: left
|
15
|
-
width: 65%
|
16
|
-
.info
|
17
|
-
z-index: 1
|
18
|
-
a
|
19
|
-
display: inline
|
20
|
-
.x
|
21
|
-
a
|
22
|
-
float: right
|
23
|
-
display: inline-block
|
24
|
-
margin-right: 16px
|
25
|
-
margin-top: -98px
|
26
|
-
.info
|
27
|
-
z-index: 1
|
28
|
-
.add
|
29
|
-
margin-top: 2px
|
30
|
-
width: auto
|
7
|
+
@include contact-layout
|
31
8
|
|
32
9
|
#suggestions
|
33
10
|
margin-top: 30px
|
@@ -5,8 +5,6 @@
|
|
5
5
|
li
|
6
6
|
@include btn-primary
|
7
7
|
@include border-radius(5px)
|
8
|
-
padding: 4px 7px
|
9
|
-
margin-bottom: 5px
|
10
8
|
a
|
11
9
|
@include ellipsis
|
12
10
|
.icon_tool16-info
|
@@ -63,9 +61,6 @@
|
|
63
61
|
|
64
62
|
#toolbar
|
65
63
|
h5
|
66
|
-
position: relative
|
67
|
-
margin-top: 7px
|
68
|
-
margin-bottom: 16px
|
69
64
|
font-size: 16px
|
70
65
|
@include ellipsis
|
71
66
|
a
|
@@ -80,11 +75,8 @@
|
|
80
75
|
|
81
76
|
.contacts-toolbar,
|
82
77
|
section.groups
|
83
|
-
@extend .hidden-phone
|
84
78
|
h4
|
85
|
-
margin-bottom: 0px
|
86
79
|
font-family: $sansFontFamilyLight
|
87
|
-
border-bottom: 1px solid #ddd
|
88
80
|
ul
|
89
81
|
border-right: 1px solid #ddd
|
90
82
|
img
|
@@ -103,10 +95,9 @@
|
|
103
95
|
@include ellipsis
|
104
96
|
img
|
105
97
|
@include border-radius(5px)
|
98
|
+
.subject-name
|
99
|
+
@include ellipsis
|
106
100
|
.subject-name-phone
|
107
|
-
position: relative
|
108
|
-
margin-top: 7px
|
109
|
-
margin-bottom: 16px
|
110
101
|
font-size: 16px
|
111
102
|
@include ellipsis
|
112
103
|
a
|
@@ -1,4 +1,9 @@
|
|
1
|
-
#toolbar
|
1
|
+
#toolbar
|
2
|
+
h5
|
3
|
+
position: relative
|
4
|
+
margin-top: 7px
|
5
|
+
margin-bottom: 16px
|
6
|
+
|
2
7
|
.contact-button
|
3
8
|
.btn-group
|
4
9
|
width: 100%
|
@@ -9,7 +14,7 @@
|
|
9
14
|
.caret
|
10
15
|
margin-left: 14px
|
11
16
|
|
12
|
-
|
17
|
+
|
13
18
|
.icon_navbar-message-blue,
|
14
19
|
.icon_tool16-info
|
15
20
|
margin-right: 4px
|
@@ -61,11 +66,12 @@
|
|
61
66
|
.logo_home
|
62
67
|
|
63
68
|
.subject-name
|
64
|
-
@include ellipsis
|
65
69
|
@extend .hidden-phone
|
66
70
|
.subject-name-phone
|
67
|
-
@include ellipsis
|
68
71
|
display: none
|
72
|
+
position: relative
|
73
|
+
margin-top: 7px
|
74
|
+
margin-bottom: 16px
|
69
75
|
@extend .visible-phone
|
70
76
|
|
71
77
|
|
@@ -89,4 +95,11 @@
|
|
89
95
|
img,
|
90
96
|
.icon_navbar-message-blue,
|
91
97
|
.icon_tool16-info
|
92
|
-
margin-right: 4px
|
98
|
+
margin-right: 4px
|
99
|
+
|
100
|
+
.toolbar-profile
|
101
|
+
.toolbar_menu
|
102
|
+
ul
|
103
|
+
li
|
104
|
+
padding: 4px 7px
|
105
|
+
margin-bottom: 5px
|
@@ -1,32 +1,19 @@
|
|
1
1
|
class ContactsController < ApplicationController
|
2
2
|
before_filter :authenticate_user!, except: [ :index ]
|
3
|
-
|
3
|
+
load_and_authorize_resource except: [ :index, :suggestion, :pending ]
|
4
|
+
before_filter :exclude_reflexive, except: [ :index, :suggestion, :pending ]
|
4
5
|
|
5
|
-
|
6
|
-
subject = profile_or_current_subject!
|
6
|
+
helper_method :current_subject_contacts_to
|
7
7
|
|
8
|
+
def index
|
9
|
+
params[:subject] = subject = profile_or_current_subject!
|
8
10
|
params[:d] ||= 'sent'
|
9
11
|
params[:type] ||= subject.class.contact_index_models.first.to_s
|
10
12
|
|
11
|
-
@contacts = Contact
|
12
|
-
|
13
|
-
@contacts =
|
14
|
-
if params[:d] == 'received'
|
15
|
-
@contacts.received_by(subject).joins(:sender)
|
16
|
-
else
|
17
|
-
@contacts.sent_by(subject).joins(:receiver)
|
18
|
-
end
|
19
|
-
|
20
|
-
@contacts =
|
21
|
-
@contacts.
|
22
|
-
positive.
|
23
|
-
merge(Actor.subject_type(params[:type])).
|
24
|
-
merge(Actor.name_search(params[:q])).
|
25
|
-
related_by_param(params[:relation]).
|
26
|
-
page(params[:page])
|
13
|
+
@contacts = Contact.index(params)
|
27
14
|
|
28
15
|
respond_to do |format|
|
29
|
-
format.html { render @contacts if request.xhr? }
|
16
|
+
format.html { render current_subject_contacts_to(@contacts) if request.xhr? }
|
30
17
|
format.json { render json: @contacts.map(&:receiver), helper: self }
|
31
18
|
end
|
32
19
|
end
|
@@ -87,11 +74,19 @@ class ContactsController < ApplicationController
|
|
87
74
|
end
|
88
75
|
end
|
89
76
|
|
77
|
+
protected
|
78
|
+
|
79
|
+
def current_subject_contacts_to(contacts)
|
80
|
+
contacts.map{ |c|
|
81
|
+
current_actor.blank? || c.sender == current_actor ?
|
82
|
+
c :
|
83
|
+
current_actor.contact_to!(c.receiver)
|
84
|
+
}
|
85
|
+
end
|
86
|
+
|
90
87
|
private
|
91
88
|
|
92
89
|
def exclude_reflexive
|
93
|
-
@contact = current_subject.sent_contacts.find params[:id]
|
94
|
-
|
95
90
|
if @contact.reflexive?
|
96
91
|
redirect_to home_path
|
97
92
|
end
|