5 Commits

Author SHA1 Message Date
tim
dacf3d6687 Allow symfony 6 2022-01-30 01:15:39 +01:00
tim
cd3c5a0a52 Allow for bool type as config type 2022-01-30 01:11:39 +01:00
da8a1e37ca Fix line endings? 2021-07-21 00:25:37 +02:00
d20f7401c1 Add categories overview 2020-10-23 23:39:45 +02:00
69abbcaf4b Improve phpdocs of service 2020-07-27 01:23:13 +02:00
9 changed files with 775 additions and 761 deletions

View File

@ -60,10 +60,8 @@ abstract class BaseController extends AbstractController
switch ($type) { switch ($type) {
case CheckboxType::class: case CheckboxType::class:
return boolval($value); return boolval($value);
break;
default: default:
return $value; return $value;
break;
} }
} }

View File

@ -1,41 +1,41 @@
<?php <?php
namespace Ardent\ParameterBundle\Controller; namespace Ardent\ParameterBundle\Controller;
use Ardent\ParameterBundle\Service\ParameterService; use Ardent\ParameterBundle\Service\ParameterService;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Routing\Annotation\Route;
class ParameterController extends BaseController class ParameterController extends BaseController
{ {
/** /**
* @Route("/{category}", name="parameter_bundle_parameters") * @Route("/{category}", name="parameter_bundle_parameters")
*/ */
public function parameters($category, public function parameters($category = 'categories',
ParameterService $param, ParameterService $param,
Request $request) Request $request)
{ {
$configs = $param->getConfig(); $configs = $param->getConfig();
// Handle all special cases for the name // Handle all special cases for the name
/*if ('list' === $name) { // List all the categories if ('categories' === $category) { // List all the categories
$routes = []; $categories = [];
foreach ($configs as $key => $config) { foreach ($configs as $key => $config) {
$routes[] = ['route' => 'parameters', 'params' => ['name' => $key], 'title' => $key]; $categories[] = $key;
} }
$categories[] = 'all';
return $this->render('list.routes.twig', ['routes' => $routes]); return $this->render('@ArdentParameter/categories.html.twig', ['categories' => $categories]);
} else*/if ('all' === $category) { // Show all parameters from all categories } elseif ('all' === $category) { // Show all parameters from all categories
$allConfigs = []; $allConfigs = [];
foreach ($configs as $config) { foreach ($configs as $config) {
$allConfigs = array_merge($allConfigs, $config); $allConfigs = array_merge($allConfigs, $config);
} }
return parent::baseIndex($param, $request, $allConfigs); return parent::baseIndex($param, $request, $allConfigs);
} else { // Show the parameters from one category } else { // Show the parameters from one category
return parent::baseIndex($param, $request, $configs[$category]); return parent::baseIndex($param, $request, $configs[$category]);
} }
} }
} }

View File

@ -1,38 +1,39 @@
<?php <?php
namespace Ardent\ParameterBundle\DependencyInjection; namespace Ardent\ParameterBundle\DependencyInjection;
use Symfony\Component\Config\Definition\Builder\TreeBuilder; use Symfony\Component\Config\Definition\Builder\TreeBuilder;
use Symfony\Component\Config\Definition\ConfigurationInterface; use Symfony\Component\Config\Definition\ConfigurationInterface;
class Configuration implements ConfigurationInterface class Configuration implements ConfigurationInterface
{ {
public const TYPE_TEXT = 'text'; public const TYPE_TEXT = 'text';
public const TYPE_NUMBER = 'number'; public const TYPE_NUMBER = 'number';
public const TYPE_BOOL = 'bool';
public function getConfigTreeBuilder()
{ public function getConfigTreeBuilder()
$treeBuilder = new TreeBuilder('ardent_parameter'); {
$treeBuilder = new TreeBuilder('ardent_parameter');
$treeBuilder->getRootNode()
->children() $treeBuilder->getRootNode()
->arrayNode('parameters') ->children()
->arrayPrototype() ->arrayNode('parameters')
->arrayPrototype() ->arrayPrototype()
->children() ->arrayPrototype()
->scalarNode('name')->end() ->children()
->enumNode('type') ->scalarNode('name')->end()
->values([self::TYPE_TEXT, self::TYPE_NUMBER]) ->enumNode('type')
->defaultValue(self::TYPE_TEXT) ->values([self::TYPE_TEXT, self::TYPE_NUMBER, self::TYPE_BOOL])
->end() ->defaultValue(self::TYPE_TEXT)
->end() ->end()
->end() ->end()
->end() ->end()
->end() ->end()
->end(); ->end()
->end();
return $treeBuilder;
} return $treeBuilder;
}
} }

