mirror of
https://github.com/taobataoma/meanTorrent.git
synced 2026-09-08 18:29:58 +02:00
1101 lines
69 KiB
HTML
1101 lines
69 KiB
HTML
<section ng-controller="TorrentsInfoController as vm" ng-init="vm.getTorrentInfo();">
|
||
<div class="backdrop" ng-show="vm.torrentLocalInfo">
|
||
<div class="filter">
|
||
<div class="container">
|
||
<div class="topone row">
|
||
<div class="col-md-3 text-center">
|
||
<div class="topone-logo" ng-class="{'img-thumbnail center-block torrent-logo': vm.torrentLocalInfo.torrent_type!='music'}">
|
||
<img torrent-logo="vm.torrentLocalInfo"
|
||
ng-src="{{vm.TGI.getTorrentTopOneImage(vm.torrentLocalInfo)}}"
|
||
alt="{{vm.TGI.getTorrentTitle(vm.torrentLocalInfo)}}">
|
||
</div>
|
||
|
||
<div class="down-torrent">
|
||
<button class="btn btn-success btn-block" ng-click="vm.DLS.downloadTorrent(vm.torrentLocalInfo._id)"
|
||
translate="DOWNLOAD_TORRENT"></button>
|
||
</div>
|
||
|
||
<div class="margin-top-20 margin-bottom-20 rating"
|
||
ng-if="vm.torrentLocalInfo.torrent_type!='movie' && vm.torrentLocalInfo.torrent_type!='tvserial'">
|
||
<span uib-rating ng-model="vm.rating_vote" max="10"
|
||
state-on="'fa fa-star'"
|
||
state-off="'fa fa-star-o'"
|
||
titles="['1','2','3','4','5','6','7','8','9','10']"
|
||
enable-reset="false"
|
||
ng-click="vm.ratingTorrent(vm.torrentLocalInfo);"
|
||
aria-labelledby="rating-torrent">
|
||
</span>
|
||
|
||
<div class="torrent-votes margin-top-10">
|
||
<kbd>{{vm.torrentLocalInfo.resource_detail_info.vote_average}}</kbd>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="col-md-9 torrent-detail">
|
||
<dl class="dl-horizontal">
|
||
<div ng-if="vm.TGI.getTorrentTitle(vm.torrentLocalInfo)">
|
||
<dt class="h-line">{{ 'TMDB_FIELDS.TITLE' | translate}}:</dt>
|
||
<dd class="h-line">{{vm.TGI.getTorrentTitle(vm.torrentLocalInfo)}}</dd>
|
||
</div>
|
||
|
||
<div ng-if="vm.TGI.getTorrentOriginalTitle(vm.torrentLocalInfo)">
|
||
<dt class="h-line">{{ 'TMDB_FIELDS.ORIGINAL_TITLE' | translate}}:</dt>
|
||
<dd class="h-line">{{vm.TGI.getTorrentOriginalTitle(vm.torrentLocalInfo)}}</dd>
|
||
</div>
|
||
|
||
<div ng-if="vm.torrentLocalInfo.resource_detail_info.subtitle">
|
||
<dt class="h-line">{{ 'TMDB_FIELDS.SUB_TITLE' | translate}}:</dt>
|
||
<dd class="h-line">{{vm.torrentLocalInfo.resource_detail_info.subtitle}}</dd>
|
||
</div>
|
||
|
||
<div ng-if="vm.torrentLocalInfo.resource_detail_info.artist">
|
||
<dt class="h-line">{{ 'TMDB_FIELDS.ARTIST' | translate}}:</dt>
|
||
<dd class="h-line">{{vm.torrentLocalInfo.resource_detail_info.artist}}</dd>
|
||
</div>
|
||
|
||
<div ng-if="vm.TGI.getMovieDirector(vm.torrentLocalInfo)">
|
||
<dt class="h-line">{{ 'TMDB_FIELDS.DIRECTOR' | translate}}:</dt>
|
||
<dd class="h-line">{{vm.TGI.getMovieDirector(vm.torrentLocalInfo)}}</dd>
|
||
</div>
|
||
|
||
<div ng-if="vm.torrentLocalInfo.resource_detail_info.networks.length > 0">
|
||
<dt class="h-line">{{ 'TMDB_FIELDS.NETWORK' | translate}}:</dt>
|
||
<dd class="h-line list-all-network">
|
||
<span class="network-item"
|
||
ng-repeat="item in vm.torrentLocalInfo.resource_detail_info.networks">{{item.name}}</span>
|
||
</dd>
|
||
</div>
|
||
|
||
<div ng-if="vm.TGI.getTorrentLanguage(vm.torrentLocalInfo)">
|
||
<dt class="h-line">{{ 'TMDB_FIELDS.ORIGINAL_LANGUAGE' | translate}}:</dt>
|
||
<dd class="h-line">{{vm.TGI.getTorrentLanguage(vm.torrentLocalInfo)}}</dd>
|
||
</div>
|
||
|
||
<div ng-if="vm.torrentLocalInfo.resource_detail_info.genres.length > 0">
|
||
<dt class="h-line">{{ 'TMDB_FIELDS.GENRES' | translate}}:</dt>
|
||
<dd class="h-line list-all-genres">
|
||
<span class="genres-item" ng-repeat="item in vm.torrentLocalInfo.resource_detail_info.genres">{{item.name}}</span>
|
||
</dd>
|
||
</div>
|
||
|
||
<div ng-if="vm.torrentLocalInfo.resource_detail_info.production_companies.length > 0">
|
||
<dt class="h-line">{{ 'TMDB_FIELDS.PRODUCTION_COMPANIES' | translate}}:</dt>
|
||
<dd class="h-line list-all-companies">
|
||
<span class="company-item"
|
||
ng-repeat="item in vm.torrentLocalInfo.resource_detail_info.production_companies">{{item.name}}</span>
|
||
</dd>
|
||
</div>
|
||
|
||
<div ng-if="vm.torrentLocalInfo.resource_detail_info.production_countries.length > 0">
|
||
<dt class="h-line">{{ 'TMDB_FIELDS.PRODUCTION_COUNTRIES' | translate}}:</dt>
|
||
<dd class="h-line list-all-countries">
|
||
<span class="country-item"
|
||
ng-repeat="item in vm.torrentLocalInfo.resource_detail_info.production_countries">{{item.iso_3166_1}}</span>
|
||
</dd>
|
||
</div>
|
||
|
||
<div ng-if="vm.torrentLocalInfo.resource_detail_info.origin_country.length > 0">
|
||
<dt class="h-line">{{ 'TMDB_FIELDS.PRODUCTION_COUNTRIES' | translate}}:</dt>
|
||
<dd class="h-line list-all-countries">
|
||
<span class="country-item"
|
||
ng-repeat="item in vm.torrentLocalInfo.resource_detail_info.origin_country">{{item}}</span>
|
||
<span ng-if="vm.torrentLocalInfo.resource_detail_info.origin_country.length ==0">-</span>
|
||
</dd>
|
||
</div>
|
||
|
||
<div ng-if="vm.torrentLocalInfo.resource_detail_info.release_date">
|
||
<dt class="h-line">{{ 'TMDB_FIELDS.RELEASE_DATE' | translate}}:</dt>
|
||
<dd class="h-line">{{vm.torrentLocalInfo.resource_detail_info.release_date}}</dd>
|
||
</div>
|
||
|
||
<div ng-if="vm.torrentLocalInfo.resource_detail_info.first_air_date">
|
||
<dt class="h-line">{{ 'TMDB_FIELDS.FIRST_AIR_DATE' | translate}}:</dt>
|
||
<dd class="h-line">{{vm.torrentLocalInfo.resource_detail_info.first_air_date}}</dd>
|
||
</div>
|
||
|
||
<div ng-if="vm.torrentLocalInfo.resource_detail_info.last_air_date">
|
||
<dt class="h-line">{{ 'TMDB_FIELDS.LAST_AIR_DATE' | translate}}:</dt>
|
||
<dd class="h-line">{{vm.torrentLocalInfo.resource_detail_info.last_air_date}}</dd>
|
||
</div>
|
||
|
||
<div ng-if="vm.torrentLocalInfo.resource_detail_info.number_of_seasons">
|
||
<dt class="h-line">{{ 'TMDB_FIELDS.TOTAL_SE' | translate}}:</dt>
|
||
<dd class="h-line">
|
||
{{vm.torrentLocalInfo.resource_detail_info.number_of_episodes}} {{ 'TMDB_FIELDS.UNIT_EPISODES' | translate}} /
|
||
{{vm.torrentLocalInfo.resource_detail_info.number_of_seasons}} {{ 'TMDB_FIELDS.UNIT_SEASONS' | translate}}
|
||
</dd>
|
||
|
||
<div ng-if="vm.torrentLocalInfo.resource_detail_info.number_of_seasons">
|
||
<dt class="h-line">{{ 'TMDB_FIELDS.THIS_SE' | translate}}:</dt>
|
||
<dd class="h-line">
|
||
<span class="se-info">S{{vm.torrentLocalInfo.torrent_seasons}}E{{vm.torrentLocalInfo.torrent_episodes}}</span>
|
||
</dd>
|
||
</div>
|
||
</div>
|
||
|
||
<div ng-if="vm.torrentLocalInfo.resource_detail_info.runtime && vm.torrentLocalInfo.resource_detail_info.runtime != 0">
|
||
<dt class="h-line">{{ 'TMDB_FIELDS.RUNTIME' | translate}}:</dt>
|
||
<dd class="h-line">{{vm.torrentLocalInfo.resource_detail_info.runtime | runtime}}</dd>
|
||
</div>
|
||
|
||
<div ng-if="vm.torrentLocalInfo.resource_detail_info.budget && vm.torrentLocalInfo.resource_detail_info.budget != 0">
|
||
<dt class="h-line">{{ 'TMDB_FIELDS.BUDGET' | translate}}:</dt>
|
||
<dd class="h-line">{{vm.torrentLocalInfo.resource_detail_info.budget | dollar:2}}</dd>
|
||
</div>
|
||
|
||
<div ng-if="vm.torrentLocalInfo.resource_detail_info.revenue && vm.torrentLocalInfo.resource_detail_info.revenue != 0">
|
||
<dt class="h-line">{{ 'TMDB_FIELDS.REVENUE' | translate}}:</dt>
|
||
<dd class="h-line">{{vm.torrentLocalInfo.resource_detail_info.revenue | dollar:2}}</dd>
|
||
</div>
|
||
|
||
<div>
|
||
<dt class="h-line">{{ 'TMDB_FIELDS.VOTE_AVERAGE' | translate}}:</dt>
|
||
<dd class="h-line">
|
||
<span ng-if="vm.torrentLocalInfo">
|
||
<span class="torrent-votes">
|
||
<kbd>{{vm.TGI.getVoteTitle(vm.torrentLocalInfo)}}</kbd>
|
||
</span> {{vm.torrentLocalInfo.resource_detail_info.vote_average}} / {{vm.torrentLocalInfo.resource_detail_info.vote_count}} {{ 'TMDB_FIELDS.VOTE_UNIT' | translate}}
|
||
</span>
|
||
</dd>
|
||
</div>
|
||
|
||
<div ng-if="vm.torrentLocalInfo.resource_detail_info.imdb_id">
|
||
<dt class="h-line">{{ 'TMDB_FIELDS.IMDB_LINK' | translate}}:</dt>
|
||
<dd class="h-line">
|
||
<a href="{{vm.imdbConfig.imdbLinkUrl}}{{vm.torrentLocalInfo.resource_detail_info.imdb_id}}"
|
||
target="_blank">{{vm.imdbConfig.imdbLinkUrl}}{{vm.torrentLocalInfo.resource_detail_info.imdb_id}}</a>
|
||
</dd>
|
||
</div>
|
||
|
||
<div ng-if="vm.torrentLocalInfo.resource_detail_info.id">
|
||
<dt class="h-line">{{ 'TMDB_FIELDS.TMDB_LINK' | translate}}:</dt>
|
||
<dd class="h-line">
|
||
<a href="{{vm.torrentLocalInfo.torrent_type=='movie' ? vm.tmdbConfig.tmdbMovieLinkUrl : vm.tmdbConfig.tmdbTvserialLinkUrl}}{{vm.torrentLocalInfo.resource_detail_info.id}}"
|
||
target="_blank">{{vm.torrentLocalInfo.torrent_type=='movie' ? vm.tmdbConfig.tmdbMovieLinkUrl : vm.tmdbConfig.tmdbTvserialLinkUrl}}{{vm.torrentLocalInfo.resource_detail_info.id}}</a>
|
||
</dd>
|
||
</div>
|
||
|
||
<div id="top_of_overview" ng-if="vm.TGI.getTorrentOverview(vm.torrentLocalInfo)">
|
||
<dt class="h-line">{{ 'TMDB_FIELDS.OVERVIEW' | translate}}:</dt>
|
||
<dd class="h-line">
|
||
<div ng-if="vm.torrentLocalInfo.torrent_type=='movie' || vm.torrentLocalInfo.torrent_type=='tvserial'">
|
||
{{vm.TGI.getTorrentOverview(vm.torrentLocalInfo)}}
|
||
</div>
|
||
<div ng-if="vm.torrentLocalInfo.torrent_type!='movie' && vm.torrentLocalInfo.torrent_type!='tvserial'">
|
||
<div torrent-image-list="true"
|
||
img-container="img_container_{{vm.torrentLocalInfo._id}}"
|
||
img-click-event="vm.onImageClick(event)">
|
||
<div id="{{vm.torrentLocalInfo._id}}" class="torrent-long-overview" data-provide="markdown"
|
||
ng-bind-html="vm.getOverviewMarkedContent(vm.TGI.getTorrentOverview(vm.torrentLocalInfo))">
|
||
</div>
|
||
</div>
|
||
|
||
<button class="btn btn-xs btn-mt-o margin-top-15" mouse-enter-toggle-class="btn-mt-o-light" base-class="btn-mt-o-primary"
|
||
ng-if="vm.isOwner(vm.torrentLocalInfo) || vm.user.isOper"
|
||
ng-click="vm.beginEditOverview(vm.torrentLocalInfo)">
|
||
{{'EDIT_THIS_OVERVIEW' | translate}}
|
||
</button>
|
||
</div>
|
||
</dd>
|
||
</div>
|
||
</dl>
|
||
|
||
<div id="img_container_{{vm.torrentLocalInfo._id}}" class="img-container">
|
||
<legend class="xsmall-legend strong-legend" translate="TMDB_FIELDS.IMAGE_OVERVIEW"></legend>
|
||
</div>
|
||
|
||
<div class="cast-list" ng-if="vm.torrentLocalInfo.resource_detail_info.credits.cast.length > 0">
|
||
<legend class="xsmall-legend strong-legend" translate="TMDB_FIELDS.CAST"></legend>
|
||
<div class="row">
|
||
<div ng-repeat="cast in vm.torrentLocalInfo.resource_detail_info.credits.cast | limitTo: 6">
|
||
<div data-ng-if="$index != 0 && $index % 3 == 0" class="clearfix visible-xs-block visible-sm-block"></div>
|
||
<div data-ng-if="$index != 0 && $index % 6 == 0" class="clearfix visible-md-block visible-lg-block"></div>
|
||
<div class="col-xs-4 col-md-2 text-center">
|
||
<img ng-src="{{vm.tmdbConfig.castImgBaseUrl}}{{cast.profile_path}}"
|
||
on-error-src="/modules/core/client/img/default_face.jpg"
|
||
class="img-circle img-thumbnail img-responsive center-block">
|
||
<span class="cast-xs-info"><strong>{{cast.name}}</strong></span>
|
||
|
||
<p class="cast-xs-info character">{{cast.character}}</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="torrent-info-tabs" ng-if="vm.torrentLocalInfo">
|
||
<div class="info-tabs-top">
|
||
</div>
|
||
<div class="container">
|
||
<uib-tabset class="mt-responsive-tabs-sm">
|
||
<uib-tab index="$index" ng-repeat="tab in vm.torrentTabs" disabled="tab.disabled" ng-if="tab.ng_show" title="{{tab.title}}">
|
||
<uib-tab-heading>
|
||
<i class="fa {{tab.icon}} fa-2x" aria-hidden="true"></i><span class="tab-title">{{tab.title}}</span>
|
||
<span class="badge {{b.class}}" ng-repeat="b in tab.badges">{{b.value}}</span>
|
||
</uib-tab-heading>
|
||
<div class="tab-border-view" ng-include="tab.templateUrl">
|
||
</div>
|
||
</uib-tab>
|
||
</uib-tabset>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="padding-top-30" id="top_of_comments" ng-if="vm.torrentLocalInfo">
|
||
<div class="container">
|
||
<div class="panel panel-default panel-comment">
|
||
<div class="panel-heading text-center"><strong>{{ 'USER_COMMENT_LIST' | translate}}</strong> <span
|
||
class="badge badge_info">{{vm.torrentLocalInfo._replies.length}}</span></div>
|
||
<div class="panel-body">
|
||
<ul uib-pagination boundary-links="true" max-size="8" items-per-page="vm.commentItemsPerPage" total-items="vm.commentFilterLength"
|
||
ng-model="vm.commentCurrentPage" ng-change="vm.commentPageChanged(true)"
|
||
ng-if="vm.torrentLocalInfo._replies.length > 0"
|
||
first-text="{{ 'PAGE_TEXT_FIRST' | translate}}" previous-text="{{ 'PAGE_TEXT_PREVIOUS' | translate}}"
|
||
next-text="{{ 'PAGE_TEXT_NEXT' | translate}}" last-text="{{ 'PAGE_TEXT_LAST' | translate}}">
|
||
</ul>
|
||
|
||
<div id="comment-list-div">
|
||
<div class="comment-list" id="{{item._id}}" scroll-if="item._id==vm.scrollToId" offset-top="-60"
|
||
ng-repeat="item in vm.commentPagedItems">
|
||
<div class="timeline-comment-wrapper">
|
||
<a class="timeline-comment-avatar" ng-click="vm.replyComment(item);">
|
||
<img title="{{item.user.displayName}}" ng-src="{{item.user.profileImageURL}}">
|
||
</a>
|
||
|
||
<div class="timeline-comment">
|
||
<div class="timeline-comment-header">
|
||
<div class="timeline-comment-header-text">
|
||
<span user-info="item.user" info-name></span>
|
||
<span vip-flag="item.user"></span>
|
||
<!--<span message-to="item.user" to-class="message-to-icon"></span>-->
|
||
<span class="user-ud-text">
|
||
(<span class="glyphicon glyphicon-arrow-up torrent-up"></span>{{item.user.uploaded | bytes}}
|
||
<span class="glyphicon glyphicon-arrow-down torrent-down"></span>{{item.user.downloaded | bytes}}
|
||
)
|
||
</span>
|
||
</div>
|
||
<span class="timeline-comment-header-time-text">{{item.createdat | date:'yyyy-MM-dd HH:mm:ss'}}</span>
|
||
</div>
|
||
<div class="timeline-comment-body">
|
||
<div class="timeline-comment-body-text" ng-bind-html="vm.getCommentMarked(item);"></div>
|
||
<div class="row text-right" ng-if="item.editedat">
|
||
<p class="timeline-comment-body-edited-text">[ {{item.editedby}} {{ 'COMMENT_EDITED_INFO' | translate}} {{item.editedat | date:'yyyy-MM-dd HH:mm:ss'}} ]</p>
|
||
</div>
|
||
<div class="row" ng-if="item._replies.length>0">
|
||
<div class="col-sm-10 col-sm-offset-2 timeline-comment-sub-list">
|
||
<div class="timeline-comment-sub-item" ng-repeat="sitem in item._replies">
|
||
<a class="timeline-comment-sub-avatar" ng-click="vm.replySubComment(item, sitem);">
|
||
<img title="{{sitem.user.displayName}}" ng-src="{{sitem.user.profileImageURL}}">
|
||
</a>
|
||
|
||
<div class="timeline-comment-sub-body">
|
||
<span ng-bind-html="vm.getReplyMarked(sitem);"></span>
|
||
|
||
<p class="reply-by">
|
||
<span style="font-size: 12px;"> -
|
||
<a ng-click="vm.markLinkClick($event, item);"
|
||
ng-href="#">@{{sitem.user.displayName}}</a>
|
||
</span>
|
||
<span style="font-size: 12px; color: #999999;">{{sitem.createdat | date: 'yyyy-MM-dd HH:mm:ss'}}</span>
|
||
|
||
<span class="glyphicon glyphicon-edit edit-button"
|
||
title="{{ 'COMMENT_EDIT_ICON_TITLE' | translate}}"
|
||
ng-if="sitem.user._id.toString()==vm.user._id || vm.user.roles[0] == 'admin'"
|
||
ng-click="vm.editSubComment(item,sitem);">
|
||
</span>
|
||
|
||
<span class="glyphicon glyphicon-remove-circle delete-button"
|
||
title="{{ 'COMMENT_DELETE_ICON_TITLE' | translate}}"
|
||
ng-if="sitem.user._id.toString()==vm.user._id || vm.user.roles[0] == 'admin'"
|
||
ng-click="vm.deleteSubComment(item,sitem);">
|
||
</span>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="timeline-comment-footer">
|
||
<div class="timeline-comment-footer-button text-right">
|
||
<button class="btn btn-default btn-xs"
|
||
ng-if="item.user._id.toString()==vm.user._id || vm.user.roles[0] == 'admin'"
|
||
translate="COMMENT_REPLY_EDIT" ng-click="vm.editComment(item);"></button>
|
||
<button class="btn btn-default btn-xs"
|
||
ng-if="item.user._id.toString()==vm.user._id || vm.user.roles[0] == 'admin'"
|
||
translate="COMMENT_REPLY_DELETE" ng-click="vm.deleteComment(item);"></button>
|
||
<button class="btn btn-default btn-xs"
|
||
ng-if="vm.user"
|
||
translate="COMMENT_REPLY_BUTTON" ng-click="vm.replyComment(item);"></button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<ul uib-pagination boundary-links="true" max-size="8" items-per-page="vm.commentItemsPerPage" total-items="vm.commentFilterLength"
|
||
ng-model="vm.commentCurrentPage" ng-change="vm.commentPageChanged(true)"
|
||
ng-if="vm.torrentLocalInfo._replies.length > 0"
|
||
first-text="{{ 'PAGE_TEXT_FIRST' | translate}}" previous-text="{{ 'PAGE_TEXT_PREVIOUS' | translate}}"
|
||
next-text="{{ 'PAGE_TEXT_NEXT' | translate}}" last-text="{{ 'PAGE_TEXT_LAST' | translate}}">
|
||
</ul>
|
||
<div class="padding-top-20"></div>
|
||
|
||
<div class="comment-new" ng-if="vm.user">
|
||
<div class="timeline-comment-wrapper">
|
||
<a href="#" class="timeline-comment-avatar">
|
||
<img title="{{vm.user.displayName}}" ng-src="{{vm.user.profileImageURL}}">
|
||
</a>
|
||
|
||
<div class="timeline-comment timeline-new-comment">
|
||
<div class="timeline-comment-header">
|
||
<div class="timeline-comment-header-text">{{ vm.reply_action == 'edit' ? 'EDIT_COMMENT' : (vm.reply_action == 'reply' ? 'REPLY_COMMENT' : 'POST_NEW_COMMENT') | translate}}</div>
|
||
</div>
|
||
<div class="timeline-comment-body">
|
||
<textarea id="commentContent" name="commentContent" ng-model="vm.new_comment_content"
|
||
mt-markdown-editor="commentContent"
|
||
maxlength="{{vm.inputLengthConfig.torrentCommentLength}}"></textarea>
|
||
|
||
<div class="row margin-top-10">
|
||
<div class="col-sm-6" style="display: table;">
|
||
<a class="tabnav-extra" href="https://guides.github.com/features/mastering-markdown/" target="_blank"
|
||
data-ga-click="Markdown Toolbar, click, help">
|
||
<svg aria-hidden="true" height="16" version="1.1"
|
||
viewBox="0 0 16 16" width="16">
|
||
<path fill-rule="evenodd"
|
||
d="M14.85 3H1.15C.52 3 0 3.52 0 4.15v7.69C0 12.48.52 13 1.15 13h13.69c.64 0 1.15-.52 1.15-1.15v-7.7C16 3.52 15.48 3 14.85 3zM9 11H7V8L5.5 9.92 4 8v3H2V5h2l1.5 2L7 5h2v6zm2.99.5L9.5 8H11V5h2v3h1.5l-2.51 3.5z"/>
|
||
</svg>
|
||
{{ 'MARKDOWN_LINK' | translate }}
|
||
</a>
|
||
</div>
|
||
<div class="col-sm-6 text-right">
|
||
<button class="btn btn-warning" translate="SUBMIT_CANCEL" ng-click="vm.submitInit();"></button>
|
||
<button class="btn btn-success"
|
||
translate="{{vm.reply_action == 'reply' ? 'SUBMIT_REPLY' : 'SUBMIT_COMMENT'}}"
|
||
ng-click="vm.submitComment();"
|
||
ng-disabled="!vm.new_comment_content"></button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="up_to_top_div" up-to-top="top_of_comments" offset="-30"></div>
|
||
|
||
<div id="popup_img_preview" class="popup_well">
|
||
<div class="img_item center-block">
|
||
<img class="img-thumbnail img-responsive" src="">
|
||
<i class="fa fa-2x fa-times-circle-o popup_img_preview_close" mt-scale-by-mouse="{scale: 1.5, duration: '.5s'}" aria-hidden="true"></i>
|
||
</div>
|
||
<div class="img_nav text-center">
|
||
<span class="img_page_info"></span>
|
||
<button class="btn btn-bold btn-width-120 btn-mt-o popup_img_preview_close" mouse-enter-toggle-class="btn-mt-o-light"
|
||
base-class="btn-mt-o-success">
|
||
{{'BUTTON_MESSAGE_CLOSE' | translate}}
|
||
</button>
|
||
<button class="btn btn-bold btn-width-120 btn-mt-o" mouse-enter-toggle-class="btn-mt-o-light" base-class="btn-mt-o-primary"
|
||
ng-click="vm.previousImage()">
|
||
{{'PAGE_TEXT_PREVIOUS' | translate}}
|
||
</button>
|
||
<button class="btn btn-bold btn-width-120 btn-mt-o" mouse-enter-toggle-class="btn-mt-o-light" base-class="btn-mt-o-primary"
|
||
ng-click="vm.nextImage()">
|
||
{{'PAGE_TEXT_NEXT' | translate}}
|
||
</button>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- =================================================================
|
||
side-overlay tags
|
||
================================================================== -->
|
||
<div id="tagsPopupSlide" side-overlay="top" side-class="tags-side-overlay" side-modal side-close-on-esc>
|
||
<div class="container">
|
||
<div class="row">
|
||
<div class="col-sm-12 col-md-10 col-md-offset-1">
|
||
<div class="page-header"><h3>{{ 'ATTRIBUTE_TAGS' | translate}}</h3></div>
|
||
<dl class="dl-horizontal">
|
||
<div ng-repeat="item in vm.resourcesTags.radio | filter:vm.torrentLocalInfo.torrent_type">
|
||
<dt class="h-line">{{ 'RESOURCESTAGS.'+item.name+'.SELF' | translate}}:</dt>
|
||
<dd class="h-line">
|
||
<div class="btn-group btn-group-xs" role="group">
|
||
<button ng-repeat="sitem in item.value" id="tag_{{sitem.name}}"
|
||
class="btn btn-xs btn-tag" value="{{sitem.name}}"
|
||
ng-class="vm.searchTags.indexOf(sitem.name) !== -1 ? 'btn-success' : 'btn-default'"
|
||
ng-click="vm.onRadioTagClicked($event, sitem.name)">
|
||
{{ 'RESOURCESTAGS.' + item.name + '.' + sitem.name.toUpperCase() | translate}}
|
||
</button>
|
||
</span>
|
||
</div>
|
||
</dd>
|
||
</div>
|
||
|
||
<div style="margin-top: 20px;"></div>
|
||
|
||
<div ng-repeat="item in vm.resourcesTags.checkbox | filter:vm.torrentLocalInfo.torrent_type">
|
||
<dt class="h-line">{{ 'RESOURCESTAGS.'+item.name+'.SELF' | translate}}:</dt>
|
||
<dd class="h-line">
|
||
<div class="btn-group btn-group-xs" role="group">
|
||
<button ng-repeat="sitem in item.value" id="tag_{{sitem.name}}"
|
||
class="btn btn-xs btn-tag" value="{{sitem.name}}"
|
||
ng-class="vm.searchTags.indexOf(sitem.name) !== -1 ? 'btn-success' : 'btn-default'"
|
||
ng-click="vm.onCheckboxTagClicked($event, sitem.name)"
|
||
toggle-class="btn-success" base-class="btn-default" onclick="this.blur();">
|
||
{{ 'RESOURCESTAGS.' + item.name + '.' + sitem.name.toUpperCase() | translate}}
|
||
</button>
|
||
</div>
|
||
</dd>
|
||
</div>
|
||
<div style="margin-top: 20px;">
|
||
<dt class="h-line"></dt>
|
||
<dd class="h-line">
|
||
<button class="btn btn-success btn-width-100" ng-click="vm.setTorrentTags();">
|
||
{{ 'BUTTON_SAVE' | translate }}
|
||
</button>
|
||
<button class="btn btn-default btn-width-100" ng-click="vm.hideTagsPopup();">
|
||
{{ 'BUTTON_CANCEL' | translate }}
|
||
</button>
|
||
</dd>
|
||
</div>
|
||
</dl>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- =================================================================
|
||
side-overlay collections create
|
||
================================================================== -->
|
||
<div id="collectionsCreateSlide" side-overlay="right" side-class="collections-side-overlay" side-opened="vm.onPopupMessageOpen();"
|
||
side-close-on-esc side-modal>
|
||
<div class="collection-popup">
|
||
<legend class="h4"
|
||
translate="COLLECTIONS.FORM_FOR" translate-values="{cid: vm.torrentLocalInfo.resource_detail_info.belongs_to_collection.id}">
|
||
</legend>
|
||
|
||
<div class="collection-form">
|
||
<input type="text" class="form-control margin-bottom-10" id="coll-name" placeholder="{{'COLLECTIONS.FORM_NAME' | translate}}"
|
||
ng-model="vm.collection.name" autofocus>
|
||
|
||
<textarea class="form-control" id="overview-textarea" name="overview-textarea"
|
||
ng-model="vm.collection.overview" data-hidden-buttons="cmdPreview" ng-keydown="vm.onOverviewKeyDown($event);"
|
||
placeholder="{{'COLLECTIONS.FORM_DESC' | translate}}" maxlength="{{vm.inputLengthConfig.collectionsOverviewLength}}"
|
||
mt-markdown-editor="overview-textarea"></textarea>
|
||
|
||
<div class="margin-top-10" style="display: table;">
|
||
<a class="message-extra" href="https://guides.github.com/features/mastering-markdown/" target="_blank"
|
||
data-ga-click="Markdown Toolbar, click, help">
|
||
<svg aria-hidden="true" height="16" version="1.1"
|
||
viewBox="0 0 16 16" width="16">
|
||
<path fill-rule="evenodd"
|
||
d="M14.85 3H1.15C.52 3 0 3.52 0 4.15v7.69C0 12.48.52 13 1.15 13h13.69c.64 0 1.15-.52 1.15-1.15v-7.7C16 3.52 15.48 3 14.85 3zM9 11H7V8L5.5 9.92 4 8v3H2V5h2l1.5 2L7 5h2v6zm2.99.5L9.5 8H11V5h2v3h1.5l-2.51 3.5z"/>
|
||
</svg>
|
||
{{ 'MARKDOWN_LINK' | translate }}
|
||
</a>
|
||
</div>
|
||
|
||
<img class="img-thumbnail" ng-if="vm.collection.backdrop_path"
|
||
ng-src="{{vm.tmdbConfig.backdropImgBaseUrl_780 + vm.collection.backdrop_path}}"
|
||
on-error-src="https://image.tmdb.org/t/p/w1280/5pAGnkFYSsFJ99ZxDIYnhQbQFXs.jpg">
|
||
|
||
<div class="margin-top-20 h5" ng-class="vm.collection.status == 'loading' ? 'text-success' : 'text-danger'"
|
||
ng-if="vm.collection.status != 'ok'">{{vm.collection.status_msg | translate}}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="bottom-control">
|
||
<button class="btn btn-success btn-width-100"
|
||
ng-disabled="!vm.collection.name || !vm.collection.overview"
|
||
ng-click="vm.saveCollection();">{{ 'BUTTON_SAVE' | translate }}
|
||
</button>
|
||
<button class="btn btn-default btn-width-100" ng-click="vm.hideCollectionPopup();">{{ 'BUTTON_CANCEL' | translate }}</button>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- =================================================================
|
||
side-overlay collections insert
|
||
================================================================== -->
|
||
<div id="collectionsInsertSlide" side-overlay="right" side-class="collections-side-overlay" side-close-on-esc side-modal>
|
||
<div class="collection-popup">
|
||
<legend class="h4"
|
||
translate="COLLECTIONS.INSERT_INTO" translate-values="{cid: vm.torrentLocalInfo.resource_detail_info.belongs_to_collection.id}">
|
||
</legend>
|
||
|
||
<div class="collection-form">
|
||
<div class="h5 margin-bottom-5">{{'COLLECTIONS.TORRENT_INTO' | translate}}:</div>
|
||
<input type="text" class="form-control margin-top-10" id="tid"
|
||
ng-model="vm.collectionTorrent.id" autofocus>
|
||
<input type="text" class="form-control margin-top-10" id="ttitle"
|
||
ng-model="vm.collectionTorrent.title" autofocus>
|
||
<input type="text" class="form-control margin-top-10" id="tfile"
|
||
ng-model="vm.collectionTorrent.file" autofocus>
|
||
|
||
<div ng-if="vm.collectionsItems.length<=0">
|
||
<div class="h5 text-danger margin-top-40 margin-bottom-5">{{'COLLECTIONS.NO_COLLECTION' | translate}}</div>
|
||
</div>
|
||
<div ng-if="vm.collectionsItems.length>0">
|
||
<div class="h5 margin-top-40 margin-bottom-5">{{'COLLECTIONS.SELECT_INFO' | translate}}:</div>
|
||
<div class="radio margin-left-10" ng-repeat="c in vm.collectionsItems">
|
||
<label ng-class="{'text-muted': vm.isAlreadyIn(c)}">
|
||
<input type="radio" name="n_{{c._id}}" id="i_{{c._id}}" value="{{c._id}}"
|
||
ng-model="vm.collectionTorrent.cid" ng-disabled="vm.isAlreadyIn(c)">
|
||
{{c.name}} <span ng-if="vm.isAlreadyIn(c)">{{'COLLECTIONS.ALREADY_IN' | translate}}</span>
|
||
</label>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="margin-top-20 h5" ng-class="vm.collectionTorrent.status == 'loading' ? 'text-success' : 'text-danger'"
|
||
ng-if="vm.collectionTorrent.status != 'ok'">{{vm.collectionTorrent.status_msg | translate}}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="bottom-control">
|
||
<button class="btn btn-success btn-width-100"
|
||
ng-disabled="!vm.collectionTorrent.cid"
|
||
ng-click="vm.saveInsertCollection();">{{ 'BUTTON_SAVE' | translate }}
|
||
</button>
|
||
<button class="btn btn-default btn-width-100" ng-click="vm.hideCollectionInsertPopup();">{{ 'BUTTON_CANCEL' | translate }}</button>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- =================================================================
|
||
torrentInfo.html
|
||
================================================================== -->
|
||
<script type="text/ng-template" id="torrentInfo.html">
|
||
<div>
|
||
<span class="xs-show sm-show">
|
||
<h4 class="margin-bottom-30">
|
||
{{'TAB_TORRENT_INFO' | translate}}:
|
||
</h4>
|
||
</span>
|
||
|
||
<dl class="dl-horizontal" style="margin-bottom: 0;">
|
||
<dt class="h-line">{{ 'TABLE_FIELDS.PUBLISHER' | translate}}:</dt>
|
||
<dd class="h-line">
|
||
<span ng-if="!vm.torrentLocalInfo.isAnonymous" user-info="vm.torrentLocalInfo.user" info-name></span>
|
||
<span ng-if="vm.torrentLocalInfo.isAnonymous">{{ 'ANONYMOUS' | translate }}</span>
|
||
<span maker-info="vm.torrentLocalInfo.maker"></span>
|
||
<!--<span message-to="vm.torrentLocalInfo.user" to-class="message-to-icon"></span>-->
|
||
</dd>
|
||
|
||
<dt class="h-line">{{ 'TORRENT_FILENAME' | translate}}:</dt>
|
||
<dd class="h-line">{{vm.torrentLocalInfo.torrent_filename}}</dd>
|
||
|
||
<dt class="h-line">{{ 'ANNOUNCE_URL' | translate}}:</dt>
|
||
<dd class="h-line">{{vm.torrentLocalInfo.torrent_announce}}</dd>
|
||
|
||
<dt class="h-line">{{ 'TABLE_FIELDS.SEEDED' | translate}}:</dt>
|
||
<dd class="h-line"><span class="glyphicon glyphicon-arrow-up torrent-up"></span> {{vm.torrentLocalInfo.torrent_seeds}}</dd>
|
||
<dt class="h-line">{{ 'TABLE_FIELDS.LEECHED' | translate}}:</dt>
|
||
<dd class="h-line"><span class="glyphicon glyphicon-arrow-down torrent-down"></span> {{vm.torrentLocalInfo.torrent_leechers}}</dd>
|
||
<dt class="h-line">{{ 'TABLE_FIELDS.DOWNLOAD' | translate}}:</dt>
|
||
<dd class="h-line"><span class="glyphicon glyphicon-ok torrent-finished"></span> {{vm.torrentLocalInfo.torrent_finished}}</dd>
|
||
|
||
<div ng-if="vm.torrentLocalInfo.torrent_type == 'tvserial'">
|
||
<dt class="h-line">{{ 'TMDB_FIELDS.THIS_SE' | translate}}:</dt>
|
||
<dd class="h-line">
|
||
<span class="se-info">S{{vm.torrentLocalInfo.torrent_seasons}}E{{vm.torrentLocalInfo.torrent_episodes}}</span>
|
||
</dd>
|
||
</div>
|
||
|
||
<dt class="h-line">{{ 'VIDEO_SIZE' | translate}}:</dt>
|
||
<dd class="h-line">{{vm.torrentLocalInfo.torrent_size | bytes:2}}</dd>
|
||
|
||
<dt class="h-line">{{ 'UPLOAD_TIME' | translate}}:</dt>
|
||
<dd class="h-line">{{vm.torrentLocalInfo.createdat | date: 'yyyy-MM-dd HH:mm:ss'}}</dd>
|
||
|
||
<dt class="h-line">{{ 'ATTRIBUTE_TAGS' | translate}}:</dt>
|
||
<dd class="h-line">
|
||
<div class="list-all-tags">
|
||
<span class="label label-release label-warning">{{ vm.torrentLocalInfo.resource_detail_info.release_date}}</span>
|
||
<span class="label label-hnr-info" ng-if="vm.torrentLocalInfo.torrent_hnr">H&R</span>
|
||
<span class="label label-se-info" ng-if="vm.torrentLocalInfo.torrent_type == 'tvserial'">
|
||
S{{vm.torrentLocalInfo.torrent_seasons}}E{{vm.torrentLocalInfo.torrent_episodes}}
|
||
</span>
|
||
<span ng-repeat="t in vm.torrentLocalInfo.torrent_tags">
|
||
<span class="label label-tag" ng-if="vm.RTS.tagInList(t);">
|
||
{{ 'RESOURCESTAGS.' + vm.RTS.getTagTitle(t) + '.' + t.toUpperCase() | translate}}
|
||
</span>
|
||
</span>
|
||
</div>
|
||
</dd>
|
||
|
||
<dt class="h-line">{{ 'VIDEO_SALE_INFO' | translate}}:</dt>
|
||
<dd class="h-line">
|
||
<span class="label label-sale"
|
||
title="{{vm.TGI.getTorrentSaleTypeDesc(vm.torrentLocalInfo);}} | {{ 'SALE_EXPIRES_TIME' | translate}}: {{vm.torrentLocalInfo.isSaling ? (vm.torrentLocalInfo.torrent_sale_expires | date: 'MM-dd HH:mm') : 'NO'}}"
|
||
ng-class="{'label-default': !vm.torrentLocalInfo.isSaling, 'label-success': vm.torrentLocalInfo.isSaling}">
|
||
{{vm.torrentLocalInfo.torrent_sale_status}} {{vm.torrentLocalInfo.isSaling ? (vm.torrentLocalInfo.torrent_sale_expires | unlife) : ''}}
|
||
</span>
|
||
<!--<span ng-if="vm.torrentLocalInfo.isSaling">-->
|
||
<!--[{{ 'SALE_EXPIRES_TIME' | translate}}: {{vm.torrentLocalInfo.torrent_sale_expires | unlife}}]-->
|
||
<!--</span>-->
|
||
</dd>
|
||
|
||
<div ng-if="vm.torrentLocalInfo.torrent_recommended != 'level0'">
|
||
<dt class="h-line">{{ 'ADMIN_BASIC_RLEVEL_SET' | translate}}:</dt>
|
||
<dd class="h-line">
|
||
<span class="label label-rlevel label-info">
|
||
{{ 'TORRENT_RECOMMEND_LEVEL_ITEM.' + vm.torrentLocalInfo.torrent_recommended.toUpperCase() | translate}}
|
||
</span>
|
||
</dd>
|
||
</div>
|
||
|
||
<dt class="h-line">{{ 'ALL_FILES_LIST' | translate}}:</dt>
|
||
<dd class="h-line">
|
||
<div class="row">
|
||
<div class="col-md-10 all-files">
|
||
<json-tree root-name="vm.torrentLocalInfo._all_files.length + ' files'"
|
||
object="vm.torrentLocalInfo._all_files"></json-tree>
|
||
</div>
|
||
</div>
|
||
</dd>
|
||
|
||
<dt class="h-line" ng-if="vm.torrentLocalInfo.torrent_nfo.length>0">{{ 'VIDEO_NFO' | translate}}:</dt>
|
||
<dd class="h-line" ng-if="vm.torrentLocalInfo.torrent_nfo.length>0">
|
||
<div class="row">
|
||
<div class="col-md-10">
|
||
<textarea class="form-control video-nfo margin-top-10" rows="15" ng-bind="vm.torrentLocalInfo.torrent_nfo"
|
||
readonly></textarea>
|
||
</div>
|
||
</div>
|
||
</dd>
|
||
|
||
<dt class="h-line"></dt>
|
||
<dd class="h-line">
|
||
<div class="down-torrent">
|
||
<button class="btn btn-success" ng-click="vm.DLS.downloadTorrent(vm.torrentLocalInfo._id)"
|
||
translate="DOWNLOAD_TORRENT"></button>
|
||
</div>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
</script>
|
||
|
||
<!-- =================================================================
|
||
subtitleInfo.html
|
||
================================================================== -->
|
||
<script type="text/ng-template" id="subtitleInfo.html">
|
||
<div>
|
||
<span class="xs-show sm-show">
|
||
<h4 class="margin-bottom-30">
|
||
{{'TAB_USER_SUBTITLE' | translate}}:
|
||
</h4>
|
||
</span>
|
||
|
||
<ul class="margin-bottom-30">
|
||
<li class="h-line" translate="SUBTITLE_RULES.0"></li>
|
||
<li class="h-line" translate="SUBTITLE_RULES.1"></li>
|
||
</ul>
|
||
|
||
<dl class="dl-horizontal" ng-if="vm.user">
|
||
<dt class="h-line">{{ 'UPLOAD_SUBTITLE' | translate}}:</dt>
|
||
<dd class="h-line">
|
||
<div class="row">
|
||
<div class="col-md-7">
|
||
<div class="input-group">
|
||
<input type="text" class="form-control" ng-model="vm.sFile.name" disabled>
|
||
|
||
<div class="input-group-btn">
|
||
<button class="btn btn-primary btn-file"
|
||
ngf-select="vm.fileSelected = true; vm.progress = 0;"
|
||
ng-model="vm.sFile"
|
||
accept=".srt,.ass,.zip,.rar,.7z">
|
||
{{ 'SELECT_FILE' | translate}}
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="col-md-4">
|
||
<button class="btn btn-success inline-block"
|
||
ng-click="vm.upload(vm.sFile)">{{ 'DO_UPLOAD' | translate}} ({{vm.progress}}%)
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</dd>
|
||
</dl>
|
||
<div class="row margin-top-50">
|
||
<div class="col-md-10 col-md-offset-1">
|
||
<ol class="subtitle-list">
|
||
<li class="h-line" ng-repeat="s in vm.torrentLocalInfo._subtitles">
|
||
<div>
|
||
<a ng-href="#" ng-click="vm.DLS.downloadSubtitle(vm.torrentLocalInfo._id, s._id);">{{s.subtitle_filename}}</a>
|
||
<span style="font-size: 12px;"> - {{s.subtitle_filesize | bytes: 2}}</span>
|
||
<span style="font-size: 12px; color: #999999;"> - {{s.createdat | date: 'yyyy-MM-dd HH:mm:ss'}} By </span>
|
||
<span style="font-size: 12px;">
|
||
<a ng-click="vm.markLinkClick($event, item);" ng-href="#">{{s.user.displayName}}</a>
|
||
</span>
|
||
<span class="glyphicon glyphicon-remove-circle delete-button"
|
||
title="{{ 'SUBTITLE_DELETE_ICON_TITLE' | translate}}"
|
||
ng-if="s.user._id.toString()==vm.user._id || vm.user.roles[0] == 'admin'"
|
||
ng-click="vm.deleteSubtitle(s);">
|
||
</span>
|
||
</div>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</script>
|
||
|
||
<!-- =================================================================
|
||
userInfo.html
|
||
================================================================== -->
|
||
<script type="text/ng-template" id="userInfo.html">
|
||
<div class="peer-dlist">
|
||
<span class="xs-show sm-show">
|
||
<h4 class="margin-bottom-30">
|
||
{{'TAB_USER_INFO' | translate}}:
|
||
</h4>
|
||
</span>
|
||
|
||
<dl class="dl-horizontal">
|
||
<dt class="h-line text-left">{{ 'TORRENT_FINISHED_USERS' | translate}}:{{vm.torrentLocalInfo.torrent_finished}}</dt>
|
||
<dd class="h-line"></dd>
|
||
</dl>
|
||
<dl class="dl-horizontal" id="top_of_seeder_list">
|
||
<dt class="h-line">{{ 'TORRENT_SEED_USERS' | translate}}:{{vm.torrentLocalInfo.torrent_seeds}}</dt>
|
||
<dd class="h-line"></dd>
|
||
</dl>
|
||
|
||
<div class="table-responsive">
|
||
<table class="table table-hover table-bordered table-condensed tb-peers">
|
||
<thead>
|
||
<tr>
|
||
<th class="text-center">{{ 'TABLE_FIELDS.USERNAME' | translate}}</th>
|
||
<th class="text-center">{{ 'TABLE_FIELDS.UPLOADED' | translate}}</th>
|
||
<th class="text-center">{{ 'TABLE_FIELDS.DOWNLOADED' | translate}}</th>
|
||
<th class="text-center">{{ 'TABLE_FIELDS.RATIO' | translate}}</th>
|
||
<th class="text-center">{{ 'TABLE_FIELDS.FINISHED' | translate}}</th>
|
||
<th class="text-center">{{ 'TABLE_FIELDS.STARTED' | translate}}</th>
|
||
<th class="text-center">{{ 'TABLE_FIELDS.ACTIVE' | translate}}</th>
|
||
<th class="text-center">{{ 'TABLE_FIELDS.CLIENT' | translate}}</th>
|
||
<!--<th class="text-center">{{ 'TABLE_FIELDS.CONNECTABLE' | translate}}</th>-->
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr class="torrent-list-info" ng-repeat="item in vm.seederPagedItems"
|
||
ng-if="item.peer_status == 'seeder'">
|
||
<td class="text-center">
|
||
<span user-info="item.user" info-name></span>
|
||
<!--<span vip-flag="item.user"></span>-->
|
||
<!--<span message-to="item.user" to-class="message-to-icon"></span>-->
|
||
</td>
|
||
<td class="text-center">{{item.peer_uploaded | bytes:2}} | {{item.peer_uspeed | bytes:2}}/s</td>
|
||
<td class="text-center">{{item.peer_downloaded | bytes:2}} | {{item.peer_dspeed | bytes:2}}/s</td>
|
||
<td class="text-center">{{item.peer_ratio | ratio}}</td>
|
||
<td class="text-center">{{item.peer_percent}}%</td>
|
||
<td class="text-center">{{item.startedat | life}}</td>
|
||
<td class="text-center">{{item.last_announce_at | life}}</td>
|
||
<td class="text-center">{{item.user_agent}}</td>
|
||
<!--<td class="text-center">{{item.peer_connectable}}</td>-->
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
|
||
<ul uib-pagination boundary-links="true" max-size="8" items-per-page="vm.peerItemsPerPage" total-items="vm.seederFilterLength"
|
||
ng-model="vm.currentSeederPage"
|
||
ng-change="vm.seederPageChanged()"
|
||
first-text="{{ 'PAGE_TEXT_FIRST' | translate}}" previous-text="{{ 'PAGE_TEXT_PREVIOUS' | translate}}"
|
||
next-text="{{ 'PAGE_TEXT_NEXT' | translate}}" last-text="{{ 'PAGE_TEXT_LAST' | translate}}">
|
||
</ul>
|
||
|
||
<dl class="dl-horizontal" id="top_of_leecher_list">
|
||
<dt class="h-line">{{ 'TORRENT_LEECHER_USERS' | translate}}:{{vm.torrentLocalInfo.torrent_leechers}}</dt>
|
||
<dd class="h-line"></dd>
|
||
</dl>
|
||
|
||
<div class="table-responsive">
|
||
<table class="table table-hover table-bordered table-condensed tb-peers">
|
||
<thead>
|
||
<tr>
|
||
<th class="text-center">{{ 'TABLE_FIELDS.USERNAME' | translate}}</th>
|
||
<th class="text-center">{{ 'TABLE_FIELDS.UPLOADED' | translate}}</th>
|
||
<th class="text-center">{{ 'TABLE_FIELDS.DOWNLOADED' | translate}}</th>
|
||
<th class="text-center">{{ 'TABLE_FIELDS.RATIO' | translate}}</th>
|
||
<th class="text-center">{{ 'TABLE_FIELDS.FINISHED' | translate}}</th>
|
||
<th class="text-center">{{ 'TABLE_FIELDS.STARTED' | translate}}</th>
|
||
<th class="text-center">{{ 'TABLE_FIELDS.ACTIVE' | translate}}</th>
|
||
<th class="text-center">{{ 'TABLE_FIELDS.CLIENT' | translate}}</th>
|
||
<!--<th class="text-center">{{ 'TABLE_FIELDS.CONNECTABLE' | translate}}</th>-->
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr class="torrent-list-info" ng-repeat="item in vm.leecherPagedItems"
|
||
ng-if="item.peer_status == 'leecher'">
|
||
<td class="text-center">
|
||
<span user-info="item.user" info-name></span>
|
||
<!--<span vip-flag="item.user"></span>-->
|
||
<!--<span message-to="item.user" to-class="message-to-icon"></span>-->
|
||
</td>
|
||
<td class="text-center">{{item.peer_uploaded | bytes:2}} | {{item.peer_uspeed | bytes:2}}/s</td>
|
||
<td class="text-center">{{item.peer_downloaded | bytes:2}} | {{item.peer_dspeed | bytes:2}}/s</td>
|
||
<td class="text-center">{{item.peer_ratio | ratio}}</td>
|
||
<td class="text-center">{{item.peer_percent}}%</td>
|
||
<td class="text-center">{{item.startedat | life}}</td>
|
||
<td class="text-center">{{item.last_announce_at | life}}</td>
|
||
<td class="text-center">{{item.user_agent}}</td>
|
||
<!--<td class="text-center">{{item.peer_connectable}}</td>-->
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
|
||
<ul uib-pagination boundary-links="true" max-size="8" items-per-page="vm.peerItemsPerPage" total-items="vm.leecherFilterLength"
|
||
ng-model="vm.currentLeecherPage"
|
||
ng-change="vm.leecherPageChanged()"
|
||
first-text="{{ 'PAGE_TEXT_FIRST' | translate}}" previous-text="{{ 'PAGE_TEXT_PREVIOUS' | translate}}"
|
||
next-text="{{ 'PAGE_TEXT_NEXT' | translate}}" last-text="{{ 'PAGE_TEXT_LAST' | translate}}">
|
||
</ul>
|
||
</div>
|
||
</script>
|
||
|
||
<!-- =================================================================
|
||
otherTorrents.html
|
||
================================================================== -->
|
||
<script type="text/ng-template" id="otherTorrents.html">
|
||
<div>
|
||
<span class="xs-show sm-show">
|
||
<h4 class="margin-bottom-30">
|
||
{{'TAB_USER_INFO' | translate}}:
|
||
</h4>
|
||
</span>
|
||
|
||
<p><strong translate="OTHER_TORRENT_LIST_TITLE" translate-values="{x: vm.torrentLocalInfo._other_torrents.length}"></strong></p>
|
||
|
||
<div class="table-responsive">
|
||
<table class="table table-hover tb-v-middle table-bordered tb-other-torrents">
|
||
<thead>
|
||
<tr>
|
||
<th>{{ 'TABLE_FIELDS.INFO' | translate}}</th>
|
||
<th class="text-center">{{ 'TABLE_FIELDS.LIFETIME' | translate}}</th>
|
||
<th class="text-center">{{ 'TABLE_FIELDS.SIZE' | translate}}</th>
|
||
<th>
|
||
<abbr title="{{ 'TABLE_FIELDS.ABBR_SEEDS_LEECHERS_FINISHED' | translate}}" class="initialism">
|
||
{{ 'TABLE_FIELDS.SEEDS_LEECHERS_FINISHED' | translate}}
|
||
</abbr>
|
||
</th>
|
||
<th class="text-center">{{ 'TABLE_FIELDS.PUBLISHER' | translate}}</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr class="torrent-list-info" ng-repeat="item in vm.torrentLocalInfo._other_torrents"
|
||
ng-click="vm.TGI.openTorrentDetailInfo(item._id);">
|
||
<td class="col-md-8 td-v-middle td-text-overflow">
|
||
<div class="other-torrent-info">
|
||
<div class="torrent-filename text-long"><a
|
||
ui-sref="torrents.view({torrentId: item._id})">{{item.torrent_filename}}</a></div>
|
||
|
||
<div class="list-all-tags margin-top-10">
|
||
<span ng-if="vm.torrentLocalInfo.resource_detail_info.release_date">
|
||
<span class="label label-warning" ng-click="$event.stopPropagation();">
|
||
{{ vm.torrentLocalInfo.resource_detail_info.release_date}}
|
||
</span>
|
||
</span>
|
||
<span class="label label-sale" ng-if="item.isSaling"
|
||
title="{{vm.TGI.getTorrentSaleTypeDesc(item);}} | {{ 'SALE_EXPIRES_TIME' | translate}}: {{item.torrent_sale_expires | date: 'MM-dd HH:mm'}}"
|
||
ng-click="$event.stopPropagation();"
|
||
ng-class="{'label-default': !item.isSaling, 'label-success': item.isSaling}">
|
||
{{item.torrent_sale_status}} {{item.torrent_sale_expires | unlife}}
|
||
</span>
|
||
<span class="label label-se-info" ng-if="item.torrent_type == 'tvserial'"
|
||
ng-click="$event.stopPropagation();">S{{item.torrent_seasons}}E{{item.torrent_episodes}}</span>
|
||
|
||
<span class="label label-hnr-info" ng-if="item.torrent_hnr"
|
||
ng-click="$event.stopPropagation();">H&R</span>
|
||
|
||
<span ng-repeat="t in item.torrent_tags">
|
||
<span class="label label-tag" ng-if="vm.RTS.tagInList(t);" ng-click="$event.stopPropagation();">
|
||
{{ 'RESOURCESTAGS.' + vm.RTS.getTagTitle(t) + '.' + t.toUpperCase() | translate}}
|
||
</span>
|
||
</span>
|
||
<span class="label label-download text-uppercase"
|
||
title="{{ 'TITLE_ALT.DOWNLOAD_TORRENT' | translate}}"
|
||
ng-click="vm.DLS.downloadTorrent(item._id); $event.stopPropagation();">
|
||
<i class="glyphicon glyphicon-arrow-down"></i>
|
||
</span>
|
||
</div>
|
||
</div>
|
||
</td>
|
||
<td class="col-md-1 td-v-middle text-center td-life">{{item.createdat | life}}</td>
|
||
<td class="col-md-1 td-v-middle text-center td-size">{{item.torrent_size | bytes:2}}</td>
|
||
<td class="col-md-1 td-v-middle list-user-info td-user-info">
|
||
<p class="no-margin-p" title="{{ 'TITLE_ALT.SEEDS' | translate}}">
|
||
<span class="glyphicon glyphicon-arrow-up torrent-up"></span>
|
||
{{item.torrent_seeds}}
|
||
</p>
|
||
|
||
<p class="no-margin-p" title="{{ 'TITLE_ALT.LEECHERS' | translate}}">
|
||
<span class="glyphicon glyphicon-arrow-down torrent-down"></span>
|
||
{{item.torrent_leechers}}
|
||
</p>
|
||
|
||
<p class="no-margin-p" title="{{ 'TITLE_ALT.FINISHED' | translate}}">
|
||
<span class="glyphicon glyphicon-ok torrent-finished"></span>
|
||
{{item.torrent_finished}}
|
||
</p>
|
||
</td>
|
||
<td class="col-md-1 td-v-middle text-center td-uploader">
|
||
<span ng-if="!item.isAnonymous" user-info="item.user" info-name></span>
|
||
<span ng-if="item.isAnonymous">{{ 'ANONYMOUS' | translate }}</span>
|
||
|
||
<div maker-info="item.maker"></div>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</script>
|
||
|
||
<!-- =================================================================
|
||
thumbsInfo.html
|
||
================================================================== -->
|
||
<script type="text/ng-template" id="thumbsInfo.html">
|
||
<div>
|
||
<span class="xs-show sm-show">
|
||
<h4 class="margin-bottom-30">
|
||
{{'TAB_THUMBS_LIST' | translate}}:
|
||
</h4>
|
||
</span>
|
||
|
||
<div class="text-center"><h4><a href="#"
|
||
ng-click="vm.beginThumbsUp(vm.torrentLocalInfo);">{{'THUMBS_UP_TORRENT' | translate: ({number: vm.scoreConfig.action.thumbsUpScoreOfTorrentTo.value}) }}</a>
|
||
</h4></div>
|
||
</div>
|
||
<div class="padding-top-20">
|
||
<div class="thumbs-up-list" ng-if="vm.torrentLocalInfo._thumbs.length">
|
||
<div class="thumbs-header" translate="FORUMS.THUMBS_LIST_HEADER"
|
||
translate-values="{number: vm.torrentLocalInfo._thumbs.length}"></div>
|
||
<div class="thumbs-users panel-collapsed" id="thumbs-{{rep._id}}">
|
||
<span class="thumbs-item"
|
||
ng-repeat="sl in vm.torrentLocalInfo._thumbs track by $index">
|
||
<span user-info="sl.user" info-name></span>
|
||
<!--<span vip-flag="sl.user"></span>-->
|
||
<!--<span message-to="sl.user" to-class="message-to-icon"></span>-->
|
||
</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</script>
|
||
|
||
<!-- =================================================================
|
||
myPanel.html
|
||
================================================================== -->
|
||
<script type="text/ng-template" id="myPanel.html">
|
||
<div>
|
||
<span class="xs-show sm-show">
|
||
<h4 class="margin-bottom-30">
|
||
{{'TAB_MY_PANEL' | translate}}:
|
||
</h4>
|
||
</span>
|
||
|
||
<dl class="dl-horizontal">
|
||
<dt class="h-line"></dt>
|
||
<dd class="h-line margin-bottom-30">
|
||
<ul>
|
||
<li translate="MY_TORRENT_RULES.0"></li>
|
||
<li translate="MY_TORRENT_RULES.1"
|
||
translate-values='{sMail: vm.supportConfig.supportMailAddress, sNameDesc: vm.supportConfig.supportGroupNameDesc, sName: vm.supportConfig.supportGroupName}'></li>
|
||
</ul>
|
||
</dd>
|
||
|
||
<dt class="h-line"></dt>
|
||
<dd class="h-line">
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
</script>
|
||
|
||
<!-- =================================================================
|
||
adminPanel.html
|
||
================================================================== -->
|
||
<script type="text/ng-template" id="adminPanel.html">
|
||
<div>
|
||
<span class="xs-show sm-show">
|
||
<h4 class="margin-bottom-30">
|
||
{{'TAB_ADMIN_PANEL' | translate}}:
|
||
</h4>
|
||
</span>
|
||
|
||
<dl class="dl-horizontal">
|
||
<dt class="h-line">{{ 'ADMIN_BASIC_COMMAND' | translate}}:</dt>
|
||
<dd class="h-line">
|
||
<button class="btn btn-default btn-sm"
|
||
ng-if="vm.torrentLocalInfo.resource_detail_info.id"
|
||
ng-click="vm.updateTorrent();">
|
||
{{ 'ADMIN_BASIC_UPDATE' | translate}}
|
||
</button>
|
||
<button class="btn btn-default btn-sm" ng-click="vm.deleteTorrent();">{{ 'ADMIN_BASIC_DELETE' | translate}}</button>
|
||
<button class="btn btn-default btn-sm"
|
||
ng-click="vm.toggleHnR();">{{ (vm.torrentLocalInfo.torrent_hnr ? 'ADMIN_BASIC_UNSET_HNR' : 'ADMIN_BASIC_SET_HNR') | translate}}
|
||
</button>
|
||
<button class="btn btn-default btn-sm"
|
||
ng-click="vm.toggleVIP();">{{ (vm.torrentLocalInfo.torrent_vip ? 'ADMIN_BASIC_UNSET_VIP' : 'ADMIN_BASIC_SET_VIP') | translate}}
|
||
</button>
|
||
<button class="btn btn-default btn-sm"
|
||
ng-click="vm.editTags($event);">{{ 'ADMIN_BASIC_EDIT_TAGS' | translate}}
|
||
</button>
|
||
</dd>
|
||
|
||
<div class="margin-top-10" ng-if="vm.torrentLocalInfo.torrent_type=='movie' && vm.showCollectionCommand()">
|
||
<dt class="h-line">{{ 'ADMIN_COLLECTION_COMMAND' | translate}}:</dt>
|
||
<dd class="h-line">
|
||
<button class="btn btn-default btn-sm"
|
||
ng-click="vm.createCollection($event);">{{ 'ADMIN_COLLECTION_CREATE' | translate}}
|
||
</button>
|
||
<button class="btn btn-default btn-sm"
|
||
ng-click="vm.insertIntoCollection($event);">{{ 'ADMIN_COLLECTION_ADDINTO' | translate}}
|
||
</button>
|
||
</dd>
|
||
</div>
|
||
|
||
<dt class="h-line">{{ 'ADMIN_SALE_TYPE_SET' | translate}}:</dt>
|
||
<dd class="h-line">
|
||
<mark>{{vm.TGI.getTorrentSaleTypeDesc(vm.torrentLocalInfo);}}</mark>
|
||
</dd>
|
||
|
||
<div class="padding-top-10 margin-left-50">
|
||
<div class="btn-group sales-btn-group text-center">
|
||
<label ng-repeat="st in vm.torrentSalesType.value"
|
||
class="btn btn-sm" ng-model="vm.model_salestype" uib-btn-radio="'{{st.name}}'" uncheckable
|
||
ng-class="{'btn-default':vm.torrentLocalInfo.torrent_sale_status != st.name, 'btn-success':vm.torrentLocalInfo.torrent_sale_status == st.name}"
|
||
ng-click="vm.setSaleType();">
|
||
<small>{{st.name}}</small>
|
||
</label>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="margin-top-20"></div>
|
||
|
||
<dt class="h-line">{{ 'ADMIN_RLEVEL_SET' | translate}}:</dt>
|
||
<dd class="h-line">
|
||
</dd>
|
||
|
||
<div class="padding-top-10 margin-left-50">
|
||
<div class="btn-group sales-btn-group text-center">
|
||
<label ng-repeat="litem in vm.torrentRLevels.value"
|
||
class="btn btn-sm" ng-model="vm.model_rlevel"
|
||
uib-btn-radio="'{{litem.value}}'" uncheckable
|
||
ng-class="{'btn-default':vm.torrentLocalInfo.torrent_recommended != litem.value, 'btn-success':vm.torrentLocalInfo.torrent_recommended == litem.value}"
|
||
ng-click="vm.setRecommendLevel();">
|
||
<small>{{ 'TORRENT_RECOMMEND_LEVEL_ITEM.' + litem.name | translate}}</small>
|
||
</label>
|
||
</div>
|
||
</div>
|
||
|
||
</dl>
|
||
</div>
|
||
</script>
|
||
|
||
</section>
|