From: Raphaël Gertz Date: Tue, 14 Oct 2025 15:08:09 +0000 (+0200) Subject: New context layout X-Git-Tag: 0.0.1 X-Git-Url: https://git.rapsys.eu/blogbundle/commitdiff_plain/HEAD?hp=757bcf477033e86011feb2accce8a5526a223fa3 New context layout --- diff --git a/.gitignore b/.gitignore index 1c17649..8282441 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ .*.un~ *~ +*.deadcode +*.orig diff --git a/Controller/AbstractController.php b/Controller/AbstractController.php index 10353cb..fca2be9 100644 --- a/Controller/AbstractController.php +++ b/Controller/AbstractController.php @@ -294,36 +294,8 @@ abstract class AbstractController extends BaseAbstractController implements Serv //Set the context $this->context = [ - 'head' => [ - 'alternates' => $alternates, - 'canonical' => $canonical, - 'icon' => $this->config['icon'], - 'keywords' => null, - 'locale' => str_replace('_', '-', $this->locale), - 'logo' => [ - 'png' => $this->config['logo']['png'], - 'svg' => $this->config['logo']['svg'], - 'alt' => $this->translator->trans($this->config['logo']['alt']) - ], - 'root' => $this->config['root'], - 'site' => $this->translator->trans($this->config['title']), - 'title' => null, - 'facebook' => [ - 'og:type' => 'article', - 'og:site_name' => $this->translator->trans($this->config['title']), - 'og:url' => $canonical, - //TODO: review this value - 'fb:app_id' => $this->config['facebook']['apps'] - ], - 'fbimage' => [ - 'texts' => [ - $this->translator->trans($this->config['title']) => [ - 'font' => 'irishgrover', - 'size' => 110 - ] - ] - ] - ], + 'alternates' => $alternates, + 'canonical' => $canonical, 'contact' => [ 'address' => $this->config['contact']['address'], 'name' => $this->translator->trans($this->config['contact']['name']) @@ -335,10 +307,42 @@ abstract class AbstractController extends BaseAbstractController implements Serv 'short' => $this->translator->trans($this->config['copy']['short']), 'title' => $this->config['copy']['title'] ], - 'forms' => [], 'description' => null, - 'section' => null, - 'title' => null + 'donate' => $this->config['donate'], + 'facebook' => [ + 'og:type' => 'article', + 'og:site_name' => $title = $this->translator->trans($this->config['title']), + 'og:url' => $canonical, + #'fb:admins' => $this->config['facebook']['admins'], + 'fb:app_id' => $this->config['facebook']['apps'] + ], + //XXX: TODO: only generate it when fb robot request the url ??? + 'fbimage' => [ + 'texts' => [ + $title => [ + //'font' => 'irishgrover', + //'size' => 110 + ] + ] + ], + 'forms' => [], + 'icon' => $this->config['icon'], + 'keywords' => null, + 'locale' => str_replace('_', '-', $this->locale), + #'logo' => [ + # 'png' => $this->config['logo']['png'], + # 'svg' => $this->config['logo']['svg'], + # 'alt' => $this->translator->trans($this->config['logo']['alt']) + #], + 'logo' => $this->config['logo'], + 'next' => null, + 'prev' => null, + 'root' => $this->config['root'], + 'title' => [ + 'page' => null, + 'section' => null, + 'site' => $title + ] ]; } @@ -352,7 +356,7 @@ abstract class AbstractController extends BaseAbstractController implements Serv $response ??= new Response(); //Without alternates - if (empty($parameters['head']['alternates'])) { + if (count($parameters['alternates']) <= 1) { //Iterate on locales excluding current one foreach($this->config['locales'] as $locale) { //Set routeParams @@ -377,7 +381,7 @@ abstract class AbstractController extends BaseAbstractController implements Serv } //Set locale locales context - $parameters['head']['alternates'][str_replace('_', '-', $locale)] = [ + $parameters['alternates'][str_replace('_', '-', $locale)] = [ 'absolute' => $this->router->generate($this->route, $routeParams, UrlGeneratorInterface::ABSOLUTE_URL), 'relative' => $this->router->generate($this->route, $routeParams), 'title' => implode('/', $titles), @@ -385,12 +389,12 @@ abstract class AbstractController extends BaseAbstractController implements Serv ]; //Add shorter locale - if (empty($parameters['head']['alternates'][$shortCurrent = substr($locale, 0, 2)])) { + if (empty($parameters['alternates'][$shortCurrent = substr($locale, 0, 2)])) { //Set locale locales context - $parameters['head']['alternates'][$shortCurrent] = $parameters['head']['alternates'][str_replace('_', '-', $locale)]; + $parameters['alternates'][$shortCurrent] = $parameters['alternates'][str_replace('_', '-', $locale)]; } //Add shorter locale - } elseif (empty($parameters['head']['alternates'][$shortCurrent = substr($locale, 0, 2)])) { + } elseif (empty($parameters['alternates'][$shortCurrent = substr($locale, 0, 2)])) { //Set titles $titles = []; @@ -404,7 +408,7 @@ abstract class AbstractController extends BaseAbstractController implements Serv } //Set locale locales context - $parameters['head']['alternates'][$shortCurrent] = [ + $parameters['alternates'][$shortCurrent] = [ 'absolute' => $this->router->generate($this->route, $routeParams, UrlGeneratorInterface::ABSOLUTE_URL), 'relative' => $this->router->generate($this->route, $routeParams), 'title' => implode('/', $titles), @@ -414,74 +418,65 @@ abstract class AbstractController extends BaseAbstractController implements Serv } } - //With empty head title and section - if (empty($parameters['head']['title']) && !empty($parameters['section'])) { - //Set head title - $parameters['head']['title'] = implode(' - ', [$parameters['title'], $parameters['section'], $parameters['head']['site']]); - //With empty head title - } elseif (empty($parameters['head']['title'])) { - //Set head title - $parameters['head']['title'] = implode(' - ', [$parameters['title'], $parameters['head']['site']]); - } - - //With empty head description and description - if (empty($parameters['head']['description']) && !empty($parameters['description'])) { - //Set head description - $parameters['head']['description'] = $parameters['description']; + //With canonical + if (!empty($parameters['canonical'])) { + //Set facebook url + $parameters['facebook']['og:url'] = $parameters['canonical']; } //With empty facebook title and title - if (empty($parameters['head']['facebook']['og:title']) && !empty($parameters['title'])) { + if (empty($parameters['facebook']['og:title']) && !empty($parameters['title']['page'])) { //Set facebook title - $parameters['head']['facebook']['og:title'] = $parameters['title']; + $parameters['facebook']['og:title'] = $parameters['title']['page']; } //With empty facebook description and description - if (empty($parameters['head']['facebook']['og:description']) && !empty($parameters['description'])) { + if (empty($parameters['facebook']['og:description']) && !empty($parameters['description'])) { //Set facebook description - $parameters['head']['facebook']['og:description'] = $parameters['description']; + $parameters['facebook']['og:description'] = $parameters['description']; } //With locale if (!empty($this->locale)) { //Set facebook locale - $parameters['head']['facebook']['og:locale'] = $this->locale; + $parameters['facebook']['og:locale'] = $this->locale; //With alternates //XXX: locale change when fb_locale=xx_xx is provided is done in FacebookSubscriber //XXX: see https://stackoverflow.com/questions/20827882/in-open-graph-markup-whats-the-use-of-oglocalealternate-without-the-locati - if (!empty($parameters['head']['alternates'])) { + if (!empty($parameters['alternates'])) { //Iterate on alternates - foreach($parameters['head']['alternates'] as $lang => $alternate) { + foreach($parameters['alternates'] as $lang => $alternate) { if (strlen($lang) == 5) { //Set facebook locale alternate - $parameters['head']['facebook']['og:locale:alternate'] = str_replace('-', '_', $lang); + $parameters['facebook']['og:locale:alternate'] = str_replace('-', '_', $lang); } } } } + //Without facebook image defined and texts + if (empty($parameters['facebook']['og:image']) && !empty($this->request) && !empty($parameters['fbimage']['texts']) && !empty($this->modified)) { + //Get facebook image + //XXX: decode getPathInfo (see https://github.com/symfony/symfony/issues/2579) + $parameters['facebook'] += $this->image->getFacebook(urldecode($this->request->getPathInfo()), $parameters['fbimage']['texts'], $this->modified->getTimestamp()); + } + //With count if (!empty($this->count)) { //With prev link if ($this->page > 0) { //Set head prev - $parameters['head']['prev'] = $this->generateUrl($this->request->get('_route'), ['page' => $this->page - 1]+$this->request->get('_route_params')); + $parameters['prev'] = $this->generateUrl($this->request->get('_route'), ['page' => $this->page - 1]+$this->request->get('_route_params')); } //With next link if ($this->count > ($this->page + 1) * $this->limit) { //Set head next - $parameters['head']['next'] = $this->generateUrl($this->request->get('_route'), ['page' => $this->page + 1]+$this->request->get('_route_params')); + $parameters['next'] = $this->generateUrl($this->request->get('_route'), ['page' => $this->page + 1]+$this->request->get('_route_params')); } } - //Without facebook image defined and texts - if (empty($parameters['head']['facebook']['og:image']) && !empty($this->request) && !empty($parameters['head']['fbimage']['texts']) && !empty($this->modified)) { - //Get facebook image - $parameters['head']['facebook'] += $this->facebook->getImage($this->request->getPathInfo(), $parameters['head']['fbimage']['texts'], $this->modified->getTimestamp()); - } - //Call twig render method $content = $this->twig->render($view, $parameters); diff --git a/Controller/ArticleController.php b/Controller/ArticleController.php index 9cdb247..68e3216 100644 --- a/Controller/ArticleController.php +++ b/Controller/ArticleController.php @@ -104,7 +104,7 @@ class ArticleController extends AbstractController { ); //Set title - $this->context['title'] = $this->translator->trans('Articles list'); + $this->context['title']['page'] = $this->translator->trans('Articles list'); //Set description $this->context['description'] = $this->translator->trans('Welcome to raphaël\'s developer diary article listing'); @@ -133,7 +133,7 @@ class ArticleController extends AbstractController { //With invalid slug if ($slug !== $this->context['article']['slug']) { //Redirect on correctly spelled article - return $this->redirectToRoute('rapsys_blog_article_view', ['id' => $this->context['article']['id'], 'slug' => $this->context['article']['slug']], Response::HTTP_MOVED_PERMANENTLY); + return $this->redirectToRoute('rapsysblog_article_view', ['id' => $this->context['article']['id'], 'slug' => $this->context['article']['slug']], Response::HTTP_MOVED_PERMANENTLY); } //Set modified @@ -194,7 +194,7 @@ class ArticleController extends AbstractController { ); //Set title - $this->context['title'] = $this->context['article']['title']; + $this->context['title']['page'] = $this->context['article']['title']; //Set description $this->context['description'] = $this->context['article']['description']; diff --git a/Controller/DefaultController.php b/Controller/DefaultController.php index 6333b45..962c0b8 100644 --- a/Controller/DefaultController.php +++ b/Controller/DefaultController.php @@ -33,7 +33,7 @@ class DefaultController extends AbstractController { */ public function about(Request $request): Response { //Set page - $this->context['title'] = $this->translator->trans('About'); + $this->context['title']['page'] = $this->translator->trans('About'); //Set description $this->context['description'] = $this->translator->trans('Welcome to raphaël\'s developer diary about page'); @@ -74,7 +74,7 @@ class DefaultController extends AbstractController { */ public function contact(Request $request): Response { //Set title - $this->context['title'] = $this->translator->trans('Contact'); + $this->context['title']['page'] = $this->translator->trans('Contact'); //Set description $this->context['description'] = $this->translator->trans('Welcome to raphaël\'s developer diary contact page'); @@ -99,8 +99,8 @@ class DefaultController extends AbstractController { //Create the form according to the FormType created previously. //And give the proper parameters - $form = $this->createForm('Rapsys\BlogBundle\Form\ContactType', $data, [ - 'action' => $this->generateUrl('rapsys_blog_contact'), + $form = $this->createForm('Rapsys\PackBundle\Form\ContactType', $data, [ + 'action' => $this->generateUrl('rapsysblog_contact'), 'method' => 'POST' ]); @@ -140,8 +140,11 @@ class DefaultController extends AbstractController { //Send message $this->mailer->send($message); + //Add verification notice + $this->addFlash('notice', $this->translator->trans('Your message has been sent')); + //Redirect on the same route with sent=1 to cleanup form - return $this->redirectToRoute($request->get('_route'), ['sent' => 1]+$request->get('_route_params')); + return $this->redirectToRoute($request->get('_route'), $request->get('_route_params')); //Catch obvious transport exception } catch(TransportExceptionInterface $e) { //Add error message mail unreachable @@ -175,7 +178,7 @@ class DefaultController extends AbstractController { } //Render template - return $this->render('@RapsysBlog/form/contact.html.twig', ['contact' => $form->createView(), 'sent' => $request->query->get('sent', 0)]+$this->context, $response); + return $this->render('@RapsysBlog/form/contact.html.twig', ['contact' => $form->createView()]+$this->context, $response); } /** @@ -261,7 +264,7 @@ class DefaultController extends AbstractController { ); //Set title - $this->context['title'] = $this->translator->trans('Home'); + $this->context['title']['page'] = $this->translator->trans('Home'); //Set description $this->context['description'] = $this->translator->trans('Welcome to raphaël\'s developer diary'); diff --git a/Controller/KeywordController.php b/Controller/KeywordController.php index d4649a0..b0c9eb2 100644 --- a/Controller/KeywordController.php +++ b/Controller/KeywordController.php @@ -98,7 +98,7 @@ class KeywordController extends AbstractController { ); //Set title - $this->context['title'] = $this->translator->trans('Keywords list'); + $this->context['title']['page'] = $this->translator->trans('Keywords list'); //Set description $this->context['description'] = $this->translator->trans('Welcome to raphaël\'s developer diary keyword listing'); @@ -127,7 +127,7 @@ class KeywordController extends AbstractController { //With invalid slug if ($slug !== $this->context['keyword']['slug']) { //Redirect on correctly spelled keyword - return $this->redirectToRoute('rapsys_blog_keyword_view', ['id' => $this->context['keyword']['id'], 'slug' => $this->context['keyword']['slug']], Response::HTTP_MOVED_PERMANENTLY); + return $this->redirectToRoute('rapsysblog_keyword_view', ['id' => $this->context['keyword']['id'], 'slug' => $this->context['keyword']['slug']], Response::HTTP_MOVED_PERMANENTLY); } //Set modified @@ -191,7 +191,7 @@ class KeywordController extends AbstractController { ); //Set title - $this->context['title'] = $this->context['keyword']['title']; + $this->context['title']['page'] = $this->context['keyword']['title']; //Set description $this->context['description'] = $this->context['keyword']['description']; diff --git a/Controller/UserController.php b/Controller/UserController.php index ed6109c..a4e2e57 100644 --- a/Controller/UserController.php +++ b/Controller/UserController.php @@ -111,7 +111,7 @@ class UserController extends AbstractController { ); //Set title - $this->context['title'] = $this->translator->trans('Users list'); + $this->context['title']['page'] = $this->translator->trans('Users list'); //Set description $this->context['description'] = $this->translator->trans('Welcome to raphaël\'s developer diary user listing'); @@ -140,7 +140,7 @@ class UserController extends AbstractController { //With invalid slug if ($slug !== $this->context['user']['slug']) { //Redirect on correctly spelled user - return $this->redirectToRoute('rapsys_blog_user_view', ['id' => $this->context['user']['id'], 'slug' => $this->context['user']['slug']], Response::HTTP_MOVED_PERMANENTLY); + return $this->redirectToRoute('rapsysblog_user_view', ['id' => $this->context['user']['id'], 'slug' => $this->context['user']['slug']], Response::HTTP_MOVED_PERMANENTLY); } //Set modified @@ -207,7 +207,7 @@ class UserController extends AbstractController { ); //Set title - $this->context['title'] = $this->context['user']['pseudonym']; + $this->context['title']['page'] = $this->context['user']['pseudonym']; //Set description //TODO: Add user creation ? Add a description field ? diff --git a/DependencyInjection/Configuration.php b/DependencyInjection/Configuration.php index d66631a..dd9c35c 100644 --- a/DependencyInjection/Configuration.php +++ b/DependencyInjection/Configuration.php @@ -103,12 +103,12 @@ class Configuration implements ConfigurationInterface { //TODO: copy to '%kernel.translator.fallbacks%' 'locales' => [ 'en_gb' ], 'logo' => [ + 'alt' => 'John Doe\'s blog logo', 'png' => '@RapsysBlog/png/logo.png', - 'svg' => '@RapsysBlog/svg/logo.svg', - 'alt' => 'John Doe\'s blog logo' + 'svg' => '@RapsysBlog/svg/logo.svg' ], 'path' => is_link(($prefix = is_dir('public') ? './public/' : './').($link = 'bundles/'.str_replace('_', '', $alias))) && is_dir(realpath($prefix.$link)) || is_dir($prefix.$link) ? $link : dirname(__DIR__).'/Resources/public', - 'root' => 'rapsys_blog', + 'root' => 'rapsysblog', 'title' => 'John Doe\'s blog', ]; @@ -182,9 +182,9 @@ class Configuration implements ConfigurationInterface { ->arrayNode('logo') ->addDefaultsIfNotSet() ->children() + ->scalarNode('alt')->defaultValue($defaults['logo']['alt'])->end() ->scalarNode('png')->defaultValue($defaults['logo']['png'])->end() ->scalarNode('svg')->defaultValue($defaults['logo']['svg'])->end() - ->scalarNode('alt')->defaultValue($defaults['logo']['alt'])->end() ->end() ->end() ->scalarNode('path')->defaultValue($defaults['path'])->end() diff --git a/DependencyInjection/RapsysBlogExtension.php b/DependencyInjection/RapsysBlogExtension.php index 26330bf..1510f4d 100644 --- a/DependencyInjection/RapsysBlogExtension.php +++ b/DependencyInjection/RapsysBlogExtension.php @@ -33,7 +33,7 @@ class RapsysBlogExtension extends Extension implements PrependExtensionInterface */ public function prepend(ContainerBuilder $container): void { //Process the configuration - $configs = $container->getExtensionConfig($this->getAlias()); + $configs = $container->getExtensionConfig($alias = $this->getAlias()); //Load configuration $configuration = $this->getConfiguration($configs, $container); @@ -44,17 +44,23 @@ class RapsysBlogExtension extends Extension implements PrependExtensionInterface //Detect when no user configuration is provided if ($configs === [[]]) { //Prepend default config - $container->prependExtensionConfig($this->getAlias(), $config); + $container->prependExtensionConfig($alias, $config); } //Save configuration in parameters - $container->setParameter($this->getAlias(), $config); + $container->setParameter($alias, $config); //Store flattened array in parameters - //XXX: don't flatten rapsys_blog.icon.png key which is required to be an array - foreach($this->flatten($config, $this->getAlias(), 10, '.', ['rapsys_blog.contact', 'rapsys_blog.copy', 'rapsys_blog.icon', 'rapsys_blog.icon.png', 'rapsys_blog.logo', 'rapsys_blog.facebook.apps', 'rapsys_blog.locales', 'rapsys_blog.languages']) as $k => $v) { + //XXX: don't flatten rapsysblog.icon.png key which is required to be an array + foreach($this->flatten($config, $alias, 10, '.', ['rapsysblog.contact', 'rapsysblog.copy', 'rapsysblog.icon', 'rapsysblog.icon.png', 'rapsysblog.logo', 'rapsysblog.facebook.apps', 'rapsysblog.locales', 'rapsysblog.languages']) as $k => $v) { $container->setParameter($k, $v); } + + //Set rapsysair.alias key + $container->setParameter($alias.'.alias', $alias); + + //Set rapsysair.version key + $container->setParameter($alias.'.version', RapsysBlogBundle::getVersion()); } /** diff --git a/Fixture/BlogFixture.php b/Fixture/BlogFixture.php index 48429e4..4b70dcd 100644 --- a/Fixture/BlogFixture.php +++ b/Fixture/BlogFixture.php @@ -45,7 +45,7 @@ class BlogFixture extends Fixture { /** * {@inheritDoc} */ - public function load(ObjectManager $manager) { + public function load(ObjectManager $manager): void { //Civility tree $civilityTree = [ 'Mister', diff --git a/Form/ArticleType.php b/Form/ArticleType.php index 346ae88..afed7cb 100644 --- a/Form/ArticleType.php +++ b/Form/ArticleType.php @@ -6,31 +6,25 @@ use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; -class ArticleType extends AbstractType -{ - /** - * {@inheritdoc} - */ - public function buildForm(FormBuilderInterface $builder, array $options) - { - $builder->add('created')->add('updated')->add('site')->add('author')->add('keywords'); - } - - /** - * {@inheritdoc} - */ - public function configureOptions(OptionsResolver $resolver) - { - $resolver->setDefaults(array( - 'data_class' => 'Rapsys\BlogBundle\Entity\Article' - )); - } +class ArticleType extends AbstractType { + /** + * {@inheritdoc} + */ + public function buildForm(FormBuilderInterface $builder, array $options): void { + $builder->add('created')->add('updated')->add('site')->add('author')->add('keywords'); + } - /** - * {@inheritdoc} - */ - public function getBlockPrefix() - { - return 'rapsys_blogbundle_article'; - } + /** + * {@inheritdoc} + */ + public function configureOptions(OptionsResolver $resolver): void { + $resolver->setDefaults(['data_class' => 'Rapsys\BlogBundle\Entity\Article']); + } + + /** + * {@inheritdoc} + */ + public function getName(): string { + return 'rapsysblog_article'; + } } diff --git a/Form/AuthorType.php b/Form/AuthorType.php index 9a908a4..57eb128 100644 --- a/Form/AuthorType.php +++ b/Form/AuthorType.php @@ -6,31 +6,25 @@ use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; -class AuthorType extends AbstractType -{ - /** - * {@inheritdoc} - */ - public function buildForm(FormBuilderInterface $builder, array $options) - { - $builder->add('name')->add('slug')->add('created')->add('updated'); - } - - /** - * {@inheritdoc} - */ - public function configureOptions(OptionsResolver $resolver) - { - $resolver->setDefaults(array( - 'data_class' => 'Rapsys\BlogBundle\Entity\Author' - )); - } +class AuthorType extends AbstractType { + /** + * {@inheritdoc} + */ + public function buildForm(FormBuilderInterface $builder, array $options): void { + $builder->add('name')->add('slug')->add('created')->add('updated'); + } - /** - * {@inheritdoc} - */ - public function getBlockPrefix() - { - return 'rapsys_blogbundle_author'; - } + /** + * {@inheritdoc} + */ + public function configureOptions(OptionsResolver $resolver): void { + $resolver->setDefaults(['data_class' => 'Rapsys\BlogBundle\Entity\Author']); + } + + /** + * {@inheritdoc} + */ + public function getName(): string { + return 'rapsysblog_author'; + } } diff --git a/Form/ContactType.php b/Form/ContactType.php deleted file mode 100644 index f727b44..0000000 --- a/Form/ContactType.php +++ /dev/null @@ -1,56 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Rapsys\BlogBundle\Form; - -use Symfony\Component\Form\FormBuilderInterface; -use Symfony\Component\OptionsResolver\OptionsResolver; -use Symfony\Component\Form\Extension\Core\Type\TextType; -use Symfony\Component\Form\Extension\Core\Type\TextareaType; -use Symfony\Component\Form\Extension\Core\Type\EmailType; -use Symfony\Component\Form\Extension\Core\Type\SubmitType; -use Symfony\Component\Validator\Constraints\Email; -use Symfony\Component\Validator\Constraints\NotBlank; - -use Rapsys\PackBundle\Form\CaptchaType; - -class ContactType extends CaptchaType { - /** - * {@inheritdoc} - */ - public function buildForm(FormBuilderInterface $builder, array $options): void { - //Add fields - $builder - ->add('name', TextType::class, ['attr' => ['placeholder' => 'Your name'], 'constraints' => [new NotBlank(['message' => 'Please provide your name'])]]) - ->add('subject', TextType::class, ['attr' => ['placeholder' => 'Subject'], 'constraints' => [new NotBlank(['message' => 'Please provide your subject'])]]) - ->add('mail', EmailType::class, ['attr' => ['placeholder' => 'Your mail'], 'constraints' => [new NotBlank(['message' => 'Please provide a valid mail']), new Email(['message' => 'Your mail doesn\'t seems to be valid'])]]) - ->add('message', TextareaType::class, ['attr' => ['placeholder' => 'Your message', 'cols' => 50, 'rows' => 15], 'constraints' => [new NotBlank(['message' => 'Please provide your message'])]]) - ->add('submit', SubmitType::class, ['label' => 'Send', 'attr' => ['class' => 'submit']]); - - //Call parent - parent::buildForm($builder, $options); - } - - /** - * {@inheritdoc} - */ - public function configureOptions(OptionsResolver $resolver): void { - //Set defaults - $resolver->setDefaults(['error_bubbling' => true]); - } - - /** - * {@inheritdoc} - */ - public function getName() { - return 'contact_form'; - } -} diff --git a/Form/EditType.php b/Form/EditType.php index 8e0a543..6046f59 100644 --- a/Form/EditType.php +++ b/Form/EditType.php @@ -21,22 +21,19 @@ class EditType extends BaseEditType { /** * {@inheritdoc} */ - public function buildForm(FormBuilderInterface $builder, array $options): FormBuilderInterface { + public function buildForm(FormBuilderInterface $builder, array $options): void { //Call parent build form - $form = parent::buildForm($builder, $options); + parent::buildForm($builder, $options); //Add extra pseudonym field if (!empty($options['pseudonym'])) { - $form->add('pseudonym', TextType::class, ['attr' => ['placeholder' => 'Your pseudonym'], 'required' => false]); + $builder->add('pseudonym', TextType::class, ['attr' => ['placeholder' => 'Your pseudonym'], 'required' => false]); } //Add extra slug field if (!empty($options['slug'])) { - $form->add('slug', TextType::class, ['attr' => ['placeholder' => 'Your slug'], 'required' => false]); + $builder->add('slug', TextType::class, ['attr' => ['placeholder' => 'Your slug'], 'required' => false]); } - - //Return form - return $form; } /** @@ -60,6 +57,6 @@ class EditType extends BaseEditType { * {@inheritdoc} */ public function getName(): string { - return 'rapsys_blog_edit'; + return 'rapsysuser_edit'; } } diff --git a/Form/KeywordType.php b/Form/KeywordType.php index 895842b..bd41d72 100644 --- a/Form/KeywordType.php +++ b/Form/KeywordType.php @@ -6,31 +6,25 @@ use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; -class KeywordType extends AbstractType -{ - /** - * {@inheritdoc} - */ - public function buildForm(FormBuilderInterface $builder, array $options) - { - $builder->add('created')->add('updated')->add('articles'); - } - - /** - * {@inheritdoc} - */ - public function configureOptions(OptionsResolver $resolver) - { - $resolver->setDefaults(array( - 'data_class' => 'Rapsys\BlogBundle\Entity\Keyword' - )); - } +class KeywordType extends AbstractType { + /** + * {@inheritdoc} + */ + public function buildForm(FormBuilderInterface $builder, array $options): void { + $builder->add('created')->add('updated')->add('articles'); + } - /** - * {@inheritdoc} - */ - public function getBlockPrefix() - { - return 'rapsys_blogbundle_keyword'; - } + /** + * {@inheritdoc} + */ + public function configureOptions(OptionsResolver $resolver): void { + $resolver->setDefaults(['data_class' => 'Rapsys\BlogBundle\Entity\Keyword']); + } + + /** + * {@inheritdoc} + */ + public function getBlockPrefix() { + return 'rapsysblog_keyword'; + } } diff --git a/Form/LanguageType.php b/Form/LanguageType.php index 5b4d153..7946d83 100644 --- a/Form/LanguageType.php +++ b/Form/LanguageType.php @@ -6,31 +6,25 @@ use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; -class LanguageType extends AbstractType -{ - /** - * {@inheritdoc} - */ - public function buildForm(FormBuilderInterface $builder, array $options) - { - $builder->add('iso6391')->add('iso6393')->add('created')->add('updated'); - } - - /** - * {@inheritdoc} - */ - public function configureOptions(OptionsResolver $resolver) - { - $resolver->setDefaults(array( - 'data_class' => 'Rapsys\BlogBundle\Entity\Language' - )); - } +class LanguageType extends AbstractType { + /** + * {@inheritdoc} + */ + public function buildForm(FormBuilderInterface $builder, array $options): void { + $builder->add('iso6391')->add('iso6393')->add('created')->add('updated'); + } - /** - * {@inheritdoc} - */ - public function getBlockPrefix() - { - return 'rapsys_blogbundle_language'; - } + /** + * {@inheritdoc} + */ + public function configureOptions(OptionsResolver $resolver): void { + $resolver->setDefaults(['data_class' => 'Rapsys\BlogBundle\Entity\Language']); + } + + /** + * {@inheritdoc} + */ + public function getBlockPrefix() { + return 'rapsysblog_language'; + } } diff --git a/Form/RegisterType.php b/Form/RegisterType.php index 690fefb..4205942 100644 --- a/Form/RegisterType.php +++ b/Form/RegisterType.php @@ -25,22 +25,19 @@ class RegisterType extends BaseRegisterType { /** * {@inheritdoc} */ - public function buildForm(FormBuilderInterface $builder, array $options): FormBuilderInterface { + public function buildForm(FormBuilderInterface $builder, array $options): void { //Call parent build form - $form = parent::buildForm($builder, $options); + parent::buildForm($builder, $options); //Add extra pseudonym field if (!empty($options['pseudonym'])) { - $form->add('pseudonym', TextType::class, ['attr' => ['placeholder' => 'Your pseudonym'], 'required' => false]); + $builder->add('pseudonym', TextType::class, ['attr' => ['placeholder' => 'Your pseudonym'], 'required' => false]); } //Add extra slug field if (!empty($options['slug'])) { - $form->add('slug', TextType::class, ['attr' => ['placeholder' => 'Your slug'], 'required' => false]); + $builder->add('slug', TextType::class, ['attr' => ['placeholder' => 'Your slug'], 'required' => false]); } - - //Return form - return $form; } /** @@ -64,6 +61,6 @@ class RegisterType extends BaseRegisterType { * {@inheritdoc} */ public function getName(): string { - return 'rapsys_blog_register'; + return 'rapsysuser_register'; } } diff --git a/Form/SiteType.php b/Form/SiteType.php index 5e7cc1b..78a86c9 100644 --- a/Form/SiteType.php +++ b/Form/SiteType.php @@ -6,31 +6,25 @@ use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; -class SiteType extends AbstractType -{ - /** - * {@inheritdoc} - */ - public function buildForm(FormBuilderInterface $builder, array $options) - { - $builder->add('domain')->add('created')->add('updated'); - } - - /** - * {@inheritdoc} - */ - public function configureOptions(OptionsResolver $resolver) - { - $resolver->setDefaults(array( - 'data_class' => 'Rapsys\BlogBundle\Entity\Site' - )); - } +class SiteType extends AbstractType { + /** + * {@inheritdoc} + */ + public function buildForm(FormBuilderInterface $builder, array $options): void { + $builder->add('domain')->add('created')->add('updated'); + } - /** - * {@inheritdoc} - */ - public function getBlockPrefix() - { - return 'rapsys_blogbundle_site'; - } + /** + * {@inheritdoc} + */ + public function configureOptions(OptionsResolver $resolver): void { + $resolver->setDefaults(['data_class' => 'Rapsys\BlogBundle\Entity\Site']); + } + + /** + * {@inheritdoc} + */ + public function getName(): string { + return 'rapsysblog_site'; + } } diff --git a/RapsysBlogBundle.php b/RapsysBlogBundle.php index 2e19b50..bea7223 100644 --- a/RapsysBlogBundle.php +++ b/RapsysBlogBundle.php @@ -11,16 +11,24 @@ namespace Rapsys\BlogBundle; -use Symfony\Component\DependencyInjection\Container; +use Symfony\Component\DependencyInjection\Extension\ExtensionInterface; use Symfony\Component\HttpKernel\Bundle\Bundle; class RapsysBlogBundle extends Bundle { + /** + * {@inheritdoc} + */ + public function getContainerExtension(): ?ExtensionInterface { + //Return created container extension + return $this->createContainerExtension(); + } + /** * Return bundle alias * * @return string The bundle alias */ - public static function getAlias(): string { + public static function getAlias(): string { //With namespace if ($npos = strrpos(static::class, '\\')) { //Set name pos @@ -40,7 +48,17 @@ class RapsysBlogBundle extends Bundle { $bpos = strlen(static::class) - $npos; } - //Return underscored lowercase bundle alias - return Container::underscore(substr(static::class, $npos, $bpos)); - } + //Return lowercase bundle alias + return strtolower(substr(static::class, $npos, $bpos)); + } + + /** + * Return bundle version + * + * @return string The bundle version + */ + public static function getVersion(): string { + //Return version + return '0.0.1'; + } } diff --git a/Repository/ArticleRepository.php b/Repository/ArticleRepository.php index a2e1a5e..9708751 100644 --- a/Repository/ArticleRepository.php +++ b/Repository/ArticleRepository.php @@ -128,7 +128,7 @@ SQL; 'created' => $data['created'], 'updated' => $data['updated'], 'modified' => $data['modified'], - 'link' => $this->router->generate('rapsys_blog_article_view', ['id' => $id, 'slug' => $slug]), + 'link' => $this->router->generate('rapsysblog_article_view', ['id' => $id, 'slug' => $slug]), 'keywords' => [] ]; @@ -146,7 +146,7 @@ SQL; 'id' => $id, 'slug' => $slug = $data['k_slugs'][$k], 'title' => $data['k_titles'][$k], - 'link' => $this->router->generate('rapsys_blog_keyword_view', ['id' => $id, 'slug' => $slug]), + 'link' => $this->router->generate('rapsysblog_keyword_view', ['id' => $id, 'slug' => $slug]), ]; } } @@ -246,7 +246,7 @@ SQL; 'created' => $data['created'], 'updated' => $data['updated'], 'modified' => $data['modified'], - 'link' => $this->router->generate('rapsys_blog_article_view', ['id' => $id, 'slug' => $slug]), + 'link' => $this->router->generate('rapsysblog_article_view', ['id' => $id, 'slug' => $slug]), 'alternates' => [], 'keywords' => [] ]; @@ -265,7 +265,7 @@ SQL; 'id' => $kid, 'slug' => $slug = $data['k_slugs'][$k], 'title' => $data['k_titles'][$k], - 'link' => $this->router->generate('rapsys_blog_keyword_view', ['id' => $kid, 'slug' => $slug]), + 'link' => $this->router->generate('rapsysblog_keyword_view', ['id' => $kid, 'slug' => $slug]), ]; } @@ -283,7 +283,7 @@ SQL; 'locale' => $locale, 'slug' => $slug = $data['kat_slugs'][$k], 'title' => $data['kat_titles'][$k], - 'link' => $this->router->generate('rapsys_blog_article_view', ['_locale' => $locale, 'id' => $id, 'slug' => $slug]), + 'link' => $this->router->generate('rapsysblog_article_view', ['_locale' => $locale, 'id' => $id, 'slug' => $slug]), ]; } diff --git a/Repository/KeywordRepository.php b/Repository/KeywordRepository.php index 4bd8aa8..555f107 100644 --- a/Repository/KeywordRepository.php +++ b/Repository/KeywordRepository.php @@ -116,7 +116,7 @@ SQL; 'created' => $data['created'], 'updated' => $data['updated'], 'modified' => $data['modified'], - 'link' => $this->router->generate('rapsys_blog_keyword_view', ['id' => $id, 'slug' => $slug]) + 'link' => $this->router->generate('rapsysblog_keyword_view', ['id' => $id, 'slug' => $slug]) ]; } @@ -249,7 +249,7 @@ SQL; 'created' => $data['created'], 'updated' => $data['updated'], 'modified' => $data['modified'], - 'link' => $this->router->generate('rapsys_blog_keyword_view', ['id' => $id, 'slug' => $slug]), + 'link' => $this->router->generate('rapsysblog_keyword_view', ['id' => $id, 'slug' => $slug]), 'alternates' => [], 'articles' => [] ]; @@ -273,7 +273,7 @@ SQL; 'description' => $data['a_descriptions'][$k], 'slug' => $slug = $data['a_slugs'][$k], 'title' => $data['a_titles'][$k], - 'link' => $this->router->generate('rapsys_blog_article_view', ['id' => $aid, 'slug' => $slug]), + 'link' => $this->router->generate('rapsysblog_article_view', ['id' => $aid, 'slug' => $slug]), 'keywords' => [] ]; } @@ -296,7 +296,7 @@ SQL; 'id' => $data['ak_kids'][$k], 'slug' => $slug = $data['ak_slugs'][$k], 'title' => $data['ak_titles'][$k], - 'link' => $this->router->generate('rapsys_blog_keyword_view', ['id' => $data['ak_kids'][$k], 'slug' => $slug]), + 'link' => $this->router->generate('rapsysblog_keyword_view', ['id' => $data['ak_kids'][$k], 'slug' => $slug]), ]; } @@ -314,7 +314,7 @@ SQL; 'locale' => $locale, 'slug' => $slug = $data['ckt_slugs'][$k], 'title' => $data['ckt_titles'][$k], - 'link' => $this->router->generate('rapsys_blog_keyword_view', ['_locale' => $locale, 'id' => $id, 'slug' => $slug]), + 'link' => $this->router->generate('rapsysblog_keyword_view', ['_locale' => $locale, 'id' => $id, 'slug' => $slug]), ]; } diff --git a/Repository/UserRepository.php b/Repository/UserRepository.php index befe695..71b6cd1 100644 --- a/Repository/UserRepository.php +++ b/Repository/UserRepository.php @@ -197,8 +197,8 @@ SQL; 'modified' => $data['modified'], 'civility' => $data['civility'], #'slug' => $data['slug'], - 'link' => $this->router->generate('rapsys_blog_user_view', ['id' => $data['id'], 'slug' => $data['slug']]), - 'edit' => $this->router->generate('rapsys_user_edit', ['mail' => $short = $this->slugger->short($data['mail']), 'hash' => $this->slugger->hash($short)]), + 'link' => $this->router->generate('rapsysblog_user_view', ['id' => $data['id'], 'slug' => $data['slug']]), + 'edit' => $this->router->generate('rapsysuser_edit', ['mail' => $short = $this->slugger->short($data['mail']), 'hash' => $this->slugger->hash($short)]), 'articles' => [], 'groups' => [] ]; @@ -214,7 +214,7 @@ SQL; $ret[$data['id']]['groups'][$id] = [ 'title' => /*$group = */$this->translator->trans($titles[$k]), #'slug' => $this->slugger->slug($group) - #'link' => $this->router->generate('rapsys_user_group_view', ['id' => $id, 'slug' => $this->slugger->short($group)]) + #'link' => $this->router->generate('rapsysuser_group_view', ['id' => $id, 'slug' => $this->slugger->short($group)]) ]; } } @@ -246,7 +246,7 @@ SQL; 'description' => $descriptions[$k], #'slug' => $slugs[$k], 'title' => $titles[$k], - 'link' => $this->router->generate('rapsys_blog_article_view', ['id' => $id, 'slug' => $slugs[$k]]), + 'link' => $this->router->generate('rapsysblog_article_view', ['id' => $id, 'slug' => $slugs[$k]]), //TODO: replace with keywords !!! 'keywords' => [] ]; @@ -265,7 +265,7 @@ SQL; $ret[$data['id']]['articles'][$id]['keywords'][$kid] = [ #'slug' => $slugs[$k], 'title' => $titles[$k], - 'link' => $this->router->generate('rapsys_blog_keyword_view', ['id' => $kid, 'slug' => $slugs[$k]]), + 'link' => $this->router->generate('rapsysblog_keyword_view', ['id' => $kid, 'slug' => $slugs[$k]]), ]; } } @@ -282,9 +282,9 @@ SQL; * Find user by id as array * * @param integer $id The user id - * @return array The article array + * @return ?array The article array */ - public function findByIdAsArray(int $id): array { + public function findByIdAsArray(int $id): ?array { //Set the request $req = <<addScalarResult('kt_titles', 'kt_titles', 'string'); //Get data - $data = $this->_em + if (($data = $this->_em ->createNativeQuery($req, $rsm) ->setParameter('id', $id) - ->getOneOrNullResult(); + ->getOneOrNullResult()) === null) { + //Return null + return $data; + } //Set return $return = [ @@ -418,8 +421,8 @@ SQL; 'modified' => $data['modified'], 'civility' => $data['civility'], 'slug' => $data['slug'], - 'link' => $this->router->generate('rapsys_blog_user_view', ['id' => $data['id'], 'slug' => $data['slug']]), - 'edit' => $this->router->generate('rapsys_user_edit', ['mail' => $short = $this->slugger->short($data['mail']), 'hash' => $this->slugger->hash($short)]), + 'link' => $this->router->generate('rapsysblog_user_view', ['id' => $data['id'], 'slug' => $data['slug']]), + 'edit' => $this->router->generate('rapsysuser_edit', ['mail' => $short = $this->slugger->short($data['mail']), 'hash' => $this->slugger->hash($short)]), 'articles' => [], 'groups' => [] ]; @@ -435,7 +438,7 @@ SQL; $return['groups'][$id] = [ 'title' => /*$group = */$this->translator->trans($titles[$k]), #'slug' => $this->slugger->slug($group) - #'link' => $this->router->generate('rapsys_user_group_view', ['id' => $id, 'slug' => $this->slugger->short($group)]) + #'link' => $this->router->generate('rapsysuser_group_view', ['id' => $id, 'slug' => $this->slugger->short($group)]) ]; } } @@ -467,7 +470,7 @@ SQL; 'description' => $descriptions[$k], #'slug' => $slugs[$k], 'title' => $titles[$k], - 'link' => $this->router->generate('rapsys_blog_article_view', ['id' => $id, 'slug' => $slugs[$k]]), + 'link' => $this->router->generate('rapsysblog_article_view', ['id' => $id, 'slug' => $slugs[$k]]), //TODO: replace with keywords !!! 'keywords' => [] ]; @@ -486,7 +489,7 @@ SQL; $return['articles'][$id]['keywords'][$kid] = [ #'slug' => $slugs[$k], 'title' => $titles[$k], - 'link' => $this->router->generate('rapsys_blog_keyword_view', ['id' => $kid, 'slug' => $slugs[$k]]), + 'link' => $this->router->generate('rapsysblog_keyword_view', ['id' => $kid, 'slug' => $slugs[$k]]), ]; } } diff --git a/Resources/config/parameters.yml.dist b/Resources/config/parameters.yml.dist deleted file mode 100644 index ab4e194..0000000 --- a/Resources/config/parameters.yml.dist +++ /dev/null @@ -1,60 +0,0 @@ -# This file is a "template" of what your parameters.yml file should look like -# Set parameters here that may be different on each deployment target of the app, e.g. development, staging, production. -# https://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration -parameters: - database_host: localhost - database_port: null - database_name: blog - database_user: blog - database_password: ~ - - mailer_transport: smtp - mailer_host: 127.0.0.1 - mailer_user: ~ - mailer_password: ~ - - # A secret key that's used to generate certain security-related tokens - secret: ThisTokenIsNotSoSecretChangeIt - - # Blog config - blog.locales: [ en, fr ] - blog.logo: 'bundles/rapsysblog/png/favicon.png' - blog.title: 'Dev log' - blog.welcome: 'Welcome to %blog.title%' - blog.contact_mail: 'blog@rapsys.eu' - blog.contact_name: 'Raphaël Gertz' - -# Add json dql function -doctrine: - orm: - dql: - string_functions: - Json: - Rapsys\BlogBundle\DQL\JsonFunction - -# Sension config -sensio_framework_extra: - router: - annotations: false - request: - converters: false - auto_convert: false - view: - annotations: false - cache: - annotations: false - security: - annotations: false - psr_message: - enabled: false - -# Set fallback locale -framework: - translator: - fallbacks: - - '%locale%' - -# Set twig global -twig: - globals: - blog_locales: '%blog.locales%' diff --git a/Resources/config/routing.yml b/Resources/config/routing.yml deleted file mode 100644 index 448e728..0000000 --- a/Resources/config/routing.yml +++ /dev/null @@ -1,48 +0,0 @@ -root: - path: / - defaults: { _controller: RapsysBlogBundle:Default:root } - -homepage: - path: /{_locale} - defaults: { _controller: RapsysBlogBundle:Page:index } - requirements: - _locale: '%blog.locales%' - -about: - path: /{_locale}/about - defaults: { _controller: RapsysBlogBundle:Page:about } - requirements: - _locale: '%blog.locales%' - -contact: - path: /{_locale}/contact - defaults: { _controller: RapsysBlogBundle:Page:contact } - requirements: - _locale: '%blog.locales%' - -articles: - path: /{_locale}/articles - defaults: { _controller: RapsysBlogBundle:Page:articleIndex } - requirements: - _locale: '%blog.locales%' - -articles_article: - path: /{_locale}/articles/{_article} - defaults: { _controller: RapsysBlogBundle:Page:articleRead } - requirements: - _locale: '%blog.locales%' - #_article: '\d+' - _article: '[a-z0-9-]+' - -keywords: - path: /{_locale}/keywords - defaults: { _controller: RapsysBlogBundle:Page:keywordIndex } - requirements: - _locale: '%blog.locales%' - -keywords_keyword: - path: /{_locale}/keywords/{_keyword} - defaults: { _controller: RapsysBlogBundle:Page:keywordRead } - requirements: - _locale: '%blog.locales%' - _keyword: '[a-z0-9-]+' diff --git a/Resources/config/services.yml b/Resources/config/services.yml deleted file mode 100644 index 2dcb15f..0000000 --- a/Resources/config/services.yml +++ /dev/null @@ -1,7 +0,0 @@ -services: - twig.extension.intl: - class: Twig_Extensions_Extension_Intl - tags: [ twig.extension ] - rapsys_blog.twig.base64: - class: Rapsys\BlogBundle\Twig\Base64Extension - tags: [ twig.extension ] diff --git a/Resources/views/_base.html.twig b/Resources/views/_base.html.twig deleted file mode 100644 index 7e2c170..0000000 --- a/Resources/views/_base.html.twig +++ /dev/null @@ -1,163 +0,0 @@ - - - - {% block head %} - - {{ head.title }} - - {% if head.description is defined and head.description %} - - {% endif %} - {% if head.keywords is defined and head.keywords %} - - {% endif %} - {% if head.facebook is defined and head.facebook %} - {% for property, contents in head.facebook %} - {% if contents is iterable %} - {% for content in contents %} - - {% endfor %} - {% else %} - - {% endif %} - {% endfor %} - {% endif %} - {% block link %} - {% if head.icon.ico is defined and head.icon.ico is not empty %} - - {% endif %} - {% if head.icon.png is defined and head.icon.png is not empty %} - {% for size, icon in head.icon.png %} - {# Apple #} - {% if size in [120, 152, 167, 180] %} - {% if size == 180 %} - - {% endif %} - - {# Windows #} - {% elseif size in [70, 150, 310] %} - - {# Others #} - {% else %} - - {% endif %} - {% endfor %} - {% endif %} - {% if head.icon.svg is defined and head.icon.svg is not empty %} - - {% endif %} - {# stylesheet '//fonts.googleapis.com/css?family=Irish+Grover' '//fonts.googleapis.com/css?family=La+Belle+Aurore' '@RapsysBlogBundle/Resources/public/css/{reset,screen}.css' #} - {% stylesheet '@RapsysBlog/css/{reset,droidsans,lemon,notoemoji,screen}.css' %} - - {% endstylesheet %} - {% stopwatch 'stylesheet' %} - {% endstopwatch %} - {% if head.canonical is defined and head.canonical %} - - {% endif %} - {% if head.alternates is defined and head.alternates %} - {% for lang, alternate in head.alternates %} - - {% endfor %} - {% endif %} - {% if head.prev is defined and head.prev %} - - {% endif %} - {% if head.next is defined and head.next %} - - {% endif %} - {% endblock %} - {% endblock %} - - - {% block body %} - {% block header %} - - {% endblock %} - {% block message %} - {# pass an array argument to get the messages of those types (['warning', 'error']) #} - {% for label, messages in app.flashes %} - {% if messages %} -
-
    - {% for message in messages %} -
  • {{ message }}
  • - {% endfor %} -
