diff --git a/Controller/CustomFieldsGroupController.php b/Controller/CustomFieldsGroupController.php index 9897da5f4..0be440be4 100644 --- a/Controller/CustomFieldsGroupController.php +++ b/Controller/CustomFieldsGroupController.php @@ -4,7 +4,7 @@ namespace Chill\CustomFieldsBundle\Controller; use Symfony\Component\HttpFoundation\Request; use Symfony\Bundle\FrameworkBundle\Controller\Controller; - +use Doctrine\ORM\Query; use Chill\CustomFieldsBundle\Entity\CustomFieldsGroup; /** @@ -22,12 +22,64 @@ class CustomFieldsGroupController extends Controller { $em = $this->getDoctrine()->getManager(); - $entities = $em->getRepository('ChillCustomFieldsBundle:CustomFieldsGroup')->findAll(); + $cfGroups = $em->getRepository('ChillCustomFieldsBundle:CustomFieldsGroup')->findAll(); + $defaultGroups = $this->getDefaultGroupsId(); + + $makeDefaultFormViews = array(); + foreach ($cfGroups as $group) { + if (!in_array($group->getId(), $defaultGroups)){ + $makeDefaultFormViews[$group->getId()] = $this->createMakeDefaultForm($group)->createView(); + } + } return $this->render('ChillCustomFieldsBundle:CustomFieldsGroup:index.html.twig', array( - 'entities' => $entities, + 'entities' => $cfGroups, + 'default_groups' => $defaultGroups, + 'make_default_forms' => $makeDefaultFormViews )); } + + /** + * Get an array of CustomFieldsGroupId which are marked as default + * for their entity + * + * @return int[] + */ + private function getDefaultGroupsId() + { + $em = $this->getDoctrine()->getManager(); + + $customFieldsGroupIds = $em->createQuery('SELECT g.id FROM ' + . 'ChillCustomFieldsBundle:CustomFieldsDefaultGroup d ' + . 'JOIN d.customFieldsGroup g') + ->getResult(Query::HYDRATE_SCALAR); + + $result = array(); + foreach ($customFieldsGroupIds as $row) { + $result[] = $row['id']; + } + + return $result; + } + + /** + * create a form to make the group default + * + * @param CustomFieldsGroup $group + * @return \Symfony\Component\Form\Form + */ + private function createMakeDefaultForm(CustomFieldsGroup $group) + { + return $this->createFormBuilder($group, array( + 'method' => 'POST', + 'action' => $this->generateUrl('customfieldsgroup_makedefault') + )) + ->add('id', 'hidden') + ->add('submit', 'submit', array('label' => 'Make default')) + ->getForm(); + } + + /** * Creates a new CustomFieldsGroup entity. * diff --git a/Resources/config/routing/customfieldsgroup.yml b/Resources/config/routing/customfieldsgroup.yml index f34e0169b..446a15aa3 100644 --- a/Resources/config/routing/customfieldsgroup.yml +++ b/Resources/config/routing/customfieldsgroup.yml @@ -10,6 +10,10 @@ customfieldsgroup: customfieldsgroup_show: path: /{_locale}/admin/customfieldsgroup/{id}/show defaults: { _controller: "ChillCustomFieldsBundle:CustomFieldsGroup:show" } + +customfieldsgroup_makedefault: + path: /{_locale}/admin/customfieldsgroup/make_default + defaults: { _controller: "ChillCustomFieldsBundle:CustomFieldsGroup:makeDefault" } customfieldsgroup_new: path: /{_locale}/admin/customfieldsgroup/new diff --git a/Resources/translations/messages.fr.yml b/Resources/translations/messages.fr.yml index 78b57984c..ad8407fbc 100644 --- a/Resources/translations/messages.fr.yml +++ b/Resources/translations/messages.fr.yml @@ -1,3 +1,14 @@ 'Not available in your language': 'Traduction pas disponible dans votre langue' 'Other value': 'Autre valeur' 'None': 'Pas spécifié' + +Custom fields configuration: Configuration des champs personnalisés +CustomFieldsGroup list: Groupes de champs personnalisés +Entity: Entité +"Is default ?": "Par défaut ?" +"Some module select default groups for some usage. Example: the default person group is shown under person page.": "Certains modules sélectionnent en priorité les formulaires par défaut. Exemple: le formulaire par défaut pour une personne est affiché sur la page principale pour la personne" +Make default: Assigner comme formulaire par défaut +Create a new group: Créer un nouveau groupe + +CustomFields List: Liste des champs personnalisés +CustomFields Groups: Groupe de champs personnalisés diff --git a/Resources/views/CustomFieldsGroup/index.html.twig b/Resources/views/CustomFieldsGroup/index.html.twig index 4f751490d..787c65436 100644 --- a/Resources/views/CustomFieldsGroup/index.html.twig +++ b/Resources/views/CustomFieldsGroup/index.html.twig @@ -17,30 +17,38 @@ {% extends "ChillCustomFieldsBundle::Admin/layout.html.twig" %} {% block admin_content %} -
Id | -Name | -Entity | -Actions | +{{ 'Name'|trans }} | +{{ 'Entity'|trans }} | +{{ 'Is default ?'|trans }} | +{{ 'Actions'|trans }} |
---|---|---|---|---|---|---|---|
{{ entity.id }} | -{{ entity.name['fr'] }} | -{{ entity.entity }} | +{{ entity.name|localize_translatable_string }} | +{{ entity.entity|trans }} | ++ {%- if entity.id in default_groups -%} + + {%- else -%} + {{ form_start(make_default_forms[entity.id]) }} + {{ form_widget(make_default_forms[entity.id].submit, { 'attr' : { 'class' : 'sc-button bt-action' } } ) }} + {{ form_end(make_default_forms[entity.id]) }} + {%- endif -%} + |
|
@@ -52,7 +60,7 @@