<section class="details {{unless model.active 'not-activated'}}"> <div class='user-controls'> {{#if model.canViewProfile}} {{#link-to 'user' model class="btn"}} {{fa-icon "user"}} {{i18n 'admin.user.show_public_profile'}} {{/link-to}} {{/if}} {{#if model.active}} {{#if model.can_impersonate}} <button class='btn btn-danger' {{action "impersonate" target="content"}} title="{{i18n 'admin.impersonate.help'}}"> {{fa-icon "crosshairs"}} {{i18n 'admin.impersonate.title'}} </button> {{/if}} {{#if currentUser.admin}} <button class='btn' {{action "log_out" target="content"}}> {{fa-icon "power-off"}} {{i18n 'admin.user.log_out'}} </button> {{/if}} {{/if}} </div> <div class='display-row username'> <div class='field'>{{i18n 'user.username.title'}}</div> <div class='value'>{{model.username}}</div> <div class='controls'> {{#link-to 'preferences.username' model class="btn"}} {{fa-icon "pencil"}} {{i18n 'user.change_username.title'}} {{/link-to}} </div> </div> <div class='display-row'> <div class='field'>{{i18n 'user.name.title'}}</div> <div class='value'>{{model.name}}</div> </div> {{#if canCheckEmails}} <div class='display-row email'> <div class='field'>{{i18n 'user.email.title'}}</div> <div class='value'> {{#unless model.active}} <div class='controls'>{{i18n 'admin.users.not_verified'}}</div> {{/unless}} {{#if model.email}} <a href="mailto:{{unbound model.email}}">{{model.email}}</a> {{else}} <button class="btn" title="{{i18n 'admin.users.check_email.title'}}" {{action "checkEmail" this}}>{{fa-icon "envelope-o"}} {{i18n 'admin.users.check_email.text'}}</button> {{/if}} </div> </div> <div class="display-row bounce-score"> <div class='field'><a href="{{model.bounceLink}}">{{i18n 'admin.user.bounce_score'}}</a></div> <div class='value'>{{model.bounceScore}}</div> <div class='controls'> {{#if model.canResetBounceScore}} <button class='btn' {{action "resetBounceScore" target="content"}} title={{i18n "admin.user.reset_bounce_score.title"}}> {{i18n "admin.user.reset_bounce_score.label"}} </button> {{/if}} {{model.bounceScoreExplanation}} </div> </div> <div class='display-row associations'> <div class='field'>{{i18n 'user.associated_accounts'}}</div> <div class='value'> {{#if model.associated_accounts}} {{model.associated_accounts}} {{else}} <button class="btn" title="{{i18n 'admin.users.check_email.title'}}" {{action "checkEmail" this}}>{{fa-icon "envelope-o"}} {{i18n 'admin.users.check_email.text'}}</button> {{/if}} </div> </div> {{/if}} <div class='display-row'> <div class='field'>{{i18n 'user.avatar.title'}}</div> <div class='value'>{{avatar content imageSize="large"}}</div> </div> <div class='display-row'> <div class='field'>{{i18n 'user.title.title'}}</div> <div class='value'> {{#if editingTitle}} {{text-field value=userTitleValue autofocus="autofocus"}} {{else}} <span {{action "toggleTitleEdit"}}>{{model.title}} </span> {{/if}} </div> <div class='controls'> {{#if editingTitle}} {{d-button action="saveTitle" label="admin.user.save_title"}} <a href {{action "toggleTitleEdit"}}>{{i18n 'cancel'}}</a> {{else}} {{d-button action="toggleTitleEdit" icon="pencil" label="admin.user.edit_title"}} {{/if}} </div> </div> <div class='display-row'> <div class='field'>{{i18n 'user.ip_address.title'}}</div> <div class='value'>{{model.ip_address}}</div> <div class='controls'> {{#if currentUser.staff}} <button class='btn' {{action "refreshBrowsers" target="content"}}> {{i18n 'admin.user.refresh_browsers'}} </button> {{ip-lookup ip=model.ip_address userId=model.id}} {{/if}} </div> </div> <div class='display-row'> <div class='field'>{{i18n 'user.registration_ip_address.title'}}</div> <div class='value'>{{model.registration_ip_address}}</div> <div class='controls'> {{#if currentUser.staff}} {{ip-lookup ip=model.registration_ip_address userId=model.id}} {{/if}} </div> </div> {{#if showBadges}} <div class='display-row'> <div class='field'>{{i18n 'admin.badges.title'}}</div> <div class='value'> {{i18n 'badges.badge_count' count=model.badge_count}} </div> <div class='controls'> {{#link-to 'adminUser.badges' model class="btn"}}{{fa-icon "certificate"}}{{i18n 'admin.badges.edit_badges'}}{{/link-to}} </div> </div> {{/if}} </section> {{#if userFields}} <section class='details'> {{#each userFields as |uf|}} <div class='display-row'> <div class='field'>{{uf.name}}</div> <div class='value'> {{#if uf.value}} {{uf.value}} {{else}} — {{/if}} </div> </div> {{/each}} </section> {{/if}} <section class='details'> <h1>{{i18n 'admin.user.permissions'}}</h1> {{#if showApproval}} <div class='display-row'> <div class='field'>{{i18n 'admin.users.approved'}}</div> <div class='value'> {{#if model.approved}} {{i18n 'admin.user.approved_by'}} {{#link-to 'adminUser' approvedBy}}{{avatar model.approvedBy imageSize="small"}}{{/link-to}} {{#link-to 'adminUser' approvedBy}}{{model.approvedBy.username}}{{/link-to}} {{else}} {{i18n 'no_value'}} {{/if}} </div> <div class='controls'> {{#if model.approved}} {{i18n 'admin.user.approve_success'}} {{else}} {{#if model.can_approve}} <button class='btn' {{action "approve" target="content"}}> {{fa-icon "check"}} {{i18n 'admin.user.approve'}} </button> {{/if}} {{/if}} </div> </div> {{/if}} <div class='display-row'> <div class='field'>{{i18n 'admin.users.active'}}</div> <div class='value'> {{#if model.active}} {{i18n 'yes_value'}} {{else}} {{i18n 'no_value'}} {{/if}} </div> <div class='controls'> {{#if model.active}} {{#if model.can_deactivate}} <button class='btn' {{action "deactivate" target="content"}}>{{i18n 'admin.user.deactivate_account'}}</button> {{i18n 'admin.user.deactivate_explanation'}} {{/if}} {{else}} {{#if model.can_send_activation_email}} <button class='btn' {{action "sendActivationEmail" target="content"}}> {{fa-icon "envelope"}} {{i18n 'admin.user.send_activation_email'}} </button> {{/if}} {{#if model.can_activate}} <button class='btn' {{action "activate" target="content"}}> {{fa-icon "check"}} {{i18n 'admin.user.activate'}} </button> {{/if}} {{/if}} </div> </div> {{#if currentUser.admin}} <div class='display-row'> <div class='field'>{{i18n 'admin.api.key'}}</div> {{#if model.api_key}} <div class='long-value'> {{model.api_key.key}} {{d-button action="regenerateApiKey" icon="undo" label="admin.api.regenerate"}} {{d-button action="revokeApiKey" icon="times" label="admin.api.revoke"}} </div> {{else}} <div class='value'> — </div> <div class='controls'> {{d-button action="generateApiKey" icon="key" label="admin.api.generate"}} </div> {{/if}} </div> {{/if}} <div class='display-row'> <div class='field'>{{i18n 'admin.user.admin'}}</div> <div class='value'>{{model.admin}}</div> <div class='controls'> {{#if model.can_revoke_admin}} <button class='btn' {{action "revokeAdmin" target="content"}}> {{fa-icon "shield"}} {{i18n 'admin.user.revoke_admin'}} </button> {{/if}} {{#if model.can_grant_admin}} <button class='btn' {{action "grantAdmin" target="content"}}> {{fa-icon "shield"}} {{i18n 'admin.user.grant_admin'}} </button> {{/if}} </div> </div> <div class='display-row'> <div class='field'>{{i18n 'admin.user.moderator'}}</div> <div class='value'>{{model.moderator}}</div> <div class='controls'> {{#if model.can_revoke_moderation}} <button class='btn' {{action "revokeModeration" target="content"}}> {{fa-icon "shield"}} {{i18n 'admin.user.revoke_moderation'}} </button> {{/if}} {{#if model.can_grant_moderation}} <button class='btn' {{action "grantModeration" target="content"}}> {{fa-icon "shield"}} {{i18n 'admin.user.grant_moderation'}} </button> {{/if}} </div> </div> <div class='display-row'> <div class='field'>{{i18n 'trust_level'}}</div> <div class="value"> {{combo-box content=site.trustLevels value=model.trust_level nameProperty="detailedName"}} {{#if model.dirty}} <div> <button class='btn ok no-text' {{action "saveTrustLevel" target="content"}}>{{fa-icon "check"}}</button> <button class='btn cancel no-text' {{action "restoreTrustLevel" target="content"}}>{{fa-icon "times"}}</button> </div> {{/if}} </div> <div class="controls"> {{#if model.canLockTrustLevel}} {{#if model.trust_level_locked}} <i title='{{i18n 'admin.user.trust_level_locked_tip'}}' {{action "lockTrustLevel" false target="model"}} class='fa fa-lock'></i> <button class="btn" {{action "lockTrustLevel" false target="model"}}>{{i18n 'admin.user.unlock_trust_level'}}</button> {{else}} <i title='{{i18n 'admin.user.trust_level_unlocked_tip'}}' class='fa fa-unlock'></i> <button class="btn" {{action "lockTrustLevel" true target="model"}}>{{i18n 'admin.user.lock_trust_level'}}</button> {{/if}} {{/if}} {{#if model.tl3Requirements}} {{#link-to 'adminUser.tl3Requirements' model class="btn"}}{{i18n 'admin.user.trust_level_3_requirements'}}{{/link-to}} {{/if}} </div> </div> <div class="display-row {{if model.isSuspended 'highlight-danger'}}"> <div class='field'>{{i18n 'admin.user.suspended'}}</div> <div class='value'>{{model.isSuspended}}</div> <div class='controls'> {{#if model.isSuspended}} <button class='btn btn-danger' {{action "unsuspend" target="content"}}> {{fa-icon "ban"}} {{i18n 'admin.user.unsuspend'}} </button> {{suspendDuration}} {{i18n 'admin.user.suspended_explanation'}} {{else}} {{#if model.canSuspend}} <button class='btn btn-danger' {{action "showSuspendModal" this}}> {{fa-icon "ban"}} {{i18n 'admin.user.suspend'}} </button> {{i18n 'admin.user.suspended_explanation'}} {{/if}} {{/if}} </div> </div> {{#if model.isSuspended}} <div class='display-row highlight-danger'> <div class='field'>{{i18n 'admin.user.suspended_by'}}</div> <div class='value'> {{#link-to 'adminUser' suspendedBy}}{{avatar model.suspendedBy imageSize="tiny"}}{{/link-to}} {{#link-to 'adminUser' suspendedBy}}{{model.suspendedBy.username}}{{/link-to}} </div> <div class='controls'> <b>{{i18n 'admin.user.suspend_reason'}}</b>: {{model.suspend_reason}} </div> </div> {{/if}} <div class="display-row {{if model.blocked 'highlight-danger'}}"> <div class='field'>{{i18n 'admin.user.blocked'}}</div> <div class='value'>{{model.blocked}}</div> <div class='controls'> {{#conditional-loading-spinner size="small" condition=model.blockingUser}} {{#if model.blocked}} <button class='btn' {{action "unblock" target="content"}}> {{fa-icon "thumbs-o-up"}} {{i18n 'admin.user.unblock'}} </button> {{i18n 'admin.user.block_explanation'}} {{else}} <button class='btn' {{action "block" target="content"}}> {{fa-icon "ban"}} {{i18n 'admin.user.block'}} </button> {{i18n 'admin.user.block_explanation'}} {{/if}} {{/conditional-loading-spinner}} </div> </div> <div class="display-row"> <div class='field'>{{i18n 'admin.user.staged'}}</div> <div class='value'>{{model.staged}}</div> <div class='controls'>{{i18n 'admin.user.staged_explanation'}}</div> </div> </section> <section class='details'> <h1>{{i18n 'admin.groups.title'}}</h1> {{#if currentUser.admin}} <div class='display-row'> <div class='field'>{{i18n 'admin.groups.automatic'}}</div> <div class='value'>{{automaticGroups}}</div> </div> <div class='display-row'> <div class='field'>{{i18n 'admin.groups.custom'}}</div> <div class='value'> {{admin-group-selector selected=model.customGroups available=availableGroups}} </div> <div class='controls'> {{#if model.customGroups}} {{i18n 'admin.groups.primary'}} {{combo-box content=model.customGroups value=model.primary_group_id nameProperty="name" none="admin.groups.no_primary"}} {{/if}} {{#if primaryGroupDirty}} {{d-button icon="check" class="ok" action="savePrimaryGroup"}} {{d-button icon="times" class="cancel" action="resetPrimaryGroup"}} {{/if}} </div> </div> {{/if}} </section> <section class='details'> <h1>{{i18n 'admin.user.activity'}}</h1> <div class='display-row'> <div class='field'>{{i18n 'created'}}</div> <div class='value'>{{format-date model.created_at leaveAgo="true"}}</div> </div> <div class='display-row'> <div class='field'>{{i18n 'admin.users.last_emailed'}}</div> <div class='value'>{{format-date model.last_emailed_at leaveAgo="true"}}</div> </div> <div class='display-row'> <div class='field'>{{i18n 'last_seen'}}</div> <div class='value'>{{format-date model.last_seen_at leaveAgo="true"}}</div> </div> <div class='display-row'> <div class='field'>{{i18n 'admin.user.like_count'}}</div> <div class='value'>{{model.like_given_count}} / {{model.like_count}}</div> </div> <div class='display-row'> <div class='field'>{{i18n 'admin.user.topics_entered'}}</div> <div class='value'>{{model.topics_entered}}</div> </div> <div class='display-row'> <div class='field'>{{i18n 'admin.user.post_count'}}</div> <div class='value'>{{model.post_count}}</div> <div class='controls'> {{#if model.can_delete_all_posts}} {{#if model.post_count}} <button class='btn btn-danger' {{action "deleteAllPosts" target="content"}}> {{fa-icon "trash-o"}} {{i18n 'admin.user.delete_all_posts'}} </button> {{/if}} {{else}} {{model.deleteAllPostsExplanation}} {{/if}} </div> </div> <div class='display-row'> <div class='field'>{{i18n 'admin.user.posts_read_count'}}</div> <div class='value'>{{model.posts_read_count}}</div> </div> <div class='display-row'> <div class='field'>{{i18n 'admin.user.warnings_received_count'}}</div> <div class='value'>{{model.warnings_received_count}}</div> </div> <div class='display-row'> <div class='field'>{{i18n 'admin.user.flags_given_received_count'}}</div> <div class='value'>{{model.flags_given_count}} / {{model.flags_received_count}}</div> </div> <div class='display-row'> <div class='field'>{{i18n 'admin.user.private_topics_count'}}</div> <div class='value'>{{model.private_topics_count}}</div> </div> <div class='display-row'> <div class='field'>{{i18n 'admin.user.time_read'}}</div> <div class='value'>{{{model.time_read}}}</div> </div> <div class='display-row'> <div class='field'>{{i18n 'user.invited.days_visited'}}</div> <div class='value'>{{{model.days_visited}}}</div> </div> </section> {{#if model.single_sign_on_record}} <section class='details'> <h1>{{i18n 'admin.user.sso.title'}}</h1> {{#with model.single_sign_on_record as |sso|}} <div class='display-row'> <div class='field'>{{i18n 'admin.user.sso.external_id'}}</div> <div class='value'>{{sso.external_id}}</div> </div> <div class='display-row'> <div class='field'>{{i18n 'admin.user.sso.external_username'}}</div> <div class='value'>{{sso.external_username}}</div> </div> <div class='display-row'> <div class='field'>{{i18n 'admin.user.sso.external_name'}}</div> <div class='value'>{{sso.external_name}}</div> </div> <div class='display-row'> <div class='field'>{{i18n 'admin.user.sso.external_email'}}</div> <div class='value'>{{sso.external_email}}</div> </div> <div class='display-row'> <div class='field'>{{i18n 'admin.user.sso.external_avatar_url'}}</div> <div class='value'>{{sso.external_avatar_url}}</div> </div> {{/with}} </section> {{/if}} <section> <hr/> <div class="pull-right"> {{#unless model.anonymizeForbidden}} {{d-button label="admin.user.anonymize" icon="exclamation-triangle" class="btn-danger" disabled=model.anonymizeForbidden action="anonymize"}} {{/unless}} {{#unless model.deleteForbidden}} {{d-button label="admin.user.delete" icon="exclamation-triangle" class="btn-danger" disabled=model.deleteForbidden action="destroy"}} {{/unless}} </div> {{#if model.deleteExplanation}} <div class="clearfix"></div> <br/> <div class="pull-right"> {{fa-icon "exclamation-triangle"}} {{model.deleteExplanation}} </div> {{/if}} </section> <div class="clearfix"></div>