163 lines
4.6 KiB
PHP
163 lines
4.6 KiB
PHP
|
<?php
|
|||
|
|
|||
|
namespace Deblan\Bundle\BlogBundle\Form\Type;
|
|||
|
|
|||
|
use Propel\PropelBundle\Form\BaseAbstractType;
|
|||
|
use Symfony\Component\Form\FormBuilderInterface;
|
|||
|
use Symfony\Component\Validator\Constraints\DateTime;
|
|||
|
use Symfony\Component\Validator\Constraints\NotBlank;
|
|||
|
use Trinity\Component\Form\EventListener\FileDeleteFormListener;
|
|||
|
use Trinity\Component\Form\DataTransformer\StringToFileTransformer;
|
|||
|
use Symfony\Component\Validator\Constraints\Image;
|
|||
|
|
|||
|
class PostType extends BaseAbstractType
|
|||
|
{
|
|||
|
protected $options = array(
|
|||
|
'data_class' => 'Deblan\Bundle\BlogBundle\Model\Post',
|
|||
|
'name' => 'post',
|
|||
|
);
|
|||
|
|
|||
|
/**
|
|||
|
* {@inheritdoc}
|
|||
|
*/
|
|||
|
public function buildForm(FormBuilderInterface $builder, array $options)
|
|||
|
{
|
|||
|
$builder->add(
|
|||
|
'Title',
|
|||
|
'text',
|
|||
|
array(
|
|||
|
'label' => 'Titre',
|
|||
|
'constraints' => array(
|
|||
|
new NotBlank(),
|
|||
|
),
|
|||
|
)
|
|||
|
);
|
|||
|
|
|||
|
$builder->add(
|
|||
|
'Content',
|
|||
|
'textarea',
|
|||
|
array(
|
|||
|
'label' => 'Article',
|
|||
|
'attr' => array(
|
|||
|
'class' => 'markitup',
|
|||
|
'data-set' => $builder->getData()->getContentFormat(),
|
|||
|
),
|
|||
|
'constraints' => array(
|
|||
|
new NotBlank(),
|
|||
|
),
|
|||
|
)
|
|||
|
);
|
|||
|
|
|||
|
// $builder->add(
|
|||
|
// 'Content',
|
|||
|
// 'ace_editor',
|
|||
|
// array(
|
|||
|
// 'label' => 'Article',
|
|||
|
// 'wrapper_attr' => array(),
|
|||
|
// 'width' => '100%',
|
|||
|
// 'height' => 500,
|
|||
|
// 'font_size' => 12,
|
|||
|
// 'mode' => 'ace/mode/'.$builder->getData()->getContentFormat(),
|
|||
|
// 'theme' => 'ace/theme/idle_fingers',
|
|||
|
// 'tab_size' => 4,
|
|||
|
// 'read_only' => false,
|
|||
|
// 'use_soft_tabs' => false,
|
|||
|
// 'use_wrap_mode' => true,
|
|||
|
// 'show_print_margin' => false,
|
|||
|
// 'highlight_active_line' => true,
|
|||
|
// 'constraints' => array(
|
|||
|
// new NotBlank(),
|
|||
|
// ),
|
|||
|
// )
|
|||
|
// );
|
|||
|
|
|||
|
$builder->add(
|
|||
|
'ContentFormat',
|
|||
|
'choice',
|
|||
|
array(
|
|||
|
'label' => 'Format',
|
|||
|
'required' => true,
|
|||
|
'choices' => array(
|
|||
|
'html' => 'HTML',
|
|||
|
'markdown' => 'Markdown',
|
|||
|
),
|
|||
|
'constraints' => array(
|
|||
|
new NotBlank(),
|
|||
|
),
|
|||
|
)
|
|||
|
);
|
|||
|
|
|||
|
$builder->add(
|
|||
|
'Tags',
|
|||
|
'text',
|
|||
|
array(
|
|||
|
'constraints' => array(
|
|||
|
//new NotBlank(),
|
|||
|
),
|
|||
|
)
|
|||
|
);
|
|||
|
|
|||
|
$builder->add(
|
|||
|
$builder->create(
|
|||
|
'Picture',
|
|||
|
'file',
|
|||
|
array(
|
|||
|
'label' => 'Illustration',
|
|||
|
'constraints' => array(
|
|||
|
new Image(),
|
|||
|
),
|
|||
|
)
|
|||
|
)->addModelTransformer(new StringToFileTransformer($builder->getData(), 'Picture'))
|
|||
|
);
|
|||
|
|
|||
|
$builder->addEventSubscriber(
|
|||
|
new FileDeleteFormListener(
|
|||
|
$builder->getFormFactory(),
|
|||
|
array(
|
|||
|
'Picture',
|
|||
|
)
|
|||
|
)
|
|||
|
);
|
|||
|
|
|||
|
$builder->add(
|
|||
|
'PublishedAt',
|
|||
|
'date',
|
|||
|
array(
|
|||
|
'label' => 'Date de publication',
|
|||
|
'widget' => 'single_text',
|
|||
|
'format' => 'yyyy-MM-dd HH:mm:ss',
|
|||
|
'attr' => array(
|
|||
|
'class' => 'datetimepicker',
|
|||
|
),
|
|||
|
'constraints' => array(
|
|||
|
new DateTime(),
|
|||
|
),
|
|||
|
)
|
|||
|
);
|
|||
|
|
|||
|
$builder->add(
|
|||
|
'Categories',
|
|||
|
'model',
|
|||
|
array(
|
|||
|
'label' => 'Catégories',
|
|||
|
'class' => 'Deblan\Bundle\BlogBundle\Model\Category',
|
|||
|
'query' => \Deblan\Bundle\BlogBundle\Model\CategoryQuery::create()->filterByActive(true)->orderByTitle(),
|
|||
|
'multiple' => true,
|
|||
|
'expanded' => false,
|
|||
|
'attr' => array(
|
|||
|
'class' => 'chosen-select',
|
|||
|
'data-placeholder' => 'Sélectionnez un groupe'
|
|||
|
),
|
|||
|
)
|
|||
|
);
|
|||
|
|
|||
|
$builder->add(
|
|||
|
'Active',
|
|||
|
'checkbox',
|
|||
|
array(
|
|||
|
'label' => 'En ligne',
|
|||
|
)
|
|||
|
);
|
|||
|
}
|
|||
|
}
|