Escribo porque tengo un Problema con el Componente DateChooser en Flash CS5.
Nunca antes habia usado este componente hasta ahora; el problema es el siguiente:
Al enviar los datos al correo electronico por medio de un archivo PHP me llegan en formato Ingles: Fecha de la Cita: Wed Jun 29 00:00:00 GMT-0430 2011 y necesito que me llegue en Español. Tengo especificado en el AS los dias y meses en Castellano, como lo indican en un tutorial que hay aqui mismo, lo que no se es como tomar exactamente esas variables indicadas anteriormente para que las envie al php.
Dejo el codigo entero para que alguien porfavor me ayude.
Muchas Gracias
(tambien me funcionaria el componente DateField) Si alguien lo ha usado y puede indicarme, estare completamente agradecido.
Código ActionScript :
// Importamos la librería del componente Alert import mx.controls.Alert; // Sólo por estética, cambiamos el color del tema (cambiamos el verde que aparece por default) _global.style.setStyle("themeColor", 0xA7DA6D); /* Esta línea es importante para que todo lo que el usuario escriba o seleccione tenga acentos, se muestren de forma correcta y no con caracteres raros (Ej. Ã) */ System.useCodepage = true; /* Creamos un arreglo para guardar los temas seleccionados por el usuario (es decir, las opciones de los checkboxes que el usuario seleccionó) */ //var mestxt:Array = new Array(); //se llamaba: temas var mantenimiento:Array = new Array(); //se llamaba: temas //Datos del DataChooser //Nombres de los dias y los meses que mostrará el calendario mi_calendario.dayNames = ["Do", "Lu", "Ma", "Mi", "Ju", "Vi", "Sa"]; mi_calendario.monthNames = ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"] //Propiedades mi_calendario.disabledDays = [0, 6]; mi_calendario.showToday = false; mi_calendario.firstDayOfWeek = 1; //Listener para mostrar la fecha alCambiar = new Object(); alCambiar.change = function(evento) { //Cogemos la fecha y la partimos en tres variables para poder manejarla fecha_date = new Date(evento.target.selectedDate); dia = fecha_date.getDate(); mes = fecha_date.getMonth()+1; ano = fecha_date.getFullYear(); trace("Has seleccionado el día "+dia+"/"+mes+"/"+ano); }; alPasarMes = new Object(); alPasarMes.scroll = function(evento) { trace("Has cambiado al mes de "+evento.target.monthNames[evento.target.displayedMonth]); }; //Creamos los listeners mi_calendario.addEventListener("change", alCambiar); mi_calendario.addEventListener("scroll", alPasarMes); //Listener para mostrar el mes alPasarMes = new Object(); alPasarMes.scroll = function(evento) { mestxt = evento.target.monthNames[evento.target.displayedMonth]; if (mestxt == "Junio") { //Sant Joan evento.target.disabledRanges = [{rangeStart:new Date(2004, 5, 24), rangeEnd:new Date(2004, 5, 24)}]; } else if (mestxt == "Agosto") { //Vacaciones de Agosto 8D evento.target.disabledRanges = [{rangeStart:new Date(2004, 7, 1), rangeEnd:new Date(2004, 7, 15)}]; } trace("Has cambiado al mes de "+mestxt); }; /* Creamos dos objetos de la clase LoadVars, uno para enviar los datos introducidos por el usuario y el otro para recibir la respuesta enviada por el archivo de PHP */ var enviar_lv:LoadVars = new LoadVars(); var resultado_lv:LoadVars = new LoadVars(); /* Hacemos la llamada a la función initForm, la cual a su vez llamará a otras funciones para, por ejemplo, llenar el combobox de los estados, cambiarle el estilo a los botones de radio, etc. El código de esta función está en el siguiente bloque de código ActionScript. */ initForm(); /*El código anterior muestra la declaración variables e importación de clases necesarias (en este caso sólo una clase). Ahora nos enfocaremos en las funciones que escribiremos en nuestro código.*/ /* Esta función llama a los métodos encargados de cambiar los estilos de los botones de radio, checkboxes, etc. */ function initForm() { escondeMensajes(); setEstilosCheckBoxes(); llenaComboMotivo(); llenaComboSupo(); } /* Escondemos (no mostramos) los mensajes que le indicarán al usuario qué campos le faltó introducir. Es decir, los campos obligarios marcados por (*). */ function escondeMensajes() { for(var i = 1; i < 12; i++) { this["msj" + i]._visible = false; } } /* Le cambiamos el formato a los checkboxes. Si no entiendes esta parte, por favor revisa el post sobre el componente CheckBox en http://www.codigometropoli.com*/ function setEstilosCheckBoxes() { for(var i = 0; i < 5; i++) { this["check" + i].setStyle("color", 0x86B834); this["check" + i].setStyle("fontWeight", "bold"); this["check" + i].setStyle("marginLeft", 2); } } //Las siguientes funciones son vitales para el tratamiento del formulario: /* Asignamos las acciones al botón de Enviar. En este caso, el botón de Enviar hará el llamado a la función validaForma para verificar que el usuario haya llenado los campos obligatorios. Como lo dije anteriormente, para este ejemplo haremos que el usuario tenga que llenar todos los campos. */ enviar_btn.onRelease = function() { validaForma(); } /* Esta función se encarga de validar que todos los campos obligatorio,verifica que fueron llenados. Primero hacemos llamados a la función escondeMensajes para no mostrar los campos dinámicos (msj1, msj2, etc.) en caso de que sea la segunda vez que se llama a la función validaForma. */ function validaForma() { escondeMensajes(); //Aqui comenzamos con los datos del formulario //Nombre de promocion if(nombre_txt.text == "") { // Vemos si el campo de texto del nombre está vacío msj1._visible = true; // Como el campo del nombre no fue llenado, mostramos el primer mensaje nombre_txt.setFocus(); // Colocamos el foco o cursor en el campo del nombre } else if(cedula_txt.text == "") { // Vemos si el campo de texto del nombre está vacío msj2._visible = true; // Como el campo del nombre no fue llenado, mostramos el primer mensaje cedula_txt.setFocus(); // Colocamos el foco o cursor en el campo del nombre } else if(email_txt.text == "" || !esCorreo(email_txt.text)) { /* Vemos si el campo del correo está vacío y sí el formato del correo es correcto */ msj3._visible = true; /* Mostramos el segundo mensaje ya que el campo del correo está vacío o bien el formato es incorrecto */ email_txt.setFocus(); // Ponemos el cursos en el campo del correo } else if(telefono_txt.text == "") { // Vemos si el campo de texto del nombre está vacío msj4._visible = true; // Como el campo del nombre no fue llenado, mostramos el primer mensaje telefono_txt.setFocus(); // Colocamos el foco o cursor en el campo del nombre } else if(modelovehiculo_txt.text == "") { // Vemos si el campo de texto del nombre está vacío msj5._visible = true; // Como el campo del nombre no fue llenado, mostramos el primer mensaje modelovehiculo_txt.setFocus(); // Colocamos el foco o cursor en el campo del nombre } else if(numerodeplaca_txt.text == "") { // Vemos si el campo de texto del nombre está vacío msj6._visible = true; // Como el campo del nombre no fue llenado, mostramos el primer mensaje numerodeplaca_txt.setFocus(); // Colocamos el foco o cursor en el campo del nombre } else { mantenimiento = buscaChecksSeleccionados(); /* Guardamos en el arreglo temas los valores de los checkboxes que el usuario seleccionó. La función buscaChecksSeleccionados nos regresa un arreglo con los valores de los checkboxes seleccionados */ if(mantenimiento.length == 0) { /* Si la longitud del arreglo temas es igual a 0, entonces el usuario no seleccionó ninguna opción; por lo tanto, mostramos el quinto mensaje y ponemos el cursor en el primer checkbox */ msj7._visible = true; check1.setFocus(); } else if(otrosrequerimientos_txt.text == "") { // Vemos si el campo de texto del nombre está vacío msj8._visible = true; // Como el campo del nombre no fue llenado, mostramos el primer mensaje otrosrequerimientos_txt.setFocus(); // Colocamos el foco o cursor en el campo del nombre } else if(mi_calendario.selectedDate == 0) { /* Si se cumple este condicional quiere decir que el usuario no seleccionó ninguna opción del combobox de los estados. Si el índice seleccionado (selectedIndex) es igual a 0, entonces la opción seleccionada es la que dice "-- Seleccionar --", por lo tanto no nos interesa que el usuario use esa opción */ msj9._visible = true; mi_calendario.setFocus(); } else if(horacita_txt.text == "") { // Vemos si el campo de texto del nombre está vacío msj10._visible = true; // Como el campo del nombre no fue llenado, mostramos el primer mensaje horacita_txt.setFocus(); // Colocamos el foco o cursor en el campo del nombre } else { /* Si ninguno de los condicionales anteriores se cumplió, quiere decir que el usuario llenó todos los campos necesarios. Mandamos a llamar la función enviarCorreo */ enviarCorreo(); } } } /* Esta función regresa un arreglo con los valores de los CheckBox(es) seleccionados. Recorremos todos los componentes checkbox por medio de un ciclo for y vemos el valor de la propiedad "selected" de cada uno de ellos. Si no entiendes esta parte, por favor revisa el post sobre el componente CheckBox */ function buscaChecksSeleccionados():Array { var temp = new Array(); for(var i = 0; i <5; i++) { if(this["check" + i].selected) { temp.push(this["check" + i].label); } } return temp; } /* Esta función nos permite revisar si el formato del correo electrónico es correcto. Es decir, que contenga @, el punto xxx, etc. */ function esCorreo(email:String):Boolean { var res:Boolean = false; if(email.indexOf("@")>0 && email.indexOf("@") == email.lastIndexOf("@")) { if(email.lastIndexOf(".")> email.indexOf("@") && email.lastIndexOf(".")<email.length-1) { res = true; } } return res; } /* Explicación: Primero desactivamos el botón de enviar para que el usuario no haga click más de una vez. Al objeto enviar_lv de la clase LoadVars le copiamos el valor de cada uno de los campos del formulario y los enviamos al archivo de PHP (enviar_formulario_de_contacto.php). A la función sendAndLoad del objeto enviar_lv, le pasamos como parámetro el path del archivo que recibirá los datos, el objeto de la clase LoadVars que recibirá la respuesta y el método en cómo se enviarán los datos (POST o GET). Este último parámetro es opcional y por default el valor es de POST. NOTA: Si quieres cargar el resultado del archivo pasado como primer parámetro, deberás usar la función send. En los archivos de este tutorial que encuentras más abajo en un archivo zip, usamos la función sendAndLoad ya que nos interesa mostrar un mensaje de alerta (con el resultado) dentro del mismo Flash y no dentro del PHP. Sin embargo, el ejemplo que se encuentra más abajo utiliza la función send para mostrar dentro del mismo PHP el mensaje del correo electrónico en formato HTML y Texto Plano. */ function enviarCorreo() { enviar_btn.enabled = false; enviar_lv.nombre = nombre_txt.text; enviar_lv.cedula = cedula_txt.text; enviar_lv.email = email_txt.text; enviar_lv.telefono = telefono_txt.text; enviar_lv.modelovehiculo = modelovehiculo_txt.text; enviar_lv.numerodeplaca = numerodeplaca_txt.text; enviar_lv.mantenimiento = mantenimiento; enviar_lv.otrosrequerimientos = otrosrequerimientos_txt.text; enviar_lv.mestxt = mi_calendario.selectedDate; enviar_lv.horacita = horacita_txt.text; enviar_lv.sendAndLoad("enviar_formulario_de_contacto.php", resultado_lv, "POST"); } /* El evento onLoad del objeto resultado_lv es invocado cuando la llamada a los métodos load() o sendAndLoad() ha sido terminada. Asignamos el resultado regresado por el PHP a la variable respuesta. Si la llamada fue exitosa, vemos si la respuesta es igual a 'S', si es así mostramos un mensaje señalando que el mensaje ha sido enviado y llamamos a la función reestablecerForma para borrar los datos ingresados por el usuario. Si la respuesta es distinto a 'S' o bien si la llamada no fue exitosa, mostramos un mensaje señalando que hubo un error en el envío. Por último, volvemos a activar el botón de enviar. */ resultado_lv.onLoad = function(success:Boolean) { var respuesta = this.resultado; if(success) { if(respuesta == "S") { Alert.show("Su mensaje ha sido enviado.", "Gracias", Alert.OK, null, "alerta", Alert.OK); msjalert._x = 442; msjalert._y = 1700; reestablecerForma(); } else { Alert.show("Hubo un error en el envío del mensaje, por favor intente más tarde.", "Error", Alert.OK, null, "alerta", Alert.OK); msjalert._x = 442; msjalert._y = 1700; } } else Alert.show("Hubo un error en el envío del mensaje, por favor intente más tarde.", "Error", Alert.OK, null, "alerta", Alert.OK); msjalert._x = 442; msjalert._y = 1700; enviar_btn.enabled = true; }; /* Esta función borra los datos introducidos por el usuario. */ function reestablecerForma() { nombre_txt.text = ""; correo_txt.text = ""; desactivarCondiciones(); desactivarEstados_Adicionales(); pais_cb.selectedIndex = 0; texto_promocion_txt.text = ""; } /* Su función es poner todos los botones de radio como no seleccionados */ function desactivarCondiciones() { for(var i = 1; i <5; i++) { this["radio" + i].selected = false; } } /* Su función es poner todos los CheckBox(es) como no seleccionados */ function desactivarEstados_Adicionales() { for(var i = 1; i <6; i++) { this["check" + i].selected = false; } }