mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-13 13:54:23 +00:00
fixes minor for admin aside activity
This commit is contained in:
parent
27125b838e
commit
27dea97bc6
@ -10,7 +10,11 @@ and this project adheres to
|
|||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
|
* [Aside activity] Fixes for aside activity
|
||||||
|
|
||||||
|
* categories with child
|
||||||
|
* fast creation buttons
|
||||||
|
* add ordering for types
|
||||||
|
|
||||||
|
|
||||||
## Test releases
|
## Test releases
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace Chill\AsideActivityBundle\Controller;
|
|
||||||
|
|
||||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Controller for activity configuration
|
|
||||||
*
|
|
||||||
* @author Julien Fastré <julien.fastre@champs-libres.coop>
|
|
||||||
* @author Champs Libres <info@champs-libres.coop>
|
|
||||||
*/
|
|
||||||
class AdminController extends AbstractController
|
|
||||||
{
|
|
||||||
|
|
||||||
public function redirectToAdminIndexAction()
|
|
||||||
{
|
|
||||||
return $this->redirectToRoute('chill_main_admin_central');
|
|
||||||
}
|
|
||||||
}
|
|
@ -3,6 +3,9 @@
|
|||||||
namespace Chill\AsideActivityBundle\Controller;
|
namespace Chill\AsideActivityBundle\Controller;
|
||||||
|
|
||||||
use Chill\MainBundle\CRUD\Controller\CRUDController;
|
use Chill\MainBundle\CRUD\Controller\CRUDController;
|
||||||
|
use Chill\MainBundle\Pagination\PaginatorInterface;
|
||||||
|
use Doctrine\ORM\QueryBuilder;
|
||||||
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -10,5 +13,12 @@ use Chill\MainBundle\CRUD\Controller\CRUDController;
|
|||||||
*/
|
*/
|
||||||
class AsideActivityCategoryController extends CRUDController
|
class AsideActivityCategoryController extends CRUDController
|
||||||
{
|
{
|
||||||
|
protected function orderQuery(string $action, $query, Request $request, PaginatorInterface $paginator)
|
||||||
|
{
|
||||||
|
/** @var QueryBuilder $query */
|
||||||
|
$query->addOrderBy('e.ordering', 'ASC');
|
||||||
|
|
||||||
|
return $query;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -32,6 +32,12 @@ class AsideActivityCategory
|
|||||||
*/
|
*/
|
||||||
private bool $isActive = true;
|
private bool $isActive = true;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var float
|
||||||
|
* @ORM\Column(type="float", options={"default": 0.00})
|
||||||
|
*/
|
||||||
|
private float $ordering = 0.00;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ORM\ManyToOne(targetEntity=AsideActivityCategory::class, inversedBy="children")
|
* @ORM\ManyToOne(targetEntity=AsideActivityCategory::class, inversedBy="children")
|
||||||
* @ORM\JoinColumn(nullable=true)
|
* @ORM\JoinColumn(nullable=true)
|
||||||
@ -124,4 +130,14 @@ class AsideActivityCategory
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getOrdering(): float
|
||||||
|
{
|
||||||
|
return $this->ordering;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setOrdering(float $ordering): AsideActivityCategory
|
||||||
|
{
|
||||||
|
$this->ordering = $ordering;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@ use Chill\MainBundle\Templating\TranslatableStringHelper;
|
|||||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
||||||
use Symfony\Component\Form\AbstractType;
|
use Symfony\Component\Form\AbstractType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\NumberType;
|
||||||
use Symfony\Component\Form\FormBuilderInterface;
|
use Symfony\Component\Form\FormBuilderInterface;
|
||||||
|
|
||||||
final class AsideActivityCategoryType extends AbstractType
|
final class AsideActivityCategoryType extends AbstractType
|
||||||
@ -31,12 +32,13 @@ final class AsideActivityCategoryType extends AbstractType
|
|||||||
->add('parent', EntityType::class, [
|
->add('parent', EntityType::class, [
|
||||||
'class' => AsideActivityCategory::class,
|
'class' => AsideActivityCategory::class,
|
||||||
'required' => false,
|
'required' => false,
|
||||||
'label' => 'Type',
|
'label' => 'Parent',
|
||||||
'choice_label' => function (AsideActivityCategory $category){
|
'choice_label' => function (AsideActivityCategory $category){
|
||||||
$options = [];
|
$options = [];
|
||||||
return $this->categoryRender->renderString($category, $options);
|
return $this->categoryRender->renderString($category, $options);
|
||||||
}
|
}
|
||||||
])
|
])
|
||||||
|
->add('ordering', NumberType::class)
|
||||||
->add('isActive', ChoiceType::class,
|
->add('isActive', ChoiceType::class,
|
||||||
[
|
[
|
||||||
'choices' => [
|
'choices' => [
|
||||||
|
@ -10,6 +10,7 @@ use Chill\MainBundle\Form\Type\ChillDateType;
|
|||||||
use Chill\MainBundle\Form\Type\ChillTextareaType;
|
use Chill\MainBundle\Form\Type\ChillTextareaType;
|
||||||
use Chill\MainBundle\Templating\TranslatableStringHelper;
|
use Chill\MainBundle\Templating\TranslatableStringHelper;
|
||||||
use Doctrine\ORM\EntityRepository;
|
use Doctrine\ORM\EntityRepository;
|
||||||
|
use Doctrine\ORM\QueryBuilder;
|
||||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
||||||
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
|
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
|
||||||
use Symfony\Component\Form\AbstractType;
|
use Symfony\Component\Form\AbstractType;
|
||||||
@ -80,6 +81,14 @@ final class AsideActivityFormType extends AbstractType
|
|||||||
'required' => true,
|
'required' => true,
|
||||||
'class' => AsideActivityCategory::class,
|
'class' => AsideActivityCategory::class,
|
||||||
'placeholder' => 'Choose the activity category',
|
'placeholder' => 'Choose the activity category',
|
||||||
|
'query_builder' => function(EntityRepository $er) {
|
||||||
|
$qb = $er->createQueryBuilder('ac');
|
||||||
|
$qb->where($qb->expr()->eq('ac.isActive', 'TRUE'))
|
||||||
|
->addOrderBy('ac.ordering', 'ASC')
|
||||||
|
;
|
||||||
|
|
||||||
|
return $qb;
|
||||||
|
},
|
||||||
'choice_label' => function (AsideActivityCategory $asideActivityCategory) {
|
'choice_label' => function (AsideActivityCategory $asideActivityCategory) {
|
||||||
$options = [];
|
$options = [];
|
||||||
return $this->categoryRender->renderString($asideActivityCategory, $options);
|
return $this->categoryRender->renderString($asideActivityCategory, $options);
|
||||||
|
@ -0,0 +1,48 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Chill\AsideActivityBundle\Menu;
|
||||||
|
|
||||||
|
use Knp\Menu\MenuItem;
|
||||||
|
use Symfony\Component\Security\Core\Security;
|
||||||
|
|
||||||
|
final class AdminMenuBuilder implements \Chill\MainBundle\Routing\LocalMenuBuilderInterface
|
||||||
|
{
|
||||||
|
private Security $security;
|
||||||
|
|
||||||
|
public function __construct(Security $security)
|
||||||
|
{
|
||||||
|
$this->security = $security;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getMenuIds(): array
|
||||||
|
{
|
||||||
|
return ['admin_index', 'admin_section', 'admin_aside_activity'];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function buildMenu($menuId, MenuItem $menu, array $parameters)
|
||||||
|
{
|
||||||
|
// all the entries below must have ROLE_ADMIN permissions
|
||||||
|
if (!$this->security->isGranted('ROLE_ADMIN')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (in_array($menuId, ['admin_index', 'admin_section'])) {
|
||||||
|
$menu->addChild('Aside activities', [
|
||||||
|
'route' => 'chill_crud_aside_activity_category_index'
|
||||||
|
])
|
||||||
|
->setExtras([
|
||||||
|
'order' => 900,
|
||||||
|
'explain' => "Configure aside activities categories"
|
||||||
|
]);
|
||||||
|
} else {
|
||||||
|
$menu
|
||||||
|
->addChild('Aside activity categories', [
|
||||||
|
'route' => 'chill_crud_aside_activity_category_index'
|
||||||
|
])
|
||||||
|
->setExtras([
|
||||||
|
'order' => '50'
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -1,9 +1,7 @@
|
|||||||
{% extends "@ChillMain/Admin/layoutWithVerticalMenu.html.twig" %}
|
{% extends "@ChillMain/Admin/layoutWithVerticalMenu.html.twig" %}
|
||||||
|
|
||||||
{% block vertical_menu_content %}
|
{% block vertical_menu_content %}
|
||||||
{{ chill_menu('admin_aside_activity', {
|
{{ chill_menu('admin_aside_activity') }}
|
||||||
'layout': '@ChillAsideActivity/Admin/menu_asideactivity.html.twig',
|
|
||||||
}) }}
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block layout_wvm_content %}
|
{% block layout_wvm_content %}
|
||||||
|
@ -1,4 +0,0 @@
|
|||||||
{% extends "@ChillMain/Menu/verticalMenu.html.twig" %}
|
|
||||||
{% block v_menu_title %}
|
|
||||||
{{ 'Aside activity configuration menu'|trans }}
|
|
||||||
{% endblock %}
|
|
@ -1,4 +1,4 @@
|
|||||||
{% extends "@ChillActivity/Admin/layout_activity.html.twig" %}
|
{% extends "@ChillAsideActivity/Admin/layout_asideactivity.html.twig" %}
|
||||||
|
|
||||||
{% block title %}
|
{% block title %}
|
||||||
{% include('@ChillMain/CRUD/_edit_title.html.twig') %}
|
{% include('@ChillMain/CRUD/_edit_title.html.twig') %}
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
{% extends "@ChillAsideActivity/Admin/layout_asideactivity.html.twig" %}
|
{% extends "@ChillAsideActivity/Admin/layout_asideactivity.html.twig" %}
|
||||||
|
|
||||||
{% block admin_content %}
|
{% block admin_content %}
|
||||||
<h1>{{ 'ActivityType list'|trans }}</h1>
|
<h1>{{ 'Aside Activity Type list'|trans }}</h1>
|
||||||
|
|
||||||
<table class="records_list table table-bordered border-dark">
|
<table class="records_list table table-bordered border-dark">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
<th>{{ 'Ordering'|trans }}</th>
|
||||||
<th>{{ 'Name'|trans }}</th>
|
<th>{{ 'Name'|trans }}</th>
|
||||||
<th>{{ 'Active'|trans }}</th>
|
<th>{{ 'Active'|trans }}</th>
|
||||||
<th>{{ 'Actions'|trans }}</th>
|
<th>{{ 'Actions'|trans }}</th>
|
||||||
@ -14,7 +15,8 @@
|
|||||||
<tbody>
|
<tbody>
|
||||||
{% for entity in entities %}
|
{% for entity in entities %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ entity.title|localize_translatable_string }}</td>
|
<td>{{ entity.ordering }}</td>
|
||||||
|
<td>{{ entity|chill_entity_render_box }}</td>
|
||||||
<td style="text-align:center;">
|
<td style="text-align:center;">
|
||||||
{%- if entity.isActive -%}
|
{%- if entity.isActive -%}
|
||||||
<i class="fa fa-check-square-o"></i>
|
<i class="fa fa-check-square-o"></i>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{% extends "@ChillActivity/Admin/layout_activity.html.twig" %}
|
{% extends "@ChillAsideActivity/Admin/layout_asideactivity.html.twig" %}
|
||||||
|
|
||||||
{% block title %}
|
{% block title %}
|
||||||
{% include('@ChillMain/CRUD/_new_title.html.twig') %}
|
{% include('@ChillMain/CRUD/_new_title.html.twig') %}
|
||||||
|
@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Chill\Migrations\AsideActivity;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Doctrine\Migrations\AbstractMigration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* allow to add an ordering to aside activity categories
|
||||||
|
*/
|
||||||
|
final class Version20211004134012 extends AbstractMigration
|
||||||
|
{
|
||||||
|
public function getDescription(): string
|
||||||
|
{
|
||||||
|
return 'allow to add an ordering to aside activity categories';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function up(Schema $schema): void
|
||||||
|
{
|
||||||
|
$this->addSql('ALTER TABLE chill_asideactivity.asideactivitycategory ADD ordering DOUBLE PRECISION NOT NULL DEFAULT 0.00');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(Schema $schema): void
|
||||||
|
{
|
||||||
|
$this->addSql('ALTER TABLE chill_asideactivity.asideactivitycategory DROP ordering');
|
||||||
|
}
|
||||||
|
}
|
@ -17,7 +17,7 @@
|
|||||||
#}
|
#}
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
{% for route in routes %}
|
{% for menu in menus %}
|
||||||
<li><a href="{{ path(route.key, args ) }}" class="{%- if activeRouteKey == route.key -%}active{%- endif -%}">{{ route.label }}</a></li>
|
<li><a href="{{ menu.uri }}">{{ menu.label }}</a></li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
Loading…
x
Reference in New Issue
Block a user