social_stream-base 0.6.5 → 0.6.6
Sign up to get free protection for your applications and to get access to all the features.
- data/app/assets/stylesheets/base.css +5 -1
- data/app/controllers/contacts_controller.rb +16 -8
- data/app/models/contact.rb +4 -4
- data/app/models/tie.rb +1 -1
- data/app/views/contacts/_index.html.erb +5 -1
- data/app/views/contacts/_pendings.html.erb +9 -2
- data/app/views/contacts/index.html.erb +4 -0
- data/app/views/home/index.html.erb +0 -4
- data/config/locales/en.yml +3 -0
- data/lib/generators/social_stream/base/install_generator.rb +0 -4
- data/lib/social_stream/base/version.rb +1 -1
- data/lib/social_stream/base.rb +6 -0
- data/lib/social_stream/toolbar_config.rb +93 -95
- metadata +3 -4
- data/lib/generators/social_stream/base/templates/mailboxer_custom.rb +0 -13
@@ -3,16 +3,24 @@ class ContactsController < ApplicationController
|
|
3
3
|
|
4
4
|
def index
|
5
5
|
@contacts =
|
6
|
-
current_subject.
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
6
|
+
Contact.sent_by(current_subject).
|
7
|
+
joins(:receiver).merge(Actor.alphabetic).
|
8
|
+
merge(Actor.letter(params[:letter])).
|
9
|
+
merge(Actor.search(params[:search]))
|
10
|
+
|
11
|
+
if params[:pending].present?
|
12
|
+
@contacts =
|
13
|
+
Contact.received_by(current_subject).
|
14
|
+
joins(:sender).merge(Actor.alphabetic).
|
15
|
+
merge(Actor.letter(params[:letter])).
|
16
|
+
merge(Actor.search(params[:search])).
|
17
|
+
pending.
|
18
|
+
not_reflexive
|
19
|
+
end
|
12
20
|
|
13
21
|
respond_to do |format|
|
14
|
-
format.html { @contacts =
|
15
|
-
format.js { @contacts =
|
22
|
+
format.html { @contacts = @contacts.page(params[:page]).per(10) }
|
23
|
+
format.js { @contacts = @contacts.page(params[:page]).per(10) }
|
16
24
|
format.json { render :text => @contacts.map{ |c| { 'key' => c.actor_id.to_s, 'value' => self.class.helpers.truncate_name(c.name) } }.to_json }
|
17
25
|
end
|
18
26
|
end
|
data/app/models/contact.rb
CHANGED
@@ -57,7 +57,7 @@ class Contact < ActiveRecord::Base
|
|
57
57
|
validates_uniqueness_of :receiver_id, :scope => :sender_id
|
58
58
|
|
59
59
|
after_create :set_inverse
|
60
|
-
|
60
|
+
after_save :send_message
|
61
61
|
|
62
62
|
def sender_subject
|
63
63
|
sender.try(:subject)
|
@@ -146,9 +146,9 @@ class Contact < ActiveRecord::Base
|
|
146
146
|
|
147
147
|
# Send a message to the contact receiver
|
148
148
|
def send_message
|
149
|
-
if message.
|
150
|
-
|
151
|
-
|
149
|
+
return if message.blank?
|
150
|
+
|
151
|
+
sender.send_message(receiver, message, I18n.t("activity.verb.#{ verb }.#{ receiver.subject_type }.message", :name => sender.name))
|
152
152
|
end
|
153
153
|
|
154
154
|
def set_inverse
|
data/app/models/tie.rb
CHANGED
@@ -88,7 +88,7 @@ class Tie < ActiveRecord::Base
|
|
88
88
|
#
|
89
89
|
# Create contact activity if this is the first tie
|
90
90
|
def create_activity
|
91
|
-
return
|
91
|
+
return if contact.reload.ties_count != 1
|
92
92
|
|
93
93
|
Activity.create! :contact => contact,
|
94
94
|
:relation_ids => contact.relation_ids,
|
@@ -1,7 +1,11 @@
|
|
1
1
|
<% cont=0; %>
|
2
2
|
|
3
3
|
<% @contacts.each do |contact| %>
|
4
|
-
|
4
|
+
<% if params[:pending].present? %>
|
5
|
+
<% contact = contact.sender.subject %>
|
6
|
+
<% else %>
|
7
|
+
<% contact = contact.receiver.subject %>
|
8
|
+
<% end %>
|
5
9
|
<% if (cont%2) == 0 %>
|
6
10
|
<% cont+=1; %>
|
7
11
|
<div class="row">
|
@@ -2,10 +2,17 @@
|
|
2
2
|
<div class="block">
|
3
3
|
<div class="header">
|
4
4
|
<%= image_tag('btn/btn_notifications.png', :class => "header_icon") %>
|
5
|
-
<div class="header_text"
|
5
|
+
<div class="header_text">
|
6
|
+
<%= t 'contact.pending.other' %>
|
7
|
+
</div>
|
6
8
|
</div>
|
7
9
|
<div class="content">
|
8
|
-
<%= render current_subject.pending_contacts %>
|
10
|
+
<%= render current_subject.pending_contacts.shuffle.first(2) %>
|
11
|
+
<div class="row more_pending">
|
12
|
+
<%= link_to t('contact.pending.all_n', :count => current_subject.pending_contacts.size), contacts_path(:pending=>true)%>
|
13
|
+
</div>
|
14
|
+
<div class="space_center">
|
15
|
+
</div>
|
9
16
|
</div>
|
10
17
|
</div>
|
11
18
|
<% end -%>
|
@@ -11,10 +11,6 @@
|
|
11
11
|
<div class="space_center">
|
12
12
|
</div>
|
13
13
|
|
14
|
-
<% if SocialStream.activity_forms.include? :document %>
|
15
|
-
<%= render :partial => '/documents/mediawall' %>
|
16
|
-
<% end %>
|
17
|
-
|
18
14
|
<% if current_subject.respond_to?(:recent_groups) %>
|
19
15
|
<div id="my_groups">
|
20
16
|
<%= render :partial => "groups" %>
|
data/config/locales/en.yml
CHANGED
@@ -73,6 +73,7 @@ en:
|
|
73
73
|
confirm_delete: "Delete comment?"
|
74
74
|
contact:
|
75
75
|
all_n: "All contacts (%{count})"
|
76
|
+
addressbook: "Addressbook"
|
76
77
|
edit:
|
77
78
|
title: "Edit contact to %{name}"
|
78
79
|
submit: "Edit Contact"
|
@@ -86,6 +87,7 @@ en:
|
|
86
87
|
pending:
|
87
88
|
other: "Pending requests"
|
88
89
|
all: "All"
|
90
|
+
all_n: "See all pending requests (%{count})"
|
89
91
|
relation:
|
90
92
|
one: "Contact type"
|
91
93
|
new: "New type"
|
@@ -163,6 +165,7 @@ en:
|
|
163
165
|
join_me: "Join me at SocialStream!"
|
164
166
|
one: "Invitation"
|
165
167
|
other: "Invitations"
|
168
|
+
toolbar: "Invite"
|
166
169
|
success: "Your invitations have successfully been sent"
|
167
170
|
text: "Write your own message"
|
168
171
|
like:
|
@@ -44,10 +44,6 @@ class SocialStream::Base::InstallGenerator < Rails::Generators::Base #:nodoc:
|
|
44
44
|
copy_file 'navigation.rb', 'config/navigation.rb'
|
45
45
|
end
|
46
46
|
|
47
|
-
def create_mailboxer_custom_config
|
48
|
-
copy_file 'mailboxer_custom.rb', 'config/initializers/mailboxer.rb'
|
49
|
-
end
|
50
|
-
|
51
47
|
def create_migration_file
|
52
48
|
require 'rake'
|
53
49
|
Rails.application.load_tasks
|
data/lib/social_stream/base.rb
CHANGED
@@ -35,6 +35,12 @@ module SocialStream
|
|
35
35
|
:profile => '119x119'}
|
36
36
|
end
|
37
37
|
end
|
38
|
+
|
39
|
+
initializer "social_stream-base.mailboxer", :before => :load_config_initializers do
|
40
|
+
Mailboxer.setup do |config|
|
41
|
+
config.email_method = :mailboxer_email
|
42
|
+
end
|
43
|
+
end
|
38
44
|
end
|
39
45
|
end
|
40
46
|
end
|
@@ -1,113 +1,111 @@
|
|
1
1
|
module SocialStream
|
2
2
|
module ToolbarConfig
|
3
3
|
#Prints the default home toolbar menu
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
4
|
+
def default_home_toolbar_menu
|
5
|
+
items = Array.new
|
6
|
+
#Notifications
|
7
|
+
items << {:key => :notifications,
|
8
|
+
:name => image_tag("btn/btn_notification.png")+t('notification.other')+' ('+ current_subject.mailbox.notifications.not_trashed.unread.count.to_s+')',
|
9
|
+
:url => notifications_path,
|
10
|
+
:options => {:link => {:id => "notifications_menu"}}}
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
12
|
+
#Messages
|
13
|
+
items << {:key => :messages,
|
14
|
+
:name => image_tag("btn/new.png")+t('message.other')+' (' + current_subject.mailbox.inbox(:unread => true).count.to_s + ')',
|
15
|
+
:url => "#",
|
16
|
+
:options => {:link => {:id => "messages_menu"}},
|
17
|
+
:items => [
|
18
|
+
{:key => :message_new, :name => image_tag("btn/message_new.png")+ t('message.new'), :url => new_message_path},
|
19
|
+
{:key => :message_inbox, :name => image_tag("btn/message_inbox.png")+t('message.inbox')+' (' + current_subject.mailbox.inbox(:unread => true).count.to_s + ')',
|
20
|
+
:url => conversations_path, :options => {:link =>{:remote=> true}}},
|
21
|
+
{:key => :message_sentbox, :name => image_tag("btn/message_sentbox.png")+t('message.sentbox'), :url => conversations_path(:box => :sentbox), :remote=> true},
|
22
|
+
{:key => :message_trash, :name => image_tag("btn/message_trash.png")+t('message.trash'), :url => conversations_path(:box => :trash)}
|
23
|
+
]}
|
24
|
+
|
25
|
+
#Documents if present
|
26
|
+
if SocialStream.activity_forms.include? :document
|
27
|
+
items << {:key => :resources,
|
28
|
+
:name => image_tag("btn/btn_resource.png",:class =>"menu_icon")+t('resource.mine'),
|
29
|
+
:url => "#",
|
30
|
+
:options => {:link => {:id => "resources_menu"}},
|
31
|
+
:items => [
|
32
|
+
{:key => :resources_documents,:name => image_tag("btn/btn_documents.png")+t('document.title'),:url => documents_path},
|
33
|
+
{:key => :resources_pictures,:name => image_tag("btn/btn_gallery.png")+t('picture.title'),:url => pictures_path},
|
34
|
+
{:key => :resources_videos,:name => image_tag("btn/btn_video.png")+t('video.title'),:url => videos_path},
|
35
|
+
{:key => :resources_audios,:name => image_tag("btn/btn_audio.png")+t('audio.title'),:url => audios_path}
|
36
|
+
]}
|
37
|
+
end
|
24
38
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
:name => image_tag("btn/btn_resource.png",:class =>"menu_icon")+t('resource.mine'),
|
39
|
+
#Contacts
|
40
|
+
items << {:key => :contacts,
|
41
|
+
:name => image_tag("btn/btn_friend.png")+t('contact.other'),
|
29
42
|
:url => "#",
|
30
|
-
:options => {:link => {:id => "
|
43
|
+
:options => {:link => {:id => "contacts_menu"}},
|
31
44
|
:items => [
|
32
|
-
{:key => :
|
33
|
-
{:key => :
|
34
|
-
{:key => :
|
35
|
-
{:key => :resources_audios,:name => image_tag("btn/btn_audio.png")+t('audio.title'),:url => audios_path}
|
45
|
+
{:key => :invitations, :name => image_tag("btn/btn_friend.png")+t('contact.addresbook'), :url => contacts_path},
|
46
|
+
{:key => :invitations, :name => image_tag("btn/btn_invitation.png")+t('invitation.toolbar'), :url => new_invitation_path},
|
47
|
+
{:key => :invitations, :name => image_tag("btn/btn_friend.png")+t('contact.pending.other'), :url => contacts_path(:pending=>true)}
|
36
48
|
]}
|
37
|
-
end
|
38
49
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
:
|
44
|
-
:url =>
|
45
|
-
|
46
|
-
items << {:key => :contacts,
|
47
|
-
:name => image_tag("btn/btn_friend.png")+t('contact.other'),
|
48
|
-
:url => "#",
|
49
|
-
:options => {:link => {:id => "contacts_menu"}},
|
50
|
-
:items => relation_items}
|
50
|
+
#Subjects
|
51
|
+
items << {:key => :groups,
|
52
|
+
:name => image_tag("btn/btn_group.png")+t('group.other'),
|
53
|
+
:url => "#",
|
54
|
+
:options => {:link => {:id => "groups_menu"}},
|
55
|
+
:items => [{:key => :new_group ,:name => image_tag("btn/btn_group.png")+t('group.new.action'),:url => new_group_path('group' => { '_founder' => current_subject.slug })}]
|
56
|
+
}
|
51
57
|
|
52
|
-
|
53
|
-
|
54
|
-
:name => image_tag("btn/btn_group.png")+t('group.other'),
|
55
|
-
:url => "#",
|
56
|
-
:options => {:link => {:id => "groups_menu"}},
|
57
|
-
:items => [{:key => :new_group ,:name => image_tag("btn/btn_group.png")+t('group.new.action'),:url => new_group_path('group' => { '_founder' => current_subject.slug })}]
|
58
|
-
}
|
58
|
+
render_items items
|
59
|
+
end
|
59
60
|
|
60
|
-
|
61
|
-
|
61
|
+
#Prints the default profile toolbar menu
|
62
|
+
def default_profile_toolbar_menu(subject = current_subject)
|
63
|
+
items = Array.new
|
64
|
+
#Information button
|
65
|
+
items << {:key => :subject_info,
|
66
|
+
:name => image_tag("btn/btn_edit.png")+t('menu.information'),
|
67
|
+
:url => [subject, :profile]
|
68
|
+
}
|
62
69
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
:url => [subject, :profile]
|
70
|
-
}
|
70
|
+
if subject!=current_subject
|
71
|
+
#Like button
|
72
|
+
items << {:key => :like_button,
|
73
|
+
:name => link_like_params(subject)[0],
|
74
|
+
:url => link_like_params(subject)[1],
|
75
|
+
:options => {:link => link_like_params(subject)[2]}}
|
71
76
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
}
|
85
|
-
#Send message button
|
86
|
-
items << {:key => :send_message,
|
87
|
-
:name => image_tag("btn/btn_send.png")+t('message.send'),
|
88
|
-
:url => new_message_path(:receiver => subject.slug)
|
89
|
-
}
|
77
|
+
if user_signed_in?
|
78
|
+
#Relation button
|
79
|
+
items << {:key => :subject_relation,
|
80
|
+
:name => image_tag("btn/btn_friend.png") + contact_status(subject),
|
81
|
+
:url => edit_contact_path(current_subject.contact_to!(subject))
|
82
|
+
}
|
83
|
+
#Send message button
|
84
|
+
items << {:key => :send_message,
|
85
|
+
:name => image_tag("btn/btn_send.png")+t('message.send'),
|
86
|
+
:url => new_message_path(:receiver => subject.slug)
|
87
|
+
}
|
88
|
+
end
|
90
89
|
end
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
90
|
+
#Documents if present
|
91
|
+
if SocialStream.activity_forms.include? :document
|
92
|
+
if subject == current_subject
|
93
|
+
resources_label = t('resource.mine')
|
94
|
+
else
|
95
|
+
resources_label = t('resource.title')
|
96
|
+
end
|
97
|
+
items << {:key => :resources,
|
98
|
+
:name => image_tag("btn/btn_resource.png",:class =>"menu_icon")+resources_label,
|
99
|
+
:url => "#",
|
100
|
+
:options => {:link => {:id => "resources_menu"}},
|
101
|
+
:items => [
|
102
|
+
{:key => :resources_documents,:name => image_tag("btn/btn_documents.png")+t('document.title'),:url => documents_path},
|
103
|
+
{:key => :resources_pictures,:name => image_tag("btn/btn_gallery.png")+t('picture.title'),:url => pictures_path},
|
104
|
+
{:key => :resources_videos,:name => image_tag("btn/btn_video.png")+t('video.title'),:url => videos_path},
|
105
|
+
{:key => :resources_audios,:name => image_tag("btn/btn_audio.png")+t('audio.title'),:url => audios_path}
|
106
|
+
]}
|
98
107
|
end
|
99
|
-
items
|
100
|
-
:name => image_tag("btn/btn_resource.png",:class =>"menu_icon")+resources_label,
|
101
|
-
:url => "#",
|
102
|
-
:options => {:link => {:id => "resources_menu"}},
|
103
|
-
:items => [
|
104
|
-
{:key => :resources_documents,:name => image_tag("btn/btn_documents.png")+t('document.title'),:url => documents_path},
|
105
|
-
{:key => :resources_pictures,:name => image_tag("btn/btn_gallery.png")+t('picture.title'),:url => pictures_path},
|
106
|
-
{:key => :resources_videos,:name => image_tag("btn/btn_video.png")+t('video.title'),:url => videos_path},
|
107
|
-
{:key => :resources_audios,:name => image_tag("btn/btn_audio.png")+t('audio.title'),:url => audios_path}
|
108
|
-
]}
|
108
|
+
render_items items
|
109
109
|
end
|
110
|
-
render_items items
|
111
|
-
end
|
112
110
|
end
|
113
111
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: social_stream-base
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 11
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 6
|
9
|
-
-
|
10
|
-
version: 0.6.
|
9
|
+
- 6
|
10
|
+
version: 0.6.6
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- GING - DIT - UPM
|
@@ -1077,7 +1077,6 @@ files:
|
|
1077
1077
|
- lib/acts_as_taggable_on/social_stream.rb
|
1078
1078
|
- lib/generators/social_stream/base/install_generator.rb
|
1079
1079
|
- lib/generators/social_stream/base/templates/initializer.rb
|
1080
|
-
- lib/generators/social_stream/base/templates/mailboxer_custom.rb
|
1081
1080
|
- lib/generators/social_stream/base/templates/navigation.rb
|
1082
1081
|
- lib/generators/social_stream/base/templates/relations.yml
|
1083
1082
|
- lib/paperclip/social_stream.rb
|
@@ -1,13 +0,0 @@
|
|
1
|
-
Mailboxer.setup do |config|
|
2
|
-
|
3
|
-
#Configures if you applications uses or no the email sending for Notifications and Messages
|
4
|
-
config.uses_emails = true
|
5
|
-
|
6
|
-
#Configures the default from for the email sent for Messages and Notifications of Mailboxer
|
7
|
-
config.default_from = "no-reply@mailboxer.com"
|
8
|
-
|
9
|
-
#Configures the methods needed by mailboxer
|
10
|
-
config.email_method = :mailboxer_email
|
11
|
-
#config.name_method = :name
|
12
|
-
#config.should_email_method = :should_email?
|
13
|
-
end
|