1346
LICENSE

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,9 @@
{% extends '@ArdentParameter/layout.html.twig' %}
{% block par_user_content %}
<h2>Parameter categories</h2><br>
{% for category in categories %}
<a class="btn-primary btn" href="{{ path('parameter_bundle_parameters', {category:category}) }}">{{ category }}</a><br><br>
{% endfor %}
{% endblock %}

View File

@ -0,0 +1 @@
{# Add extra content on the bottom of the form #}

View File

@ -1,8 +1,8 @@
{% extends '@ArdentParameter/layout.html.twig' %} {% extends '@ArdentParameter/layout.html.twig' %}
{% block par_user_content %} {% block par_user_content %}
<a class="btn-primary btn" href="{{ path('parameter_bundle_parameters', {category:'categories'}) }}">Back</a> <br><br>
{{ form(parameter_form) }} {{ form(parameter_form) }}
{% include '@ArdentParameter/form.extra.html.twig' %} {% include '@ArdentParameter/form.extra.html.twig' %}
{% endblock %} {% endblock %}

View File

@ -6,6 +6,7 @@ use Ardent\ParameterBundle\DependencyInjection\Configuration;
use Ardent\ParameterBundle\Entity\Parameter; use Ardent\ParameterBundle\Entity\Parameter;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\NumberType; use Symfony\Component\Form\Extension\Core\Type\NumberType;
use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\Extension\Core\Type\TextType;
@ -33,10 +34,10 @@ class ParameterService
} }
/** /**
* @param string $name * @param string $name The name of the parameter in the format <group>_<parameter>
* @param bool $parse * @param bool $parse Whether to parse embedded %parameter%'s
* *
* @return string * @return mixed
*/ */
public function get($name, $parse = true) public function get($name, $parse = true)
{ {
@ -67,8 +68,8 @@ class ParameterService
} }
/** /**
* @param $name * @param string $name The name of the parameter in the format <group>_<parameter>
* @param $value * @param mixed $value
*/ */
public function set($name, $value) public function set($name, $value)
{ {
@ -101,8 +102,12 @@ class ParameterService
case Configuration::TYPE_NUMBER: case Configuration::TYPE_NUMBER:
$class = NumberType::class; $class = NumberType::class;
break; break;
case Configuration::TYPE_BOOL:
$class = CheckboxType::class;
break;
} }
// Add the group name in front of the parameter name
$value['name'] = sprintf('%s_%s', $groupName, $value['name']); $value['name'] = sprintf('%s_%s', $groupName, $value['name']);
$value['type'] = $class; $value['type'] = $class;
unset($value); unset($value);

View File

@ -3,9 +3,9 @@
"description": "Simple bundle for storing parameters in a database", "description": "Simple bundle for storing parameters in a database",
"type": "symfony-bundle", "type": "symfony-bundle",
"require": { "require": {
"doctrine/orm": "^2.7", "doctrine/orm": "^2.0",
"symfony/form": "^5.0", "symfony/form": "^5.0|^6.0",
"symfony/twig-bundle": "^5.0" "symfony/twig-bundle": "^5.0|^6.0"
}, },
"autoload": { "autoload": {
"psr-4": { "psr-4": {