diff --git a/app/assets/javascripts/admin/controllers/admin_user_controller.js b/app/assets/javascripts/admin/controllers/admin_user_controller.js index aac997c15..c90516fc4 100644 --- a/app/assets/javascripts/admin/controllers/admin_user_controller.js +++ b/app/assets/javascripts/admin/controllers/admin_user_controller.js @@ -1,7 +1,18 @@ +/** + The top-level controller for user pages in admin. + Ember assertion says that this class needs to be defined even if it's empty. + + @class AdminUserController + @extends Discourse.ObjectController + @namespace Discourse + @module Discourse +**/ +Discourse.AdminUserController = Discourse.ObjectController.extend({}); + /** A controller related to viewing a user in the admin section - @class AdminUserController + @class AdminUserIndexController @extends Discourse.ObjectController @namespace Discourse @module Discourse @@ -53,3 +64,4 @@ Discourse.AdminUserIndexController = Discourse.ObjectController.extend({ } }); + diff --git a/app/assets/javascripts/admin/models/admin_user.js b/app/assets/javascripts/admin/models/admin_user.js index 911f4cc45..a55873a61 100644 --- a/app/assets/javascripts/admin/models/admin_user.js +++ b/app/assets/javascripts/admin/models/admin_user.js @@ -341,7 +341,13 @@ Discourse.AdminUser = Discourse.User.extend({ model.setProperties(result); model.set('loadedDetails', true); }); - } + }, + + leaderRequirements: function() { + if (this.get('leader_requirements')) { + return Discourse.LeaderRequirements.create(this.get('leader_requirements')); + } + }.property('leader_requirements') }); diff --git a/app/assets/javascripts/admin/models/leader_requirements.js b/app/assets/javascripts/admin/models/leader_requirements.js new file mode 100644 index 000000000..f4f3d402c --- /dev/null +++ b/app/assets/javascripts/admin/models/leader_requirements.js @@ -0,0 +1,21 @@ +Discourse.LeaderRequirements = Discourse.Model.extend({ + days_visited_percent: function() { + return ((this.get('days_visited') * 100) / this.get('time_period')); + }.property('days_visited', 'time_period'), + + min_days_visited_percent: function() { + return ((this.get('min_days_visited') * 100) / this.get('time_period')); + }.property('min_days_visited', 'time_period'), + + met: function() { + return { + days_visited: this.get('days_visited') >= this.get('min_days_visited'), + topics_with_replies: this.get('num_topics_with_replies') >= this.get('min_topics_with_replies'), + topics_replied_to: this.get('num_topics_replied_to') >= this.get('min_topics_replied_to'), + flagged_posts: this.get('num_flagged_posts') < this.get('max_flagged_posts') + }; + }.property('days_visited', 'min_days_visited', + 'num_topics_with_replies', 'min_topics_with_replies', + 'num_topics_replied_to', 'min_topics_replied_to', + 'num_flagged_posts', 'max_flagged_posts') +}); diff --git a/app/assets/javascripts/admin/templates/user.js.handlebars b/app/assets/javascripts/admin/templates/user.js.handlebars new file mode 100644 index 000000000..e2147cab0 --- /dev/null +++ b/app/assets/javascripts/admin/templates/user.js.handlebars @@ -0,0 +1 @@ +{{outlet}} \ No newline at end of file diff --git a/app/assets/javascripts/admin/templates/user_index.js.handlebars b/app/assets/javascripts/admin/templates/user_index.js.handlebars index eb26722b4..a764d4cf3 100644 --- a/app/assets/javascripts/admin/templates/user_index.js.handlebars +++ b/app/assets/javascripts/admin/templates/user_index.js.handlebars @@ -189,7 +189,7 @@ {{combobox content=trustLevels value=trust_level nameProperty="detailedName"}}
{{i18n admin.user.tl3_requirements.table_title}}
- {{#with leader_requirements}} + {{#with leaderRequirements}}+ | + | {{i18n admin.user.tl3_requirements.value_heading}} | +{{i18n admin.user.tl3_requirements.requirement_heading}} | +|
---|---|---|---|---|
{{i18n admin.user.tl3_requirements.visits}} | +- {{days_visited_percent}}% ({{days_visited}} / {{time_period}} {{i18n admin.user.tl3_requirements.days}}) + {{days_visited_percent}}% ({{days_visited}} / {{time_period}} {{i18n admin.user.tl3_requirements.days}}) | +{{min_days_visited_percent}}% | ||
{{i18n admin.user.tl3_requirements.topics_with_replies}} | -- {{num_topics_with_replies}} - | ++ | {{num_topics_with_replies}} | +{{min_topics_with_replies}} |
{{i18n admin.user.tl3_requirements.topics_replied_to}} | -- {{num_topics_replied_to}} - | ++ | {{num_topics_replied_to}} | +{{min_topics_replied_to}} |
{{i18n admin.user.tl3_requirements.quality_content}} | +TODO | +|||
{{i18n admin.user.tl3_requirements.reading}} | +TODO | +|||
{{i18n admin.user.tl3_requirements.site_promotion}} | +TODO | +|||
{{i18n admin.user.tl3_requirements.flagged_posts}} | -- {{num_flagged_posts}} - | ++ | {{num_flagged_posts}} | +{{max_flagged_posts}} {{i18n max}} |