Commit 3c11f32e619ba7a65ac8228bcc84b72c2e178def

Authored by Wilmer Ramones
1 parent 90aaf1c268
Exists in master

creado los objetivos especificos para la planificacion

app/Resources/views/planificacionseccion/new.html.twig
... ... @@ -12,6 +12,10 @@
12 12  
13 13 </ul>
14 14  
  15 + <ul class="objetivoEspecifico" data-prototype="{{ form_widget(form.objetivoEspecifico.vars.prototype)|e('html_attr') }}">
  16 +
  17 + </ul>
  18 +
15 19 <input type="submit" value="Create" />
16 20 {{ form_end(form) }}
17 21  
... ... @@ -29,55 +33,102 @@
29 33 var $collectionHolder;
30 34  
31 35 // setup an "add a tag" link
  36 + var $addEspecificoLink = $('<a href="#" class="add_especifico_link">Añadir Objetivos Especificos</a>');
32 37 var $addContenidoLink = $('<a href="#" class="add_contenido_link">Añadir conceptos</a>');
33 38 var $RemoveContenidoLink = $('<a href="#" class="remove_contenido_link">Quitar Conceptos</a>');
34 39  
35   - var $newLinkLi = $('<li></li>').append($addContenidoLink);
  40 + var $newLinkLiContenido = $('<li></li>').append($addContenidoLink);
  41 + var $newLinkLiEspecifico = $('<li></li>').append($addEspecificoLink);
