Skip to content

Instantly share code, notes, and snippets.

@johnwards
Created May 19, 2011 13:19
Show Gist options
  • Save johnwards/980733 to your computer and use it in GitHub Desktop.
Save johnwards/980733 to your computer and use it in GitHub Desktop.
<?php
namespace FoodRisc\AccountAdminBundle\Admin;
use Model\WhiteOctoberFormBuilderBundle\Form;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use FoodRisc\AccountAdminBundle\Admin\Action\WaveSendInvitationsAction;
class WaveAdmin extends Admin
{
protected function configure()
{
$this
->setDataClass('Model\Wave')
->setRoutePatternPrefix('/studies/{formId}/waves')
->addFields(array(
'name' => array('sortable' => true),
))
->setActionOption("list", "template", "WhiteOctoberAdminBundle:Wave:list.html.twig")
->addParameterToPropagate('formId')
->addControllerPreExecute(function (ContainerInterface $container) {
$request = $container->get('request');
$form = Form::getRepository()->findOneById($request->attributes->get('formId'));
if (!$form) {
throw new NotFoundHttpException();
}
$request->attributes->set('_form', $form);
})
->mergeActionOption('list', 'filterQueryCallbacks', array(function ($query, $container) {
$form = $container->get('request')->attributes->get('_form');
$query->mergeCriteria(array('form' => $form->getId()));
}))
->mergeActionOption('list', 'findDataByIdCallbacks', array(function ($data, ContainerInterface $container) {
if ($data->getForm() !== $container->get('request')->attributes->get('_form')) {
$data = null;
}
return $data;
}))
->mergeActionOption('list', 'createDataCallbacks', array(function ($data, ContainerInterface $container) {
$form = $container->get('request')->attributes->get('_form');
$data->setForm($form);
}))
->mergeActionOption('list', 'dataActions', array(
'participants' => array('label' => 'Participants', 'routeName' => 'foodrisc_accountadminbundle_admin_participantadmin_list', 'routeParameters' => array('waveId' => '@id',)),
))
->addAction(new WaveSendInvitationsAction())
;
}
public function generateAccessUrl()
{
return false;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment