discourse/app/assets/javascripts/admin/templates/user-tl3-requirements.hbs
Kane York 869f9b20a2
PERF: Dematerialize topic_reply_count (#9769)
* PERF: Dematerialize topic_reply_count

It's only ever used for trust level promotions that run daily, or compared to 0. We don't need to track it on every post creation.

* UX: Add symbol in TL3 report if topic reply count is capped

* DEV: Drop user_stats.topic_reply_count column
2020-05-14 15:42:00 -07:00

161 lines
6.7 KiB
Handlebars

<div class="admin-controls">
<nav>
<ul class="nav nav-pills">
<li>{{#link-to "adminUser" model}}{{d-icon "caret-left"}} &nbsp;{{model.username}}{{/link-to}}</li>
<li>{{#link-to "adminUsersList.show" "member"}}{{i18n "admin.user.trust_level_2_users"}}{{/link-to}}</li>
</ul>
</nav>
</div>
<div class="admin-container tl3-requirements">
<h2>{{model.username}} - {{i18n "admin.user.tl3_requirements.title"}}</h2>
<br>
<p>{{i18n "admin.user.tl3_requirements.table_title" count=model.tl3Requirements.time_period}}</p>
<table class="table" style="width: auto;">
<thead>
<tr>
<th></th>
<th></th>
<th>{{i18n "admin.user.tl3_requirements.value_heading"}}</th>
<th>{{i18n "admin.user.tl3_requirements.requirement_heading"}}</th>
</tr>
</thead>
<tbody>
<tr>
<th>{{i18n "admin.user.tl3_requirements.visits"}}</th>
<td>{{check-icon model.tl3Requirements.met.days_visited}}</td>
<td>
{{model.tl3Requirements.days_visited_percent}}% ({{model.tl3Requirements.days_visited}} / {{model.tl3Requirements.time_period}} {{i18n "admin.user.tl3_requirements.days"}})
</td>
<td>{{model.tl3Requirements.min_days_visited_percent}}%</td>
</tr>
<tr>
<th>{{i18n "admin.user.tl3_requirements.topics_replied_to"}}</th>
<td>{{check-icon model.tl3Requirements.met.topics_replied_to}}</td>
<td>{{#if model.tl3Requirements.capped_topics_replied_to}}&ge; {{/if}}{{model.tl3Requirements.num_topics_replied_to}}</td>
<td>{{model.tl3Requirements.min_topics_replied_to}}</td>
</tr>
<tr>
<th>{{i18n "admin.user.tl3_requirements.topics_viewed"}}</th>
<td>{{check-icon model.tl3Requirements.met.topics_viewed}}</td>
<td>{{model.tl3Requirements.topics_viewed}}</td>
<td>{{model.tl3Requirements.min_topics_viewed}}</td>
</tr>
<tr>
<th>{{i18n "admin.user.tl3_requirements.topics_viewed_all_time"}}</th>
<td>{{check-icon model.tl3Requirements.met.topics_viewed_all_time}}</td>
<td>{{model.tl3Requirements.topics_viewed_all_time}}</td>
<td>{{model.tl3Requirements.min_topics_viewed_all_time}}</td>
</tr>
<tr>
<th>{{i18n "admin.user.tl3_requirements.posts_read"}}</th>
<td>{{check-icon model.tl3Requirements.met.posts_read}}</td>
<td>{{model.tl3Requirements.posts_read}}</td>
<td>{{model.tl3Requirements.min_posts_read}}</td>
</tr>
<tr>
<th>{{i18n "admin.user.tl3_requirements.posts_read_all_time"}}</th>
<td>{{check-icon model.tl3Requirements.met.posts_read_all_time}}</td>
<td>{{model.tl3Requirements.posts_read_all_time}}</td>
<td>{{model.tl3Requirements.min_posts_read_all_time}}</td>
</tr>
<tr>
<th>{{i18n "admin.user.tl3_requirements.flagged_posts"}}</th>
<td>{{check-icon model.tl3Requirements.met.flagged_posts}}</td>
<td>{{model.tl3Requirements.num_flagged_posts}}</td>
<td>{{i18n "max_of_count" count=model.tl3Requirements.max_flagged_posts}}</td>
</tr>
<tr>
<th>{{i18n "admin.user.tl3_requirements.flagged_by_users"}}</th>
<td>{{check-icon model.tl3Requirements.met.flagged_by_users}}</td>
<td>{{model.tl3Requirements.num_flagged_by_users}}</td>
<td>{{i18n "max_of_count" count=model.tl3Requirements.max_flagged_by_users}}</td>
</tr>
<tr>
<th>{{i18n "admin.user.tl3_requirements.likes_given"}}</th>
<td>{{check-icon model.tl3Requirements.met.likes_given}}</td>
<td>{{model.tl3Requirements.num_likes_given}}</td>
<td>{{model.tl3Requirements.min_likes_given}}</td>
</tr>
<tr>
<th>{{i18n "admin.user.tl3_requirements.likes_received"}}</th>
<td>{{check-icon model.tl3Requirements.met.likes_received}}</td>
<td>{{model.tl3Requirements.num_likes_received}}</td>
<td>{{model.tl3Requirements.min_likes_received}}</td>
</tr>
<tr>
<th>{{i18n "admin.user.tl3_requirements.likes_received_days"}}</th>
<td>{{check-icon model.tl3Requirements.met.likes_received_days}}</td>
<td>{{model.tl3Requirements.num_likes_received_days}}</td>
<td>{{model.tl3Requirements.min_likes_received_days}}</td>
</tr>
<tr>
<th>{{i18n "admin.user.tl3_requirements.likes_received_users"}}</th>
<td>{{check-icon model.tl3Requirements.met.likes_received_users}}</td>
<td>{{model.tl3Requirements.num_likes_received_users}}</td>
<td>{{model.tl3Requirements.min_likes_received_users}}</td>
</tr>
<tr>
<th>{{i18n "admin.user.tl3_requirements.silenced"}}</th>
<td>{{check-icon model.tl3Requirements.met.silenced}}</td>
<td>{{model.tl3Requirements.penalty_counts.silenced}}</td>
<td>0</td>
</tr>
<tr>
<th>{{i18n "admin.user.tl3_requirements.suspended"}}</th>
<td>{{check-icon model.tl3Requirements.met.suspended}}</td>
<td>{{model.tl3Requirements.penalty_counts.suspended}}</td>
<td>0</td>
</tr>
</tbody>
</table>
<br>
<p>
{{#if model.istl3}}
{{#if model.tl3Requirements.requirements_lost}}
{{! tl implicitly not locked }}
{{#if model.tl3Requirements.on_grace_period}}
{{d-icon "times"}}
{{i18n "admin.user.tl3_requirements.on_grace_period"}}
{{else}}
{{! not on grace period }}
{{d-icon "times"}}
{{i18n "admin.user.tl3_requirements.does_not_qualify"}}
{{i18n "admin.user.tl3_requirements.will_be_demoted"}}
{{/if}}
{{else}}
{{! requirements not lost - remains tl3 }}
{{#if model.tl3Requirements.trust_level_locked}}
{{d-icon "lock"}}
{{i18n "admin.user.tl3_requirements.locked_will_not_be_demoted"}}
{{else}}
{{! tl not locked }}
{{d-icon "check"}}
{{i18n "admin.user.tl3_requirements.qualifies"}}
{{#if model.tl3Requirements.on_grace_period}}
{{i18n "admin.user.tl3_requirements.on_grace_period"}}
{{/if}}
{{/if}}
{{/if}}
{{else}}
{{! is not tl3 }}
{{#if model.tl3Requirements.requirements_met}}
{{! met & not tl3 - will be promoted}}
{{d-icon "check"}}
{{i18n "admin.user.tl3_requirements.qualifies"}}
{{i18n "admin.user.tl3_requirements.will_be_promoted"}}
{{else}}
{{! requirements not met - remains regular }}
{{#if model.tl3Requirements.trust_level_locked}}
{{d-icon "lock"}}
{{i18n "admin.user.tl3_requirements.locked_will_not_be_promoted"}}
{{else}}
{{d-icon "times"}}
{{/if}}
{{/if}}
{{/if}}
</p>
</div>