Commit 86c527ab by Van

feat(TwigFilter): creation of filters for tourinsoft data. Add view for contentTypes

parent 2a734483
...@@ -50,8 +50,10 @@ class FluxController extends BackendBase ...@@ -50,8 +50,10 @@ class FluxController extends BackendBase
/** /**
* Index ('/') * Index ('/')
* @return \Bolt\Response\TemplateResponse|\Bolt\Response\TemplateView
*/ */
public function index() { public function index()
{
$flux = $this->getRepository(Flux::class)->findAll(); $flux = $this->getRepository(Flux::class)->findAll();
return $this->render('@tourinsoft/Backend/flux/list.html.twig', [], [ return $this->render('@tourinsoft/Backend/flux/list.html.twig', [], [
...@@ -110,16 +112,16 @@ class FluxController extends BackendBase ...@@ -110,16 +112,16 @@ class FluxController extends BackendBase
'form' => $form->createView(), 'form' => $form->createView(),
'flux' => $flux 'flux' => $flux
]); ]);
} }
/** /**
* Synchornisation ('/sync/:id') * Synchronisation ('/sync/:id')
* @param Request $request
* @return \Symfony\Component\HttpFoundation\RedirectResponse
*/ */
public function sync(Request $request) public function sync(Request $request)
{ {
$flux = $this->assertFLux($request->get('id')); $flux = $this->assertFLux($request->get('id'));
$flux->setSynchronizedAt(new \DateTime()); $flux->setSynchronizedAt(new \DateTime());
$this->getRepository(Flux::class)->update($flux); $this->getRepository(Flux::class)->update($flux);
...@@ -127,7 +129,6 @@ class FluxController extends BackendBase ...@@ -127,7 +129,6 @@ class FluxController extends BackendBase
$sync->sync(); $sync->sync();
return $this->redirectToRoute('tourinsoft_admin_flux_index'); return $this->redirectToRoute('tourinsoft_admin_flux_index');
} }
/** /**
......
...@@ -2,8 +2,10 @@ ...@@ -2,8 +2,10 @@
namespace Bolt\Extension\Appolo\Tourinsoft\Form; namespace Bolt\Extension\Appolo\Tourinsoft\Form;
use Bolt\Translation\Translator; use Bolt\Translation\Translator;
use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\OptionsResolver\OptionsResolver;
...@@ -11,8 +13,9 @@ use Symfony\Component\Validator\Constraints\NotBlank; ...@@ -11,8 +13,9 @@ use Symfony\Component\Validator\Constraints\NotBlank;
class FluxType extends AbstractType class FluxType extends AbstractType
{ {
/* /**
* {@inheritdoc} * @param FormBuilderInterface $builder
* @param array $options
*/ */
public function buildForm(FormBuilderInterface $builder, array $options) public function buildForm(FormBuilderInterface $builder, array $options)
{ {
...@@ -85,11 +88,17 @@ class FluxType extends AbstractType ...@@ -85,11 +88,17 @@ class FluxType extends AbstractType
]) ])
), ),
]) ])
->add('viewless', CheckboxType::class, [
'required' => false
])
->add('searchable', CheckboxType::class, [
'required' => false
])
; ;
} }
/* /**
* {@inheritdoc} * @param OptionsResolver $resolver
*/ */
public function configureOptions(OptionsResolver $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
...@@ -98,8 +107,8 @@ class FluxType extends AbstractType ...@@ -98,8 +107,8 @@ class FluxType extends AbstractType
]); ]);
} }
/* /**
* {@inheritdoc} * @return string
*/ */
public function getBlockPrefix() public function getBlockPrefix()
{ {
......
...@@ -4,6 +4,10 @@ namespace Bolt\Extension\Appolo\Tourinsoft\Storage\Entity; ...@@ -4,6 +4,10 @@ namespace Bolt\Extension\Appolo\Tourinsoft\Storage\Entity;
use Bolt\Storage\Entity\Entity; use Bolt\Storage\Entity\Entity;
/**
* Class Flux
* @package Bolt\Extension\Appolo\Tourinsoft\Storage\Entity
*/
class Flux extends Entity class Flux extends Entity
{ {
/** @var integer */ /** @var integer */
...@@ -16,6 +20,12 @@ class Flux extends Entity ...@@ -16,6 +20,12 @@ class Flux extends Entity
protected $key; protected $key;
/** @var string */ /** @var string */
protected $contentType; protected $contentType;
/** @var boolean */
protected $viewless;
/** @var boolean */
protected $searchable;
/** @var boolean */ /** @var boolean */
protected $enabled; protected $enabled;
/** @var \Datetime */ /** @var \Datetime */
...@@ -105,6 +115,49 @@ class Flux extends Entity ...@@ -105,6 +115,49 @@ class Flux extends Entity
return $this; return $this;
} }
/**
* @param bool $viewless
* @return Flux
*/
public function setViewless($viewless)
{
$this->viewless = $viewless;
return $this;
}
/**
* @return bool
*/
public function isViewless()
{
return $this->viewless;
}
/**
* @param bool $searchable
* @return Flux
*/
public function setSearchable($searchable)
{
$this->searchable = $searchable;
return $this;
}
/**
* @return bool
*/
public function isSearchable()
{
return $this->searchable;
}
/** /**
* @return bool * @return bool
*/ */
......
...@@ -4,6 +4,10 @@ namespace Bolt\Extension\Appolo\Tourinsoft\Storage\Repository; ...@@ -4,6 +4,10 @@ namespace Bolt\Extension\Appolo\Tourinsoft\Storage\Repository;
use Bolt\Storage\Repository; use Bolt\Storage\Repository;
/**
* Class FluxRepository
* @package Bolt\Extension\Appolo\Tourinsoft\Storage\Repository
*/
class FluxRepository extends Repository class FluxRepository extends Repository
{ {
......
...@@ -17,6 +17,8 @@ class Flux extends BaseTable ...@@ -17,6 +17,8 @@ class Flux extends BaseTable
$this->table->addColumn('code', 'string', ['notnull' => true]); $this->table->addColumn('code', 'string', ['notnull' => true]);
$this->table->addColumn('key', 'string', ['notnull' => true]); $this->table->addColumn('key', 'string', ['notnull' => true]);
$this->table->addColumn('contentType', 'string', ['notnull' => true]); $this->table->addColumn('contentType', 'string', ['notnull' => true]);
$this->table->addColumn('viewless', 'boolean', ['default' => false]);
$this->table->addColumn('searchable', 'boolean', ['default' => true]);
$this->table->addColumn('enabled', 'boolean', ['default' => false]); $this->table->addColumn('enabled', 'boolean', ['default' => false]);
$this->table->addColumn('createdAt', 'datetime', ['notnull' => true]); $this->table->addColumn('createdAt', 'datetime', ['notnull' => true]);
$this->table->addColumn('updatedAt', 'datetime', ['notnull' => false]); $this->table->addColumn('updatedAt', 'datetime', ['notnull' => false]);
......
...@@ -6,17 +6,24 @@ use Bolt\Asset\File\JavaScript; ...@@ -6,17 +6,24 @@ use Bolt\Asset\File\JavaScript;
use Bolt\Asset\File\Stylesheet; use Bolt\Asset\File\Stylesheet;
use Bolt\Controller\Zone; use Bolt\Controller\Zone;
use Bolt\Extension\Appolo\Tourinsoft\Controller\Backend\FluxController; use Bolt\Extension\Appolo\Tourinsoft\Controller\Backend\FluxController;
use Bolt\Extension\Appolo\Tourinsoft\TwigFilters\PipeToArray;
use Bolt\Extension\DatabaseSchemaTrait; use Bolt\Extension\DatabaseSchemaTrait;
use Bolt\Extension\SimpleExtension; use Bolt\Extension\SimpleExtension;
use Bolt\Extension\StorageTrait; use Bolt\Extension\StorageTrait;
use Bolt\Menu\MenuEntry; use Bolt\Menu\MenuEntry;
use Bolt\Extension\Appolo\Tourinsoft\TwigFilters\HashtagToArray;
use Bolt\Extension\Appolo\Tourinsoft\TwigFilters\LabelFilter;
use Bolt\Extension\Appolo\Tourinsoft\TwigFilters\TarifFilter;
use Bolt\Extension\Appolo\Tourinsoft\TwigFilters\TourinsoftFilter;
use Silex\Application; use Silex\Application;
use Symfony\Component\Form\Extension\Core\Type\FormType; use Symfony\Component\Form\Extension\Core\Type\FormType;
/** /**
* Tourinsoft extension class. * Tourinsoft extension class.
* *
* @author Your Name <you@example.com>
*/ */
class TourinsoftExtension extends SimpleExtension class TourinsoftExtension extends SimpleExtension
{ {
...@@ -59,28 +66,18 @@ class TourinsoftExtension extends SimpleExtension ...@@ -59,28 +66,18 @@ class TourinsoftExtension extends SimpleExtension
]; ];
} }
protected function registerTwigFilters()
{
return [
'tourinsoft' => 'TourinsoftFilter',
];
}
/** /**
* @param $input
* @return array * @return array
*/ */
public function TourinsoftFilter($input) protected function registerTwigFilters()
{ {
dump($input); return [
$data = []; 'tourinsoft' => [[TourinsoftFilter::class, 'run']],
'tarif' => [[TarifFilter::class, 'run'], ['is_safe' => ['html'] ]],
$lines = explode('|', $input); 'label' => [[LabelFilter::class, 'run'], ['is_safe' => ['html'] ]],
foreach ($lines as $k => $line) { 'hashtag' => [[HashtagToArray::class, 'run']],
$data[$k] = explode('#', $line); 'pipe' => [[PipeToArray::class, 'run']],
} ];
return $data;
} }
/** /**
......
<?php
namespace Bolt\Extension\Appolo\Tourinsoft\TwigFilters;
/**
* Class HashtagToArray
* @package Bolt\Extension\Appolo\Tourinsoft\TwigFilters
*/
class HashtagToArray
{
/**
* @param $input
* @return array
*/
public static function run($input)
{
if (is_array($input)) {
return $input;
}
$array = explode('#', $input);
return $array;
}
}
\ No newline at end of file
<?php
namespace Bolt\Extension\Appolo\Tourinsoft\TwigFilters;
/**
* Class LabelFilter
* @package Bolt\Extension\Appolo\Tourinsoft\TwigFilters
*/
class LabelFilter
{
/**
* @param $input
* @return string
*/
public static function run($input)
{
$html = '';
if(!is_array($input)) {
return $input;
}
foreach ($input as $item) {
foreach ($item as $key => $value){
switch ($value) {
case 'Hébergement pêche' :
$html .= '<img src="http://tourisme-bearn-paysdenay.com/templates/otpaysdenay/img/labels/hebergement-peche.jpg"> ';
break;
case 'Qualité Tourisme' :
$html .= ' <img src="http://tourisme-bearn-paysdenay.com/templates/otpaysdenay/img/labels/qualite-tourisme.jpg"> ';
break;
}
}
}
return $html;
}
}
\ No newline at end of file
<?php
namespace Bolt\Extension\Appolo\Tourinsoft\TwigFilters;
/**
* Class PipeToArray
* @package Bolt\Extension\Appolo\Tourinsoft\TwigFilters
*/
class PipeToArray
{
/**
* @param $input
* @return array
*/
public static function run($input)
{
if (is_array($input)) {
return $input;
}
$array = explode('|', $input);
return $array;
}
}
\ No newline at end of file
<?php
namespace Bolt\Extension\Appolo\Tourinsoft\TwigFilters;
/**
* Class TarifFilter
* @package Bolt\Extension\Appolo\Tourinsoft\TwigFilters
*/
class TarifFilter
{
/**
* @param $input
* @return string
*/
public static function run($input)
{
$html = '';
if(!is_array($input)) {
return $input;
}
foreach ($input as $item) {
$html .= '<strong>'.$item[0].': </strong> de '.$item[1].' € à '.$item[2].' € <br />';
}
return $html;
}
}
\ No newline at end of file
<?php
namespace Bolt\Extension\Appolo\Tourinsoft\TwigFilters;
class TourinsoftFilter
{
/**
* @param $input
* @return array
*/
public static function run($input)
{
$data = [];
$lines = explode('#', $input);
foreach ($lines as $k => $line){
$data[$k] = explode('|', $line);
}
return $data;
}
}
\ No newline at end of file
...@@ -51,9 +51,13 @@ class ContentTypeFile ...@@ -51,9 +51,13 @@ class ContentTypeFile
public function updateInFile() { public function updateInFile() {
$data = [ $data = [
$this->flux->getCode() => [ $this->flux->getCode() => [
'name' => ucfirst($this->flux->getContentType()), 'name' => ucfirst($this->flux->getTitle()),
'singular_name' => ucfirst($this->flux->getContentType()), 'singular_name' => ucfirst($this->flux->getContentType()),
'fields' => $this->getFields() 'fields' => $this->getFields(),
'record_template' => strtolower('tourinsoft/record/'.$this->flux->getContentType() . '.twig'),
'listing_template' => strtolower('tourinsoft/listing/listing_'.$this->flux->getContentType() . '.twig'),
'viewless' => $this->flux->isViewless(),
'searchable' => $this->flux->isSearchable()
] ]
]; ];
...@@ -99,7 +103,6 @@ class ContentTypeFile ...@@ -99,7 +103,6 @@ class ContentTypeFile
$file = $this->application['filesystem']->getFile(strtolower('config://contenttypes.yml')); $file = $this->application['filesystem']->getFile(strtolower('config://contenttypes.yml'));
if($file->exists()) { if($file->exists()) {
$yamlData = $file->parse(); $yamlData = $file->parse();
if($delete) { if($delete) {
unset($yamlData[$this->flux->getCode()]); unset($yamlData[$this->flux->getCode()]);
} else { } else {
......
...@@ -21,7 +21,6 @@ ...@@ -21,7 +21,6 @@
</div> </div>
</fieldset> </fieldset>
</div> </div>
<div data-bolt-fieldset="text"> <div data-bolt-fieldset="text">
<fieldset class="form-group bolt-field-text"> <fieldset class="form-group bolt-field-text">
{{ form_label(form.code) }} {{ form_label(form.code) }}
...@@ -31,7 +30,6 @@ ...@@ -31,7 +30,6 @@
</div> </div>
</fieldset> </fieldset>
</div> </div>
<div data-bolt-fieldset="text"> <div data-bolt-fieldset="text">
<fieldset class="form-group bolt-field-text"> <fieldset class="form-group bolt-field-text">
{{ form_label(form.key) }} {{ form_label(form.key) }}
...@@ -41,7 +39,6 @@ ...@@ -41,7 +39,6 @@
</div> </div>
</fieldset> </fieldset>
</div> </div>
<div data-bolt-fieldset="text"> <div data-bolt-fieldset="text">
<fieldset class="form-group bolt-field-text"> <fieldset class="form-group bolt-field-text">
{{ form_label(form.contentType) }} {{ form_label(form.contentType) }}
...@@ -51,7 +48,20 @@ ...@@ -51,7 +48,20 @@
</div> </div>
</fieldset> </fieldset>
</div> </div>
<div class="col-xs-12">
<div class="checkbox-inline">
{{ form_widget(form.viewless) }}
{{ form_errors(form.viewless) }}
{{ form_label(form.viewless) }}
</div>
<div class="checkbox-inline">
{{ form_widget(form.searchable) }}
{{ form_errors(form.searchable) }}
{{ form_label(form.searchable) }}
</div>
</div> </div>
</div>
<!-- sidebar --> <!-- sidebar -->
<aside class="col-md-4"> <aside class="col-md-4">
......
...@@ -51,6 +51,18 @@ ...@@ -51,6 +51,18 @@
</div> </div>
</fieldset> </fieldset>
</div> </div>
<div class="col-xs-12">
<div class="checkbox-inline">
{{ form_widget(form.viewless) }}
{{ form_errors(form.viewless) }}
{{ form_label(form.viewless) }}
</div>
<div class="checkbox-inline">
{{ form_widget(form.searchable) }}
{{ form_errors(form.searchable) }}
{{ form_label(form.searchable) }}
</div>
</div>
</div> </div>
<!-- sidebar --> <!-- sidebar -->
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment