upgrade views, menus, routing

This commit is contained in:
Julien Fastré 2014-11-07 13:19:07 +01:00
parent 9d313dd68f
commit 2a3ebb3659
6 changed files with 63 additions and 133 deletions

View File

@ -11,12 +11,12 @@ use Symfony\Component\HttpFoundation\Response;
class PersonController extends Controller { class PersonController extends Controller {
public function viewAction($id){ public function viewAction($person_id){
$person = $this->_getPerson($id); $person = $this->_getPerson($person_id);
if ($person === null) { if ($person === null) {
return $this->createNotFoundException("Person with id $id not found on this server"); return $this->createNotFoundException("Person with id $person_id not found on this server");
} }
return $this->render('ChillPersonBundle:Person:view.html.twig', return $this->render('ChillPersonBundle:Person:view.html.twig',
@ -25,8 +25,8 @@ class PersonController extends Controller {
} }
public function editAction($id) { public function editAction($person_id) {
$person = $this->_getPerson($id); $person = $this->_getPerson($person_id);
if ($person === null) { if ($person === null) {
return $this->createNotFoundException(); return $this->createNotFoundException();
@ -34,7 +34,7 @@ class PersonController extends Controller {
$form = $this->createForm(new PersonType(), $person, array( $form = $this->createForm(new PersonType(), $person, array(
'action' => $this->generateUrl('chill_person_general_update', array( 'action' => $this->generateUrl('chill_person_general_update', array(
'id' => $id 'person_id' => $person_id
)) ))
)); ));
@ -45,8 +45,8 @@ class PersonController extends Controller {
'form' => $form->createView())); 'form' => $form->createView()));
} }
public function updateAction($id, Request $request) { public function updateAction($person_id, Request $request) {
$person = $this->_getPerson($id); $person = $this->_getPerson($person_id);
if ($person === null) { if ($person === null) {
return $this->createNotFoundException(); return $this->createNotFoundException();
@ -79,7 +79,7 @@ class PersonController extends Controller {
$em->flush(); $em->flush();
$url = $this->generateUrl('chill_person_view', array( $url = $this->generateUrl('chill_person_view', array(
'id' => $person->getId() 'person_id' => $person->getId()
)); ));
return $this->redirect($url); return $this->redirect($url);

View File

@ -6,13 +6,14 @@ use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\FileLocator; use Symfony\Component\Config\FileLocator;
use Symfony\Component\HttpKernel\DependencyInjection\Extension; use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\Loader; use Symfony\Component\DependencyInjection\Loader;
use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface;
/** /**
* This is the class that loads and manages your bundle configuration * This is the class that loads and manages your bundle configuration
* *
* To learn more see {@link http://symfony.com/doc/current/cookbook/bundles/extension.html} * To learn more see {@link http://symfony.com/doc/current/cookbook/bundles/extension.html}
*/ */
class ChillPersonExtension extends Extension class ChillPersonExtension extends Extension implements PrependExtensionInterface
{ {
/** /**
* {@inheritDoc} * {@inheritDoc}
@ -28,4 +29,18 @@ class ChillPersonExtension extends Extension
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('services.yml'); $loader->load('services.yml');
} }
public function prepend(ContainerBuilder $container)
{
$bundles = $container->getParameter('kernel.bundles');
//add ChillMain to assetic-enabled bundles
if (!isset($bundles['AsseticBundle'])) {
throw new MissingBundleException('AsseticBundle');
}
$asseticConfig = $container->getExtensionConfig('assetic');
$asseticConfig['bundles'][] = 'ChillPersonBundle';
$container->prependExtensionConfig('assetic',
array('bundles' => array('ChillPersonBundle')));
}
} }

View File

@ -1,31 +1,32 @@
chill_person_view: chill_person_view:
pattern: /view/{id} pattern: /person/view/{person_id}/general
defaults: { _controller: ChillPersonBundle:Person:view } defaults: { _controller: ChillPersonBundle:Person:view }
options: options:
menu: person menus:
person:
order: 50 order: 50
label: menu.person.general_view label: Person View
chill_person_general_edit: chill_person_general_edit:
pattern: /view/{id}/edit pattern: /person/view/{person_id}/edit
defaults: {_controller: ChillPersonBundle:Person:edit } defaults: {_controller: ChillPersonBundle:Person:edit }
chill_person_general_update: chill_person_general_update:
pattern: /view/{id}/update pattern: /person/view/{person_id}/update
defaults: {_controller: ChillPersonBundle:Person:update } defaults: {_controller: ChillPersonBundle:Person:update }
chill_person_new: chill_person_new:
pattern: /new pattern: /person/new
defaults: {_controller: ChillPersonBundle:Person:new } defaults: {_controller: ChillPersonBundle:Person:new }
chill_person_review: chill_person_review:
pattern: /review pattern: /person/review
defaults: {_controller: ChillPersonBundle:Person:review } defaults: {_controller: ChillPersonBundle:Person:review }
chill_person_create: chill_person_create:
pattern: /create pattern: /person/create
defaults: {_controller: ChillPersonBundle:Person:create } defaults: {_controller: ChillPersonBundle:Person:create }
@ -34,102 +35,37 @@ chill_person_search:
defaults: { _controller: ChillPersonBundle:Person:search } defaults: { _controller: ChillPersonBundle:Person:search }
chill_person_history_list: chill_person_history_list:
pattern: /{id}/history pattern: /person/{person_id}/history
defaults: { _controller: ChillPersonBundle:History:list } defaults: { _controller: ChillPersonBundle:History:list }
options: options:
menu: person menus:
person:
order: 100 order: 100
label: menu.person.history label: menu.person.history
chill_person_history_create: chill_person_history_create:
pattern: /{personId}/history/create pattern: /person/{person_id}/history/create
defaults: { _controller: ChillPersonBundle:History:create } defaults: { _controller: ChillPersonBundle:History:create }
chill_person_history_update: chill_person_history_update:
pattern: /{id}/history/{historyId}/update pattern: /person/{person_id}/history/{historyId}/update
defaults: { _controller: ChillPersonBundle:History:update } defaults: { _controller: ChillPersonBundle:History:update }
chill_person_history_close: chill_person_history_close:
pattern: /{id}/history/close pattern: /person/{person_id}/history/close
defaults: { _controller: ChillPersonBundle:History:close } defaults: { _controller: ChillPersonBundle:History:close }
chill_person_history_open: chill_person_history_open:
pattern: /{id}/history/open pattern: /person/{person_id}/history/open
defaults: { _controller: ChillPersonBundle:History:open } defaults: { _controller: ChillPersonBundle:History:open }
chill_person_admin: chill_person_admin:
pattern: /admin pattern: /admin
defaults: { _controller: ChillPersonBundle:Admin:index } defaults: { _controller: ChillPersonBundle:Admin:index }
options: options:
menu: admin menus:
admin:
order: 100 order: 100
label: menu.person.admin.index label: menu.person.admin.index
helper: menu.person.admin.helper helper: menu.person.admin.helper
#sample admin_person menu:
chill_person_admin_test_one:
pattern: /admin/test_one
defaults: { _controller: ChillPersonBundle:Admin:test }
options:
menu: admin_person
order: 100
label: menu.person.admin.test_one
helper: menu.person.admin.helper_one
#sample
chill_appointment_list:
pattern: /view/{id}/appointment/list
defaults: {_controller: ChillPersonBundle:Person:view}
options:
menu: person
order: 200
label: "Rendez-vous"
chill_prof_status_view:
pattern: /view/{id}/prof/list
defaults: {_controller: ChillPersonBundle:Person:view}
options:
menu: person
order: 300
label: "Statut Professionnel"
chill_admin_view:
pattern: /view/{id}/administrative
defaults: {_controller: ChillPersonBundle:Person:view}
options:
menu: person
order: 400
label: "Statut administratif"
chill_language:
pattern: /view/{id}/language/list
defaults: {_controller: ChillPersonBundle:Person:view}
options:
menu: person
order: 500
label: "Langues"
chill_studies:
pattern: /view/{id}/studies
defaults: {_controller: ChillPersonBundle:Person:view}
options:
menu: person
order: 600
label: "Études"
chill_notes:
pattern: /view/{id}/notes
defaults: {_controller: ChillPersonBundle:Person:view}
options:
menu: person
order: 700
label: "Informations"
chill_docs:
pattern: /view/{id}/docs
defaults: {_controller: ChillPersonBundle:Person:view}
options:
menu: person
order: 800
label: "Documents"

View File

@ -11,9 +11,12 @@ This view should receive those arguments:
#} #}
{% block title %}ChillPersonBundle:Person:see{% endblock %} {% block title %}ChillPersonBundle:Person:see{% endblock %}
{#
we define variables to include an edit form repeated multiple time across
the page
#}
{% set edit_tmp_name = 'ChillPersonBundle:Form:go_to_form.html.twig' %} {% set edit_tmp_name = 'ChillPersonBundle:Form:go_to_form.html.twig' %}
{% set edit_tmp_args = { 'form_path_args' : { 'id': person.id }, {% set edit_tmp_args = { 'form_path_args' : { 'person_id': person.id },
'form_path_key' : 'chill_person_general_edit' } %} 'form_path_key' : 'chill_person_general_edit' } %}
@ -67,22 +70,6 @@ This view should receive those arguments:
{{ include(edit_tmp_name, edit_tmp_args) }} {{ include(edit_tmp_name, edit_tmp_args) }}
<figure>
<h2>{{ 'views.Person.view.family'|trans }}</h2>
<dl>
<dt class="inline">{{ 'views.Person.view.civil_union'|trans }}</dt>
<dd>{{ ('person.civil_union.' ~ person.civilUnion)|trans }}</dd>
<dt class="inline">{{ 'views.Person.view.nb_of_childs'|trans }}</dt>
<dd>{% transchoice person.nbOfChild with { '%nb%': person.nbOfChild } %}views.Person.view.nb_of_childs_count{% endtranschoice %}</dd>
</dl>
</figure>
{{ include(edit_tmp_name, edit_tmp_args) }}
<figure> <figure>
<h2>{{ 'views.Person.view.administrative'|trans }}</h2> <h2>{{ 'views.Person.view.administrative'|trans }}</h2>
@ -97,11 +84,6 @@ This view should receive those arguments:
</dd> </dd>
<dt class="inline">{{ 'views.Person.view.national_number'|trans }}</dt>
<dd>{{ person.belgianNationalNumber }}</dd>
</dl> </dl>
</figure> </figure>
@ -111,8 +93,6 @@ This view should receive those arguments:
<h2>{{ 'views.Person.view.contact'|trans }}</h2> <h2>{{ 'views.Person.view.contact'|trans }}</h2>
<dl> <dl>
<dt class="inline">{{ 'views.Person.view.address'|trans }}</dt>
<dd><pre>{{ person.address}}&nbsp;</pre></dd>
<dt class="inline">{{ 'views.Person.view.email'|trans }}</dt> <dt class="inline">{{ 'views.Person.view.email'|trans }}</dt>
<dd><pre>{{ person.email}}&nbsp;</pre></dd> <dd><pre>{{ person.email}}&nbsp;</pre></dd>

View File

@ -1,4 +1,4 @@
{% extends "CLChillMainBundle::layout.html.twig" %} {% extends "ChillMainBundle::layout.html.twig" %}
{% block css %} {% block css %}
@ -45,12 +45,11 @@
<section class="tabs vertical"> <section class="tabs vertical">
{# Note: activeRouteKey should be defined in Controller or child layout #} {# Note: activeRouteKey should be defined in Controller or child layout #}
{{ render(controller("CLChillMainBundle:Menu:writeMenu", { {{ chill_menu('person', {
'menu' : 'person',
'layout': 'ChillPersonBundle::menu.html.twig', 'layout': 'ChillPersonBundle::menu.html.twig',
'args' : {'id': person.id }, 'args' : {'person_id': person.id },
'activeRouteKey': activeRouteKey 'activeRouteKey': activeRouteKey
})) }} }) }}
<div class="tab-content active columns height"> <div class="tab-content active columns height">

View File

@ -1,12 +1,12 @@
<div class="columns four"> <div class="columns four">
<ul class="tab-nav follow-href-path"> <ul class="tab-nav follow-href-path">
{% for menu in menu_composer.getRoutesFor(menu) %} {% for route in routes %}
<li class="{% spaceless %} <li class="{% spaceless %}
{% if menu.route == activeRouteKey %} {% if route.key == activeRouteKey %}
active active
{% endif %} {% endif %}
{% endspaceless %} "> {% endspaceless %} ">
<a href="{{ path(menu.route, args) }}" >{{ menu.label|trans }}</a> <a href="{{ path(route.key, args ) }}" >{{ route.label|trans }}</a>
</li> </li>
{% endfor %} {% endfor %}