Creation of DocGenTemplate entity

This commit is contained in:
Marc Ducobu 2021-08-06 15:00:08 +02:00
parent 8207db4b45
commit 7dc501cbda
12 changed files with 291 additions and 11 deletions

View File

@ -16,7 +16,8 @@
"Chill\\PersonBundle\\": "src/Bundle/ChillPersonBundle", "Chill\\PersonBundle\\": "src/Bundle/ChillPersonBundle",
"Chill\\ReportBundle\\": "src/Bundle/ChillReportBundle", "Chill\\ReportBundle\\": "src/Bundle/ChillReportBundle",
"Chill\\TaskBundle\\": "src/Bundle/ChillTaskBundle", "Chill\\TaskBundle\\": "src/Bundle/ChillTaskBundle",
"Chill\\ThirdPartyBundle\\": "src/Bundle/ChillThirdPartyBundle" "Chill\\ThirdPartyBundle\\": "src/Bundle/ChillThirdPartyBundle",
"Chill\\DocGeneratorBundle\\": "src/Bundle/ChillDocGeneratorBundle"
} }
}, },
"autoload-dev": { "autoload-dev": {

View File

@ -0,0 +1,9 @@
<?php
namespace Chill\DocGeneratorBundle\Controller;
use Chill\MainBundle\CRUD\Controller\CRUDController;
class AdminDocGeneratorTemplateController extends CRUDController
{
}

View File

@ -0,0 +1,31 @@
<?php
namespace Chill\DocGeneratorBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
/**
* Class DocGeneratorController
*
* @package Chill\DocGenerator\Controller
*/
class DocGeneratorController extends AbstractController
{
/**
* @Route(
* "{_locale}/doc/gen/test",
* name="chill_docgenerator_test"
* )
*
* @param Request $request
* @return \Symfony\Component\HttpFoundation\Response
*/
public function testAction()
{
return (new Response())
->setContent('Test');
}
}

View File

@ -13,7 +13,7 @@ use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface;
* *
* @link http://symfony.com/doc/current/cookbook/bundles/extension.html * @link http://symfony.com/doc/current/cookbook/bundles/extension.html
*/ */
class ChillCalendarExtension extends Extension implements PrependExtensionInterface class ChillDocGeneratorExtension extends Extension implements PrependExtensionInterface
{ {
/** /**
* {@inheritdoc} * {@inheritdoc}
@ -33,19 +33,49 @@ class ChillCalendarExtension extends Extension implements PrependExtensionInterf
public function prepend(ContainerBuilder $container) public function prepend(ContainerBuilder $container)
{ {
$this->preprendRoutes($container); $this->preprendRoutes($container);
$this->prependCruds($container);
} }
protected function preprendRoutes(ContainerBuilder $container) protected function preprendRoutes(ContainerBuilder $container)
{ {
$container->prependExtensionConfig('chill_main', array(
'routing' => array(
'resources' => array(
'@ChillDocGeneratorBundle/Resources/config/routes.yml'
)
)
));
}
/**
* @param ContainerBuilder $container
*/
protected function prependCruds(ContainerBuilder $container)
{
$container->prependExtensionConfig('chill_main', [ $container->prependExtensionConfig('chill_main', [
'routing' => [ 'cruds' => [
'resources' => [ [
'@ChillDocGeneratorBundle/Resources/config/routing.yml' 'class' => \Chill\DocGeneratorBundle\Entity\DocGeneratorTemplate::class,
'name' => 'docgen_template',
'base_path' => '/admin/docgen/template',
'form_class' => \Chill\DocGeneratorBundle\Form\DocGeneratorTemplateType::class,
'controller' => \Chill\DocGeneratorBundle\Controller\AdminDocGeneratorTemplateController::class,
'actions' => [
'index' => [
'template' => '@ChillDocGenerator/Admin/DocGeneratorTemplate/index.html.twig',
'role' => 'ROLE_ADMIN'
],
'new' => [
'role' => 'ROLE_ADMIN',
'template' => '@ChillDocGenerator/Admin/DocGeneratorTemplate/new.html.twig',
],
'edit' => [
'role' => 'ROLE_ADMIN',
'template' => '@ChillDocGenerator/Admin/DocGeneratorTemplate/edit.html.twig',
]
]
] ]
] ]
]); ]);
} }
} }

View File

@ -0,0 +1,77 @@
<?php
namespace Chill\DocGeneratorBundle\Entity;
use Chill\DocGeneratorBundle\Repository\DocGeneratorTemplateRepository;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass=DocGeneratorTemplateRepository::class)
* @ORM\Table(name="chill_docgen_template")
*/
class DocGeneratorTemplate
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private int $id;
/**
* @ORM\Column(type="json_array")
*/
private array $name = [];
/**
* @ORM\Column(type="text", nullable=true)
*/
private string $description;
/**
* @ORM\Column(type="string", length=255)
*/
private string $file;
public function getId(): ?int
{
return $this->id;
}
public function getName(): ?array
{
return $this->name;
}
public function setName(array $name): self
{
$this->name = $name;
return $this;
}
public function getDescription(): ?string
{
return $this->description;
}
public function setDescription(?string $description): self
{
$this->description = $description;
return $this;
}
public function getFile(): ?string
{
return $this->file;
}
public function setFile(string $file): self
{
$this->file = $file;
return $this;
}
}

