mirror of
				https://github.com/sb745/NyaaV3.git
				synced 2025-11-04 01:45:46 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			219 lines
		
	
	
		
			No EOL
		
	
	
		
			8.6 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			219 lines
		
	
	
		
			No EOL
		
	
	
		
			8.6 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
{% extends "layout.html" %}
 | 
						|
{% block title %}{{ torrent.display_name }} :: {{ config.SITE_NAME }}{% endblock %}
 | 
						|
{% block metatags %}
 | 
						|
{% set uploader_name = torrent.user.username if (torrent.user and not torrent.anonymous) else 'Anonymous' %}
 | 
						|
<meta property="og:description" content="{{ category_name(torrent.sub_category.id_as_string) }} | {{ torrent.filesize | filesizeformat(True) }} | Uploaded by {{ uploader_name }} on {{ torrent.created_time.strftime('%Y-%m-%d') }}">
 | 
						|
{% endblock %}
 | 
						|
{% block body %}
 | 
						|
{% from "_formhelpers.html" import render_field %}
 | 
						|
<div class="panel panel-{% if torrent.deleted %}deleted{% elif torrent.remake %}danger{% elif torrent.trusted %}success{% else %}default{% endif %}">
 | 
						|
	<div class="panel-heading"{% if torrent.hidden %} style="background-color: darkgray;"{% endif %}>
 | 
						|
		<h3 class="panel-title">
 | 
						|
			{% if can_edit %}
 | 
						|
			<a href="{{ url_for('edit_torrent', torrent_id=torrent.id) }}" title="Edit torrent"><i class="fa fa-fw fa-pencil"></i></a>
 | 
						|
			{% endif %}
 | 
						|
			{{ torrent.display_name }}
 | 
						|
		</h3>
 | 
						|
	</div>
 | 
						|
	<div class="panel-body">
 | 
						|
		<div class="row">
 | 
						|
			<div class="col-md-1">Category:</div>
 | 
						|
			<div class="col-md-5">
 | 
						|
				<a href="{{ url_for("home", c=torrent.main_category.id_as_string) }}">{{ torrent.main_category.name }}</a> - <a href="{{ url_for("home", c=torrent.sub_category.id_as_string) }}">{{ torrent.sub_category.name }}</a>
 | 
						|
			</div>
 | 
						|
 | 
						|
			<div class="col-md-1">Date:</div>
 | 
						|
			<div class="col-md-5" data-timestamp="{{ torrent.created_utc_timestamp|int }}">{{ torrent.created_time.strftime('%Y-%m-%d %H:%M UTC') }}</div>
 | 
						|
		</div>
 | 
						|
 | 
						|
		<div class="row">
 | 
						|
			<div class="col-md-1">Submitter:</div>
 | 
						|
			<div class="col-md-5">
 | 
						|
				{% set user_url = torrent.user and url_for('view_user', user_name=torrent.user.username) %}
 | 
						|
				{%- if not torrent.anonymous and torrent.user -%}
 | 
						|
				<a class="text-{{ torrent.user.userlevel_color }}" href="{{ user_url }}">{{ torrent.user.username }}</a>
 | 
						|
				{%- else -%}
 | 
						|
				Anonymous {% if torrent.user and (g.user == torrent.user or g.user.is_moderator) %}(<a href="{{ user_url }}">{{ torrent.user.username }}</a>){% endif %}
 | 
						|
				{%- endif -%}
 | 
						|
				{% if g.user and g.user.is_superadmin and torrent.uploader_ip %}
 | 
						|
				({{ torrent.uploader_ip_string }})
 | 
						|
				{% endif %}
 | 
						|
			</div>
 | 
						|
 | 
						|
			<div class="col-md-1">Seeders:</div>
 | 
						|
			<div class="col-md-5"><span style="color: green;">{% if config.ENABLE_SHOW_STATS %}{{ torrent.stats.seed_count }}{% else %}Coming soon{% endif %}</span></div>
 | 
						|
 | 
						|
		</div>
 | 
						|
 | 
						|
		<div class="row">
 | 
						|
			<div class="col-md-1">Information:</div>
 | 
						|
			<div class="col-md-5">
 | 
						|
				{% if torrent.information %}
 | 
						|
				{{ torrent.information_as_link | safe }}
 | 
						|
				{% else %}
 | 
						|
				No information.
 | 
						|
				{% endif%}
 | 
						|
			</div>
 | 
						|
 | 
						|
			<div class="col-md-1">Leechers:</div>
 | 
						|
			<div class="col-md-5"><span style="color: red;">{% if config.ENABLE_SHOW_STATS %}{{ torrent.stats.leech_count }}{% else %}Coming soon{% endif %}</span></div>
 | 
						|
		</div>
 | 
						|
 | 
						|
		<div class="row">
 | 
						|
			<div class="col-md-1">File size:</div>
 | 
						|
			<div class="col-md-5">{{ torrent.filesize | filesizeformat(True) }}</div>
 | 
						|
 | 
						|
			<div class="col-md-1">Completed:</div>
 | 
						|
			<div class="col-md-5">{% if config.ENABLE_SHOW_STATS %}{{ torrent.stats.download_count }}{% else %}Coming soon{% endif %}</div>
 | 
						|
		</div>
 | 
						|
		<div class="row">
 | 
						|
			<div class="col-md-offset-6 col-md-1">Info hash:</div>
 | 
						|
			<div class="col-md-5"><kbd>{{ torrent.info_hash_as_hex }}</kbd></div>
 | 
						|
		</div>
 | 
						|
	</div>
 | 
						|
 | 
						|
	<div class="panel-footer clearfix">
 | 
						|
		{% if torrent.has_torrent %}<a href="{{ url_for('download_torrent', torrent_id=torrent.id )}}"><i class="fa fa-download fa-fw"></i>Download Torrent</a> or {% endif %}<a href="{{ torrent.magnet_uri }}" class="card-footer-item"><i class="fa fa-magnet fa-fw"></i>Magnet</a>
 | 
						|
		<button type="button" class="btn btn-danger pull-right" data-toggle="modal" data-target="#reportModal">
 | 
						|
			Report
 | 
						|
		</button>
 | 
						|
	</div>
 | 
						|
</div>
 | 
						|
 | 
						|
<div class="panel panel-default">
 | 
						|
	<div class="panel-body" id="torrent-description">
 | 
						|
		{% if torrent.description %}
 | 
						|
		{# Escape newlines into html entities because CF strips blank newlines #}
 | 
						|
		{{ torrent.description | escape | replace('\r\n', '\n') | replace('\n', '
'|safe) }}
 | 
						|
		{% else %}
 | 
						|
		#### No description.
 | 
						|
		{% endif%}
 | 
						|
	</div>
 | 
						|
</div>
 | 
						|
 | 
						|
{% if files and files.__len__() <= config.MAX_FILES_VIEW %}
 | 
						|
<div class="panel panel-default">
 | 
						|
	<div class="panel-heading">
 | 
						|
		<h3 class="panel-title">File list</h3>
 | 
						|
	</div>
 | 
						|
 | 
						|
	<div class="torrent-file-list panel-body">
 | 
						|
		<ul>
 | 
						|
		{% for key, value in files.items() recursive -%}
 | 
						|
		{% if value is iterable %}
 | 
						|
			{% set pre_expanded = not loop.depth0 and value.items()|length <= 20 %}
 | 
						|
			<li>
 | 
						|
				<a href="" class="folder"><i class="fa fa-folder{% if pre_expanded %}-open{% endif %}"></i>{{ key }}</a>
 | 
						|
				<ul{% if pre_expanded %} data-show="yes"{% endif %}>{{ '\n' + loop(value.items()) }}
 | 
						|
				</ul>
 | 
						|
			</li>
 | 
						|
		{% else %}
 | 
						|
			<li><i class="fa fa-file"></i>{{ key }} <span class="file-size">({{ value | filesizeformat(True) }})</span></a></li>
 | 
						|
		{% endif %}
 | 
						|
		{% endfor %}
 | 
						|
		</ul>
 | 
						|
	</div>
 | 
						|
</div>
 | 
						|
{% elif files %}
 | 
						|
<div class="panel panel-default">
 | 
						|
	<div class="panel-heading panel-heading-collapse">
 | 
						|
		<h3 class="panel-title">
 | 
						|
			Too many files to display.
 | 
						|
		</h3>
 | 
						|
	</div>
 | 
						|
</div>
 | 
						|
{% else %}
 | 
						|
<div class="panel panel-default">
 | 
						|
	<div class="panel-heading panel-heading-collapse">
 | 
						|
		<h3 class="panel-title">
 | 
						|
			File list is not available for this torrent.
 | 
						|
		</h3>
 | 
						|
	</div>
 | 
						|
</div>
 | 
						|
{% endif %}
 | 
						|
 | 
						|
<div id="comments" class="panel panel-default">
 | 
						|
	<div class="panel-heading">
 | 
						|
		<h3 class="panel-title">
 | 
						|
			Comments - {{ comments | length }}
 | 
						|
		</h3>
 | 
						|
	</div>
 | 
						|
	{% for comment in comments %}
 | 
						|
	<div class="panel panel-default comment-panel" id="com-{{ loop.index }}">
 | 
						|
		<div class="panel-body">
 | 
						|
			<div class="col-md-2">
 | 
						|
				<p>
 | 
						|
					<a class="text-{{ comment.user.userlevel_color }}" href="{{ url_for('view_user', user_name=comment.user.username) }}">{{ comment.user.username }}</a>
 | 
						|
					{% if comment.user.id == torrent.uploader_id and not torrent.anonymous %}
 | 
						|
					(uploader)
 | 
						|
					{% endif %}
 | 
						|
				</p>
 | 
						|
				<p><img class="avatar" src="{{ comment.user.gravatar_url() }}" alt="{{ comment.user.userlevel_str }}"></p>
 | 
						|
			</div>
 | 
						|
			<div class="col-md-10">
 | 
						|
				<div class="row">
 | 
						|
					<a href="#com-{{ loop.index }}"><small data-timestamp-swap data-timestamp="{{ comment.created_utc_timestamp|int }}">{{ comment.created_time.strftime('%Y-%m-%d %H:%M UTC') }}</small></a>
 | 
						|
					{% if g.user.is_moderator or g.user.id == comment.user_id %}
 | 
						|
					<form class="delete-comment-form" action="{{ url_for('delete_comment', torrent_id=torrent.id, comment_id=comment.id) }}" method="POST">
 | 
						|
						<button name="submit" type="submit" class="btn btn-danger btn-xs" title="Delete">Delete</button>
 | 
						|
					</form>
 | 
						|
					{% endif %}
 | 
						|
				</div>
 | 
						|
				<div class="row">
 | 
						|
					{# Escape newlines into html entities because CF strips blank newlines #}
 | 
						|
					<div class="comment-content" id="torrent-comment{{ comment.id }}">{{ comment.text }}</div>
 | 
						|
				</div>
 | 
						|
			</div>
 | 
						|
		</div>
 | 
						|
	</div>
 | 
						|
	<script type="text/javascript">
 | 
						|
		var target = document.getElementById('torrent-comment{{ comment.id }}');
 | 
						|
		var text = target.innerHTML;
 | 
						|
		var reader = new commonmark.Parser({safe: true});
 | 
						|
		var writer = new commonmark.HtmlRenderer({safe: true, softbreak: '<br />'});
 | 
						|
		var parsed = reader.parse(text.trim());
 | 
						|
		target.innerHTML = writer.render(parsed);
 | 
						|
	</script>
 | 
						|
	{% endfor %}
 | 
						|
	{% if comment_form %}
 | 
						|
	<form class="comment-box" method="POST">
 | 
						|
		{{ comment_form.csrf_token }}
 | 
						|
		{{ render_field(comment_form.comment, class_='form-control') }}
 | 
						|
		<input type="submit" value="Submit" class="btn btn-success btn-sm">
 | 
						|
	</form>
 | 
						|
	{% endif %}
 | 
						|
</div>
 | 
						|
 | 
						|
	<div class="modal fade" id="reportModal" tabindex="-1" role="dialog" aria-labelledby="reportModalLabel">
 | 
						|
	<div class="modal-dialog" role="document">
 | 
						|
		<div class="modal-content">
 | 
						|
			<div class="modal-header">
 | 
						|
				<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
 | 
						|
						aria-hidden="true">×</span></button>
 | 
						|
				<h4 class="modal-title">Report torrent #{{ torrent.id }}</h4>
 | 
						|
			</div>
 | 
						|
			<div class="modal-body">
 | 
						|
				<form method="POST" action="{{ request.url }}/submit_report">
 | 
						|
					{{ report_form.csrf_token }}
 | 
						|
					{{ render_field(report_form.reason, class_='form-control', maxlength=255) }}
 | 
						|
					<div style="float: right;">
 | 
						|
						<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
 | 
						|
						<button type="submit" class="btn btn-danger">Report</button>
 | 
						|
					</div>
 | 
						|
				</form>
 | 
						|
			</div>
 | 
						|
			<div class="modal-footer" style="border-top: none;">
 | 
						|
			</div>
 | 
						|
		</div>
 | 
						|
	</div>
 | 
						|
 | 
						|
<script>
 | 
						|
	var target = document.getElementById('torrent-description');
 | 
						|
	var text = target.innerHTML;
 | 
						|
	var reader = new commonmark.Parser({safe: true});
 | 
						|
	var writer = new commonmark.HtmlRenderer({safe: true, softbreak: '<br />'});
 | 
						|
	var parsed = reader.parse(text.trim());
 | 
						|
	target.innerHTML = writer.render(parsed);
 | 
						|
</script>
 | 
						|
 | 
						|
{% endblock %} |