-
- {% endif %} - {% endfor %} - {% endblock %} - {% endblock %} - {#{% block sidebar %}{% endblock %}#} - {% block content %} -
-
- {% block title %}

{{ title }}

{% endblock %}> -

{{ description }}

-
-
- {% endblock %} - {% block footer %} - - {% endblock %} - {% block javascripts %} - {% stopwatch 'javascript' %} - {#{% javascript '@RapsysBlog/js/*.js' %} - - {% endjavascript %}#} - {% endstopwatch %} - {% endblock %} - - diff --git a/Resources/views/article/index.html.twig b/Resources/views/article/index.html.twig deleted file mode 100644 index 512e0fa..0000000 --- a/Resources/views/article/index.html.twig +++ /dev/null @@ -1,45 +0,0 @@ -{% extends '@RapsysBlog/_base.html.twig' %} -{% block content %} -
-
-

{{ title }}

-

{{ description }}

-
-
- {% for article in articles %} - - {% endfor %} -
- {% if head.prev is defined or head.next is defined %} - - {% endif %} -
-{% endblock %} diff --git a/Resources/views/form/contact.html.twig b/Resources/views/form/contact.html.twig deleted file mode 100644 index dbbf191..0000000 --- a/Resources/views/form/contact.html.twig +++ /dev/null @@ -1,31 +0,0 @@ -{% extends '@RapsysBlog/_base.html.twig' %} -{% block content %} -
-
-

{{ title }}

-

{{ description }}

-
-
- {% if sent is defined and sent %} -

{% trans %}Your message has been sent{% endtrans %}

- {% else %} - {{ form_start(contact) }} - {{ form_row(contact.subject) }} - - {{ form_row(contact.name) }} - - {{ form_row(contact.mail) }} - - {{ form_row(contact.message) }} - - {{ form_row(contact.captcha) }} - - {{ form_row(contact.submit) }} - - {# Render CSRF token etc .#} -
{{ form_rest(contact) }}
- {{ form_end(contact) }} - {% endif %} -
-
-{% endblock %} diff --git a/Resources/views/form/recover.html.twig b/Resources/views/form/recover.html.twig deleted file mode 100644 index fa48444..0000000 --- a/Resources/views/form/recover.html.twig +++ /dev/null @@ -1,28 +0,0 @@ -{% extends '@RapsysBlog/_base.html.twig' %} -{% block content %} -
-
-

{{ title }}

-
-
- {% if sent %} -

{% trans %}Your account recovery message has been sent{% endtrans %}

- {% else %} - {{ form_start(recover) }} - {% if recover.mail is defined %} - {{ form_row(recover.mail) }} - {% endif %} - - {% if recover.password is defined %} - {{ form_row(recover.password) }} - {% endif %} - - {{ form_row(recover.submit) }} - - {# Render CSRF token etc .#} -
{{ form_rest(recover) }}
- {{ form_end(recover) }} - {% endif %} -
-
-{% endblock %} diff --git a/Resources/views/index.html.twig b/Resources/views/index.html.twig deleted file mode 100644 index 464fd8a..0000000 --- a/Resources/views/index.html.twig +++ /dev/null @@ -1,45 +0,0 @@ -{% extends '@RapsysBlog/_base.html.twig' %} -{% block content %} -
-
-

{{ title }}

-

{{ description }}

-
-
- {% for article in articles %} - - {% endfor %} -
- {% if head.prev is defined or head.next is defined %} - - {% endif %} -
-{% endblock %} diff --git a/Resources/views/keyword/index.html.twig b/Resources/views/keyword/index.html.twig deleted file mode 100644 index dae4b70..0000000 --- a/Resources/views/keyword/index.html.twig +++ /dev/null @@ -1,45 +0,0 @@ -{% extends '@RapsysBlog/_base.html.twig' %} -{% block content %} -
-
-

{{ title }}

-

{{ description }}

-
-
- {% for keyword in keywords %} - - {% endfor %} -
- {% if head.prev is defined or head.next is defined %} - - {% endif %} -
-{% endblock %} diff --git a/Resources/views/mail/_base.html.twig b/Resources/views/mail/_base.html.twig deleted file mode 100644 index 23eea6d..0000000 --- a/Resources/views/mail/_base.html.twig +++ /dev/null @@ -1,43 +0,0 @@ -{% extends '@RapsysBlog/_base.html.twig' %} -{% block head %} - - - {% if head.locale is defined and head.locale %}{% endif %} - - {{ subject }} - -{% endblock %} -{% block header %} - - - - {##} - - - - -{% endblock %} -{% block message %}{% endblock %} -{% block footer %} - - - - - -
{{ head.logo.alt }}{{ head.logo.alt }}

{{ head.site }}

{{ copy.long }} - {{ copy.short }}
-{% endblock %} diff --git a/Resources/config/doctrine/Article.orm.yml b/config/doctrine/Article.orm.yml similarity index 100% rename from Resources/config/doctrine/Article.orm.yml rename to config/doctrine/Article.orm.yml diff --git a/Resources/config/doctrine/ArticleTranslation.orm.yml b/config/doctrine/ArticleTranslation.orm.yml similarity index 100% rename from Resources/config/doctrine/ArticleTranslation.orm.yml rename to config/doctrine/ArticleTranslation.orm.yml diff --git a/Resources/config/doctrine/Civility.orm.yml b/config/doctrine/Civility.orm.yml similarity index 100% rename from Resources/config/doctrine/Civility.orm.yml rename to config/doctrine/Civility.orm.yml diff --git a/Resources/config/doctrine/Group.orm.yml b/config/doctrine/Group.orm.yml similarity index 100% rename from Resources/config/doctrine/Group.orm.yml rename to config/doctrine/Group.orm.yml diff --git a/Resources/config/doctrine/Keyword.orm.yml b/config/doctrine/Keyword.orm.yml similarity index 100% rename from Resources/config/doctrine/Keyword.orm.yml rename to config/doctrine/Keyword.orm.yml diff --git a/Resources/config/doctrine/KeywordTranslation.orm.yml b/config/doctrine/KeywordTranslation.orm.yml similarity index 100% rename from Resources/config/doctrine/KeywordTranslation.orm.yml rename to config/doctrine/KeywordTranslation.orm.yml diff --git a/Resources/config/doctrine/User.orm.yml b/config/doctrine/User.orm.yml similarity index 100% rename from Resources/config/doctrine/User.orm.yml rename to config/doctrine/User.orm.yml diff --git a/Resources/config/doctrine/UserTranslation.orm.yml b/config/doctrine/UserTranslation.orm.yml similarity index 100% rename from Resources/config/doctrine/UserTranslation.orm.yml rename to config/doctrine/UserTranslation.orm.yml diff --git a/Resources/config/packages/rapsys_blog.yaml b/config/packages/rapsysblog.yaml similarity index 70% rename from Resources/config/packages/rapsys_blog.yaml rename to config/packages/rapsysblog.yaml index 660ca0f..09d7ac5 100644 --- a/Resources/config/packages/rapsys_blog.yaml +++ b/config/packages/rapsysblog.yaml @@ -1,6 +1,6 @@ # Dev log configuration #TODO: set mail, calendar and facebook app id as env variables ??? -rapsys_blog: +rapsysblog: contact: address: 'blog@rapsys.eu' name: 'Raphaël Gertz' @@ -61,11 +61,11 @@ rapsys_blog: alt: 'Rapsys'' dev log logo' png: '@RapsysBlog/png/logo.png' svg: '@RapsysBlog/svg/logo.svg' - root: 'rapsys_blog' + root: 'rapsysblog' title: 'Rapsys'' dev log' #RapsysUser configuration -rapsys_user: +rapsysuser: #Class replacement class: group: 'Rapsys\BlogBundle\Entity\Group' @@ -76,66 +76,65 @@ rapsys_user: admin: 'ROLE_ADMIN' civility: 'Mister' group: [ 'User' ] + languages: '%rapsysblog.languages%' #Route replacement route: - index: - name: 'rapsys_blog' register: - name: 'rapsys_user_register' + name: 'rapsysuser_register' #Translate replacement - translate: [ 'title', 'password', 'copy.by', 'copy.long', 'copy.short', 'copy.title', 'head.logo.alt', 'head.site' ] - #Languages replacement - languages: '%rapsys_blog.languages%' + translate: [ 'title.page', 'title.section', 'title.site', 'password', 'copy.by', 'copy.long', 'copy.short', 'copy.title', 'logo.alt' ] #Contact replacement - contact: '%rapsys_blog.contact%' + contact: '%rapsysblog.contact%' #Context replacement context: - copy: '%rapsys_blog.copy%' - head: - icon: '%rapsys_blog.icon%' - logo: '%rapsys_blog.logo%' - root: '%rapsys_blog.root%' - site: '%rapsys_blog.title%' + copy: '%rapsysblog.copy%' + icon: '%rapsysblog.icon%' + logo: '%rapsysblog.logo%' + root: '%rapsysblog.root%' + title: + section: 'User' + site: '%rapsysblog.title%' #Edit replacement edit: admin: mail: true slug: true - route: - index: 'root' view: edit: 'Rapsys\BlogBundle\Form\EditType' name: '@RapsysBlog/form/edit.html.twig' context: - title: 'Modify account' + title: + page: 'Modify account' password: 'Modify password' + root: '%rapsysblog.root%' #Index replacement index: - route: - index: 'root' view: name: '@RapsysBlog/user/index.html.twig' context: - title: 'User list' + title: + page: 'User list' + root: '%rapsysblog.root%' #Login replacement login: - route: - index: 'root' view: name: '@RapsysBlog/form/login.html.twig' context: - title: 'Login' + title: + page: 'Login' + root: '%rapsysblog.root%' #Recover replacement recover: route: - index: 'root' recover: 'recover_url' view: name: '@RapsysBlog/form/recover.html.twig' context: - title: 'Recover' + title: + page: 'Recover' + root: '%rapsysblog.root%' mail: - subject: 'Welcome back %%recipient_name%% to %%head.site%%' + subject: 'Welcome back %%recipient_name%% to %%title.site%%' html: '@RapsysBlog/mail/recover.html.twig' text: '@RapsysBlog/mail/recover.text.twig' context: @@ -145,15 +144,16 @@ rapsys_user: pseudonym: false slug: false route: - index: 'root' confirm: 'confirm_url' view: form: 'Rapsys\BlogBundle\Form\RegisterType' name: '@RapsysBlog/form/register.html.twig' context: - title: 'Register' + title: + page: 'Register' + root: '%rapsysblog.root%' mail: - subject: 'Welcome %%recipient_name%% to %%head.site%%' + subject: 'Welcome %%recipient_name%% to %%title.site%%' html: '@RapsysBlog/mail/register.html.twig' text: '@RapsysBlog/mail/register.text.twig' context: @@ -168,6 +168,9 @@ doctrine: collate: 'utf8mb4_unicode_ci' # Orm configuration orm: + # Controler resolver + controller_resolver: + auto_mapping: false # Replace repository factory repository_factory: 'Rapsys\BlogBundle\Factory\RepositoryFactory' @@ -180,7 +183,7 @@ doctrine: # Framework configuration framework: - default_locale: '%rapsys_blog.locale%' + default_locale: '%rapsysblog.locale%' disallow_search_engine_index: false #error_controller: 'Rapsys\BlogBundle\Controller\ErrorController::show' mailer: @@ -195,7 +198,7 @@ framework: cookie_secure: 'auto' cookie_samesite: 'lax' translator: - fallbacks: '%rapsys_blog.locales%' + fallbacks: '%rapsysblog.locales%' # Security configuration security: @@ -214,14 +217,14 @@ security: providers: database: entity: - class: Rapsys\BlogBundle\Entity\User - property: mail + class: 'Rapsys\BlogBundle\Entity\User' + property: 'mail' # Set firewall firewalls: # Disables authentication for assets and the profiler, adapt it according to your needs dev: - pattern: ^/(_(profiler|wdt)|css|images|js)/ + pattern: '^/(_(profiler|wdt)|css|images|js)/' security: false main: @@ -246,9 +249,9 @@ security: # Redirect to referer if different from login route use_referer: true # Login path - login_path: rapsys_user_login + login_path: 'rapsysuser_login' # Check path - check_path: rapsys_user_login + check_path: 'rapsysuser_login' # Username parameter username_parameter: 'login[mail]' # Password parameter @@ -263,9 +266,9 @@ security: # Set logout route logout: # Logout route - path: rapsys_user_logout + path: 'rapsysuser_logout' # Logout default target - target: rapsys_blog + target: 'rapsysblog' # Set custom access denied handler #access_denied_handler: Rapsys\BlogBundle\Handler\AccessDeniedHandler @@ -287,29 +290,29 @@ security: services: #Register abstract controller Rapsys\BlogBundle\Controller\AbstractController: - arguments: [ '@security.authorization_checker', '@service_container', '@rapsys_user.access_decision_manager', '@doctrine', '@rapsys_pack.facebook_util', '@form.factory', '@rapsys_pack.image_util', '@mailer.mailer', '@doctrine.orm.default_entity_manager', '@rapsys_pack.path_package', '@router', '@rapsys_pack.slugger_util', '@security.helper', '@request_stack', '@translator', '@twig' ] + arguments: [ '@security.authorization_checker', '@service_container', '@rapsysuser.access_decision_manager', '@doctrine', '@rapsysblog.facebook_util', '@form.factory', '@rapsyspack.image_util', '@mailer.mailer', '@doctrine.orm.default_entity_manager', '@rapsyspack.path_package', '@router', '@rapsyspack.slugger_util', '@security.helper', '@request_stack', '@translator', '@twig' ] tags: [ 'controller.service_arguments' ] #Register article controller Rapsys\BlogBundle\Controller\ArticleController: - arguments: [ '@security.authorization_checker', '@service_container', '@rapsys_user.access_decision_manager', '@doctrine', '@rapsys_pack.facebook_util', '@form.factory', '@rapsys_pack.image_util', '@mailer.mailer', '@doctrine.orm.default_entity_manager', '@rapsys_pack.path_package', '@router', '@rapsys_pack.slugger_util', '@security.helper', '@request_stack', '@translator', '@twig' ] + arguments: [ '@security.authorization_checker', '@service_container', '@rapsysuser.access_decision_manager', '@doctrine', '@rapsysblog.facebook_util', '@form.factory', '@rapsyspack.image_util', '@mailer.mailer', '@doctrine.orm.default_entity_manager', '@rapsyspack.path_package', '@router', '@rapsyspack.slugger_util', '@security.helper', '@request_stack', '@translator', '@twig' ] tags: [ 'controller.service_arguments' ] #Register default controller Rapsys\BlogBundle\Controller\DefaultController: - arguments: [ '@security.authorization_checker', '@service_container', '@rapsys_user.access_decision_manager', '@doctrine', '@rapsys_pack.facebook_util', '@form.factory', '@rapsys_pack.image_util', '@mailer.mailer', '@doctrine.orm.default_entity_manager', '@rapsys_pack.path_package', '@router', '@rapsys_pack.slugger_util', '@security.helper', '@request_stack', '@translator', '@twig' ] + arguments: [ '@security.authorization_checker', '@service_container', '@rapsysuser.access_decision_manager', '@doctrine', '@rapsysblog.facebook_util', '@form.factory', '@rapsyspack.image_util', '@mailer.mailer', '@doctrine.orm.default_entity_manager', '@rapsyspack.path_package', '@router', '@rapsyspack.slugger_util', '@security.helper', '@request_stack', '@translator', '@twig' ] tags: [ 'controller.service_arguments' ] #Register keyword controller Rapsys\BlogBundle\Controller\KeywordController: - arguments: [ '@security.authorization_checker', '@service_container', '@rapsys_user.access_decision_manager', '@doctrine', '@rapsys_pack.facebook_util', '@form.factory', '@rapsys_pack.image_util', '@mailer.mailer', '@doctrine.orm.default_entity_manager', '@rapsys_pack.path_package', '@router', '@rapsys_pack.slugger_util', '@security.helper', '@request_stack', '@translator', '@twig' ] + arguments: [ '@security.authorization_checker', '@service_container', '@rapsysuser.access_decision_manager', '@doctrine', '@rapsysblog.facebook_util', '@form.factory', '@rapsyspack.image_util', '@mailer.mailer', '@doctrine.orm.default_entity_manager', '@rapsyspack.path_package', '@router', '@rapsyspack.slugger_util', '@security.helper', '@request_stack', '@translator', '@twig' ] tags: [ 'controller.service_arguments' ] #Register user controller Rapsys\BlogBundle\Controller\UserController: - arguments: [ '@security.authorization_checker', '@service_container', '@rapsys_user.access_decision_manager', '@doctrine', '@rapsys_pack.facebook_util', '@form.factory', '@rapsys_pack.image_util', '@mailer.mailer', '@doctrine.orm.default_entity_manager', '@rapsys_pack.path_package', '@router', '@rapsys_pack.slugger_util', '@security.helper', '@request_stack', '@translator', '@twig' ] + arguments: [ '@security.authorization_checker', '@service_container', '@rapsysuser.access_decision_manager', '@doctrine', '@rapsysblog.facebook_util', '@form.factory', '@rapsyspack.image_util', '@mailer.mailer', '@doctrine.orm.default_entity_manager', '@rapsyspack.path_package', '@router', '@rapsyspack.slugger_util', '@security.helper', '@request_stack', '@translator', '@twig' ] tags: [ 'controller.service_arguments' ] Rapsys\BlogBundle\Factory\RepositoryFactory: - arguments: [ '@request_stack', '@router', '@rapsys_pack.slugger_util', '@translator', '%rapsys_blog.languages%', '%rapsys_blog.locale%' ] + arguments: [ '@request_stack', '@router', '@rapsyspack.slugger_util', '@translator', '%rapsysblog.languages%', '%rapsysblog.locale%' ] #Register blog fixture Rapsys\BlogBundle\Fixture\BlogFixture: - arguments: [ '@rapsys_pack.slugger_util' ] + arguments: [ '@rapsyspack.slugger_util' ] tags: [ 'doctrine.fixture.orm' ] #Register form factory as public form.factory: @@ -318,18 +321,19 @@ services: public: true #Register facebook event subscriber Rapsys\PackBundle\Subscriber\FacebookSubscriber: - arguments: [ '@router', '%rapsys_blog.locales%' ] + arguments: [ '@router', '%rapsysblog.locales%' ] tags: [ 'kernel.event_subscriber' ] #Register facebook util service - rapsys_blog.facebook_util: + rapsysblog.facebook_util: class: 'Rapsys\PackBundle\Util\FacebookUtil' #TODO: create the facebook.png file and add the fonts #TODO: add a default font - arguments: [ '@router', '%kernel.project_dir%/var/cache', '%rapsys_pack.path%', 'facebook', '%rapsys_blog.path%/png/facebook.png', { irishgrover: '%rapsys_blog.path%/ttf/irishgrover.v10.ttf', labelleaurore: '%rapsys_blog.path%/ttf/labelleaurore.v10.ttf', dejavusans: '%rapsys_blog.path%/ttf/dejavusans.2.37.ttf', droidsans: '%rapsys_blog.path%/ttf/droidsans.regular.ttf' } ] + arguments: [ '@service_container', '@router', '@rapsyspack.slugger_util' ] + #arguments: [ '@service_container', '@router', '%kernel.project_dir%/var/cache', '%rapsyspack.path%', 'facebook', '%rapsysblog.path%/png/facebook.png', { irishgrover: '%rapsysblog.path%/ttf/irishgrover.v10.ttf', labelleaurore: '%rapsysblog.path%/ttf/labelleaurore.v10.ttf', dejavusans: '%rapsysblog.path%/ttf/dejavusans.2.37.ttf', droidsans: '%rapsysblog.path%/ttf/droidsans.regular.ttf' } ] public: true #Register contact form type - Rapsys\BlogBundle\Form\ContactType: - arguments: [ '@rapsys_pack.image_util', '@rapsys_pack.slugger_util', '@translator' ] + Rapsys\PackBundle\Form\ContactType: + arguments: [ '@rapsyspack.image_util', '@rapsyspack.slugger_util', '@translator', true ] tags: [ 'form.type' ] # Twig configuration @@ -341,10 +345,10 @@ twig: #XXX: enable forced regeneration of css and js at each page load cache: false #Fix form layout for css - #XXX: @RapsysBlog is a shortcut to vendor/rapsys/blogbundle/Resources/views directory here + #XXX: @RapsysBlog is a shortcut to vendor/rapsys/blogbundle/templates directory here form_theme: [ '@RapsysBlog/form/form_div_layout.html.twig' ] #Set twig paths paths: #Required by email.image(site_logo) directive - #XXX: Allow twig to resolve @RapsysBlog/png/logo.png in vendor/rapsys/blogbundle/Resources/public/png/logo.png - '%kernel.project_dir%/vendor/rapsys/blogbundle/Resources/public': 'RapsysBlog' + #XXX: Allow twig to resolve @RapsysBlog/png/logo.png in vendor/rapsys/blogbundle/public/png/logo.png + '%kernel.project_dir%/vendor/rapsys/blogbundle/public': 'RapsysBlog' diff --git a/Resources/config/routes/rapsys_blog.yaml b/config/routes/rapsysblog.yaml similarity index 90% rename from Resources/config/routes/rapsys_blog.yaml rename to config/routes/rapsysblog.yaml index 0f94955..5c84a64 100644 --- a/Resources/config/routes/rapsys_blog.yaml +++ b/config/routes/rapsysblog.yaml @@ -4,84 +4,84 @@ #SCRUD: index, add, edit, delete, view #TODO: rename view in show ??? -rapsys_blog: +rapsysblog: path: en_gb: '/en' fr_fr: '/' controller: Rapsys\BlogBundle\Controller\DefaultController::index methods: GET -rapsys_blog_about: +rapsysblog_about: path: en_gb: '/en/about' fr_fr: '/a-propos' controller: Rapsys\BlogBundle\Controller\DefaultController::about methods: GET -rapsys_blog_contact: +rapsysblog_contact: path: en_gb: '/en/contact/{id<\d*>?}/{user<[\w-]*>?}' fr_fr: '/contacter/{id<\d*>?}/{user<[\w-]*>?}' controller: Rapsys\BlogBundle\Controller\DefaultController::contact methods: GET|POST -rapsys_blog_article: +rapsysblog_article: path: en_gb: '/en/article' fr_fr: '/article' controller: Rapsys\BlogBundle\Controller\ArticleController::index methods: GET|POST -rapsys_blog_article_view: +rapsysblog_article_view: path: en_gb: '/en/article/{id<\d*>?}/{slug<[\w-]*>?}' fr_fr: '/article/{id<\d*>?}/{slug<[\w-]*>?}' controller: Rapsys\BlogBundle\Controller\ArticleController::view methods: GET|POST -rapsys_blog_keyword: +rapsysblog_keyword: path: en_gb: '/en/keyword' fr_fr: '/mot-cle' controller: Rapsys\BlogBundle\Controller\KeywordController::index methods: GET|POST -rapsys_blog_keyword_view: +rapsysblog_keyword_view: path: en_gb: '/en/keyword/{id<\d*>?}/{slug<[\w-]*>?}' fr_fr: '/mot-cle/{id<\d*>?}/{slug<[\w-]*>?}' controller: Rapsys\BlogBundle\Controller\KeywordController::view methods: GET|POST -rapsys_blog_frequently_asked_questions: +rapsysblog_frequently_asked_questions: path: en_gb: '/en/frequently-asked-questions' fr_fr: '/foire-aux-questions' controller: Rapsys\BlogBundle\Controller\DefaultController::frequentlyAskedQuestions methods: GET -rapsys_blog_terms_of_service: +rapsysblog_terms_of_service: path: en_gb: '/en/terms-of-service' fr_fr: '/conditions-generales-d-utilisation' controller: Rapsys\BlogBundle\Controller\DefaultController::termsOfService methods: GET -rapsys_blog_user: +rapsysblog_user: path: en_gb: '/en/user' fr_fr: '/utilisateur' controller: Rapsys\BlogBundle\Controller\UserController::index methods: GET -rapsys_blog_user_view: +rapsysblog_user_view: path: en_gb: '/en/user/{id<\d+>}/{slug<[\w-]+>?}' fr_fr: '/utilisateur/{id<\d+>}/{slug<[\w-]+>?}' controller: Rapsys\BlogBundle\Controller\UserController::view methods: GET|POST -rapsys_user_confirm: +rapsysuser_confirm: path: en_gb: '/en/confirm/{hash}/{mail}' fr_fr: '/confirmer/{hash}/{mail}' @@ -91,7 +91,7 @@ rapsys_user_confirm: hash: '[a-zA-Z0-9=_-]+' methods: GET|POST -rapsys_user_edit: +rapsysuser_edit: path: en_gb: '/en/user/{hash}/{mail}' fr_fr: '/utilisateur/{hash}/{mail}' @@ -101,7 +101,7 @@ rapsys_user_edit: hash: '[a-zA-Z0-9=_-]+' methods: GET|POST -rapsys_user_login: +rapsysuser_login: path: en_gb: '/en/login/{hash}/{mail}' fr_fr: '/connecter/{hash}/{mail}' @@ -114,13 +114,13 @@ rapsys_user_login: hash: '[a-zA-Z0-9=_-]+' methods: GET|POST -rapsys_user_logout: +rapsysuser_logout: path: en_gb: '/en/logout' fr_fr: '/deconnecter' methods: GET -rapsys_user_recover: +rapsysuser_recover: path: en_gb: '/en/recover/{hash}/{pass}/{mail}' fr_fr: '/recuperer/{hash}/{pass}/{mail}' @@ -135,7 +135,7 @@ rapsys_user_recover: hash: '[a-zA-Z0-9=_-]+' methods: GET|POST -rapsys_user_register: +rapsysuser_register: path: en_gb: '/en/register' fr_fr: '/enregistrer' diff --git a/Resources/public/css/base.css b/public/css/base.css similarity index 100% rename from Resources/public/css/base.css rename to public/css/base.css diff --git a/Resources/public/css/reset.css b/public/css/reset.css similarity index 100% rename from Resources/public/css/reset.css rename to public/css/reset.css diff --git a/Resources/public/css/screen.css b/public/css/screen.css similarity index 99% rename from Resources/public/css/screen.css rename to public/css/screen.css index 7227a83..dc8dd24 100644 --- a/Resources/public/css/screen.css +++ b/public/css/screen.css @@ -191,6 +191,10 @@ section header p { text-align: justify; } +article header p { + margin-bottom: 0; +} + article section, section section { padding: 0 .5rem; diff --git a/Resources/public/ico/icon.ico b/public/ico/icon.ico similarity index 100% rename from Resources/public/ico/icon.ico rename to public/ico/icon.ico diff --git a/Resources/public/js/example.js b/public/js/example.js similarity index 100% rename from Resources/public/js/example.js rename to public/js/example.js diff --git a/Resources/public/png/icon.120.png b/public/png/icon.120.png similarity index 100% rename from Resources/public/png/icon.120.png rename to public/png/icon.120.png diff --git a/Resources/public/png/icon.128.png b/public/png/icon.128.png similarity index 100% rename from Resources/public/png/icon.128.png rename to public/png/icon.128.png diff --git a/Resources/public/png/icon.150.png b/public/png/icon.150.png similarity index 100% rename from Resources/public/png/icon.150.png rename to public/png/icon.150.png diff --git a/Resources/public/png/icon.152.png b/public/png/icon.152.png similarity index 100% rename from Resources/public/png/icon.152.png rename to public/png/icon.152.png diff --git a/Resources/public/png/icon.167.png b/public/png/icon.167.png similarity index 100% rename from Resources/public/png/icon.167.png rename to public/png/icon.167.png diff --git a/Resources/public/png/icon.180.png b/public/png/icon.180.png similarity index 100% rename from Resources/public/png/icon.180.png rename to public/png/icon.180.png diff --git a/Resources/public/png/icon.192.png b/public/png/icon.192.png similarity index 100% rename from Resources/public/png/icon.192.png rename to public/png/icon.192.png diff --git a/Resources/public/png/icon.196.png b/public/png/icon.196.png similarity index 100% rename from Resources/public/png/icon.196.png rename to public/png/icon.196.png diff --git a/Resources/public/png/icon.256.png b/public/png/icon.256.png similarity index 100% rename from Resources/public/png/icon.256.png rename to public/png/icon.256.png diff --git a/Resources/public/png/icon.310.png b/public/png/icon.310.png similarity index 100% rename from Resources/public/png/icon.310.png rename to public/png/icon.310.png diff --git a/Resources/public/png/icon.32.png b/public/png/icon.32.png similarity index 100% rename from Resources/public/png/icon.32.png rename to public/png/icon.32.png diff --git a/Resources/public/png/icon.70.png b/public/png/icon.70.png similarity index 100% rename from Resources/public/png/icon.70.png rename to public/png/icon.70.png diff --git a/Resources/public/png/logo.png b/public/png/logo.png similarity index 100% rename from Resources/public/png/logo.png rename to public/png/logo.png diff --git a/Resources/public/svg/icon.svg b/public/svg/icon.svg similarity index 100% rename from Resources/public/svg/icon.svg rename to public/svg/icon.svg diff --git a/Resources/public/svg/logo.svg b/public/svg/logo.svg similarity index 100% rename from Resources/public/svg/logo.svg rename to public/svg/logo.svg diff --git a/templates/_base.html.twig b/templates/_base.html.twig new file mode 100644 index 0000000..a175f5d --- /dev/null +++ b/templates/_base.html.twig @@ -0,0 +1,165 @@ + + + + {% block meta %}{% endblock %} + {% block title %}{{ [title.page, title.section, title.site]|filter(v => v)|join(' - ') }}{% endblock %} + {% block stylesheet %} + + {% if description is defined and description %} + + {% endif %} + {% if keywords is defined and keywords %} + + {% endif %} + {% if icon is defined and icon %} + + + {% for size, icon in icon.png %} + {# Apple #} + {% if size in [120, 152, 167, 180] %} + {% if size == 180 %} + + {% endif %} + + {# Windows #} + {% elseif size in [70, 150, 310] %} + + {# Others #} + {% else %} + + {% endif %} + {% endfor %} + {% endif %} + {% stopwatch 'stylesheet' %} + {# stylesheet '//fonts.googleapis.com/css?family=Irish+Grover' '//fonts.googleapis.com/css?family=La+Belle+Aurore' '@RapsysBlogBundle/css/{reset,screen}.css' #} + {% stylesheet '@RapsysBlog/css/{reset,droidsans,lemon,notoemoji,screen}.css' %} + + {% endstylesheet %} + {% endstopwatch %} + {% if canonical is defined and canonical %} + + {% endif %} + {% if alternates is defined and alternates %} + {% for lang, alternate in alternates %} + + {% endfor %} + {% endif %} + {% if prev is defined and prev %} + + {% endif %} + {% if next is defined and next %} + + {% endif %} + {% if facebook is defined and facebook %} + {% for property, contents in facebook %} + {% if contents is iterable %} + {% for content in contents %} + + {% endfor %} + {% else %} + + {% endif %} + {% endfor %} + {% endif %} + {% endblock %} + + + {% block body %} + {% block header %} + + {% endblock %} + {% block message %} + {# pass an array argument to get the messages of those types (['warning', 'error']) #} + {% for label, messages in app.flashes %} + {% if messages %} +
+
    + {% for message in messages %} +
  • {{ message }}
  • + {% endfor %} +
+
+ {% endif %} + {% endfor %} + {% endblock %} + {#{% block sidebar %}{% endblock %}#} + {% block content %} +
+
+ {% block content_title %}

{{ title.page }}

{% endblock %}> +

{{ description }}

+
+
+ {% endblock %} + {% block footer %} + + {% endblock %} + {% endblock %} + {% block javascript %} + {% stopwatch 'javascript' %} + {#{% javascript '@RapsysBlog/js/*.js' %} + + {% endjavascript %}#} + {% endstopwatch %} + {% endblock %} + + diff --git a/Resources/views/about.html.twig b/templates/about.html.twig similarity index 84% rename from Resources/views/about.html.twig rename to templates/about.html.twig index b5a5840..ab7b440 100644 --- a/Resources/views/about.html.twig +++ b/templates/about.html.twig @@ -2,7 +2,7 @@ {% block content %}
-

{{ title }}

+

{{ title.page }}

{{ description }}

diff --git a/templates/article/index.html.twig b/templates/article/index.html.twig new file mode 100644 index 0000000..c1a8aab --- /dev/null +++ b/templates/article/index.html.twig @@ -0,0 +1,45 @@ +{% extends '@RapsysBlog/_base.html.twig' %} +{% block content %} +
+
+

{{ title.page }}

+

{{ description }}

+
+
+ {% for article in articles %} + + {% endfor %} +
+ {% if ( prev is defined and prev ) or ( next is defined and next ) %} + + {% endif %} +
+{% endblock %} diff --git a/Resources/views/article/view.html.twig b/templates/article/view.html.twig similarity index 75% rename from Resources/views/article/view.html.twig rename to templates/article/view.html.twig index 36a87a2..565a729 100644 --- a/Resources/views/article/view.html.twig +++ b/templates/article/view.html.twig @@ -1,9 +1,8 @@ {% extends '@RapsysBlog/_base.html.twig' %} -{% block title %}{% endblock %} {% block content %}
-

{{ title }}

+

{{ title.page }}

{% trans with {'%date%': article.created|format_datetime('full', 'short')} %}Published the %date%{% endtrans %}{% if article.created != article.updated %}{% trans with {'%date%': article.updated|format_datetime('short', 'short')} %}, edited the %date%{% endtrans %}{% endif %}

@@ -13,7 +12,7 @@ {% if article.keywords is defined and article.keywords %} {% endif %} diff --git a/templates/form/contact.html.twig b/templates/form/contact.html.twig new file mode 100644 index 0000000..c67c919 --- /dev/null +++ b/templates/form/contact.html.twig @@ -0,0 +1,27 @@ +{% extends '@RapsysBlog/_base.html.twig' %} +{% block content %} +
+
+

{{ title.page }}

+

{{ description }}

+
+
+ {{ form_start(contact) }} + {{ form_row(contact.subject) }} + + {{ form_row(contact.name) }} + + {{ form_row(contact.mail) }} + + {{ form_row(contact.message) }} + + {{ form_row(contact.captcha) }} + + {{ form_row(contact.submit) }} + + {# Render CSRF token etc .#} +
{{ form_rest(contact) }}
+ {{ form_end(contact) }} +
+
+{% endblock %} diff --git a/Resources/views/form/edit.html.twig b/templates/form/edit.html.twig similarity index 55% rename from Resources/views/form/edit.html.twig rename to templates/form/edit.html.twig index ef321a6..5d6aa4a 100644 --- a/Resources/views/form/edit.html.twig +++ b/templates/form/edit.html.twig @@ -2,7 +2,7 @@ {% block content %}
-

{{ title }}

+

{{ title.page }}

{% if disabled is defined and disabled %} @@ -11,55 +11,55 @@

{% trans %}Your verification mail has been sent, to activate your account follow the confirmation link inside{% endtrans %}

{% trans %}If you did not receive a verification mail, check your Spam or Junk mail folder{% endtrans %}

{% else %} - {{ form_start(edit) }} - {% if edit.mail is defined %} - {{ form_row(edit.mail) }} + {{ form_start(register) }} + {% if register.mail is defined %} + {{ form_row(register.mail) }} {% endif %} - {% if edit.password is defined %} - {{ form_row(edit.password) }} + {% if register.password is defined %} + {{ form_row(register.password) }} {% endif %} - {% if edit.civility is defined %} - {{ form_row(edit.civility) }} + {% if register.civility is defined %} + {{ form_row(register.civility) }} {% endif %} - {% if edit.forename is defined %} - {{ form_row(edit.forename) }} + {% if register.forename is defined %} + {{ form_row(register.forename) }} {% endif %} - {% if edit.surname is defined %} - {{ form_row(edit.surname) }} + {% if register.surname is defined %} + {{ form_row(register.surname) }} {% endif %} - {% if edit.pseudonym is defined %} - {{ form_row(edit.pseudonym) }} + {% if register.pseudonym is defined %} + {{ form_row(register.pseudonym) }} {% endif %} - {% if edit.slug is defined %} - {{ form_row(edit.slug) }} + {% if register.slug is defined %} + {{ form_row(register.slug) }} {% endif %} - {% if edit.active is defined %} - {{ form_row(edit.active) }} + {% if register.active is defined %} + {{ form_row(register.active) }} {% endif %} - {% if edit.enable is defined %} - {{ form_row(edit.enable) }} + {% if register.enable is defined %} + {{ form_row(register.enable) }} {% endif %} - {{ form_row(edit.submit) }} + {{ form_row(register.submit) }} {# Render CSRF token etc .#} -
{{ form_rest(edit) }}
- {{ form_end(edit) }} +
{{ form_rest(register) }}
+ {{ form_end(register) }} {% endif %}
{% if reset is defined %}
-

{{ password }}

+

{{ password }}

{{ form_start(reset) }} diff --git a/Resources/views/form/form_div_layout.html.twig b/templates/form/form_div_layout.html.twig similarity index 100% rename from Resources/views/form/form_div_layout.html.twig rename to templates/form/form_div_layout.html.twig diff --git a/Resources/views/form/login.html.twig b/templates/form/login.html.twig similarity index 82% rename from Resources/views/form/login.html.twig rename to templates/form/login.html.twig index 2d15c51..260e418 100644 --- a/Resources/views/form/login.html.twig +++ b/templates/form/login.html.twig @@ -2,7 +2,7 @@ {% block content %}
-

{{ title }}

+

{{ title.page }}

{{ form_start(login) }} @@ -20,7 +20,7 @@ {% if recover is defined %}
-

{% trans %}Recover{% endtrans %}

+

{% trans %}Recover{% endtrans %}

{{ form_start(recover) }} diff --git a/templates/form/recover.html.twig b/templates/form/recover.html.twig new file mode 100644 index 0000000..46a4503 --- /dev/null +++ b/templates/form/recover.html.twig @@ -0,0 +1,24 @@ +{% extends '@RapsysBlog/_base.html.twig' %} +{% block content %} +
+
+

{{ title.page }}

+
+
+ {{ form_start(recover) }} + {% if recover.mail is defined %} + {{ form_row(recover.mail) }} + {% endif %} + + {% if recover.password is defined %} + {{ form_row(recover.password) }} + {% endif %} + + {{ form_row(recover.submit) }} + + {# Render CSRF token etc .#} +
{{ form_rest(recover) }}
+ {{ form_end(recover) }} +
+
+{% endblock %} diff --git a/Resources/views/form/register.html.twig b/templates/form/register.html.twig similarity index 95% rename from Resources/views/form/register.html.twig rename to templates/form/register.html.twig index 86080a6..11c3b9e 100644 --- a/Resources/views/form/register.html.twig +++ b/templates/form/register.html.twig @@ -2,7 +2,7 @@ {% block content %}
-

{{ title }}

+

{{ title.page }}

{% if disabled is defined and disabled %} diff --git a/templates/index.html.twig b/templates/index.html.twig new file mode 100644 index 0000000..14b74ff --- /dev/null +++ b/templates/index.html.twig @@ -0,0 +1,45 @@ +{% extends '@RapsysBlog/_base.html.twig' %} +{% block content %} +
+
+

{{ title.page }}

+

{{ description }}

+
+
+ {% for article in articles %} + + {% endfor %} +
+ {% if ( prev is defined and prev ) or ( next is defined and next ) %} + + {% endif %} +
+{% endblock %} diff --git a/templates/keyword/index.html.twig b/templates/keyword/index.html.twig new file mode 100644 index 0000000..1bc5904 --- /dev/null +++ b/templates/keyword/index.html.twig @@ -0,0 +1,45 @@ +{% extends '@RapsysBlog/_base.html.twig' %} +{% block content %} +
+
+

{{ title.page }}

+

{{ description }}

+
+
+ {% for keyword in keywords %} + + {% endfor %} +
+ {% if ( prev is defined and prev ) or ( next is defined and next ) %} + + {% endif %} +
+{% endblock %} diff --git a/Resources/views/keyword/view.html.twig b/templates/keyword/view.html.twig similarity index 67% rename from Resources/views/keyword/view.html.twig rename to templates/keyword/view.html.twig index 97c6c94..56a9a28 100644 --- a/Resources/views/keyword/view.html.twig +++ b/templates/keyword/view.html.twig @@ -1,9 +1,8 @@ {% extends '@RapsysBlog/_base.html.twig' %} -{% block title %}{% endblock %} {% block content %}
-

{{ title }}

+

{{ title.page }}

{% trans with {'%date%': keyword.created|format_datetime('full', 'short')} %}Published the %date%{% endtrans %}{% if keyword.created != keyword.updated %}{% trans with {'%date%': keyword.updated|format_datetime('short', 'short')} %}, edited the %date%{% endtrans %}{% endif %}

{{ keyword.description }}

@@ -12,21 +11,21 @@ {% for article in keyword.articles %} diff --git a/templates/mail/_base.html.twig b/templates/mail/_base.html.twig new file mode 100644 index 0000000..5b2811c --- /dev/null +++ b/templates/mail/_base.html.twig @@ -0,0 +1,38 @@ +{% extends '@RapsysBlog/_base.html.twig' %} +{% block head %} + + + + {% if locale is defined and locale %}{% endif %} +{% endblock %} +{% block stylesheet %} + +{% endblock %} +{% block body %} + + + {% if logo is defined and logo %}{% endif %} + + +
{{ logo.alt|escape('html_attr') }}

{{ title.site }}

+ {% block content %}{% endblock %} + {% if copy is defined and copy %} + + + + + + {% endif %} +{% endblock %} diff --git a/Resources/views/mail/contact.html.twig b/templates/mail/contact.html.twig similarity index 100% rename from Resources/views/mail/contact.html.twig rename to templates/mail/contact.html.twig diff --git a/Resources/views/mail/contact.text.twig b/templates/mail/contact.text.twig similarity index 100% rename from Resources/views/mail/contact.text.twig rename to templates/mail/contact.text.twig diff --git a/Resources/views/mail/recover.html.twig b/templates/mail/recover.html.twig similarity index 75% rename from Resources/views/mail/recover.html.twig rename to templates/mail/recover.html.twig index 3e7a954..3d6902e 100644 --- a/Resources/views/mail/recover.html.twig +++ b/templates/mail/recover.html.twig @@ -3,9 +3,9 @@ -

{{ 'Welcome back to %head.site%'|trans({'%head.site%': head.site}) }}

+

{{ 'Welcome back to %title.site%'|trans({'%title.site%': title.site}) }}

{% if recipient_name %}{{ 'Hi %recipient_name%,'|trans({'%recipient_name%': recipient_name}) }}{% else %}{% trans %}Hi,{% endtrans %}{% endif %}

-

{{ 'Thanks so much for rejoining %head.site%, the blog program.'|trans({'%head.site%': head.site}) }}

+

{{ 'Thanks so much for rejoining %title.site%, the blog program.'|trans({'%title.site%': title.site}) }}

{% trans %}To recover your account follow this link:{% endtrans %}

{{ recover_url }}

diff --git a/Resources/views/mail/recover.text.twig b/templates/mail/recover.text.twig similarity index 64% rename from Resources/views/mail/recover.text.twig rename to templates/mail/recover.text.twig index 76f33e0..d809f2a 100644 --- a/Resources/views/mail/recover.text.twig +++ b/templates/mail/recover.text.twig @@ -2,7 +2,7 @@ {% for i in range(1, subject|length) %}={% endfor %} -*{{ 'Thanks so much for rejoining %head.site%, the blog program.'|trans({'%head.site%': head.site}) }}* +*{{ 'Thanks so much for rejoining %title.site%, the blog program.'|trans({'%title.site%': title.site}) }}* {% trans %}To recover your account follow this link:{% endtrans %} {{ recover_url }} diff --git a/Resources/views/mail/register.html.twig b/templates/mail/register.html.twig similarity index 75% rename from Resources/views/mail/register.html.twig rename to templates/mail/register.html.twig index bca60d0..9fa7f70 100644 --- a/Resources/views/mail/register.html.twig +++ b/templates/mail/register.html.twig @@ -3,9 +3,9 @@ -

{{ 'Welcome to %head.site%'|trans({'%head.site%': head.site}) }}

+

{{ 'Welcome to %title.site%'|trans({'%title.site%': title.site}) }}

{% if recipient_name %}{{ 'Hi %recipient_name%,'|trans({'%recipient_name%': recipient_name}) }}{% else %}{% trans %}Hi,{% endtrans %}{% endif %}

-

{{ 'Thanks so much for joining %head.site%, the blog program.'|trans({'%head.site%': head.site}) }}

+

{{ 'Thanks so much for joining %title.site%, the blog program.'|trans({'%title.site%': title.site}) }}

{% trans %}To finalize your account follow this link:{% endtrans %}

{{ confirm_url }}

diff --git a/Resources/views/mail/register.text.twig b/templates/mail/register.text.twig similarity index 65% rename from Resources/views/mail/register.text.twig rename to templates/mail/register.text.twig index 64fef8d..0980e21 100644 --- a/Resources/views/mail/register.text.twig +++ b/templates/mail/register.text.twig @@ -2,7 +2,7 @@ {% for i in range(1, subject|length) %}={% endfor %} -*{{ 'Thanks so much for joining %head.site%, the blog program.'|trans({'%head.site%': head.site}) }}* +*{{ 'Thanks so much for joining %title.site%, the blog program.'|trans({'%title.site%': title.site}) }}* {% trans %}To finalize your account follow this link:{% endtrans %} {{ confirm_url }} diff --git a/Resources/views/page/about.html.twig b/templates/page/about.html.twig similarity index 100% rename from Resources/views/page/about.html.twig rename to templates/page/about.html.twig diff --git a/Resources/views/user/index.html.twig b/templates/user/index.html.twig similarity index 80% rename from Resources/views/user/index.html.twig rename to templates/user/index.html.twig index e3049b9..8fc35b4 100644 --- a/Resources/views/user/index.html.twig +++ b/templates/user/index.html.twig @@ -2,7 +2,7 @@ {% block content %}
-

{{ title }}

+

{{ title.page }}

{% for user in users %} @@ -47,14 +47,14 @@
{% endfor %}
- {% if head.prev is defined or head.next is defined %} + {% if ( prev is defined and prev ) or ( next is defined and next ) %} diff --git a/Resources/views/user/view.html.twig b/templates/user/view.html.twig similarity index 100% rename from Resources/views/user/view.html.twig rename to templates/user/view.html.twig diff --git a/Resources/translations/messages.en_gb.yml b/translations/messages.en_gb.yml similarity index 90% rename from Resources/translations/messages.en_gb.yml rename to translations/messages.en_gb.yml index 0eb6067..5636efd 100644 --- a/Resources/translations/messages.en_gb.yml +++ b/translations/messages.en_gb.yml @@ -30,23 +30,16 @@ Welcome to raphaël's developer diary contact page: Welcome to raphaël's develo contact: contact Captcha is empty: Captcha is empty Subject: Subject -Name: Name -Your name: Your name -Mail: Mail -Your mail: Your mail -Message: Message -Your message: Your message -Send: Send Your message has been sent: Your message has been sent , edited the %date%: , edited the %date% -Thanks so much for joining %head.site%, the blog program.: Thanks so much for joining %head.site%, the blog program. +Thanks so much for joining %title.site%, the blog program.: Thanks so much for joining %title.site%, the blog program. 'To finalize your account follow this link:': 'To finalize your account follow this link:' -Thanks so much for rejoining %head.site%, the blog program.: Thanks so much for rejoining %head.site%, the blog program. +Thanks so much for rejoining %title.site%, the blog program.: Thanks so much for rejoining %title.site%, the blog program. 'To recover your account follow this link': 'To recover your account follow this link:' -Welcome back to %head.site%: Welcome back to %head.site% +Welcome back to %title.site%: Welcome back to %title.site% Hi %recipient_name%,: Hi %recipient_name%, Hi,: Hi, -Welcome to %head.site%: Welcome to %head.site% +Welcome to %title.site%: Welcome to %title.site% Dev log: Dev log Recover: Recover Your account has been disabled: Your account has been disabled @@ -105,3 +98,7 @@ Forename: Forename Your forename: Your forename Surname: Surname Your surname: Your surname +Pseudonym: Pseudonym +Your pseudonym: Your pseudonym +Slug: Slug +Your slug: Your slug diff --git a/Resources/translations/messages.fr_fr.yml b/translations/messages.fr_fr.yml similarity index 91% rename from Resources/translations/messages.fr_fr.yml rename to translations/messages.fr_fr.yml index 3513d17..d45a138 100644 --- a/Resources/translations/messages.fr_fr.yml +++ b/translations/messages.fr_fr.yml @@ -30,23 +30,16 @@ Welcome to raphaël's developer diary contact page: Bienvenue sur la page de con contact: contacter Captcha is empty: Le captcha est vide Subject: Sujet -Name: Nom -Your name: Votre nom -Mail: Courriel -Your mail: Votre courriel -Message: Message -Your message: Votre message -Send: Envoyer Your message has been sent: Votre message a été envoyé , edited the %date%: , edité le %date% -Thanks so much for joining %head.site%, the blog program.: Merci d'avoir rejoint %head.site%, le programme de blog. +Thanks so much for joining %title.site%, the blog program.: Merci d'avoir rejoint %title.site%, le programme de blog. 'To finalize your account follow this link:': 'Pour finaliser votre compte suivez ce lien:' -Thanks so much for rejoining %head.site%, the blog program.: Merci d'avoir rejoint de nouveau %head.site%, le programme de blog. +Thanks so much for rejoining %title.site%, the blog program.: Merci d'avoir rejoint de nouveau %title.site%, le programme de blog. 'To recover your account follow this link': 'Pour récupérer votre compte suivez ce lien:' -Welcome back to %head.site%: Bienvenue à nouveau sur %head.site% +Welcome back to %title.site%: Bienvenue à nouveau sur %title.site% Hi %recipient_name%,: Salut %recipient_name%, Hi,: Salut, -Welcome to %head.site%: Bienvenue sur %head.site% +Welcome to %title.site%: Bienvenue sur %title.site% Dev log: Journal de développement Recover: Récupérer Your account has been disabled: Votre compte a été désactivé @@ -105,3 +98,7 @@ Forename: Prénom Your forename: Votre prénom Surname: Nom de famille Your surname: Votre nom de famille +Pseudonym: Pseudonyme +Your pseudonym: Votre pseudonyme +Slug: Identificateur +Your slug: Votre identificateur diff --git a/translations/rapsyspack.en_gb.yml b/translations/rapsyspack.en_gb.yml new file mode 100644 index 0000000..603d574 --- /dev/null +++ b/translations/rapsyspack.en_gb.yml @@ -0,0 +1,8 @@ +Subject: Subject +Name: Name +Your name: Your name +Mail: Mail +Your mail: Your mail +Message: Message +Your message: Your message +Send: Send diff --git a/translations/rapsyspack.fr_fr.yml b/translations/rapsyspack.fr_fr.yml new file mode 100644 index 0000000..d9e9730 --- /dev/null +++ b/translations/rapsyspack.fr_fr.yml @@ -0,0 +1,9 @@ +Subject: Sujet +Name: Nom +Your name: Votre nom +Mail: Courriel +Your mail: Votre courriel +Message: Message +Your message: Votre message +Send: Envoyer +Your message has been sent: Votre message a été envoyé diff --git a/Resources/translations/validators.en_gb.yml b/translations/validators.en_gb.yml similarity index 100% rename from Resources/translations/validators.en_gb.yml rename to translations/validators.en_gb.yml diff --git a/Resources/translations/validators.fr_fr.yml b/translations/validators.fr_fr.yml similarity index 100% rename from Resources/translations/validators.fr_fr.yml rename to translations/validators.fr_fr.yml