From aab9706b7a0ae003509b08f5509df16e5a9e81ad Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Mon, 4 May 2015 16:41:06 -0400 Subject: [PATCH] Fixes deprecations on user routes --- .../components/activity-filter.js.es6 | 12 +-- .../controllers/user-activity.js.es6 | 9 +- .../controllers/user-topics-list.js.es6 | 4 +- .../discourse/controllers/user.js.es6 | 26 ++--- .../discourse/mixins/can-check-emails.js.es6 | 4 +- .../mixins/viewing-action-type.js.es6 | 6 ++ .../routes/build-user-topic-list-route.js.es6 | 2 +- .../routes/user-activity-stream.js.es6 | 5 +- .../discourse/routes/user-badges.js.es6 | 7 +- .../discourse/routes/user-topic-list.js.es6 | 16 +-- ...r_topics_list.hbs => user-topics-list.hbs} | 0 .../discourse/templates/user/preferences.hbs | 4 +- .../discourse/templates/user/user.hbs | 98 +++++++++---------- .../discourse/views/user-topics-list.js.es6 | 1 - .../controllers/site-map-category-test.js.es6 | 3 +- 15 files changed, 102 insertions(+), 95 deletions(-) create mode 100644 app/assets/javascripts/discourse/mixins/viewing-action-type.js.es6 rename app/assets/javascripts/discourse/templates/{list/user_topics_list.hbs => user-topics-list.hbs} (100%) diff --git a/app/assets/javascripts/discourse/components/activity-filter.js.es6 b/app/assets/javascripts/discourse/components/activity-filter.js.es6 index 8fe07f7e6b2..876e7bdb264 100644 --- a/app/assets/javascripts/discourse/components/activity-filter.js.es6 +++ b/app/assets/javascripts/discourse/components/activity-filter.js.es6 @@ -15,21 +15,21 @@ export default Ember.Component.extend(StringBuffer, { if (this.get('isIndexStream')) { return !this.get('userActionType'); } - var content = this.get('content'); + const content = this.get('content'); if (content) { return parseInt(this.get('userActionType'), 10) === parseInt(Em.get(content, 'action_type'), 10); } - }.property('userActionType', 'indexStream'), + }.property('userActionType', 'isIndexStream'), activityCount: function() { return this.get('content.count') || this.get('count') || 0; }.property('content.count', 'count'), typeKey: function() { - var actionType = this.get('content.action_type'); + const actionType = this.get('content.action_type'); if (actionType === Discourse.UserAction.TYPES.messages_received) { return ""; } - var result = Discourse.UserAction.TYPES_INVERTED[actionType]; + const result = Discourse.UserAction.TYPES_INVERTED[actionType]; if (!result) { return ""; } // We like our URLS to have hyphens, not underscores @@ -44,9 +44,9 @@ export default Ember.Component.extend(StringBuffer, { return this.get('content.description') || I18n.t("user.filters.all"); }.property('content.description'), - renderString: function(buffer) { + renderString(buffer) { buffer.push(""); - var icon = this.get('icon'); + const icon = this.get('icon'); if (icon) { buffer.push(" "); } diff --git a/app/assets/javascripts/discourse/controllers/user-activity.js.es6 b/app/assets/javascripts/discourse/controllers/user-activity.js.es6 index 878fa3fde4b..6113cedff3d 100644 --- a/app/assets/javascripts/discourse/controllers/user-activity.js.es6 +++ b/app/assets/javascripts/discourse/controllers/user-activity.js.es6 @@ -1,15 +1,16 @@ export default Ember.ObjectController.extend({ + userActionType: null, needs: ["application"], _showFooter: function() { var showFooter; if (this.get("userActionType")) { - var stat = _.find(this.get("stats"), { action_type: this.get("userActionType") }); - showFooter = stat && stat.count <= this.get("stream.itemsLoaded"); + var stat = _.find(this.get("model.stats"), { action_type: this.get("userActionType") }); + showFooter = stat && stat.count <= this.get("model.stream.itemsLoaded"); } else { - showFooter = this.get("statsCountNonPM") <= this.get("stream.itemsLoaded"); + showFooter = this.get("model.statsCountNonPM") <= this.get("model.stream.itemsLoaded"); } this.set("controllers.application.showFooter", showFooter); - }.observes("userActionType", "stream.itemsLoaded") + }.observes("userActionType", "model.stream.itemsLoaded") }); diff --git a/app/assets/javascripts/discourse/controllers/user-topics-list.js.es6 b/app/assets/javascripts/discourse/controllers/user-topics-list.js.es6 index 5bab37f8386..88b8b98c8c5 100644 --- a/app/assets/javascripts/discourse/controllers/user-topics-list.js.es6 +++ b/app/assets/javascripts/discourse/controllers/user-topics-list.js.es6 @@ -7,8 +7,8 @@ export default ObjectController.extend({ showParticipants: false, _showFooter: function() { - this.set("controllers.application.showFooter", !this.get("canLoadMore")); - }.observes("canLoadMore"), + this.set("controllers.application.showFooter", !this.get("model.canLoadMore")); + }.observes("model.canLoadMore"), actions: { loadMore: function() { diff --git a/app/assets/javascripts/discourse/controllers/user.js.es6 b/app/assets/javascripts/discourse/controllers/user.js.es6 index 512df986e1d..2dd4fa2f95d 100644 --- a/app/assets/javascripts/discourse/controllers/user.js.es6 +++ b/app/assets/javascripts/discourse/controllers/user.js.es6 @@ -3,7 +3,9 @@ import CanCheckEmails from 'discourse/mixins/can-check-emails'; export default ObjectController.extend(CanCheckEmails, { indexStream: false, - needs: ['user-notifications', 'user_topics_list'], + pmView: false, + userActionType: null, + needs: ['user-notifications', 'user-topics-list'], viewingSelf: function() { return this.get('content.username') === Discourse.User.currentProp('username'); @@ -12,16 +14,16 @@ export default ObjectController.extend(CanCheckEmails, { collapsedInfo: Em.computed.not('indexStream'), websiteName: function() { - var website = this.get('website'); + var website = this.get('model.website'); if (Em.isEmpty(website)) { return; } - return this.get('website').split("/")[2]; - }.property('website'), + return website.split("/")[2]; + }.property('model.website'), - linkWebsite: Em.computed.not('isBasic'), + linkWebsite: Em.computed.not('model.isBasic'), removeNoFollow: function() { - return this.get('trust_level') > 2 && !this.siteSettings.tl3_links_no_follow; - }.property('trust_level'), + return this.get('model.trust_level') > 2 && !this.siteSettings.tl3_links_no_follow; + }.property('model.trust_level'), canSeePrivateMessages: Ember.computed.or('viewingSelf', 'currentUser.admin'), canSeeNotificationHistory: Em.computed.alias('canSeePrivateMessages'), @@ -40,13 +42,13 @@ export default ObjectController.extend(CanCheckEmails, { }.property(), canDeleteUser: function() { - return this.get('can_be_deleted') && this.get('can_delete_all_posts'); - }.property('can_be_deleted', 'can_delete_all_posts'), + return this.get('model.can_be_deleted') && this.get('model.can_delete_all_posts'); + }.property('model.can_be_deleted', 'model.can_delete_all_posts'), publicUserFields: function() { - var siteUserFields = this.site.get('user_fields'); + var siteUserFields = this.site.get('model.user_fields'); if (!Ember.isEmpty(siteUserFields)) { - var userFields = this.get('user_fields'); + var userFields = this.get('model.user_fields'); return siteUserFields.filterProperty('show_on_profile', true).sortBy('id').map(function(uf) { var val = userFields ? userFields[uf.get('id').toString()] : null; if (Ember.isEmpty(val)) { @@ -56,7 +58,7 @@ export default ObjectController.extend(CanCheckEmails, { } }).compact(); } - }.property('user_fields.@each.value'), + }.property('model.user_fields.@each.value'), privateMessagesActive: Em.computed.equal('pmView', 'index'), privateMessagesMineActive: Em.computed.equal('pmView', 'mine'), diff --git a/app/assets/javascripts/discourse/mixins/can-check-emails.js.es6 b/app/assets/javascripts/discourse/mixins/can-check-emails.js.es6 index 2fb98297f84..67378e6c42b 100644 --- a/app/assets/javascripts/discourse/mixins/can-check-emails.js.es6 +++ b/app/assets/javascripts/discourse/mixins/can-check-emails.js.es6 @@ -1,6 +1,6 @@ export default Ember.Mixin.create({ - isOwnEmail: Discourse.computed.propertyEqual("id", "currentUser.id"), - showEmailOnProfile: Discourse.computed.setting("show_email_on_profile"), + isOwnEmail: Discourse.computed.propertyEqual("model.id", "currentUser.id"), + showEmailOnProfile: Discourse.computed.setting("model.show_email_on_profile"), canStaffCheckEmails: Em.computed.and("showEmailOnProfile", "currentUser.staff"), canAdminCheckEmails: Em.computed.alias("currentUser.admin"), canCheckEmails: Em.computed.or("isOwnEmail", "canStaffCheckEmails", "canAdminCheckEmails"), diff --git a/app/assets/javascripts/discourse/mixins/viewing-action-type.js.es6 b/app/assets/javascripts/discourse/mixins/viewing-action-type.js.es6 new file mode 100644 index 00000000000..35084dcf1fa --- /dev/null +++ b/app/assets/javascripts/discourse/mixins/viewing-action-type.js.es6 @@ -0,0 +1,6 @@ +export default { + viewingActionType(userActionType) { + this.controllerFor('user').set('userActionType', userActionType); + this.controllerFor('user-activity').set('userActionType', userActionType); + } +}; diff --git a/app/assets/javascripts/discourse/routes/build-user-topic-list-route.js.es6 b/app/assets/javascripts/discourse/routes/build-user-topic-list-route.js.es6 index c8c345e88b2..b5a83808d19 100644 --- a/app/assets/javascripts/discourse/routes/build-user-topic-list-route.js.es6 +++ b/app/assets/javascripts/discourse/routes/build-user-topic-list-route.js.es6 @@ -20,7 +20,7 @@ export default function (viewName, path) { setupController: function() { this._super.apply(this, arguments); - this.controllerFor('user_topics_list').setProperties({ + this.controllerFor('user-topics-list').setProperties({ hideCategory: true, showParticipants: true }); diff --git a/app/assets/javascripts/discourse/routes/user-activity-stream.js.es6 b/app/assets/javascripts/discourse/routes/user-activity-stream.js.es6 index 7257f7358f3..bec825f849b 100644 --- a/app/assets/javascripts/discourse/routes/user-activity-stream.js.es6 +++ b/app/assets/javascripts/discourse/routes/user-activity-stream.js.es6 @@ -1,6 +1,7 @@ import ShowFooter from "discourse/mixins/show-footer"; +import ViewingActionType from "discourse/mixins/viewing-action-type"; -export default Discourse.Route.extend(ShowFooter, { +export default Discourse.Route.extend(ShowFooter, ViewingActionType, { model: function() { return this.modelFor('user').get('stream'); }, @@ -15,7 +16,7 @@ export default Discourse.Route.extend(ShowFooter, { setupController: function(controller, model) { controller.set('model', model); - this.controllerFor('user-activity').set('userActionType', this.get('userActionType')); + this.viewingActionType(this.get('userActionType')); }, actions: { diff --git a/app/assets/javascripts/discourse/routes/user-badges.js.es6 b/app/assets/javascripts/discourse/routes/user-badges.js.es6 index 54552578817..d3b39a3b939 100644 --- a/app/assets/javascripts/discourse/routes/user-badges.js.es6 +++ b/app/assets/javascripts/discourse/routes/user-badges.js.es6 @@ -1,14 +1,13 @@ import ShowFooter from "discourse/mixins/show-footer"; +import ViewingActionType from "discourse/mixins/viewing-action-type"; -export default Discourse.Route.extend(ShowFooter, { +export default Discourse.Route.extend(ShowFooter, ViewingActionType, { model: function() { return Discourse.UserBadge.findByUsername(this.modelFor('user').get('username_lower'), {grouped: true}); }, setupController: function(controller, model) { - if (this.controllerFor('user_activity').get('content')) { - this.controllerFor('user_activity').set('userActionType', -1); - } + this.viewingActionType(-1); controller.set('model', model); }, diff --git a/app/assets/javascripts/discourse/routes/user-topic-list.js.es6 b/app/assets/javascripts/discourse/routes/user-topic-list.js.es6 index 5455b03e2fd..a8cb245fd5d 100644 --- a/app/assets/javascripts/discourse/routes/user-topic-list.js.es6 +++ b/app/assets/javascripts/discourse/routes/user-topic-list.js.es6 @@ -1,12 +1,16 @@ -export default Discourse.Route.extend({ - renderTemplate: function() { - this.render('user_topics_list'); +import ViewingActionType from "discourse/mixins/viewing-action-type"; + +export default Discourse.Route.extend(ViewingActionType, { + renderTemplate() { + this.render('user-topics-list'); }, - setupController: function(controller, model) { - this.controllerFor('user-activity').set('userActionType', this.get('userActionType')); + setupController(controller, model) { + const userActionType = this.get('userActionType'); + this.controllerFor('user').set('userActionType', userActionType); + this.controllerFor('user-activity').set('userActionType', userActionType); this.controllerFor('user-topics-list').setProperties({ - model: model, + model, hideCategory: false, showParticipants: false }); diff --git a/app/assets/javascripts/discourse/templates/list/user_topics_list.hbs b/app/assets/javascripts/discourse/templates/user-topics-list.hbs similarity index 100% rename from app/assets/javascripts/discourse/templates/list/user_topics_list.hbs rename to app/assets/javascripts/discourse/templates/user-topics-list.hbs diff --git a/app/assets/javascripts/discourse/templates/user/preferences.hbs b/app/assets/javascripts/discourse/templates/user/preferences.hbs index 0133f6537bb..faf517db813 100644 --- a/app/assets/javascripts/discourse/templates/user/preferences.hbs +++ b/app/assets/javascripts/discourse/templates/user/preferences.hbs @@ -50,9 +50,9 @@ {{#if canCheckEmails}}
- {{#if email}} + {{#if model.email}}
- {{email}} + {{model.email}} {{#if can_edit_email}} {{#link-to "preferences.email" class="btn btn-small pad-left no-text"}}{{fa-icon "pencil"}}{{/link-to}} {{/if}} diff --git a/app/assets/javascripts/discourse/templates/user/user.hbs b/app/assets/javascripts/discourse/templates/user/user.hbs index f15a4f9e4e3..806490a6174 100644 --- a/app/assets/javascripts/discourse/templates/user/user.hbs +++ b/app/assets/javascripts/discourse/templates/user/user.hbs @@ -5,30 +5,30 @@
-
+
- {{#if number_of_flags_given}} -
{{number_of_flags_given}} {{i18n 'user.staff_counters.flags_given'}}
+ {{#if model.number_of_flags_given}} +
{{model.number_of_flags_given}} {{i18n 'user.staff_counters.flags_given'}}
{{/if}} - {{#if number_of_flagged_posts}} + {{#if model.number_of_flagged_posts}}
- {{#link-to 'user.flaggedPosts' this}} - {{number_of_flagged_posts}} {{i18n 'user.staff_counters.flagged_posts'}} + {{#link-to 'user.flaggedPosts' model}} + {{model.number_of_flagged_posts}} {{i18n 'user.staff_counters.flagged_posts'}} {{/link-to}}
{{/if}} - {{#if number_of_deleted_posts}} + {{#if model.number_of_deleted_posts}}
- {{#link-to 'user.deletedPosts' this}} - {{number_of_deleted_posts}} {{i18n 'user.staff_counters.deleted_posts'}} + {{#link-to 'user.deletedPosts' model}} + {{model.number_of_deleted_posts}} {{i18n 'user.staff_counters.deleted_posts'}} {{/link-to}}
{{/if}} - {{#if number_of_suspensions}} -
{{number_of_suspensions}} {{i18n 'user.staff_counters.suspensions'}}
+ {{#if model.number_of_suspensions}} +
{{model.number_of_suspensions}} {{i18n 'user.staff_counters.suspensions'}}
{{/if}} - {{#if number_of_warnings}} -
{{number_of_warnings}} {{i18n 'user.staff_counters.warnings_received'}}
+ {{#if model.number_of_warnings}} +
{{model.number_of_warnings}} {{i18n 'user.staff_counters.warnings_received'}}
{{/if}}
@@ -37,7 +37,7 @@ {{bound-avatar model "huge"}}
-

{{username}} {{user-status model currentUser=currentUser}}

-

{{name}}

- {{#if title}} -

{{title}}

+

{{model.username}} {{user-status model currentUser=currentUser}}

+

{{model.name}}

+ {{#if model.title}} +

{{model.title}}

{{/if}}

- {{#if location}}{{fa-icon "map-marker"}}{{location}}{{/if}} + {{#if model.location}}{{fa-icon "map-marker"}}{{model.location}}{{/if}} {{#if websiteName}} {{fa-icon "globe"}} {{#if linkWebsite}} - {{#if removeNoFollow}} - {{websiteName}} - {{else}} - {{websiteName}} - {{/if}} + {{websiteName}} {{else}} - {{websiteName}} + {{websiteName}} {{/if}} {{/if}}

- {{#if isSuspended}} + {{#if model.isSuspended}}
{{fa-icon "ban"}} {{i18n 'user.suspended_notice' date=suspendedTillDate}}
{{i18n 'user.suspended_reason'}} {{suspend_reason}}
{{/if}} - {{{bio_cooked}}} + {{{model.bio_cooked}}}
{{#if publicUserFields}} @@ -115,33 +111,33 @@
- {{#if created_at}} -
{{i18n 'user.created'}}
{{bound-date created_at}}
+ {{#if model.created_at}} +
{{i18n 'user.created'}}
{{bound-date model.created_at}}
{{/if}} - {{#if last_posted_at}} -
{{i18n 'user.last_posted'}}
{{bound-date last_posted_at}}
+ {{#if model.last_posted_at}} +
{{i18n 'user.last_posted'}}
{{bound-date model.last_posted_at}}
{{/if}} - {{#if last_seen_at}} -
{{i18n 'user.last_seen'}}
{{bound-date last_seen_at}}
+ {{#if model.last_seen_at}} +
{{i18n 'user.last_seen'}}
{{bound-date model.last_seen_at}}
{{/if}} - {{#if invited_by}} -
{{i18n 'user.invited_by'}}
{{#link-to 'user' invited_by}}{{invited_by.username}}{{/link-to}}
+ {{#if model.invited_by}} +
{{i18n 'user.invited_by'}}
{{#link-to 'user' model.invited_by}}{{model.invited_by.username}}{{/link-to}}
{{/if}} -
{{i18n 'user.trust_level'}}
{{trustLevel.name}}
+
{{i18n 'user.trust_level'}}
{{model.trustLevel.name}}
{{#if canCheckEmails}}
{{i18n 'user.email.title'}}
-
- {{#if email}} - {{email}} +
+ {{#if model.email}} + {{model.email}} {{else}} {{d-button action="checkEmail" actionParam=model icon="envelope-o" label="admin.users.check_email.text" class="btn-primary"}} {{/if}}
{{/if}} - {{#if custom_groups}} -
{{i18n 'groups.title' count=custom_groups.length}}
+ {{#if model.custom_groups}} +
{{i18n 'groups.title' count=model.custom_groups.length}}
- {{#each group in custom_groups}} + {{#each group in model.custom_groups}} {{#link-to 'group' group class="group-link"}}{{group.name}}{{/link-to}} {{/each}}
@@ -156,8 +152,8 @@
diff --git a/app/assets/javascripts/discourse/views/user-topics-list.js.es6 b/app/assets/javascripts/discourse/views/user-topics-list.js.es6 index 8a97f78ff1c..3f21ea2459b 100644 --- a/app/assets/javascripts/discourse/views/user-topics-list.js.es6 +++ b/app/assets/javascripts/discourse/views/user-topics-list.js.es6 @@ -3,5 +3,4 @@ import LoadMore from "discourse/mixins/load-more"; export default Discourse.View.extend(LoadMore, { classNames: ['paginated-topics-list'], eyelineSelector: '.paginated-topics-list .topic-list tr', - templateName: 'list/user_topics_list' }); diff --git a/test/javascripts/controllers/site-map-category-test.js.es6 b/test/javascripts/controllers/site-map-category-test.js.es6 index 89777997881..77cdbf145ba 100644 --- a/test/javascripts/controllers/site-map-category-test.js.es6 +++ b/test/javascripts/controllers/site-map-category-test.js.es6 @@ -20,8 +20,7 @@ test("unreadTotal default", function() { test("unreadTotal with values", function() { var controller = this.subject({ currentUser: Discourse.User.create(), - unreadTopics: 1, - newTopics: 3 + model: { unreadTopics: 1, newTopics: 3 } }); equal(controller.get('unreadTotal'), 4); });