Files
meanTorrent/modules/users/client/views/admin/view-user.client.view.html
2017-09-14 16:11:11 +08:00

257 lines
14 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<section class="container">
<div class="page-header">
<div class="row">
<div class="col-md-5 col-md-offset-1">
<h3 ng-bind="vm.user.username"></h3>
</div>
<div class="col-md-5">
<a class="btn btn-primary pull-right margin-left-10" ng-if="vm.authentication.user.isAdmin"
ui-sref="admin.user-edit({userId: vm.user._id})">
<i class="glyphicon glyphicon-edit"></i>
</a>
<a class="btn btn-primary pull-right margin-left-10" ng-click="vm.messageTo()" ng-if="!vm.isContextUserSelf()">
<i class="glyphicon glyphicon-envelope"></i>
</a>
<a class="btn btn-primary pull-right" ng-click="vm.remove()" ng-if="!vm.isContextUserSelf() && !vm.user.isOper">
<i class="glyphicon glyphicon-trash"></i>
</a>
</div>
</div>
</div>
<div class="row margin-bottom-30">
<div class="col-md-10 col-md-offset-1 admin-user-info">
<dl class="dl-horizontal">
<dt class="h-line">{{ 'STATUS_FIELD.PICTURE' | translate}}</dt>
<dd class="h-line">
<img class="status-avatar" ng-src="/{{vm.user.profileImageURL}}">
</dd>
<dt class="h-line">{{ 'STATUS_FIELD.USERNAME' | translate}}</dt>
<dd class="h-line">{{ vm.user.username }}</dd>
<!--<dt class="h-line">{{ 'STATUS_FIELD.FIRST_NAME' | translate}}</dt>-->
<!--<dd class="h-line">{{ vm.user.firstName }}</dd>-->
<!--<dt class="h-line">{{ 'STATUS_FIELD.LAST_NAME' | translate}}</dt>-->
<!--<dd class="h-line">{{ vm.user.lastName }}</dd>-->
<dt class="h-line">{{ 'STATUS_FIELD.DISPLAY_NAME' | translate}}</dt>
<dd class="h-line">
{{ vm.user.displayName }}
<span vip-flag="vm.user"></span>
</dd>
<div ng-if="vm.user.invited_by">
<dt class="h-line">{{ 'STATUS_FIELD.INVITED_BY' | translate}}</dt>
<dd class="h-line">
<span user-info="vm.user.invited_by" info-name></span>
<span message-to="vm.user.invited_by" to-class="message-to-icon"></span>
</dd>
</div>
<dt class="h-line">{{ 'STATUS_FIELD.EMAIL' | translate}}</dt>
<dd class="h-line">{{ vm.user.email }}</dd>
<dt class="h-line">{{ 'STATUS_FIELD.PASSKEY' | translate}}</dt>
<dd class="h-line">
<mark>{{ vm.user.passkey }}</mark>
</dd>
<dt class="h-line">{{ 'STATUS_FIELD.ROLE' | translate}}</dt>
<dd class="h-line">
<mark>{{ vm.user.roles[0] }}</mark>
<div class="pull-right" ng-if="vm.authentication.user.username != vm.user.username && vm.authentication.user.isAdmin">
<select ng-model="vm.selectedRole" ng-change="vm.onUserRoleChanged();">
<option ng-repeat="r in vm.userRolesConfig" value="{{r}}">{{ r }}
</option>
</select>
</div>
</dd>
<dt class="h-line">{{ 'STATUS_FIELD.STATUS' | translate}}</dt>
<dd class="h-line">
<span ng-class="{'span-banned': vm.user.status == 'banned'}">{{ 'STATUS_FIELD.' + vm.user.status.toUpperCase() | translate }}</span>
<div class="pull-right"
ng-if="vm.authentication.user.username != vm.user.username && vm.authentication.user.isOper && !vm.user.isAdmin">
<button class="btn btn-default btn-xs" style="width: 64px;" ng-click="vm.setUserStatus();">
{{ vm.user.status == 'banned' ? ('STATUS_FIELD.UNBANNED' | translate) : ('STATUS_FIELD.BANNED' | translate)}}
</button>
</div>
</dd>
<li class="status-divider"></li>
<div ng-show="vm.user.isVip">
<dt class="h-line">{{ 'STATUS_FIELD.VIP_START_AT' | translate}}</dt>
<dd class="h-line">{{ vm.user.vip_start_at | date: 'yyyy-MM-dd HH:mm:ss' }}</dd>
<dt class="h-line">{{ 'STATUS_FIELD.VIP_END_AT' | translate}}</dt>
<dd class="h-line">{{ vm.user.vip_end_at | date: 'yyyy-MM-dd HH:mm:ss' }}</dd>
<li class="status-divider"></li>
</div>
<dt class="h-line">{{ 'STATUS_FIELD.SIGNUP_DATE' | translate}}</dt>
<dd class="h-line">{{ vm.user.created | date: 'yyyy-MM-dd HH:mm:ss' }}</dd>
<dt class="h-line">{{ 'STATUS_FIELD.LATEST_SIGNED_TIME' | translate}}</dt>
<dd class="h-line">{{ vm.user.last_signed | date: 'yyyy-MM-dd HH:mm:ss' }}</dd>
<dt class="h-line">{{ 'STATUS_FIELD.SIGNED_IP' | translate}}</dt>
<dd class="h-line">
<div class="list-all-ips">
<span class="ip-item" ng-repeat="t in vm.user.signed_ip">{{t}}</span>
</div>
</dd>
<div ng-if="vm.announce.privateTorrentCmsMode">
<dt class="h-line">{{ 'STATUS_FIELD.LEECHED_IP' | translate}}</dt>
<dd class="h-line">
<div class="list-all-ips">
<span class="ip-item" ng-repeat="t in vm.user.leeched_ip">{{t}}</span>
</div>
</dd>
<dt class="h-line">{{ 'STATUS_FIELD.BT_CLIENT' | translate}}</dt>
<dd class="h-line">
<div class="list-all-clients">
<span class="client-item" ng-repeat="t in vm.user.client_agent">{{t}}</span>
</div>
</dd>
</div>
<li class="status-divider"></li>
<div ng-if="vm.announce.privateTorrentCmsMode">
<dt class="h-line">{{ 'STATUS_FIELD.UPLOADED' | translate}}</dt>
<dd class="h-line">
<span class="glyphicon glyphicon-arrow-up torrent-up"></span>
<span>{{ vm.user.uploaded | bytes:2 }}</span>
<div class="pull-right" ng-if="vm.authentication.user.isAdmin">
<button class="btn btn-default btn-xs" style="width: 64px;"
uib-popover-template="vm.setUserUploadedPopover.templateUrl"
popover-title="{{vm.setUserUploadedPopover.title | translate}}"
popover-trigger="'outsideClick'"
popover-placement="top-right"
popover-is-open="vm.setUserUploadedPopover.isOpen"
popover-class="set-uploaded-popover"
ng-click="vm.setUserUploadedPopover.number = undefined;">
+/-
</button>
</div>
</dd>
<dt class="h-line">{{ 'STATUS_FIELD.DOWNLOADED' | translate}}</dt>
<dd class="h-line">
<span class="glyphicon glyphicon-arrow-down torrent-down"></span>
<span>{{ vm.user.downloaded | bytes:2 }}</span>
<div class="pull-right" ng-if="vm.authentication.user.isAdmin">
<button class="btn btn-default btn-xs" style="width: 64px;"
uib-popover-template="vm.setUserDownloadedPopover.templateUrl"
popover-title="{{vm.setUserDownloadedPopover.title | translate}}"
popover-trigger="'outsideClick'"
popover-placement="top-right"
popover-is-open="vm.setUserDownloadedPopover.isOpen"
popover-class="set-downloaded-popover"
ng-click="vm.setUserDownloadedPopover.number = undefined;">
+/-
</button>
</div>
</dd>
<dt class="h-line">{{ 'STATUS_FIELD.RATIO' | translate}}</dt>
<dd class="h-line"><span ng-class="vm.user.ratio == 0 ? 'ratio-warning' : 'ratio-normal' ">{{ vm.user.ratio | ratio}}</span></dd>
</div>
<dt class="h-line">{{ 'STATUS_FIELD.SCORE' | translate}}</dt>
<dd class="h-line">
<span>{{ vm.user.score }}</span> <span score-level="vm.scoreLevelData.currLevel"></span>
<div class="pull-right" ng-if="vm.authentication.user.isAdmin">
<button class="btn btn-default btn-xs" style="width: 64px;"
uib-popover-template="vm.setUserScorePopover.templateUrl"
popover-title="{{vm.setUserScorePopover.title | translate}}"
popover-trigger="'outsideClick'"
popover-placement="top-right"
popover-is-open="vm.setUserScorePopover.isOpen"
popover-class="set-score-popover"
ng-click="vm.setUserScorePopover.number = undefined;">
+/-
</button>
</div>
</dd>
<li class="status-divider"></li>
<div ng-if="vm.announce.privateTorrentCmsMode">
<dt class="h-line">{{ 'STATUS_FIELD.UPTOTAL' | translate}}</dt>
<dd class="h-line">{{ vm.user.uptotal }} <a ui-sref="admin.user-uplist({userId: vm.user._id})"
ng-if="vm.user.uptotal>0">{{ 'STATUS_FIELD.DETAIL' | translate }}</a></dd>
<dt class="h-line">{{ 'STATUS_FIELD.SEEDED' | translate}}</dt>
<dd class="h-line">{{ vm.user.seeded }} <a ui-sref="admin.user-seeding({userId: vm.user._id})"
ng-if="vm.user.seeded>0">{{ 'STATUS_FIELD.DETAIL' | translate }}</a></dd>
<dt class="h-line">{{ 'STATUS_FIELD.LEECHED' | translate}}</dt>
<dd class="h-line">{{ vm.user.leeched }} <a ui-sref="admin.user-leeching({userId: vm.user._id})"
ng-if="vm.user.leeched>0">{{ 'STATUS_FIELD.DETAIL' | translate }}</a></dd>
<dt class="h-line">{{ 'STATUS_FIELD.FINISHED' | translate}}</dt>
<dd class="h-line">{{ vm.user.finished }}</dd>
<div ng-if="vm.user.hnr_warning>0">
<dt class="h-line">{{ 'STATUS_FIELD.HNR_WARNING' | translate}}</dt>
<dd class="h-line">
<span class="badge badge_danger">{{vm.user.hnr_warning}}</span>
<a ui-sref="admin.user-warning({userId: vm.user._id})"
ng-if="vm.user.hnr_warning>0">{{ 'STATUS_FIELD.DETAIL' | translate }}</a>
</dd>
</div>
<li class="status-divider"></li>
</div>
<dt class="h-line">{{ 'STATUS_FIELD.FORUM_TOPICS' | translate}}</dt>
<dd class="h-line">{{ vm.user.topics }}</dd>
<dt class="h-line">{{ 'STATUS_FIELD.FORUM_REPLIES' | translate}}</dt>
<dd class="h-line">{{ vm.user.replies }}</dd>
</dl>
</div>
</div>
<script type="text/ng-template" id="set-user-score.html">
<form class="form-inline set-score-popover-form text-center">
<div class="form-group">
<input type="number" ng-model="vm.setUserScorePopover.number" class="form-control" placeholder="{{ 'SCORE_NUMBER' | translate }}"
autofocus>
</div>
<button class="btn btn-default" ng-click="vm.setUserScore();">{{ 'BUTTON_SET' | translate }}</button>
</form>
</script>
<script type="text/ng-template" id="set-user-uploaded.html">
<form class="form-inline set-uploaded-popover-form text-center">
<div class="form-group">
<input type="number" ng-model="vm.setUserUploadedPopover.number" class="form-control"
placeholder="{{ 'UPLOADED_NUMBER' | translate }}" autofocus>
</div>
<button class="btn btn-default" ng-click="vm.setUserUploaded();">{{ 'BUTTON_SET' | translate }}</button>
</form>
</script>
<script type="text/ng-template" id="set-user-downloaded.html">
<form class="form-inline set-downloaded-popover-form text-center">
<div class="form-group">
<input type="number" ng-model="vm.setUserDownloadedPopover.number" class="form-control"
placeholder="{{ 'DOWNLOADED_NUMBER' | translate }}" autofocus>
</div>
<button class="btn btn-default" ng-click="vm.setUserDownloaded();">{{ 'BUTTON_SET' | translate }}</button>
</form>
</script>
</section>