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
/**
* Index ('/')
* @return \Bolt\Response\TemplateResponse|\Bolt\Response\TemplateView
*/
public function index() {
public function index()
{
$flux = $this->getRepository(Flux::class)->findAll();
return $this->render('@tourinsoft/Backend/flux/list.html.twig', [], [
......@@ -110,16 +112,16 @@ class FluxController extends BackendBase
'form' => $form->createView(),
'flux' => $flux
]);
}
/**
* Synchornisation ('/sync/:id')
* Synchronisation ('/sync/:id')
* @param Request $request
* @return \Symfony\Component\HttpFoundation\RedirectResponse
*/
public function sync(Request $request)
{
$flux = $this->assertFLux($request->get('id'));
$flux->setSynchronizedAt(new \DateTime());
$this->getRepository(Flux::class)->update($flux);
......@@ -127,7 +129,6 @@ class FluxController extends BackendBase
$sync->sync();
return $this->redirectToRoute('tourinsoft_admin_flux_index');
}
/**
......
......@@ -2,8 +2,10 @@
namespace Bolt\Extension\Appolo\Tourinsoft\Form;
use Bolt\Translation\Translator;
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\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
......@@ -11,8 +13,9 @@ use Symfony\Component\Validator\Constraints\NotBlank;
class FluxType extends AbstractType
{
/*
* {@inheritdoc}
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
......@@ -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)
{
......@@ -98,8 +107,8 @@ class FluxType extends AbstractType
]);
}
/*
* {@inheritdoc}
/**
* @return string
*/
public function getBlockPrefix()
{
......
......@@ -4,6 +4,10 @@ namespace Bolt\Extension\Appolo\Tourinsoft\Storage\Entity;
use Bolt\Storage\Entity\Entity;
/**
* Class Flux
* @package Bolt\Extension\Appolo\Tourinsoft\Storage\Entity
*/
class Flux extends Entity
{
/** @var integer */
......@@ -16,6 +20,12 @@ class Flux extends Entity
protected $key;
/** @var string */
protected $contentType;
/** @var boolean */
protected $viewless;
/** @var boolean */
protected $searchable;
/** @var boolean */
protected $enabled;
/** @var \Datetime */
......@@ -105,6 +115,49 @@ class Flux extends Entity
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
*/
......
......@@ -4,6 +4,10 @@ namespace Bolt\Extension\Appolo\Tourinsoft\Storage\Repository;
use Bolt\Storage\Repository;
/**
* Class FluxRepository
* @package Bolt\Extension\Appolo\Tourinsoft\Storage\Repository
*/
class FluxRepository extends Repository
{
......
......@@ -17,6 +17,8 @@ class Flux extends BaseTable
$this->table->addColumn('code', 'string', ['notnull' => true]);
$this->table->addColumn('key', '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('createdAt', 'datetime', ['notnull' => true]);
$this->table->addColumn('updatedAt', 'datetime', ['notnull' => false]);
......
......@@ -6,17 +6,24 @@ use Bolt\Asset\File\JavaScript;
use Bolt\Asset\File\Stylesheet;
use Bolt\Controller\Zone;
use Bolt\Extension\Appolo\Tourinsoft\Controller\Backend\FluxController;
use Bolt\Extension\Appolo\Tourinsoft\TwigFilters\PipeToArray;
use Bolt\Extension\DatabaseSchemaTrait;
use Bolt\Extension\SimpleExtension;
use Bolt\Extension\StorageTrait;
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 Symfony\Component\Form\Extension\Core\Type\FormType;
/**
* Tourinsoft extension class.
*
* @author Your Name <you@example.com>
*/
class TourinsoftExtension extends SimpleExtension
{
......@@ -59,28 +66,18 @@ class TourinsoftExtension extends SimpleExtension
];
}
protected function registerTwigFilters()
{
return [
'tourinsoft' => 'TourinsoftFilter',
];
}
/**
* @param $input
* @return array
*/
public function TourinsoftFilter($input)
protected function registerTwigFilters()
{
dump($input);
$data = [];
$lines = explode('|', $input);
foreach ($lines as $k => $line) {
$data[$k] = explode('#', $line);
}
return $data;
return [
'tourinsoft' => [[TourinsoftFilter::class, 'run']],
'tarif' => [[TarifFilter::class, 'run'], ['is_safe' => ['html'] ]],
'label' => [[LabelFilter::class, 'run'], ['is_safe' => ['html'] ]],
'hashtag' => [[HashtagToArray::class, 'run']],
'pipe' => [[PipeToArray::class, 'run']],
];
}
/**
......
<?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
public function updateInFile() {
$data = [
$this->flux->getCode() => [
'name' => ucfirst($this->flux->getContentType()),
'name' => ucfirst($this->flux->getTitle()),
'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
$file = $this->application['filesystem']->getFile(strtolower('config://contenttypes.yml'));
if($file->exists()) {
$yamlData = $file->parse();
if($delete) {
unset($yamlData[$this->flux->getCode()]);
} else {
......
......@@ -21,7 +21,6 @@
</div>
</fieldset>
</div>
<div data-bolt-fieldset="text">
<fieldset class="form-group bolt-field-text">
{{ form_label(form.code) }}
......@@ -31,7 +30,6 @@
</div>
</fieldset>
</div>
<div data-bolt-fieldset="text">
<fieldset class="form-group bolt-field-text">
{{ form_label(form.key) }}
......@@ -41,7 +39,6 @@
</div>
</fieldset>
</div>
<div data-bolt-fieldset="text">
<fieldset class="form-group bolt-field-text">
{{ form_label(form.contentType) }}
......@@ -51,7 +48,20 @@
</div>
</fieldset>
</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>
<!-- sidebar -->
<aside class="col-md-4">
......
......@@ -51,6 +51,18 @@
</div>
</fieldset>
</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>
<!-- 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