Skip to content

Commit b8a1fdf

Browse files
committed
Separated private messages and business proposals. Closes fredwu#2.
1 parent 5c51dfe commit b8a1fdf

11 files changed

+44
-15
lines changed

app/controllers/users_controller.rb

+8-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@ def show
2121
end
2222

2323
def message_inboxes
24-
@messages = case params[:type].try(:to_sym)
24+
message_type = params[:type].try(:to_sym)
25+
26+
@messages = case message_type
2527
when :inbox_messages then current_user.inbox_messages
2628
when :sent_messages then current_user.sent_messages
2729
when :archived_messages then current_user.archived_messages
@@ -30,6 +32,11 @@ def message_inboxes
3032
when :archived_proposals then current_user.archived_proposals
3133
else redirect_to my_message_inbox_path(:inbox_messages)
3234
end
35+
36+
case message_type
37+
when /_messages/ then render 'message_inboxes'
38+
when /_proposals/ then render 'proposal_inboxes'
39+
end
3340
end
3441

3542
def add_micro_post

app/models/user.rb

+8-4
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,14 @@ def archived_proposals
8383
incoming_messages.with_proposal.archived
8484
end
8585

86+
def has_new_messages?
87+
inbox_messages.unread.any?
88+
end
89+
90+
def has_new_proposals?
91+
inbox_proposals.unread.any?
92+
end
93+
8694
def is_admin?
8795
!!is_admin
8896
end
@@ -103,10 +111,6 @@ def avatar(size = 80)
103111
"http://www.gravatar.com/avatar/#{Digest::MD5.hexdigest(email)}?s=#{size}"
104112
end
105113

106-
def has_new_messages?
107-
incoming_messages.unread.any?
108-
end
109-
110114
def send_private_message(target_user, content, extras = {})
111115
messages.create!({
112116
:content => content,

app/views/layouts/userbars/_topnav.html.slim

+6-1
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,14 @@ h3
44
| ! (
55
= link_to t('label.edit'), edit_registration_path(current_user)
66
' ) |
7+
- if current_user.has_new_proposals?
8+
= link_to "#{pluralize(current_user.inbox_proposals.unread.count, t('label.new_proposal'))}!", my_message_inbox_path(:inbox_proposals), :class => 'new'
9+
- else
10+
= link_to t('label.proposals_inbox'), my_message_inbox_path(:inbox_proposals)
11+
' |
712
- if current_user.has_new_messages?
813
= link_to "#{pluralize(current_user.inbox_messages.unread.count, t('label.new_message'))}!", my_message_inbox_path(:inbox_messages), :class => 'new'
914
- else
10-
= link_to "#{t('label.messages')} (#{current_user.inbox_messages.count})", my_message_inbox_path(:inbox_messages)
15+
= link_to t('label.messages_inbox'), my_message_inbox_path(:inbox_messages)
1116
' |
1217
= link_to t('label.sign_out'), destroy_user_session_path

app/views/messages/show_private_message.html.slim

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
.grid_3
2-
= render 'users/message_inboxes'
2+
- if @topic.is_with_proposal?
3+
= render 'users/proposal_inboxes'
4+
- else
5+
= render 'users/message_inboxes'
36
.grid_9
47
- if @topic.is_with_proposal?
58
h1= t('label.business_proposal')

app/views/users/_message_inboxes.html.slim

-7
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,3 @@ ul
66
li= link_to_current t('label.inbox_messages'), my_message_inbox_path(:inbox_messages)
77
li= link_to_current t('label.sent_messages') , my_message_inbox_path(:sent_messages)
88
li= link_to_current t('label.archived_messages') , my_message_inbox_path(:archived_messages)
9-
10-
hr
11-
h3= t('label.startup_proposals')
12-
ul
13-
li= link_to_current t('label.inbox_proposals') , my_message_inbox_path(:inbox_proposals)
14-
li= link_to_current t('label.sent_proposals') , my_message_inbox_path(:sent_proposals)
15-
li= link_to_current t('label.archived_proposals') , my_message_inbox_path(:archived_proposals)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
= render 'users/mini_profile', :user => current_user, :meta => {}
2+
3+
hr
4+
h3= t('label.startup_proposals')
5+
ul
6+
li= link_to_current t('label.inbox_proposals') , my_message_inbox_path(:inbox_proposals)
7+
li= link_to_current t('label.sent_proposals') , my_message_inbox_path(:sent_proposals)
8+
li= link_to_current t('label.archived_proposals') , my_message_inbox_path(:archived_proposals)
+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
.grid_3
2-
= render 'message_inboxes'
2+
= render 'users/message_inboxes'
33
.grid_9
44
= render 'messages/index', :collection => @messages, :meta => { :linkable => true, :new_message? => true }
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
.grid_3
2+
= render 'users/proposal_inboxes'
3+
.grid_9
4+
= render 'messages/index', :collection => @messages, :meta => { :linkable => true }

config/locales/en.yml

+3
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ en:
126126
five_year_market: Market in Five Years
127127
messages: Messages
128128
new_message: New message
129+
new_proposal: New Proposal
129130
private_messages: Private messages
130131
inbox: Inbox
131132
inbox_messages: Inbox messages
@@ -135,6 +136,8 @@ en:
135136
sent_proposals: Sent proposals
136137
archived_proposals: Archived proposals
137138
recipients: Recipients
139+
messages_inbox: Messages inbox
140+
proposals_inbox: Proposals inbox
138141
message:
139142
proposal_saved: The proposal has been saved!
140143
proposal_submitted: The proposal has been submitted to the investors!

spec/models/message_spec.rb

+1
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
subject.send_private_message(user, 'hey there!')
5858

5959
user.has_new_messages?.should == true
60+
user.has_new_proposals?.should == false
6061
end
6162

6263
context "private messages" do

spec/models/proposal_spec.rb

+1
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
startup.proposals.draft.count.should == 0
6161
startup.proposals.submitted.count.should == 1
6262
startup.founder.sent_proposals.count.should == 1
63+
investor1.has_new_proposals?.should == true
6364
investor1.proposals.count.should == 1
6465
investor1.inbox_proposals.count.should == 1
6566
startup.proposals.first.proposal_stage_identifier.should == 'submitted'

0 commit comments

Comments
 (0)