36 42 //$newLinkLi. = $('<li></li>').append($RemoveContenidoLink);
37 43  
38 44  
39 45 jQuery(document).ready(function() {
40 46 // Get the ul that holds the collection of tags
41   - $collectionHolder = $('ul.contenido');
42   -
  47 + $contenidoHolder = $('ul.contenido');
  48 + $especificoHolder = $('ul.objetivoEspecifico');
43 49 // add the "add a tag" anchor and li to the tags ul
44   - $collectionHolder.append($newLinkLi);
  50 + $contenidoHolder.append($newLinkLiContenido);
  51 + $especificoHolder.append($newLinkLiEspecifico);
45 52  
46 53 // count the current form inputs we have (e.g. 2), use that as the new
47 54 // index when inserting a new item (e.g. 2)
48   - $collectionHolder.data('index', $collectionHolder.find(':input').length);
  55 + $contenidoHolder.data('index', $contenidoHolder.find(':input').length);
  56 + $especificoHolder.data('index', $especificoHolder.find(':input').length);
49 57  
50 58 $addContenidoLink.on('click', function(e) {
51 59 // prevent the link from creating a "#" on the URL
52 60 e.preventDefault();
53 61  
54 62 // add a new tag form (see next code block)
55   - addContenidoForm($collectionHolder, $newLinkLi);
  63 + addContenidoForm($contenidoHolder, $newLinkLiContenido);
  64 + });
  65 +
  66 + $addEspecificoLink.on('click', function(e) {
  67 + // prevent the link from creating a "#" on the URL
  68 + e.preventDefault();
  69 +
  70 + // add a new tag form (see next code block)
  71 + addEspecificoForm($especificoHolder, $newLinkLiEspecifico);
56 72 });
57 73  
58 74  
59 75  
60   - function addContenidoForm($collectionHolder, $newLinkLi) {
  76 + function addContenidoForm($contenidoHolder, $newLinkLiContenido) {
  77 + // Get the data-prototype explained earlier
  78 + var prototype = $contenidoHolder.data('prototype');
  79 +
  80 + // get the new index
  81 + var index = $contenidoHolder.data('index');
  82 +
  83 + // Replace '$$name$$' in the prototype's HTML to
  84 + // instead be a number based on how many items we have
  85 + var newFormContenido = prototype.replace(/__name__/g, index);
  86 +
  87 + // increase the index with one for the next item
  88 + $contenidoHolder.data('index', index + 1);
  89 +
  90 + // Display the form in the page in an li, before the "Add a tag" link li
  91 + var $newFormLiContenido = $('<li></li>').append(newFormContenido);
  92 +
  93 + // also add a remove button, just for this example
  94 + $newFormLiContenido.append('<a href="#" class="remove-tag">x</a>');
  95 +
  96 + $newLinkLiContenido.before($newFormLiContenido);
  97 +
  98 + // handle the removal, just for this example
  99 + $('.remove-tag').click(function(e) {
  100 + e.preventDefault();
  101 +
  102 + $(this).parent().remove();
  103 +
  104 + return false;
  105 + });
  106 +
  107 +
  108 + }
  109 +
  110 +
  111 + function addEspecificoForm($especificoHolder, $newLinkLiEspecifico) {
61 112 // Get the data-prototype explained earlier
62   - var prototype = $collectionHolder.data('prototype');
  113 + var prototype = $especificoHolder.data('prototype');
63 114  
64 115 // get the new index
65   - var index = $collectionHolder.data('index');
  116 + var index = $especificoHolder.data('index');
66 117  
67 118 // Replace '$$name$$' in the prototype's HTML to
68 119 // instead be a number based on how many items we have
69   - var newForm = prototype.replace(/__name__/g, index);
  120 + var newFormEspecifico = prototype.replace(/__name__/g, index);
70 121  
71 122 // increase the index with one for the next item
72   - $collectionHolder.data('index', index + 1);
  123 + $especificoHolder.data('index', index + 1);
73 124  
74 125 // Display the form in the page in an li, before the "Add a tag" link li
75   - var $newFormLi = $('<li></li>').append(newForm);
  126 + var $newFormLiEspecifico = $('<li></li>').append(newFormEspecifico);
76 127  
77 128 // also add a remove button, just for this example
78   - $newFormLi.append('<a href="#" class="remove-tag">x</a>');
  129 + $newFormLiEspecifico.append('<a href="#" class="remove-tag">x</a>');
79 130  
80   - $newLinkLi.before($newFormLi);
  131 + $newLinkLiEspecifico.before($newFormLiEspecifico);
81 132  
82 133 // handle the removal, just for this example
83 134 $('.remove-tag').click(function(e) {
... ...
src/AppBundle/Controller/PlanificacionSeccionController.php
... ... @@ -63,6 +63,11 @@ class PlanificacionSeccionController extends Controller
63 63 $contenido->setPlanificacionSeccionId($planificacionSeccion);
64 64 $seccion->addPlanificacion($planificacionSeccion);
65 65 }
  66 +
  67 + foreach($planificacionSeccion->getObjetivoEspecifico() as $especifico){
  68 + $especifico->setPlanificacionSeccionId($planificacionSeccion);
  69 + }
  70 +
66 71 //var_dump($seccion->getPlanificacion()->count()); exit;
67 72 $em = $this->getDoctrine()->getManager();
68 73 $em->persist($planificacionSeccion);
... ...
src/AppBundle/Entity/PlanificacionSeccion.php
... ... @@ -35,7 +35,8 @@ class PlanificacionSeccion
35 35  
36 36  
37 37 /**
38   - * @ORM\OneToMany(targetEntity="PlanificacionSeccionEspecifico", mappedBy="idPlanificacionEspecifico")
  38 + * @ORM\OneToMany(targetEntity="PlanificacionSeccionEspecifico", mappedBy="planificacionSeccionId",cascade={"all"})
  39 + * @var \Doctrine\Common\Collections\ArrayCollection
39 40 */
40 41 private $objetivoEspecifico;
41 42  
... ... @@ -169,38 +170,7 @@ class PlanificacionSeccion
169 170 return $this->idtemaUc;
170 171 }
171 172  
172   - /**
173   - * Add objetivoEspecifico
174   - *
175   - * @param \AppBundle\Entity\PlanificacionSeccionEspecifico $objetivoEspecifico
176   - * @return PlanificacionSeccion
177   - */
178   - public function addObjetivoEspecifico(\AppBundle\Entity\PlanificacionSeccionEspecifico $objetivoEspecifico)
179   - {
180   - $this->objetivoEspecifico[] = $objetivoEspecifico;
181   -
182   - return $this;
183   - }
184   -
185   - /**
186   - * Remove objetivoEspecifico
187   - *
188   - * @param \AppBundle\Entity\PlanificacionSeccionEspecifico $objetivoEspecifico
189   - */
190   - public function removeObjetivoEspecifico(\AppBundle\Entity\PlanificacionSeccionEspecifico $objetivoEspecifico)
191   - {
192   - $this->objetivoEspecifico->removeElement($objetivoEspecifico);
193   - }
194   -
195   - /**
196   - * Get objetivoEspecifico
197   - *
198   - * @return \Doctrine\Common\Collections\Collection
199   - */
200   - public function getObjetivoEspecifico()
201   - {
202   - return $this->objetivoEspecifico;
203   - }
  173 +
204 174  
205 175 /**
206 176 * Add contenido
... ... @@ -390,4 +360,37 @@ class PlanificacionSeccion
390 360 {
391 361 return $this->fechaUltimaActualizacion;
392 362 }
  363 +
  364 + /**
  365 + * Add objetivoEspecifico
  366 + *
  367 + * @param \AppBundle\Entity\PlanificacionSeccionEspecifico $objetivoEspecifico
  368 + * @return PlanificacionSeccion
  369 + */
  370 + public function addObjetivoEspecifico(\AppBundle\Entity\PlanificacionSeccionEspecifico $objetivoEspecifico)
  371 + {
  372 + $this->objetivoEspecifico[] = $objetivoEspecifico;
  373 +
  374 + return $this;
  375 + }
  376 +
  377 + /**
  378 + * Remove objetivoEspecifico
  379 + *
  380 + * @param \AppBundle\Entity\PlanificacionSeccionEspecifico $objetivoEspecifico
  381 + */
  382 + public function removeObjetivoEspecifico(\AppBundle\Entity\PlanificacionSeccionEspecifico $objetivoEspecifico)
  383 + {
  384 + $this->objetivoEspecifico->removeElement($objetivoEspecifico);
  385 + }
  386 +
  387 + /**
  388 + * Get objetivoEspecifico
  389 + *
  390 + * @return \Doctrine\Common\Collections\Collection
  391 + */
  392 + public function getObjetivoEspecifico()
  393 + {
  394 + return $this->objetivoEspecifico;
  395 + }
393 396 }
... ...
src/AppBundle/Entity/PlanificacionSeccion.php~
... ... @@ -9,8 +9,8 @@ use Doctrine\ORM\Mapping as ORM;
9 9 *
10 10 * @ORM\Table(name="planificacion_seccion",
11 11 * uniqueConstraints=
12   - * {@ORM\UniqueConstraint(name="uq_tema_uc",
13   - * columns={"id_tema_uc"})
  12 + * {@ORM\UniqueConstraint(name="uq_tema_uc_seccion",
  13 + * columns={"id_tema_uc", "seccion_id"})
14 14 * },
15 15 * indexes={
16 16 * @ORM\Index(name="fki_id_tema_uc",
... ... @@ -26,7 +26,7 @@ class PlanificacionSeccion
26 26 /**
27 27 * @var \AppBundle\Entity\UnidadCurricularVolumenTema
28 28 *
29   - * @ORM\ManyToOne(targetEntity="AppBundle\Entity\UnidadCurricularVolumenTema")
  29 + * @ORM\ManyToOne(targetEntity="AppBundle\Entity\UnidadCurricularVolumenTema", inversedBy="hasPlanificacion")
30 30 * @ORM\JoinColumns({
31 31 * @ORM\JoinColumn(name="id_tema_uc", referencedColumnName="id", nullable=false)
32 32 * })
... ... @@ -35,13 +35,14 @@ class PlanificacionSeccion
35 35  
36 36  
37 37 /**
38   - * @ORM\OneToMany(targetEntity="PlanificacionSeccionEspecifico", mappedBy="idPlanificacionEspecifico")
  38 + * @ORM\OneToMany(targetEntity="PlanificacionSeccionEspecifico", mappedBy="planificacionSeccionId")
  39 + * @var \Doctrine\Common\Collections\ArrayCollection
39 40 */
40 41 private $objetivoEspecifico;
41 42  
42 43  
43 44 /**
44   - * @ORM\OneToMany(targetEntity="PlanificacionSeccionContenido", mappedBy="PlanificacionSeccion",cascade={"persist", "remove"})
  45 + * @ORM\OneToMany(targetEntity="PlanificacionSeccionContenido", mappedBy="planificacionSeccionId", cascade={"all"})
45 46 * @var \Doctrine\Common\Collections\ArrayCollection
46 47 */
47 48 private $contenido;
... ... @@ -169,38 +170,7 @@ class PlanificacionSeccion
169 170 return $this->idtemaUc;
170 171 }
171 172  
172   - /**
173   - * Add objetivoEspecifico
174   - *
175   - * @param \AppBundle\Entity\PlanificacionSeccionEspecifico $objetivoEspecifico
176   - * @return PlanificacionSeccion
177   - */
178   - public function addObjetivoEspecifico(\AppBundle\Entity\PlanificacionSeccionEspecifico $objetivoEspecifico)
179   - {
180   - $this->objetivoEspecifico[] = $objetivoEspecifico;
181   -
182   - return $this;
183   - }
184   -
185   - /**
186   - * Remove objetivoEspecifico
187   - *
188   - * @param \AppBundle\Entity\PlanificacionSeccionEspecifico $objetivoEspecifico
189   - */
190   - public function removeObjetivoEspecifico(\AppBundle\Entity\PlanificacionSeccionEspecifico $objetivoEspecifico)
191   - {
192   - $this->objetivoEspecifico->removeElement($objetivoEspecifico);
193   - }
194   -
195   - /**
196   - * Get objetivoEspecifico
197   - *
198   - * @return \Doctrine\Common\Collections\Collection
199   - */
200   - public function getObjetivoEspecifico()
201   - {
202   - return $this->objetivoEspecifico;
203   - }
  173 +
204 174  
205 175 /**
206 176 * Add contenido
... ... @@ -210,7 +180,9 @@ class PlanificacionSeccion
210 180 */
211 181 public function addContenido(\AppBundle\Entity\PlanificacionSeccionContenido $contenido)
212 182 {
  183 + $contenido->setPlanificacionSeccionId($this);
213 184 $this->contenido[] = $contenido;
  185 +
214 186  
215 187 return $this;
216 188 }
... ...
src/AppBundle/Entity/PlanificacionSeccionEspecifico.php
... ... @@ -7,16 +7,7 @@ use Doctrine\ORM\Mapping as ORM;
7 7 /**
8 8 * PlanificacionSeccionEspecifico
9 9 *
10   - * @ORM\Table(name="planificacion_seccion_especifico",
11   - * uniqueConstraints=
12   - * {@ORM\UniqueConstraint(name="uq_planificacion_seccion_especifico",
13   - * columns={"id_planificacion_seccion"})
14   - * },
15   - * indexes={
16   - * @ORM\Index(name="fki_id_planificacion_especifico",
17   - * columns={"id_planificacion_seccion"})
18   - * }
19   - * )
  10 + * @ORM\Table(name="planificacion_seccion_especifico")
20 11 * @ORM\Entity
21 12 */
22 13 class PlanificacionSeccionEspecifico
... ... @@ -41,23 +32,16 @@ class PlanificacionSeccionEspecifico
41 32 private $id;
42 33  
43 34  
44   - /**
45   - * @var \AppBundle\Entity\PlanificacionSeccion
46   - *
47   - * @ORM\ManyToOne(targetEntity="AppBundle\Entity\PlanificacionSeccion")
48   - * @ORM\JoinColumns({
49   - * @ORM\JoinColumn(name="id_planificacion_seccion", referencedColumnName="id", nullable=false)
50   - * })
51   - */
52   - private $idPlanificacionSeccion;
53   -
  35 +
54 36 /**
55 37 * @ORM\ManyToOne(targetEntity="PlanificacionSeccion", inversedBy="objetivoEspecifico")
56   - * @ORM\JoinColumn(name="id_planificacion_especifico", referencedColumnName="id")
  38 + * @ORM\JoinColumn(name="planificacion_seccion_id", referencedColumnName="id", nullable=FALSE)
57 39 */
58   - private $idPlanificacionEspecifico;
  40 + private $planificacionSeccionId;
59 41  
60 42  
  43 +
  44 +
61 45 /**
62 46 * Set objetivoEspecifico
63 47 *
... ... @@ -92,48 +76,27 @@ class PlanificacionSeccionEspecifico
92 76 }
93 77  
94 78 /**
95   - * Set idPlanificacionSeccion
  79 + * Set planificacionSeccionId
96 80 *
97   - * @param \AppBundle\Entity\PlanificacionSeccion $idPlanificacionSeccion
  81 + * @param \AppBundle\Entity\PlanificacionSeccion $planificacionSeccionId
98 82 * @return PlanificacionSeccionEspecifico
99 83 */
100   - public function setIdPlanificacionSeccion(\AppBundle\Entity\PlanificacionSeccion $idPlanificacionSeccion)
  84 + public function setPlanificacionSeccionId(\AppBundle\Entity\PlanificacionSeccion $planificacionSeccionId)
101 85 {
102   - $this->idPlanificacionSeccion = $idPlanificacionSeccion;
  86 + $this->planificacionSeccionId = $planificacionSeccionId;
103 87  
104 88 return $this;
105 89 }
106 90  
107 91 /**
108   - * Get idPlanificacionSeccion
  92 + * Get planificacionSeccionId
109 93 *
110 94 * @return \AppBundle\Entity\PlanificacionSeccion
111 95 */
112   - public function getIdPlanificacionSeccion()
  96 + public function getPlanificacionSeccionId()
113 97 {
114   - return $this->idPlanificacionSeccion;
115   - }
116   -
117   - /**
118   - * Set idPlanificacionEspecifico
119   - *
120   - * @param \AppBundle\Entity\PlanificacionSeccion $idPlanificacionEspecifico
121   - * @return PlanificacionSeccionEspecifico
122   - */
123   - public function setIdPlanificacionEspecifico(\AppBundle\Entity\PlanificacionSeccion $idPlanificacionEspecifico = null)
124   - {
125   - $this->idPlanificacionEspecifico = $idPlanificacionEspecifico;
126   -
127   - return $this;
128   - }
129   -
130   - /**
131   - * Get idPlanificacionEspecifico
132   - *
133   - * @return \AppBundle\Entity\PlanificacionSeccion
134   - */
135   - public function getIdPlanificacionEspecifico()
136   - {
137   - return $this->idPlanificacionEspecifico;
  98 + return $this->planificacionSeccionId;
138 99 }
  100 +
  101 +
139 102 }
... ...
src/AppBundle/Entity/PlanificacionSeccionEspecifico.php~
... ... @@ -7,16 +7,7 @@ use Doctrine\ORM\Mapping as ORM;
7 7 /**
8 8 * PlanificacionSeccionEspecifico
9 9 *
10   - * @ORM\Table(name="planificacion_seccion_especifico",
11   - * uniqueConstraints=
12   - * {@ORM\UniqueConstraint(name="uq_planificacion_seccion_especifico",
13   - * columns={"id_planificacion_seccion"})
14   - * },
15   - * indexes={
16   - * @ORM\Index(name="fki_id_planificacion_especifico",
17   - * columns={"id_planificacion_seccion"})
18   - * }
19   - * )
  10 + * @ORM\Table(name="planificacion_seccion_especifico")
20 11 * @ORM\Entity
21 12 */
22 13 class PlanificacionSeccionEspecifico
... ... @@ -41,23 +32,13 @@ class PlanificacionSeccionEspecifico
41 32 private $id;
42 33  
43 34  
44   - /**
45   - * @var \AppBundle\Entity\PlanificacionSeccion
46   - *
47   - * @ORM\ManyToOne(targetEntity="AppBundle\Entity\PlanificacionSeccion")
48   - * @ORM\JoinColumns({
49   - * @ORM\JoinColumn(name="id_planificacion_seccion", referencedColumnName="id", nullable=false)
50   - * })
51   - */
52   - private $idPlanificacionSeccion;
53   -
  35 +
54 36 /**
55 37 * @ORM\ManyToOne(targetEntity="PlanificacionSeccion", inversedBy="objetivoEspecifico")
56   - * @ORM\JoinColumn(name="id_planificacion_especifico", referencedColumnName="id")
  38 + * @ORM\JoinColumn(name="planificacion_seccion_id", referencedColumnName="id", nullable=FALSE)
57 39 */
58   - private $idPlanificacionEspecifico;
59   -
  40 + private $planificacionSeccionId;
60 41  
61   -
  42 +
62 43  
63 44 }
... ...
src/AppBundle/Form/PlanificacionSeccionEspecificoType.php
... ... @@ -0,0 +1,31 @@
  1 +<?php
  2 +
  3 +namespace AppBundle\Form;
  4 +
  5 +use Symfony\Component\Form\AbstractType;
  6 +use Symfony\Component\Form\FormBuilderInterface;
  7 +use Symfony\Component\OptionsResolver\OptionsResolver;
  8 +
  9 +class PlanificacionSeccionEspecificoType extends AbstractType
  10 +{
  11 + /**
  12 + * @param FormBuilderInterface $builder
  13 + * @param array $options
  14 + */
  15 + public function buildForm(FormBuilderInterface $builder, array $options)
  16 + {
  17 + $builder
  18 + ->add('objetivoEspecifico')
  19 + ;
  20 + }
  21 +
  22 + /**
  23 + * @param OptionsResolver $resolver
  24 + */
  25 + public function configureOptions(OptionsResolver $resolver)
  26 + {
  27 + $resolver->setDefaults(array(
  28 + 'data_class' => 'AppBundle\Entity\PlanificacionSeccionEspecifico'
  29 + ));
  30 + }
  31 +}
... ...
src/AppBundle/Form/PlanificacionSeccionType.php
... ... @@ -17,7 +17,9 @@ class PlanificacionSeccionType extends AbstractType
17 17 */
18 18 public function buildForm(FormBuilderInterface $builder, array $options)
19 19 {
  20 + //que solo salga la seccion que estamos planificando
20 21 $this->seccion = $options['seccion'];
  22 + //que solo salgan los temas que no han sido planificados de esa seccion
21 23 $this->planificacion = $options['planificacion'];
22 24 if (!$this->planificacion){
23 25 $this->planes[] = 0;
... ... @@ -54,12 +56,17 @@ class PlanificacionSeccionType extends AbstractType
54 56 ));
55 57 ;},
56 58 ))
  59 + ->add('objetivoEspecifico', CollectionType::class, array(
  60 + 'entry_type' => PlanificacionSeccionEspecificoType::class,
  61 + 'allow_add' => true,
  62 + 'label' => false
  63 + ))
  64 +
57 65 ->add('contenido', CollectionType::class, array(
58 66 'entry_type' => PlanificacionSeccionContenidoType::class,
59 67 'allow_add' => true,
60 68 'label' => false
61 69 ))
62   -
63 70 ;
64 71 }
65 72  
... ...