View File

@ -0,0 +1,38 @@
<?php
namespace Chill\DocGeneratorBundle\Form;
use Chill\DocGeneratorBundle\Entity\DocGeneratorTemplate;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Chill\MainBundle\Form\Type\TranslatableStringFormType;
class DocGeneratorTemplateType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', TranslatableStringFormType::class, [
'label' => 'Nom'
])
->add('description')
->add('file')
;
}
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver
->setDefault('class', DocGeneratorTemplate::class)
;
}
}

View File

@ -0,0 +1,21 @@
<?php
namespace Chill\DocGeneratorBundle\Repository;
use App\Entity\DocGeneratorTemplate;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
/**
* @method DocGeneratorTemplate|null find($id, $lockMode = null, $lockVersion = null)
* @method DocGeneratorTemplate|null findOneBy(array $criteria, array $orderBy = null)
* @method DocGeneratorTemplate[] findAll()
* @method DocGeneratorTemplate[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
*/
class DocGeneratorTemplateRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, DocGeneratorTemplate::class);
}
}

View File

@ -0,0 +1,12 @@
{% extends '@ChillPerson/Admin/layout.html.twig' %}
{% block title %}
{% include('@ChillMain/CRUD/_edit_title.html.twig') %}
{% endblock %}
{% block layout_wvm_content %}
{% embed '@ChillMain/CRUD/_edit_content.html.twig' %}
{% block content_form_actions_view %}{% endblock %}
{% block content_form_actions_save_and_show %}{% endblock %}
{% endembed %}
{% endblock %}

View File

@ -0,0 +1,19 @@
{% extends '@ChillPerson/Admin/layout.html.twig' %}
{% block layout_wvm_content %}
{% embed '@ChillMain/CRUD/_index.html.twig' %}
{% block table_entities_thead_tr %}
<th>{{ 'Title'|trans }}</th>
<th>{{ 'File'|trans }}</th>
{% endblock %}
{% block table_entities_tbody %}
{% for entity in entities %}
<tr>
<td>{{ entity.name | localize_translatable_string }}</td>
<td>{{ entity.file }}</td>
</tr>
{% endfor %}
{% endblock %}
{% endembed %}
{% endblock %}

View File

@ -0,0 +1,11 @@
{% extends '@ChillPerson/Admin/layout.html.twig' %}
{% block title %}
{% include('@ChillMain/CRUD/_new_title.html.twig') %}
{% endblock %}
{% block layout_wvm_content %}
{% embed '@ChillMain/CRUD/_new_content.html.twig' %}
{% block content_form_actions_save_and_show %}{% endblock %}
{% endembed %}
{% endblock %}

View File

@ -0,0 +1,31 @@
<?php
declare(strict_types=1);
namespace Chill\Migrations\DocGenerator;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* Creation of table for storing DocGenTemplate
*/
final class Version20210805162522 extends AbstractMigration
{
public function getDescription(): string
{
return 'Creation of table for storing DocGenTemplate';
}
public function up(Schema $schema): void
{
$this->addSql('CREATE SEQUENCE chill_docgen_template_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
$this->addSql('CREATE TABLE chill_docgen_template (id INT NOT NULL, name JSON NOT NULL, description TEXT DEFAULT NULL, file VARCHAR(255) NOT NULL, PRIMARY KEY(id))');
}
public function down(Schema $schema): void
{
$this->addSql('DROP SEQUENCE chill_docgen_template_id_seq CASCADE');
$this->addSql('DROP TABLE chill_docgen_template');
}
}