1: <?php
2:
3: namespace Mapbender\WmsBundle\Form\EventListener;
4:
5: use Symfony\Component\Form\Event\DataEvent;
6: use Symfony\Component\Form\FormFactoryInterface;
7: use Symfony\Component\EventDispatcher\EventSubscriberInterface;
8: use Symfony\Component\Form\FormEvents;
9:
10: 11: 12:
13: class FieldSubscriber implements EventSubscriberInterface
14: {
15:
16: 17: 18: 19: 20:
21: private $factory;
22:
23: 24: 25: 26: 27:
28: public function __construct(FormFactoryInterface $factory)
29: {
30: $this->factory = $factory;
31: }
32:
33: 34: 35: 36: 37:
38: public static function getSubscribedEvents()
39: {
40: return array(FormEvents::PRE_SET_DATA => 'preSetData');
41: }
42:
43: 44: 45: 46: 47: 48:
49: public function preSetData(DataEvent $event)
50: {
51: $data = $event->getData();
52: $form = $event->getForm();
53:
54: if(null === $data)
55: {
56: return;
57: }
58:
59: if($data->getSublayer()->count() > 0)
60: {
61: $form->remove('toggle');
62: $form->add($this->factory->createNamed(
63: 'toggle', 'checkbox', null,
64: array(
65: 'disabled' => false,
66: "required" => false)));
67: $form->remove('allowtoggle');
68: $form->add($this->factory->createNamed(
69: 'allowtoggle', 'checkbox', null,
70: array(
71: 'required' => false,
72: 'disabled' => false)));
73: } else
74: {
75: $form->remove('toggle');
76: $form->add($this->factory->createNamed(
77: 'toggle', 'checkbox', null,
78: array(
79: 'disabled' => true,
80: "required" => false)));
81: $form->remove('allowtoggle');
82: $form->add($this->factory->createNamed(
83: 'allowtoggle', 'checkbox', null,
84: array(
85: 'required' => false,
86: 'disabled' => true)));
87: }
88:
89: if($data->getWmslayersource()->getQueryable() === true)
90: {
91: $form->remove('info');
92: $form->add($this->factory->createNamed(
93: 'info', 'checkbox', null,
94: array(
95: 'disabled' => false,
96: "required" => false)));
97: $form->remove('allowinfo');
98: $form->add($this->factory->createNamed(
99: 'allowinfo', 'checkbox', null,
100: array(
101: 'disabled' => false,
102: "required" => false)));
103: }
104: $arrStyles = $data->getWmslayersource()->getStyles();
105: $styleOpt = array("" => "");
106: foreach($arrStyles as $style)
107: {
108: $styleOpt[$style->getName()] = $style->getTitle();
109: }
110:
111: $form->remove('style');
112: $form->add($this->factory->createNamed(
113: 'style', 'choice', null,
114: array(
115: 'label' => 'style',
116: 'choices' => $styleOpt,
117: "required" => false)));
118: }
119:
120: }