From bec6bace53cc1f27cbbeb2e11dfa30e47fa72439 Mon Sep 17 00:00:00 2001 From: Mark VanLandingham Date: Thu, 14 May 2020 11:57:35 -0500 Subject: [PATCH] DEV: Allow plugins to hide user stats by new guardian method (#9772) --- .../discourse/app/templates/user/summary.hbs | 88 ++++++++++--------- app/models/user_summary.rb | 4 + app/serializers/user_summary_serializer.rb | 43 ++++++++- lib/guardian/user_guardian.rb | 4 + 4 files changed, 95 insertions(+), 44 deletions(-) diff --git a/app/assets/javascripts/discourse/app/templates/user/summary.hbs b/app/assets/javascripts/discourse/app/templates/user/summary.hbs index ddd89595c5..de025dbf16 100644 --- a/app/assets/javascripts/discourse/app/templates/user/summary.hbs +++ b/app/assets/javascripts/discourse/app/templates/user/summary.hbs @@ -1,53 +1,55 @@ {{#d-section pageClass="user-summary" tagName=""}}
-
-

{{i18n "user.summary.stats"}}

-
    -
  • - {{user-stat value=model.days_visited label="user.summary.days_visited"}} -
  • -
  • - {{user-stat value=timeRead label="user.summary.time_read" type="string"}} -
  • - {{#if showRecentTimeRead}} + {{#if model.can_see_summary_stats}} +
    +

    {{i18n "user.summary.stats"}}

    +
    • - {{user-stat value=recentTimeRead label="user.summary.recent_time_read" type="string"}} + {{user-stat value=model.days_visited label="user.summary.days_visited"}} +
    • +
    • + {{user-stat value=timeRead label="user.summary.time_read" type="string"}} +
    • + {{#if showRecentTimeRead}} +
    • + {{user-stat value=recentTimeRead label="user.summary.recent_time_read" type="string"}} +
    • + {{/if}} +
    • + {{user-stat value=model.topics_entered label="user.summary.topics_entered"}} +
    • +
    • + {{user-stat value=model.posts_read_count label="user.summary.posts_read"}}
    • - {{/if}} -
    • - {{user-stat value=model.topics_entered label="user.summary.topics_entered"}} -
    • -
    • - {{user-stat value=model.posts_read_count label="user.summary.posts_read"}} -
    • -
    • - {{#link-to "userActivity.likesGiven"}} - {{user-stat value=model.likes_given icon="heart" label="user.summary.likes_given"}} - {{/link-to}} -
    • - {{#if model.bookmark_count}}
    • - {{#link-to "userActivity.bookmarks"}} - {{user-stat value=model.bookmark_count label="user.summary.bookmark_count"}} + {{#link-to "userActivity.likesGiven"}} + {{user-stat value=model.likes_given icon="heart" label="user.summary.likes_given"}} {{/link-to}}
    • - {{/if}} -
    • - {{#link-to "userActivity.topics"}} - {{user-stat value=model.topic_count label="user.summary.topic_count"}} - {{/link-to}} -
    • -
    • - {{#link-to "userActivity.replies"}} - {{user-stat value=model.post_count label="user.summary.post_count"}} - {{/link-to}} -
    • -
    • - {{user-stat value=model.likes_received icon="heart" label="user.summary.likes_received"}} -
    • - {{plugin-outlet name="user-summary-stat" tagName="" connectorTagName="li" args=(hash model=model)}} -
    -
    + {{#if model.bookmark_count}} +
  • + {{#link-to "userActivity.bookmarks"}} + {{user-stat value=model.bookmark_count label="user.summary.bookmark_count"}} + {{/link-to}} +
  • + {{/if}} +
  • + {{#link-to "userActivity.topics"}} + {{user-stat value=model.topic_count label="user.summary.topic_count"}} + {{/link-to}} +
  • +
  • + {{#link-to "userActivity.replies"}} + {{user-stat value=model.post_count label="user.summary.post_count"}} + {{/link-to}} +
  • +
  • + {{user-stat value=model.likes_received icon="heart" label="user.summary.likes_received"}} +
  • + {{plugin-outlet name="user-summary-stat" tagName="" connectorTagName="li" args=(hash model=model)}} +
+
+ {{/if}}
{{#user-summary-section title="top_replies" class="replies-section pull-left"}} diff --git a/app/models/user_summary.rb b/app/models/user_summary.rb index 435702d67b..09c025bc91 100644 --- a/app/models/user_summary.rb +++ b/app/models/user_summary.rb @@ -112,6 +112,10 @@ class UserSummary @user.id end + def user + @user + end + def user_stat @user.user_stat end diff --git a/app/serializers/user_summary_serializer.rb b/app/serializers/user_summary_serializer.rb index d05ef817c7..3a7c9d8fb3 100644 --- a/app/serializers/user_summary_serializer.rb +++ b/app/serializers/user_summary_serializer.rb @@ -56,7 +56,12 @@ class UserSummarySerializer < ApplicationSerializer :post_count, :time_read, :recent_time_read, - :bookmark_count + :bookmark_count, + :can_see_summary_stats + + def can_see_summary_stats + scope.can_see_summary_stats?(object.user) + end def include_badges? SiteSetting.enable_badges @@ -73,4 +78,40 @@ class UserSummarySerializer < ApplicationSerializer def recent_time_read object.recent_time_read end + + def include_likes_given? + can_see_summary_stats + end + + def include_likes_received? + can_see_summary_stats + end + + def include_topics_entered? + can_see_summary_stats + end + + def include_posts_read_count? + can_see_summary_stats + end + + def include_days_visited? + can_see_summary_stats + end + + def include_topic_count? + can_see_summary_stats + end + + def include_post_count? + can_see_summary_stats + end + + def include_time_read? + can_see_summary_stats + end + + def include_recent_time_read? + can_see_summary_stats + end end diff --git a/lib/guardian/user_guardian.rb b/lib/guardian/user_guardian.rb index 4ee12fe6ea..517c924b4a 100644 --- a/lib/guardian/user_guardian.rb +++ b/lib/guardian/user_guardian.rb @@ -154,4 +154,8 @@ module UserGuardian .exists? ) end + + def can_see_summary_stats?(target_user) + true + end end