ghost
1 year ago
5 changed files with 328 additions and 118 deletions
@ -0,0 +1,37 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
namespace App\Service; |
||||||
|
|
||||||
|
use App\Entity\Page; |
||||||
|
use App\Repository\PageRepository; |
||||||
|
use Doctrine\ORM\EntityManagerInterface; |
||||||
|
|
||||||
|
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; |
||||||
|
|
||||||
|
class PageService |
||||||
|
{ |
||||||
|
private EntityManagerInterface $entityManager; |
||||||
|
private PageRepository $pageRepository; |
||||||
|
private ParameterBagInterface $parameterBagInterface; |
||||||
|
|
||||||
|
public function __construct( |
||||||
|
EntityManagerInterface $entityManager, |
||||||
|
ParameterBagInterface $parameterBagInterface |
||||||
|
) |
||||||
|
{ |
||||||
|
$this->entityManager = $entityManager; |
||||||
|
$this->pageRepository = $entityManager->getRepository(Page::class); |
||||||
|
$this->parameterBagInterface = $parameterBagInterface; |
||||||
|
} |
||||||
|
|
||||||
|
public function new(): ?Page |
||||||
|
{ |
||||||
|
return new Page(); |
||||||
|
} |
||||||
|
|
||||||
|
public function save(Page $page) : void |
||||||
|
{ |
||||||
|
$this->entityManager->persist($page); |
||||||
|
$this->entityManager->flush(); |
||||||
|
} |
||||||
|
} |
@ -1,129 +1,115 @@ |
|||||||
{% extends 'default/layout.html.twig' %} |
{% extends 'default/layout.html.twig' %} |
||||||
{% block title %}{{'Submit'|trans }} - {{ name }}{% endblock %} |
{% block title %}{{'Submit'|trans }} - {{ name }}{% endblock %} |
||||||
|
|
||||||
{% block main_content %} |
{% block main_content %} |
||||||
<div class="margin-b-24-px padding-b-16-px border-bottom-default"> |
<div class="padding-24-px margin-y-8-px border-radius-3-px background-color-night"> |
||||||
|
<div class="margin-b-24-px padding-b-16-px border-bottom-default"> |
||||||
<h1>{{'Submit'|trans }}</h1> |
<h1>{{'Submit'|trans }}</h1> |
||||||
</div> |
|
||||||
<form class="margin-t-8-px" name="submit" method="post" enctype="multipart/form-data" action="submit"> |
|
||||||
<input type="hidden" name="pageId" value="<?php echo $form->pageId->attribute->value ?>" /> |
|
||||||
<div class="margin-b-16"> |
|
||||||
<label for="locale"> |
|
||||||
{{'Content language'|trans }} |
|
||||||
</label> |
|
||||||
<sub class="opacity-0 parent-hover-opacity-09" title="{{ form.locale.placeholder }}"> |
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" fill="currentColor" class="bi bi-info-circle-fill" 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> |
|
||||||
<select class="width-100 margin-t-8" type="text" name="locale" id="locale"> |
|
||||||
{% for locale in form.locale.options %} |
|
||||||
{% if locale.active %} |
|
||||||
<option value="{{ locale.code }}" selected="selected"> |
|
||||||
{{ locale.value }} |
|
||||||
</option> |
|
||||||
{% else %} |
|
||||||
<option value="{{ locale.code }}"> |
|
||||||
{{ locale.value }} |
|
||||||
</option> |
|
||||||
{% endif %} |
|
||||||
{% endfor %} |
|
||||||
</select> |
|
||||||
</div> |
</div> |
||||||
<div class="margin-b-16"> |
<form name="submit" method="post" enctype="multipart/form-data" action="{{ path('page_submit') }}"> |
||||||
<label for="title"> |
<div class="margin-b-16-px"> |
||||||
{{'Title'|trans }} |
<label for="locale"> |
||||||
</label> |
{{'Content language'|trans }} |
||||||
<sub class="opacity-0 parent-hover-opacity-09" title="{{ form.title.attribute.placeholder }}"> |
</label> |
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" fill="currentColor" class="bi bi-info-circle-fill" viewBox="0 0 16 16"> |
<sub class="opacity-0 parent-hover-opacity-09" title="{{ form.locale.placeholder }}"> |
||||||
<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 xmlns="http://www.w3.org/2000/svg" width="13" height="13" fill="currentColor" class="bi bi-info-circle-fill" viewBox="0 0 16 16"> |
||||||
</svg> |
<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"/> |
||||||
</sub> |
</svg> |
||||||
{% for errors in form.title.error %} |
</sub> |
||||||
{% for error in errors %} |
<select class="width-100 margin-t-8-px" type="text" name="locale" id="locale"> |
||||||
|
{% for locale in locales %} |
||||||
|
{% if locale == form.locale.value %} |
||||||
|
<option value="{{ locale }}" selected="selected"> |
||||||
|
{{ locale|locale_name(locale)|u.title }} |
||||||
|
</option> |
||||||
|
{% else %} |
||||||
|
<option value="{{ locale }}"> |
||||||
|
{{ locale|locale_name(locale)|u.title }} |
||||||
|
</option> |
||||||
|
{% endif %} |
||||||
|
{% endfor %} |
||||||
|
</select> |
||||||
|
</div> |
||||||
|
<div class="margin-b-16-px"> |
||||||
|
<label for="title"> |
||||||
|
{{'Title'|trans }} |
||||||
|
</label> |
||||||
|
<sub class="opacity-0 parent-hover-opacity-09" title="{{ form.title.attribute.placeholder }}"> |
||||||
|
<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.title.error %} |
||||||
<div class="text-color-red margin-y-8-px"> |
<div class="text-color-red margin-y-8-px"> |
||||||
{{ error }} |
{{ error }} |
||||||
</div> |
</div> |
||||||
{% endfor %} |
{% endfor %} |
||||||
{% endfor %} |
<input class="width-100 margin-t-8-px" |
||||||
<input class="width-100 margin-t-8-px" |
type="text" |
||||||
type="text" |
name="title" |
||||||
name="title" |
id="title" |
||||||
id="title" |
{% if form.title.attribute.minlength %}required="required"{% endif %} |
||||||
{% if form.title.attribute.required %}required="required"{% endif %} |
value="{{ form.title.attribute.value }}" |
||||||
value="{{ form.title.attribute.value }}" |
placeholder="{{ form.title.attribute.placeholder }}" |
||||||
placeholder="{{ form.title.attribute.placeholder }}" |
minlength="{{ form.title.attribute.minlength }}" |
||||||
minlength="{{ form.title.attribute.minlength }}" |
maxlength="{{ form.title.attribute.maxlength }}" /> |
||||||
maxlength="{{ form.title.attribute.maxlength }}" /> |
</div> |
||||||
</div> |
<div class="margin-y-8-px"> |
||||||
<div class="margin-y-8-px padding-t-4-px"> |
<label for="description"> |
||||||
<label for="description"> |
{{'Description'|trans }} |
||||||
{{'Description'|trans }} |
</label> |
||||||
</label> |
<sub class="opacity-0 parent-hover-opacity-09" title="{{ form.description.attribute.placeholder }}"> |
||||||
<sub class="opacity-0 parent-hover-opacity-09" title="{{ form.description.attribute.placeholder }}"> |
<svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" fill="currentColor" viewBox="0 0 16 16"> |
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" fill="currentColor" class="bi bi-info-circle-fill" 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"/> |
||||||
<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> |
||||||
</svg> |
</sub> |
||||||
</sub> |
{% for error in form.description.error %} |
||||||
{% for errors in form.description.error %} |
|
||||||
{% for error in errors %} |
|
||||||
<div class="text-color-red margin-y-8-px"> |
<div class="text-color-red margin-y-8-px"> |
||||||
{{ error }} |
{{ error }} |
||||||
</div> |
</div> |
||||||
{% endfor %} |
{% endfor %} |
||||||
{% endfor %} |
<textarea class="width-100 margin-t-8-px" |
||||||
<textarea class="width-100 margin-t-8-px" |
name="description" |
||||||
name="description" |
id="description" |
||||||
id="description" |
{% if form.description.attribute.minlength %}required="required"{% endif %} |
||||||
{% if form.description.attribute.required %}required="required"{% endif %} |
value="{{ form.description.attribute.value }}" |
||||||
value="{{ form.description.attribute.value }}" |
placeholder="{{ form.description.attribute.placeholder }}" |
||||||
placeholder="{{ form.description.attribute.placeholder }}" |
minlength="{{ form.description.attribute.minlength }}" |
||||||
minlength="{{ form.description.attribute.minlength }}" |
maxlength="{{ form.description.attribute.maxlength }}">{{ form.description.attribute.value }}</textarea> |
||||||
maxlength="{{ form.description.attribute.maxlength }}">{{ form.description.attribute.value }}</textarea> |
</div> |
||||||
</div> |
<div class="margin-y-16-px"> |
||||||
<div class="margin-y-8 padding-t-4"> |
<label for="torrents"> |
||||||
<label for="keywords"> |
{{'Torrent files'|trans }} |
||||||
{{'Keywords'|trans }} |
</label> |
||||||
</label> |
<sub class="opacity-0 parent-hover-opacity-09" title="{{ form.torrents.attribute.placeholder }}"> |
||||||
<sub class="opacity-0 parent-hover-opacity-09" |
<svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" fill="currentColor" viewBox="0 0 16 16"> |
||||||
title="<?php echo $form->keywords->attribute->placeholder ?>"> |
<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 xmlns="http://www.w3.org/2000/svg" width="13" height="13" fill="currentColor" class="bi bi-info-circle-fill" viewBox="0 0 16 16"> |
</svg> |
||||||
<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"/> |
</sub> |
||||||
</svg> |
{% for error in form.torrents.error %} |
||||||
</sub> |
|
||||||
{% for errors in form.keywords.error %} |
|
||||||
{% for error in errors %} |
|
||||||
<div class="text-color-red margin-y-8-px"> |
<div class="text-color-red margin-y-8-px"> |
||||||
{{ error }} |
{{ error }} |
||||||
</div> |
</div> |
||||||
{% endfor %} |
{% endfor %} |
||||||
{% endfor %} |
<input class="width-100 margin-t-8-px" type="file" name="torrents[]" id="torrents" value="" accept=".torrent" multiple="multiple" /> |
||||||
<textarea class="width-100 margin-t-8-px" |
</div> |
||||||
name="keywords" |
<div class="margin-y-16-px"> |
||||||
id="keywords" |
<input type="checkbox" |
||||||
{% if form.keywords.attribute.required %}required="required"{% endif %} |
name="sensitive" |
||||||
value="{{ form.keywords.attribute.value }}" |
id="sensitive" |
||||||
placeholder="{{ form.keywords.attribute.placeholder }}" |
value="true" |
||||||
minlength="{{ form.keywords.attribute.minlength }}" |
{% if form.sensitive.attribute.value %}checked="checked"{% endif %} /> |
||||||
maxlength="{{ form.keywords.attribute.maxlength }}">{{ form.keywords.attribute.value }}</textarea> |
<label for="sensitive"> |
||||||
</div> |
{{'Sensitive'|trans }} |
||||||
<div class="margin-y-16-px"> |
</label> |
||||||
<input type="checkbox" |
<sub class="opacity-0 parent-hover-opacity-09" title="{{ form.sensitive.attribute.placeholder }}"> |
||||||
name="sensitive" |
<svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" fill="currentColor" viewBox="0 0 16 16"> |
||||||
id="sensitive" |
<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"/> |
||||||
value="true" |
</svg> |
||||||
{% form.sensitive.attribute.value %}checked="checked"{% endif %} /> |
</sub> |
||||||
<label for="sensitive"> |
</div> |
||||||
{{'Sensitive'|trans }} |
<div class="text-right"> |
||||||
</label> |
<input class="button-green" type="submit" value="{{'Submit'|trans }}" /> |
||||||
<sub class="opacity-0 parent-hover-opacity-09" title="{{ form.sensitive.attribute.placeholder }}"> |
</div> |
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" fill="currentColor" class="bi bi-info-circle-fill" viewBox="0 0 16 16"> |
</form> |
||||||
<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"/> |
</div> |
||||||
</svg> |
|
||||||
</sub> |
|
||||||
</div> |
|
||||||
<div class="text-right"> |
|
||||||
<input class="button-green" type="submit" value="{{'Submit'|trans }}" /> |
|
||||||
</div> |
|
||||||
</form> |
|
||||||
{% endblock %} |
{% endblock %} |
||||||
|
Loading…
Reference in new issue