mirror of
https://github.com/YGGverse/YGGtracker.git
synced 2026-03-31 17:15:38 +00:00
init torrent categories feature #26
This commit is contained in:
parent
35babed517
commit
701b448cd6
18 changed files with 1113 additions and 77 deletions
109
templates/default/torrent/edit/categories.html.twig
Normal file
109
templates/default/torrent/edit/categories.html.twig
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
{% extends 'default/layout.html.twig' %}
|
||||
{% block title %}{{'Edit categories'|trans }} - {{'Torrent'|trans }} #{{ torrentId }} - {{ name }}{% endblock %}
|
||||
{% block main_content %}
|
||||
<div class="padding-24-px margin-y-8-px border-radius-3-px background-color-night">
|
||||
<div class="margin-b-16-px padding-b-16-px border-bottom-default">
|
||||
<h1>
|
||||
{{'Edit categories for torrent' | trans }}
|
||||
<a href="{{ path('torrent_info', { torrentId : torrentId }) }}">#{{ torrentId }}</a>
|
||||
</h1>
|
||||
</div>
|
||||
<form name="categories" method="post" action="{{ path('torrent_categories_edit', { torrentId : torrentId }) }}">
|
||||
<div class="margin-y-16-px">
|
||||
<label for="categories">
|
||||
{{'Content category'|trans }}
|
||||
</label>
|
||||
<sub class="opacity-0 parent-hover-opacity-09" title="{{ 'This torrent have selected categories' | trans }}">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zm.93-9.412-1 4.705c-.07.34.029.533.304.533.194 0 .487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703 0-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381 2.29-.287zM8 5.5a1 1 0 1 1 0-2 1 1 0 0 1 0 2z"/>
|
||||
</svg>
|
||||
</sub>
|
||||
{% for error in form.categories.error %}
|
||||
<div class="text-color-red margin-y-8-px">
|
||||
{{ error }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
<div class="margin-t-8-px margin-b-16-px">
|
||||
{% for category in categories | sort %}
|
||||
<div class="margin-t-8-px margin-b-4-px margin-r-8-px display-inline-block min-width-120-px">
|
||||
{% if category in form.categories.attribute.value %}
|
||||
<input type="checkbox" name="categories[]" id="{{ category }}" value="{{ category }}" checked="checked" />
|
||||
{% else %}
|
||||
<input type="checkbox" name="categories[]" id="{{ category }}" value="{{ category }}" />
|
||||
{% endif %}
|
||||
<label class="margin-l-4-px" for="{{ category }}">
|
||||
{{ category | u.title }}
|
||||
</label>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{#
|
||||
<option class="padding-x-8-px padding-y-8-px" value="other">
|
||||
{{'Other...'|trans }}
|
||||
</option>
|
||||
#}
|
||||
</div>
|
||||
<div class="margin-b-16-px border-bottom-default"></div>
|
||||
</div>
|
||||
<div class="text-right">
|
||||
<a class="margin-r-8-px" href="{{ path('torrent_info', { torrentId : torrentId }) }}">
|
||||
{{'cancel'|trans }}
|
||||
</a>
|
||||
<input class="button-green" type="submit" value="{{'Submit'|trans }}" />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
{% for edition in editions %}
|
||||
<div class="padding-x-24-px padding-y-16-px margin-y-8-px border-radius-3-px {% if edition.active %}background-color-night-light{% else %}background-color-night{% endif %} ">
|
||||
{% if edition.active %}
|
||||
{{ edition.added | format_ago }}
|
||||
{% else %}
|
||||
<a href="{{ path('torrent_categories_edit', { torrentId : torrentId, torrentCategoriesId : edition.id }) }}">
|
||||
{{ edition.added | format_ago }}
|
||||
</a>
|
||||
{% endif %}
|
||||
{{ 'by'|trans }}
|
||||
<a href="{{ path('user_info', { userId : edition.user.id }) }}">
|
||||
<img class="border-radius-50 border-color-default vertical-align-middle" src="{{ edition.user.identicon }}" alt="{{'identicon'|trans }}" />
|
||||
</a>
|
||||
<div class="float-right">
|
||||
{% if session.moderator or session.owner %}
|
||||
<a class="margin-r-8-px text-color-red" href="{{ path('torrent_categories_delete', { torrentId : torrentId, torrentCategoriesId : edition.id }) }}" title="{{ 'Delete' | trans }}">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-x-circle" viewBox="0 0 16 16">
|
||||
<path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z"/>
|
||||
<path d="M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z"/>
|
||||
</svg>
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if edition.approved %}
|
||||
{% if session.moderator %}
|
||||
<a href="{{ path('torrent_categories_approve', { torrentId : torrentId, torrentCategoriesId : edition.id }) }}" title="{{ 'Disapprove' | trans }}">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05z"/>
|
||||
</svg>
|
||||
</a>
|
||||
{% else %}
|
||||
<span title="{{ 'Approved' | trans }}">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05z"/>
|
||||
</svg>
|
||||
</span>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% if session.moderator %}
|
||||
<a href="{{ path('torrent_categories_approve', { torrentId : torrentId, torrentCategoriesId : edition.id }) }}" title="{{ 'Approve' | trans }}">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hourglass" viewBox="0 0 16 16">
|
||||
<path d="M2 1.5a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-1v1a4.5 4.5 0 0 1-2.557 4.06c-.29.139-.443.377-.443.59v.7c0 .213.154.451.443.59A4.5 4.5 0 0 1 12.5 13v1h1a.5.5 0 0 1 0 1h-11a.5.5 0 1 1 0-1h1v-1a4.5 4.5 0 0 1 2.557-4.06c.29-.139.443-.377.443-.59v-.7c0-.213-.154-.451-.443-.59A4.5 4.5 0 0 1 3.5 3V2h-1a.5.5 0 0 1-.5-.5zm2.5.5v1a3.5 3.5 0 0 0 1.989 3.158c.533.256 1.011.791 1.011 1.491v.702c0 .7-.478 1.235-1.011 1.491A3.5 3.5 0 0 0 4.5 13v1h7v-1a3.5 3.5 0 0 0-1.989-3.158C8.978 9.586 8.5 9.052 8.5 8.351v-.702c0-.7.478-1.235 1.011-1.491A3.5 3.5 0 0 0 11.5 3V2h-7z"/>
|
||||
</svg>
|
||||
</a>
|
||||
{% else %}
|
||||
<span title="{{ 'Waiting for approve' | trans }}">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-hourglass" viewBox="0 0 16 16">
|
||||
<path d="M2 1.5a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-1v1a4.5 4.5 0 0 1-2.557 4.06c-.29.139-.443.377-.443.59v.7c0 .213.154.451.443.59A4.5 4.5 0 0 1 12.5 13v1h1a.5.5 0 0 1 0 1h-11a.5.5 0 1 1 0-1h1v-1a4.5 4.5 0 0 1 2.557-4.06c.29-.139.443-.377.443-.59v-.7c0-.213-.154-.451-.443-.59A4.5 4.5 0 0 1 3.5 3V2h-1a.5.5 0 0 1-.5-.5zm2.5.5v1a3.5 3.5 0 0 0 1.989 3.158c.533.256 1.011.791 1.011 1.491v.702c0 .7-.478 1.235-1.011 1.491A3.5 3.5 0 0 0 4.5 13v1h7v-1a3.5 3.5 0 0 0-1.989-3.158C8.978 9.586 8.5 9.052 8.5 8.351v-.702c0-.7.478-1.235 1.011-1.491A3.5 3.5 0 0 0 11.5 3V2h-7z"/>
|
||||
</svg>
|
||||
</span>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endblock %}
|
||||
|
|
@ -24,7 +24,7 @@
|
|||
</div>
|
||||
{% endfor %}
|
||||
<div class="margin-t-8-px margin-b-16-px">
|
||||
{% for locale in locales %}
|
||||
{% for locale in locales | sort %}
|
||||
<div class="margin-t-8-px margin-b-4-px margin-r-8-px display-inline-block min-width-120-px">
|
||||
{% if locale in form.locales.attribute.value %}
|
||||
<input type="checkbox" name="locales[]" id="{{ locale }}" value="{{ locale }}" checked="checked" />
|
||||
|
|
|
|||
|
|
@ -339,12 +339,28 @@
|
|||
<path d="M12.854.146a.5.5 0 0 0-.707 0L10.5 1.793 14.207 5.5l1.647-1.646a.5.5 0 0 0 0-.708l-3-3zm.646 6.061L9.793 2.5 3.293 9H3.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.207l6.5-6.5zm-7.468 7.468A.5.5 0 0 1 6 13.5V13h-.5a.5.5 0 0 1-.5-.5V12h-.5a.5.5 0 0 1-.5-.5V11h-.5a.5.5 0 0 1-.5-.5V10h-.5a.499.499 0 0 1-.175-.032l-.179.178a.5.5 0 0 0-.11.168l-2 5a.5.5 0 0 0 .65.65l5-2a.5.5 0 0 0 .168-.11l.178-.178z"/>
|
||||
</svg>
|
||||
</a>
|
||||
{{ 'Locales' | trans }}
|
||||
{{ 'Locale' | trans }}
|
||||
<div class="padding-b-8-px border-bottom-default"></div>
|
||||
<div class="padding-t-16-px text-left">
|
||||
{% if torrent.locales %}
|
||||
<div class="padding-y-4-px">
|
||||
{% for i, locale in torrent.locales %}{% if i > 0 %},{% endif %} {{ locale|locale_name(locale)|u.title }}{% endfor %}
|
||||
{% for i, locale in torrent.locales | sort %}{% if i > 0 %},{% endif %} {{ locale | locale_name(locale) | u.title }}{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-right">
|
||||
<a class="margin-r-4-px{#opacity-0 parent-hover-opacity-09#}" href="{{ path('torrent_categories_edit', { torrentId : torrent.id }) }}" title="{{'Edit'|trans }}">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path d="M12.854.146a.5.5 0 0 0-.707 0L10.5 1.793 14.207 5.5l1.647-1.646a.5.5 0 0 0 0-.708l-3-3zm.646 6.061L9.793 2.5 3.293 9H3.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.207l6.5-6.5zm-7.468 7.468A.5.5 0 0 1 6 13.5V13h-.5a.5.5 0 0 1-.5-.5V12h-.5a.5.5 0 0 1-.5-.5V11h-.5a.5.5 0 0 1-.5-.5V10h-.5a.499.499 0 0 1-.175-.032l-.179.178a.5.5 0 0 0-.11.168l-2 5a.5.5 0 0 0 .65.65l5-2a.5.5 0 0 0 .168-.11l.178-.178z"/>
|
||||
</svg>
|
||||
</a>
|
||||
{{ 'Category' | trans }}
|
||||
<div class="padding-b-8-px border-bottom-default"></div>
|
||||
<div class="padding-t-16-px text-left">
|
||||
{% if torrent.categories %}
|
||||
<div class="padding-y-4-px">
|
||||
{% for i, category in torrent.categories | sort %}{% if i > 0 %},{% endif %} {{ category | u.title }}{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% for locale in locales %}
|
||||
{% for locale in locales | sort %}
|
||||
<div class="margin-t-8-px margin-b-4-px margin-r-8-px display-inline-block min-width-120-px">
|
||||
{% if locale in form.locales.attribute.value %}
|
||||
<input type="checkbox" name="locales[]" id="{{ locale }}" value="{{ locale }}" checked="checked" />
|
||||
|
|
@ -48,9 +48,42 @@
|
|||
#}
|
||||
</div>
|
||||
<div class="margin-b-16-px border-bottom-default"></div>
|
||||
<div class="margin-y-16-px">
|
||||
<div class="margin-b-8-px">
|
||||
<label for="categories">
|
||||
{{'Content category' | trans }}
|
||||
</label>
|
||||
<sub class="opacity-0 parent-hover-opacity-09" title="{{ 'This torrent have selected categories' | trans }}">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zm.93-9.412-1 4.705c-.07.34.029.533.304.533.194 0 .487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703 0-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381 2.29-.287zM8 5.5a1 1 0 1 1 0-2 1 1 0 0 1 0 2z"/>
|
||||
</svg>
|
||||
</sub>
|
||||
{% for error in form.categories.error %}
|
||||
<div class="text-color-red margin-y-8-px">
|
||||
{{ error }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% for category in categories | sort %}
|
||||
<div class="margin-t-8-px margin-b-4-px margin-r-8-px display-inline-block min-width-120-px">
|
||||
{% if category in form.categories.attribute.value %}
|
||||
<input type="checkbox" name="categories[]" id="{{ category }}" value="{{ category }}" checked="checked" />
|
||||
{% else %}
|
||||
<input type="checkbox" name="categories[]" id="{{ category }}" value="{{ category }}" />
|
||||
{% endif %}
|
||||
<label class="margin-l-4-px" for="{{ category }}">
|
||||
{{ category | u.title }}
|
||||
</label>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{#
|
||||
{{'Other...'|trans }}
|
||||
#}
|
||||
</div>
|
||||
<div class="margin-b-16-px border-bottom-default"></div>
|
||||
<div>
|
||||
<input type="checkbox" name="sensitive" id="sensitive" value="true" {% if form.sensitive.attribute.value %}checked="checked"{% endif %} />
|
||||
<label for="sensitive">
|
||||
<label class="margin-l-4-px" for="sensitive">
|
||||
{{'Sensitive'|trans }}
|
||||
</label>
|
||||
<sub class="opacity-0 parent-hover-opacity-09" title="{{ 'Mark torrent content as sensitive' | trans }}">
|
||||
|
|
|
|||
|
|
@ -172,7 +172,15 @@
|
|||
{{ 'Languages' | trans }}
|
||||
</td>
|
||||
<td class="width-80 line-height-20-px">
|
||||
{% for i, locale in user.locales %}{% if i > 0 %},{% endif %} {{ locale|locale_name(locale)|u.title }}{% endfor %}
|
||||
{% for i, locale in user.locales | sort %}{% if i > 0 %},{% endif %} {{ locale | locale_name(locale) | u.title }}{% endfor %}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="width-20">
|
||||
{{ 'Categories' | trans }}
|
||||
</td>
|
||||
<td class="width-80 line-height-20-px">
|
||||
{% for i, category in user.categories | sort %}{% if i > 0 %},{% endif %} {{ category | u.title }}{% endfor %}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@
|
|||
<td class="padding-t-16-px padding-b-8-px">
|
||||
{% for locale in locales %}
|
||||
<div class="margin-t-4-px margin-b-8-px margin-r-8-px display-inline-block min-width-120-px">
|
||||
{% if locale in user.locales %}
|
||||
{% if locale in user.locales | sort %}
|
||||
<input name="locales[]" id="{{ locale }}" type="checkbox" value="{{ locale }}" checked="checked" />
|
||||
{% else %}
|
||||
<input name="locales[]" id="{{ locale }}" type="checkbox" value="{{ locale }}" />
|
||||
|
|
@ -102,10 +102,31 @@
|
|||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="padding-y-12-px">
|
||||
<td class="padding-y-16-px">
|
||||
<div class="margin-t-4-px">
|
||||
{{ 'Categories' | trans }}
|
||||
</div>
|
||||
</td>
|
||||
<td class="padding-t-16-px padding-b-8-px border-top-default">
|
||||
{% for category in categories | sort %}
|
||||
<div class="margin-t-4-px margin-b-8-px margin-r-8-px display-inline-block min-width-120-px">
|
||||
{% if category in user.categories %}
|
||||
<input name="categories[]" id="{{ category }}" type="checkbox" value="{{ category }}" checked="checked" />
|
||||
{% else %}
|
||||
<input name="categories[]" id="{{ category }}" type="checkbox" value="{{ category }}" />
|
||||
{% endif %}
|
||||
<label class="margin-x-4-px" for="{{ category }}">
|
||||
{{ category | u.title | trans }}
|
||||
</label>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="padding-y-16-px">
|
||||
{{ 'Sensitive' | trans }}
|
||||
</td>
|
||||
<td class="padding-y-12-px border-top-default">
|
||||
<td class="padding-t-16-px padding-b-8-px border-top-default">
|
||||
<div class="margin-r-8-px">
|
||||
{% if user.sensitive %}
|
||||
<input name="sensitive" id="sensitive" type="checkbox" value="true" checked="checked" />
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue