mirror of
https://github.com/taobataoma/meanTorrent.git
synced 2026-01-16 20:32:21 +01:00
215 lines
11 KiB
HTML
215 lines
11 KiB
HTML
<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" 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()">
|
||
<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 }}</dd>
|
||
|
||
<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">
|
||
<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>
|
||
|
||
<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>
|
||
|
||
<li class="status-divider"></li>
|
||
|
||
<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>
|
||
|
||
<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>
|
||
|
||
<dt class="h-line">{{ 'STATUS_FIELD.SEEDED' | translate}}:</dt>
|
||
<dd class="h-line">{{ vm.user.seeded }}</dd>
|
||
|
||
<dt class="h-line">{{ 'STATUS_FIELD.LEECHED' | translate}}:</dt>
|
||
<dd class="h-line">{{ vm.user.leeched }}</dd>
|
||
|
||
<dt class="h-line">{{ 'STATUS_FIELD.FINISHED' | translate}}:</dt>
|
||
<dd class="h-line">{{ vm.user.finished }}</span></dd>
|
||
|
||
<li class="status-divider"></li>
|
||
</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>
|