Commit 0220c98356cbc4e91d3dc521f77d1ef2daa8d584
1 parent
a29a7bc219
Exists in
master
añadido el ajax para añadir tutor y de una vez poder seleccionarlo desde la list…
…a de los tutores a la hora de solicitar ascenso
Showing
4 changed files
with
66 additions
and
18 deletions
Show diff stats
app/Resources/views/cea/ascenso_mostar.html.twig
@@ -61,8 +61,9 @@ | @@ -61,8 +61,9 @@ | ||
61 | </table> | 61 | </table> |
62 | 62 | ||
63 | <p ><strong>Escalafón Solicita:</strong> {{ ascenso.idEscalafones.nombre }} </p> | 63 | <p ><strong>Escalafón Solicita:</strong> {{ ascenso.idEscalafones.nombre }} </p> |
64 | - {% for tutor in ascenso.tutoresAscenso %} | 64 | + |
65 | <h4>Tutores propuestos</h4> | 65 | <h4>Tutores propuestos</h4> |
66 | + {% for tutor in ascenso.tutoresAscenso %} | ||
66 | <p class="well"> | 67 | <p class="well"> |
67 | <strong>{{ tutor.nombres }} {{ tutor.apellidos }}:</strong> | 68 | <strong>{{ tutor.nombres }} {{ tutor.apellidos }}:</strong> |
68 | {{ tutor.institucion }} -> {{ tutor.idEscala.nombre }} | 69 | {{ tutor.institucion }} -> {{ tutor.idEscala.nombre }} |
app/Resources/views/solicitudes/ascenso.html.twig
@@ -2,6 +2,7 @@ | @@ -2,6 +2,7 @@ | ||
2 | 2 | ||
3 | {% block stylesheets %} | 3 | {% block stylesheets %} |
4 | {{ parent() }} | 4 | {{ parent() }} |
5 | + <link rel="stylesheet" href="{{ asset('assets/vendor/chosen/chosen.min.css') }}"> | ||
5 | 6 | ||
6 | <style> | 7 | <style> |
7 | .esc_oposicion, .esc_asistente, .esc_agregado, .esc_asociado, .esc_titular{ | 8 | .esc_oposicion, .esc_asistente, .esc_agregado, .esc_asociado, .esc_titular{ |
@@ -134,6 +135,7 @@ | @@ -134,6 +135,7 @@ | ||
134 | 135 | ||
135 | {% block javascripts %} | 136 | {% block javascripts %} |
136 | {{ parent() }} | 137 | {{ parent() }} |
138 | + <script type="text/javascript" src="{{ asset('assets/vendor/chosen/chosen.jquery.min.js') }}"></script> | ||
137 | <script type="text/javascript"> | 139 | <script type="text/javascript"> |
138 | $('#ascenso_tipoTrabajoInvestigacion').click(function() { | 140 | $('#ascenso_tipoTrabajoInvestigacion').click(function() { |
139 | 141 | ||
@@ -143,7 +145,7 @@ | @@ -143,7 +145,7 @@ | ||
143 | 145 | ||
144 | 146 | ||
145 | $(".tutorForm").submit(function(e){ | 147 | $(".tutorForm").submit(function(e){ |
146 | - alert("funciona"); | 148 | + |
147 | e.preventDefault(); | 149 | e.preventDefault(); |
148 | 150 | ||
149 | var formSerialize = $(this).serialize(); | 151 | var formSerialize = $(this).serialize(); |
@@ -151,13 +153,23 @@ | @@ -151,13 +153,23 @@ | ||
151 | $.ajax({ | 153 | $.ajax({ |
152 | method: "POST", | 154 | method: "POST", |
153 | url: "{{ url('ajax_registrar_tutor') }}", | 155 | url: "{{ url('ajax_registrar_tutor') }}", |
154 | - data: formSerialize | 156 | + data: formSerialize, |
157 | + | ||
155 | }) | 158 | }) |
156 | .done(function (data) { | 159 | .done(function (data) { |
157 | - if (typeof data.message !== 'undefined') { | ||
158 | - alert(data.message); | 160 | + if (typeof data.response !== 'undefined') { |
161 | + alert(data.response); | ||
162 | + console.log(data.posts); | ||
163 | + var posts = JSON.parse(data.posts); | ||
164 | + $("#ascenso_tutores_ascenso").find('optgroup[label="UBV"]').append($('<option>', { | ||
165 | + value: posts.id, | ||
166 | + text: posts.nombres + " " + posts.apellidos | ||
167 | + })); | ||
168 | + $("#ascenso_tutores_ascenso").trigger("chosen:updated"); | ||
169 | + | ||
159 | } | 170 | } |
160 | }) | 171 | }) |
172 | + | ||
161 | .fail(function (jqXHR, textStatus, errorThrown) { | 173 | .fail(function (jqXHR, textStatus, errorThrown) { |
162 | if (typeof jqXHR.responseJSON !== 'undefined') { | 174 | if (typeof jqXHR.responseJSON !== 'undefined') { |
163 | if (jqXHR.responseJSON.hasOwnProperty('form')) { | 175 | if (jqXHR.responseJSON.hasOwnProperty('form')) { |
@@ -209,6 +221,8 @@ | @@ -209,6 +221,8 @@ | ||
209 | 221 | ||
210 | }); | 222 | }); |
211 | }); | 223 | }); |
224 | + | ||
225 | + $("#ascenso_tutores_ascenso").chosen({no_results_text: "<a data-toggle='modal' data-target='#buscarTutores' href='#'>Tutor no registrado, click aquí para registrar!</a>"}); | ||
212 | 226 | ||
213 | </script> | 227 | </script> |
214 | {% endblock %} | 228 | {% endblock %} |
src/AppBundle/Controller/AjaxController.php
@@ -73,6 +73,41 @@ class AjaxController extends Controller { | @@ -73,6 +73,41 @@ class AjaxController extends Controller { | ||
73 | } | 73 | } |
74 | 74 | ||
75 | 75 | ||
76 | + | ||
77 | + /** | ||
78 | + * @Route("/ajax/buscar_tutor_select", name="ajax_buscar_tutor_select") | ||
79 | + * @Method({"GET"}) | ||
80 | + */ | ||
81 | + public function buscarTutorSelectAction(Request $request){ | ||
82 | + //if($request->isXmlHttpRequest()){ | ||
83 | + $encoders = array(new JsonEncoder()); | ||
84 | + $normalizers = array(new ObjectNormalizer()); | ||
85 | + | ||
86 | + $serializer = new Serializer($normalizers, $encoders); | ||
87 | + | ||
88 | + $term = filter_input(INPUT_GET, 'term', FILTER_SANITIZE_SPECIAL_CHARS); | ||
89 | + $repository = $this->getDoctrine() | ||
90 | + ->getRepository('AppBundle:TutoresAscenso'); | ||
91 | + $query = $repository->createQueryBuilder('p') | ||
92 | + ->where('p.nombres LIKE :term') | ||
93 | + ->orWhere('p.apellidos LIKE :term') | ||
94 | + ->setParameter('term', '%'.$term.'%') | ||
95 | + ->getQuery(); | ||
96 | + | ||
97 | + $posts = $query->getResult(); | ||
98 | + | ||
99 | + | ||
100 | + $response = new JsonResponse(); | ||
101 | + $response->setStatusCode(200); | ||
102 | + $response->setData(array( | ||
103 | + 'items' => $serializer->serialize($posts, 'json') | ||
104 | + )); | ||
105 | + return $response; | ||
106 | + //} | ||
107 | + | ||
108 | + } | ||
109 | + | ||
110 | + | ||
76 | /** | 111 | /** |
77 | * @Route("/ajax/buscar_tutor", name="ajax_buscar_tutor") | 112 | * @Route("/ajax/buscar_tutor", name="ajax_buscar_tutor") |
78 | * @Method({"GET"}) | 113 | * @Method({"GET"}) |
@@ -127,9 +162,15 @@ class AjaxController extends Controller { | @@ -127,9 +162,15 @@ class AjaxController extends Controller { | ||
127 | $em->persist($nuevoTutor); | 162 | $em->persist($nuevoTutor); |
128 | $em->flush(); | 163 | $em->flush(); |
129 | 164 | ||
130 | - return new JsonResponse(array('message' => 'Success!'), 200); | 165 | + $response = new JsonResponse(); |
166 | + $response->setStatusCode(200); | ||
167 | + $response->setData(array( | ||
168 | + 'response' => 'success', | ||
169 | + 'posts' => $serializer->serialize($nuevoTutor, 'json') | ||
170 | + )); | ||
171 | + return $response; | ||
131 | } | 172 | } |
132 | - echo $form; | 173 | + |
133 | 174 | ||
134 | 175 | ||
135 | $response = new JsonResponse( | 176 | $response = new JsonResponse( |
src/AppBundle/Form/AscensoType.php
@@ -111,22 +111,14 @@ class AscensoType extends AbstractType | @@ -111,22 +111,14 @@ class AscensoType extends AbstractType | ||
111 | 111 | ||
112 | ->add('tutores_ascenso', EntityType::class, array( | 112 | ->add('tutores_ascenso', EntityType::class, array( |
113 | 'placeholder' => 'Añadir Tutores...', | 113 | 'placeholder' => 'Añadir Tutores...', |
114 | - 'class' => 'AppBundle:TutoresAscenso', | ||
115 | - 'label' => false, | 114 | + 'class' => 'AppBundle:TutoresAscenso', |
116 | 'multiple' => true, | 115 | 'multiple' => true, |
116 | + 'group_by' => 'institucion', | ||
117 | /*'attr' => array( | 117 | /*'attr' => array( |
118 | 'disabled' => 'true', | 118 | 'disabled' => 'true', |
119 | )*/ | 119 | )*/ |
120 | )) | 120 | )) |
121 | - | ||
122 | - ->add('añadir_tutor', ButtonType::class, array( | ||
123 | - 'label' => 'Añadir Tutor', | ||
124 | - 'attr' => array( | ||
125 | - 'class' => 'btn btn-success btn-sm', | ||
126 | - 'data-toggle' => "modal", | ||
127 | - 'data-target' => "#buscarTutores" | ||
128 | - ) | ||
129 | - )) | 121 | + |
130 | 122 | ||
131 | 123 | ||
132 | ->add('investigacion', FileType::class, array( | 124 | ->add('investigacion', FileType::class, array( |