Skip to content

Commit 46efbac

Browse files
committed
Add "Unread" filter to messages tab. Rename the other two views.
1 parent 232f5bd commit 46efbac

File tree

8 files changed

+47
-32
lines changed

8 files changed

+47
-32
lines changed

app/assets/javascripts/discourse/controllers/user_activity_controller.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,6 @@ Discourse.UserActivityController = Discourse.ObjectController.extend({
2424
},
2525

2626
privateMessagesActive: Em.computed.equal('pmView', 'index'),
27-
privateMessagesSentActive: Em.computed.equal('pmView', 'sent')
27+
privateMessagesMineActive: Em.computed.equal('pmView', 'mine'),
28+
privateMessagesUnreadActive: Em.computed.equal('pmView', 'unread')
2829
});

app/assets/javascripts/discourse/routes/application_routes.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ Discourse.Route.buildRoutes(function() {
5050
});
5151

5252
this.resource('userPrivateMessages', { path: '/private-messages' }, function() {
53-
this.route('sent', {path: '/messages-sent'});
53+
this.route('mine', {path: '/mine'});
54+
this.route('unread', {path: '/unread'});
5455
});
5556

5657
this.resource('preferences', { path: '/preferences' }, function() {

app/assets/javascripts/discourse/routes/user_routes.js

Lines changed: 18 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -171,41 +171,33 @@ Discourse.UserTopicListRoute = Discourse.Route.extend({
171171
}
172172
});
173173

174-
Discourse.UserPrivateMessagesIndexRoute = Discourse.UserTopicListRoute.extend({
175-
userActionType: Discourse.UserAction.TYPES.messages_received,
176-
177-
model: function() {
178-
return Discourse.TopicList.find('topics/private-messages/' + this.modelFor('user').get('username_lower'));
179-
},
180-
181-
setupController: function(controller, model) {
182-
this._super(controller, model);
183-
controller.set('hideCategories', true);
184-
this.controllerFor('userActivity').set('pmView', 'index');
185-
}
186-
187-
});
188-
Discourse.UserPrivateMessagesSentRoute = Discourse.UserTopicListRoute.extend({
189-
userActionType: Discourse.UserAction.TYPES.messages_sent,
174+
function createPMRoute(viewName, path, type) {
175+
return Discourse.UserTopicListRoute.extend({
176+
userActionType: Discourse.UserAction.TYPES.messages_received,
177+
178+
model: function() {
179+
return Discourse.TopicList.find('topics/' + path + '/' + this.modelFor('user').get('username_lower'));
180+
},
181+
182+
setupController: function(controller, model) {
183+
this._super(controller, model);
184+
controller.set('hideCategories', true);
185+
this.controllerFor('userActivity').set('pmView', viewName);
186+
}
187+
});
188+
}
190189

191-
model: function() {
192-
return Discourse.TopicList.find('topics/private-messages-sent/' + this.modelFor('user').get('username_lower'));
193-
},
190+
Discourse.UserPrivateMessagesIndexRoute = createPMRoute('index', 'private-messages');
191+
Discourse.UserPrivateMessagesMineRoute = createPMRoute('mine', 'private-messages-sent');
192+
Discourse.UserPrivateMessagesUnreadRoute = createPMRoute('unread', 'private-messages-unread');
194193

195-
setupController: function(controller, model) {
196-
this._super(controller, model);
197-
controller.set('hideCategories', true);
198-
this.controllerFor('userActivity').set('pmView', 'sent');
199-
}
200-
});
201194

202195
Discourse.UserActivityTopicsRoute = Discourse.UserTopicListRoute.extend({
203196
userActionType: Discourse.UserAction.TYPES.topics,
204197

205198
model: function() {
206199
return Discourse.TopicList.find('topics/created-by/' + this.modelFor('user').get('username_lower'));
207200
}
208-
209201
});
210202

211203
Discourse.UserActivityFavoritesRoute = Discourse.UserTopicListRoute.extend({

app/assets/javascripts/discourse/templates/user/activity.js.handlebars

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,13 @@
1616
<ul class='action-list nav-stacked side-nav'>
1717
{{#if privateMessageView}}
1818
<li {{bindAttr class=":noGlyph privateMessagesActive:active"}}>
19-
{{#linkTo 'userPrivateMessages.index' model}}{{i18n user.private_messages}}{{/linkTo}}
19+
{{#linkTo 'userPrivateMessages.index' model}}{{i18n user.messages.all}}{{/linkTo}}
2020
</li>
21-
<li {{bindAttr class=":noGlyph privateMessagesSentActive:active"}}>
22-
{{#linkTo 'userPrivateMessages.sent' model}}{{i18n user.private_messages_sent}}{{/linkTo}}
21+
<li {{bindAttr class=":noGlyph privateMessagesMineActive:active"}}>
22+
{{#linkTo 'userPrivateMessages.mine' model}}{{i18n user.messages.mine}}{{/linkTo}}
23+
</li>
24+
<li {{bindAttr class=":noGlyph privateMessagesUnreadActive:active"}}>
25+
{{#linkTo 'userPrivateMessages.unread' model}}{{i18n user.messages.unread}}{{/linkTo}}
2326
</li>
2427

2528
{{else}}

app/controllers/list_controller.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,14 @@ def private_messages_sent
5353
respond(list)
5454
end
5555

56+
def private_messages_unread
57+
list_opts = build_topic_list_options
58+
list = TopicQuery.new(current_user, list_opts).list_private_messages_unread(fetch_user_from_params)
59+
list.more_topics_url = url_for(topics_private_messages_unread_path(list_opts.merge(format: 'json', page: next_page)))
60+
61+
respond(list)
62+
end
63+
5664
def category
5765
query = TopicQuery.new(current_user, page: params[:page])
5866

config/locales/client.en.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,6 @@ en:
188188
download_archive: "download archive of my posts"
189189
private_message: "Private Message"
190190
private_messages: "Messages"
191-
private_messages_sent: "Sent Messages"
192191
activity_stream: "Activity"
193192
preferences: "Preferences"
194193
bio: "About me"
@@ -202,6 +201,11 @@ en:
202201
moderator: "{{user}} is a moderator"
203202
admin: "{{user}} is an admin"
204203

204+
messages:
205+
all: "All"
206+
mine: "Mine"
207+
unread: "Unread"
208+
205209
change_password:
206210
success: "(email sent)"
207211
in_progress: "(sending email)"

config/routes.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,7 @@
216216
get 'topics/created-by/:username' => 'list#topics_by', as: 'topics_by', constraints: {username: USERNAME_ROUTE_FORMAT}
217217
get 'topics/private-messages/:username' => 'list#private_messages', as: 'topics_private_messages', constraints: {username: USERNAME_ROUTE_FORMAT}
218218
get 'topics/private-messages-sent/:username' => 'list#private_messages_sent', as: 'topics_private_messages_sent', constraints: {username: USERNAME_ROUTE_FORMAT}
219+
get 'topics/private-messages-unread/:username' => 'list#private_messages_unread', as: 'topics_private_messages_unread', constraints: {username: USERNAME_ROUTE_FORMAT}
219220

220221
# Topic routes
221222
get 't/:slug/:topic_id/wordpress' => 'topics#wordpress', constraints: {topic_id: /\d+/}

lib/topic_query.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,11 @@ def list_private_messages_sent(user)
146146
TopicList.new(:private_messages, user, list)
147147
end
148148

149+
def list_private_messages_unread(user)
150+
list = private_messages_for(user)
151+
list = TopicQuery.unread_filter(list)
152+
TopicList.new(:private_messages, user, list)
153+
end
149154

150155
def list_uncategorized
151156
create_list(:uncategorized, unordered: true) do |list|

0 commit comments

Comments
 (0)