Commit 030de0d3 by Van

feat(all): Add TwigFunction DataAttributes

parent 9dfd9222
......@@ -119,18 +119,43 @@ Exemple
user_id : 1
````
## Twig Function
#### DataAttributes :
###### Set & Get data-attributes for filtered
###### Exemple
```
Valeur en entrée :
<div class="col-md-4">...</div>
```
```
Application de la fonction:
<div class="col-md-4" {{ dataAttribute('HOT', record)|raw }}>
```
```
Valeur en sortie :
<div class="col-md-4"
data-lat="43.1133015" data-lng="-0.1974632" data-communes="64339" data-animaux="true"
data-handi="true" data-stars="3 étoiles" data-piscine="true" data-groupe="true">
</div>
```
## Twig Filters
In order to parse data, you can use twig filter
********************************************************************************************************
#### TourinsoftFilter :
###### Transforme les "#" en lignes et les "|" en items d'un même tableau
###### Exemple
```
Valeur en entrée :
nay-bastide-depart-140925-triple.pdf|nay-bastide-depart-140925-triple#nay-faubourgs-depart-140926-triple.pdf|nay-faubourgs-depart-140926-triple"
......
......@@ -16,8 +16,8 @@ use Bolt\Extension\Appolo\Tourinsoft\TwigFilters\PhotoFilter;
use Bolt\Extension\Appolo\Tourinsoft\TwigFilters\SimpleOpeningFilter;
use Bolt\Extension\Appolo\Tourinsoft\TwigFilters\TelFilter;
use Bolt\Extension\Appolo\Tourinsoft\TwigFilters\ValidatedDateFilter;
use Bolt\Extension\Appolo\Tourinsoft\TwigFunctions\DataAttributeFunction;
use Bolt\Extension\DatabaseSchemaTrait;
use Bolt\Extension\StorageTrait;
use Bolt\Menu\MenuEntry;
use Silex\Application;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
......@@ -34,14 +34,12 @@ use Bolt\Extension\Appolo\Tourinsoft\Controller\Backend\FluxController;
use Bolt\Extension\Appolo\Tourinsoft\Nut\CronCommand;
/**
* Tourinsoft extension class.
*
*/
class TourinsoftExtension extends SimpleExtension
{
use StorageTrait;
use DatabaseSchemaTrait;
/**
......@@ -116,6 +114,13 @@ class TourinsoftExtension extends SimpleExtension
];
}
protected function registerTwigFunctions()
{
return [
'dataAttribute' => [[new DataAttributeFunction($this->getConfig(), true), 'run']]
];
}
/**
* @param Application $app
*/
......
<?php
namespace Bolt\Extension\Appolo\Tourinsoft\TwigFunctions;
use Bolt\Legacy\Content;
class DataAttributeFunction
{
/**
* @param $type
* @param Content $record
* @return string
*/
public static function run($type, Content $record)
{
$attributes = '';
/* Coordonnées */
if ($record->get('lat')){
$attributes .= ' data-lat=' .$record->get('lat');
}
if ($record->get('lon')){
$attributes .= ' data-lng=' .$record->get('lon');
}
if ($record->get('communeinsee')){
$attributes .= ' data-communes=' .$record->get('communeinsee');
}
/* Champs génériques */
if ($record->get('animaux') === 'oui'){
$attributes .= ' data-animaux=true';
}
if ($record->get('acceshandi') === 'oui'){
$attributes .= ' data-handi=true';
}
switch ($type) {
case 'HOT':
if ($record->get('clas')){
$attributes .= " data-stars='" .$record->get('clas')."'";
}
if(strpos($record->get('services'), 'Wifi') !== false) {
$attributes .= ' data-wifi=true';
}
if(strpos($record->get('equip'), 'Piscine') !== false) {
$attributes .= ' data-piscine=true';
}
if ($record->get('groupe') === 'oui'){
$attributes .= ' data-groupe=true';
}
case 'HLO':
if ($record->get('clas')){
$attributes .= " data-stars='" .$record->get('clas')."'";
}
if(strpos($record->get('services'), 'Wifi') !== false) {
$attributes .= ' data-wifi=true';
}
if(strpos($record->get('equip'), 'Piscine') !== false) {
$attributes .= ' data-piscine=true';
}
case 'HCO':
if(strpos($record->get('services'), 'Wifi') !== false) {
$attributes .= ' data-wifi=true';
}
if(strpos($record->get('equip'), 'Piscine') !== false) {
$attributes .= ' data-piscine=true';
}
if ($record->get('groupe') === 'oui'){
$attributes .= ' data-groupe=true';
}
case 'HPA':
if(strpos($record->get('services'), 'Wifi') !== false) {
$attributes .= ' data-wifi=true';
}
if(strpos($record->get('equip'), 'Piscine') !== false) {
$attributes .= ' data-piscine=true';
}
if ($record->get('groupe') === 'oui'){
$attributes .= ' data-groupe=true';
}
if ($record->get('clas')){
$attributes .= " data-stars='" .$record->get('clas')."'";
}
case 'ACC':
if(strpos($record->get('services'), 'Wifi') !== false) {
$attributes .= ' data-wifi=true';
}
if(strpos($record->get('equip'), 'Piscine') !== false) {
$attributes .= ' data-piscine=true';
}
if ($record->get('groupe') === 'oui'){
$attributes .= ' data-groupe=true';
}
if ($record->get('modgest')){
$attributes .= " data-modgest'" .$record->get('modgest'). "'";
}
case 'LOI':
if ($record->get('groupe') === 'oui'){
$attributes .= ' data-groupe=true';
}
case 'ASC':
if ($record->get('typeasc')){
$attributes .= " data-typeasc='" .$record->get('typeasc'). "'";
}
case 'ITI':
if ($record->get('publiciti')){
$attributes .= " data-publiciti='" .$record->get('publiciti'). "'";
}
}
return $attributes;
}
}
\ No newline at end of file
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