De las Manifestaciones Méxicanas

Anonymous
En México, nos han vendido que las manifestaciones son para atrasar a los demás, estorbos, un acto inútil, como mexicanos compramos la idea desde hace mucho, pocos se manifiestan. Lo curioso es que los inconformes son o somos muchos, ¿que pasa con eso que solo se quejan? ¿por que no dan el brinco a la manifestación? a ¿que le temen?,
De las posibles causas de la apatía
Creo que uno de los problemas es que esperamos a sentirnos identificados con todos los aspectos de cualquier movimiento, algo sin duda muy difícil ya que no hay dos mentes iguales, debemos encontrar el punto en común y potenciarlo, así como mantener al movimiento lo mas objetivo posible, cosa también difícil por que siempre habrá grupos que querrán adueñarse de los movimientos y hacerlos a su manera con todo y atribuciones, tal como pasó con el movimiento de Javier Sicilia, que empezó al menos recuerdo, como una exigencia a las autoridades a hacer su labor, y actualmente pareciera ser una petición para sacar al ejercito de las calles, o como está pasando en las manifestaciones por la educación chilena, que grupos radicales actúan con violencia para perseguir el mismo fin que miles o millones de chilenos pacifistas desean, obviamente el morbo vende y los medios muestran a mas vándalos con bombas molotov, que a estudiantes con cacerolas y batakas.
Pero el principal motivo es el miedo, esa razón que solo existe en las mentes de las personas, que ha sido cultivada por años por los medios y el boca a boca, y es que no la tenemos tan fácil como las manifestaciones pacificas de los españoles por que sabemos que aquí armas sobran, el problema es que la gente de bien no tiene, ni quiere usarlas. Además de que tampoco conocemos al enemigo, ni siquiera lo hemos definido, mientras unos dicen que el enemigo es el narcotráfico, otros dicen que son los políticos, y así con la pelotita saltando entre ambos, como sociedad estamos confundidos de a quien agradecer y a quien ignorar, aunque por practicidad terminamos agradeciendo y temiendo a ambos.
Del dicho al hecho
Como mencionaba, millones de mexicanos están inconformes, violencia y pobreza es lo que mas se escucha, ¿que hace falta? no creo que la policía mexicana sea mas civica que la española, pero aquí la policía no ha golpeado a decenas de manifestantes, y es claramente por que no necesitan dispersar a nadie, la misma sociedad ha mantenido el lema de que "somos el país en el que no pasa nada", no creo que el problema sea del país, es de nosotros, por clavarnos ese tipo de "ideas" como si fuesen teorías científicas.
Para romper la inercia que nos ha mantenido en nuestro confort durante tantos años necesitamos:
- Mostrar a la sociedad que manifestarse es nuestro derecho y oportunidad de cambiar lo que no nos gusta.
- Hacer a las manifestaciones atractivas.
- Infundir miedo.
La población ignora que tiene el poder, por que pocas veces hemos hecho valer nuestros derechos a manifestarnos de manera masiva, sumando en lugar de fragmentando, que eso, ojalá podamos ver mas hacia el exterior para aprender de países como Egipto que logró la dimisión de Hosni Mubarak (ver video abajo), ganándose incluso la simpatía del ejercito (al fin y al cabo también son humanos), tengo esperanza de que mi localidad haya aprendido algo de las pasadas elecciones, que por primera vez en la historia se eligió a un político de otro partido. En cambio, las manifestaciones tradicionales son para pedir, y ya no estamos para esas gentilezas, lo que tenemos que hacer es exigir, y hacerlo de manera creativa, las huelgas de hambre ya son aburridas, necesitamos algo nuevo, y masivo, que se manifiesten artistas y ciudadanos, no sindicatos victimizados, no a todos les interesa ir a un lugar a hacerse las víctimas, pero si a casi todos nos gustan las fiestas, sonidos y colores. Si el miedo es un método de control, usemoslo!, infundamos miedo a la población explicándole que pasaría si no hacen nada, o que está pasando ya por su omisión, aprovechemoslo a nuestro favor con información verídica y enfocada, solo si el miedo que infundamos es mayor que el miedo que los mantiene inertes se logrará, al final el primero de los miedos desaparece, si no hacemos nada el segundo permanece.
Esperanza
Todo es relativo y el futuro es incierto, posiblemente la ciudadanía esté en un estatus de confort, con miedo y hambre, pero agusto, muchos han aprendido a vivir así por años, ese confort al que me refiero es similar al que tienen los estadounidenses, que olvidan las guerras que tienen solo por que no quieren perder los privilegios en los que han nacido y crecido, por acá sucede igual, hemos vivido en un confort otorgado por el narcotráfico, ha desaparecido de nuestra visión la prepotencia y corrupción, no queremos verlas por que no queremos perderlas. Por eso tal vez las cosas no cambien, hasta que nos demos cuenta que lo hemos perdido todo.
Autocompletar con scriptaculous
Lo que vamos a hacer es un cuadro search box como el google suggest, que a diferencia de este, no haremos una petición ajax al servidor ya que tendremos los valores precargados en una variable javascript, útil cuando los registros son pocos y estáticos.
Reconozco que a estas alturas medio mundo usa jquery, pero como persona de escaso conocimiento en el área, para el propósito me sirvió prototype y scriptaculous.
Lo primero que tenemos que hacer es descargar scriptaculous, y extraemos todos los js dentro de una carpeta javascripts.
El siguiente paso es crear el archivo css.css para darle un diseño bonito al recuadro de opciones que aparecerán conforme vayamos escribiendo, el código de css.css es
div.autocomplete { margin:0px; padding:0px; width:250px; background:#fff; border:1px solid #888; position:absolute; } div.autocomplete ul { margin:0px; padding:0px; list-style-type:none; } div.autocomplete ul li.selected { background-color:#ffb; } div.autocomplete ul li { margin:0; padding:2px; height:32px; display:block; list-style-type:none; cursor:pointer; }
El tercer paso es crear el archivo autocompletar.html donde incluiremos los javascripts de prototype y scriptaculous, automáticamente se incluirán todas las dependencias.
<script type="text/javascript" src="javascripts/prototype.js"></script> <script type="text/javascript" src="javascripts/scriptaculous.js?load=effects,controls"> </script> <script type="text/javascript"> var bandsList = [ 'ABBA', 'AC/DC', 'Aerosmith', 'America', 'Bay City Rollers', 'Black Sabbath', 'Boston', 'David Bowie', 'Can', 'The Carpenters', 'Crass', 'Deep Purple', 'The Doobie Brothers', 'Eagles', 'Fleetwood Mac', 'Haciendo Punto en Otro Son', 'Heart', 'Iggy Pop and the Stooges', 'Journey', 'Judas Priest', 'KC and the Sunshine Band', 'Kiss', 'Kraftwerk', 'Led Zeppelin', 'Lindisfarne (band)', 'Lipps, Inc', 'Lynyrd Skynyrd', 'Pink Floyd', 'Queen', 'Ramones', 'REO Speedwagon', 'Rhythm Heritage', 'Rush', 'Sex Pistols', 'Slade', 'Steely Dan', 'Stillwater', 'Styx', 'Supertramp', 'Sweet', 'Three Dog Night', 'The Village People', 'Wings (fronted by former Beatle Paul McCartney)', 'Yes' </script><script type="text/javascript"> window.onload = function() { new Autocompleter.Local( 'bands_from_the_70s', 'band_list', bandsList, {ignoreCase:false} ); } </script> <body> <p> <label for="bands_from">Your favorite rock band from the 70's:</label> <br /> <input id="bands_from_the_70s" autocomplete="off" size="40" type="text" value="" /> </p> <div class="autocomplete" id="band_list" style="display:none"></div>
Y listo ya con eso debemos tener un textbox con sugerencias.
Enlaces
Autocompleter.Local para ver los parámetros aceptados.
Busquedas de filtros complejos en CakePHP
Para comprender la situación mejor, necesitamos ver el screenshot de la vista.
Hay varias formas de hacer esto, la mas común es usar la función query de CakePHP para armar la consulta SQL en base a condiciones by (@el_keogh) , está la función find, pero no se pueden poner condiciones dentro, así que lo que se puede hacer es armar el array conditions desde afuera de la siguiente forma:
<?php //Bloque #1 asignacion de variables para comodidad $alumnoid=$this->data['Examene']['cuenta']; $user=$this->data['Examene']['user']; $fechaInicio=$this->data['Examene']['Fecha de Inicio']; $fechaFin=$this->data['Examene']['Fecha de Fin']; $formadepago=$this->data['Examene']['forma_de_pago']; $resultado=$this->data['Examene']['resultado']; $conditions=array(); //Bloque #2 Condiciones tabla Alumnos if(!empty($this->data['Examene']['nombre'])){ $conditions['Alumno.nombre LIKE']='%'.$this->data['Examene']['nombre'].'%'; } if(!empty($this->data['Examene']['apellido_paterno'])){ $conditions['Alumno.apellido_paterno LIKE']='%'.$this->data['Examene']['apellido_paterno'].'%'; } if(!empty($this->data['Examene']['apellido_materno'])){ $conditions['Alumno.apellido_materno LIKE']='%'.$this->data['Examene']['apellido_materno'].'%'; } //Bloque #3 Condiciones tabla Examenes if(!empty($alumnoid)){ $conditions['Examene.alumno_id']=$alumnoid; } if(!empty($user)){ $conditions['Examene.user_id']=$user; } //Bloque #4 Condiciones de intervalos de fecha if(!empty($fechaInicio)){ $conditions['Examene.created >'] = $fechaInicio; } if(!empty($fechaFin)){ $conditions['Examene.created <='] =$fechaFin.' 23:59:59'; } if(!empty($formadepago)){ $conditions['Examene.forma_de_pago'] =$formadepago; } if(!empty($resultado)){ $conditions['Examene.resultado'] =$resultado; } //Bloque #5 query $conditions['Examene.statusid <>']=4; $examenes= $this->paginate($conditions); ?>
Bloque #1 asignación de variables
En este caso se manejan dos tablas distintas de la base de datos, están relacionadas entre si, Alumnos y Examenes, utilicé asignación de variables para mas comodidad en su manejo, pero no son necesarias.
Bloque #2 Condiciones de tabla Alumnos
Las condiciones determinan cuando hay datos en los campos, si no hay datos, no hay condición que aplicar y nada que meter en el array, las primeras tres condiciones pertenecen a la tabla alumnos, de la cual se va a buscar por nombre NO exacto por eso los LIKE y la concatenación del símbolo de porcentaje. Para que esto funcione, las relaciones en el modelo deben estar previamente establecidas.
Bloque #3 Condiciones de tabla Examenes
En el segundo bloque ponemos las condiciones de la otra tabla, nada especial ya que los valores de esos campos deben ser exactos.
Bloque #4 Condiciones de intervalos de fecha
Para cuando tenemos intervalos de fechas y tenemos el formato en Datetime, es necesario concatenar la hora en la que termina el dia, si no lo hiciéramos contaría hasta la hora 00:00:00 no devolviéndonos los resultados del ultimo dia especificado.
Bloque #5 Query
La función paginate, se utiliza casi de la misma manera que un find y listo automagicamente cakephp devolverá solo los exámenes de los campos donde se les haya especificado algun dato, notese que este tipo de búsqueda es de tipo AND, o sea cada campo va filtrando aun mas la búsqueda, en lugar de añadir nuevas coincidencias.
Cualquier duda o comentario es bienvenido.
Referencias
Complex Find Conditions
Pagination in cakephp


Ya para finalizar nos vamos a nuestra pagina de nuestro evento, presionamos seleccionar invitados del lado derecho

