Respuestas de foro creadas
-
AutorEntradas
-
Alfredo SanzSuperadministrador
Hola Edgar,
Indícanos en qué controles estás interesados para incluirlos en la tienda.
1 Saludo,
Alfredo
Alfredo SanzSuperadministradorHolaqtal.
En teoría no tendría que hacer falta. Si hay un retorno de línea, en js se puede quitar el ;
Mira el texto que se genera en el navegador y dime si las líneas están juntas o están en líneas diferentes.
Alfredo SanzSuperadministradorAlfredo SanzSuperadministradorPara quitar la barra de scroll horizontal que te sale, puedes poner
:oStyle:cOverflow := "hidden"
justo después de haber instanciado el wTabs()
Alfredo SanzSuperadministradorSi puedes poner un pequeño ejemplo que lo reproduzca, lo revisamos
Alfredo SanzSuperadministradorTomamos nota.
En breve estará disponible
Alfredo SanzSuperadministradorTienes que devolver el código javascript correspondiente, algo como
Delphi/Pascal1234cHtml := UpdateValues( aClientes[ nIdx, 2 ], aClientes[ nIdx, 3 ], aClientes[ nIdx, 4 ] )cHtml += nfl_Tag( "script", 'document.querySelector("#cliente").style.color="red"')oCGI:SendScript( cHtml )Alfredo SanzSuperadministradorUtilizando cAjaxTimeOut sólo envía el valor del elemento en el que has puesto el cAjaxTimeOut
Nos anotamos el comentario y estudiaremos si podemos hacer para que envíe todos los valores del formulario.
Alfredo SanzSuperadministradorPrueba con estas propiedades de wEdit
Property nMinValue // Valor mínimo
Property nMaxValue // Valor máximoAlfredo SanzSuperadministradorAlfredo SanzSuperadministradorHola!
He recompilado la librería,
Por favor, prueba con esta y me cuentas
https://nefele.dev/ficheros/libNefeleProject.a
Alfredo SanzSuperadministradoren el fichero httpd.conf dentro de apache busca la línea
<IfModule alias_module>
justo debajo de ella pones
ScriptAlias /ejemplo "${CGIROOT}/ejemplo.exe"
asegúrate de que tienes al principio del fichero definida la variable CGIROOT
Define CGIROOT "c:/Apache24/cgi-bin"
Con eso ya te funcionará localhost/ejemplo
Alfredo SanzSuperadministradorSeguramente será por usar Xailer 6
Prueba a cambiar la librería de nefele por la que te dejo en
https://fractality.ddns.net:44444/nefelelib/ y me cuentas
Alfredo SanzSuperadministradorHola,
Pues no sé qué decirte, no encuentro cuál puede ser el problema.
Prueba lo siguiente:
- Desactiva el antivirus y el cortafuegos de la máquina, no sea ese el problema
- Abre el símbolo del sistema, vete a la carpeta apache24\cgi-bin y ejecuta directamente el fichero .exe.
Es posible que tengas algún error previo a cargar el cgi y por eso no te funcione. Con este truco podrás verlo - Descárgate este exe y lo pones en cgi-bin, a ver si te funciona
https://fractality.ddns.net:44444/nefele_samples.zip
Ya me contarás
Si no te funciona, podemos quedar un día para verlo por skype
Alfredo SanzSuperadministradorHola !
Me da la sensación de que un problema de configuración de Apache
prueba http://localhost o http://127.0.0.1 directamente
si no te funciona, revisa el puerto de escucha de apache, que sea el 80
si te funciona, prueba http://localhost/cgi-bin/ejemplo.exe
Si así te funciona, es que el wizard no te ha generado correctamente el scripalias
Si aún con todo no te funciona, busca el archio error.log de apache y nos lo envías.
1 Saludo,
Fredy
Alfredo SanzSuperadministradorHola,
Si alguno tiene este problema, podéis descargar la versión con corregida en https://nefele.dev/blog/download/nefele-lib-v-0-4-1-0/
simplemente tenéis que reemplazar la anterior librería por la nueva.
Alfredo SanzSuperadministradorHola!
La documentación la tienes en https://www.chartjs.org/docs/latest/api/
Te recomiendo que le eches un ojo a los ejemplos que hemos publicado en https://nefele.dev/blog/download-category/descargas/ donde tienes cómo configurar los gráficos.
Alfredo SanzSuperadministradorHola,
Gracias por tu inderés.
Algunos de ellos están a la venta en:
Si estás interesado en algún control que no está en la lista o tienes alguna duda, ponte en contacto conmigo en alfredo@sanzperez.com
1 Saludo
Alfredo SanzSuperadministradorHola,
Todas las propiedades de :oStyle están relacionadas con las hojas de estilo Css
Por defecto, las fuentes disponibles son las estándar de html
Puedes añadir más tipos de letra, por ejemplo desde https://fonts.google.com/ añadiendo el css a través de TWebPage:aHeadLinks
Te dejo un ejemplo:
1234567891011121314WITH OBJECT TWebPage():New()AAdd( :aHeadLinks,'<link href="https://fonts.googleapis.com/css2?family=Dancing+Script&display=swap" rel="stylesheet">')WITH OBJECT WButton():New(:WO):cText := "Comprobar"WITH OBJECT :oStyle:cFont_family := "Dancing Script":cFont_size := 28END:cIcon := "search":Create()END WITHAlfredo SanzSuperadministradorOk. Ya veo.
Es porque :cTitle no se puede dejar a Nil y si no está definido POPEYE, cRestaurante es Nil
Tomo nota para corregirlo en la próxima versión.
- Esta respuesta fue modificada 4 años, 1 mes por Alfredo Sanz.
Alfredo SanzSuperadministradorDaniel, necesito ver el código de la función AppMenu y el código donde llamas a esta función. Me parece que te está faltando algo.
Alfredo SanzSuperadministradorPrueba a poner
<a href="/cgi-bin/ejemplo.exe?editarclasificacion" rel="nofollow">
Ya me dirás si funciona
Alfredo SanzSuperadministrador1 - En el menú de Chrome, más herramientas, crear acceso directo y clicando el check de "abrir como ventana"
2 - Lo tengo que revisar, que te hablo de memoria, pero ese icono creo tiene que ser un png transparente llamado ico.png. ten en cuenta que el .exe con su icono están en el servidor, no en el móvil del usuario. Lo miro bien y te lo confirmo.
Alfredo SanzSuperadministradorCreo que te refieres a este ejemplo
https://fractality.ddns.net:44444/xacgi?tablas
Estamos preparando los ejemplos del wArrayBrowse para la "proxima remesa" de ejemplos, que si la cosa no se tuerce, estarán para la semana que viene.
Sí te puedo adelantar, que hacer que una tabla se cargue por ajax, por ejemplo, de 30 en 30 registros, es tan simple como añadirle la propiedad
:nAjaxPaginate := 30
Ten en cuenta que wArrayBrowse es un control que hemos hecho desde cero, basándonos en las tablas html y por lo tanto está muy condicionado en alguna de sus funcionalidades, peeero... ya tenemos muy avanzado el control basado en datatables.net que permitirá hacer todo lo que comentas. Va a ser una auténtica gozada el poder utilizar un control tan potente como datatables con la sencillez propia de Néfele.
1 poquito de paciencia 🙂
- Esta respuesta fue modificada 4 años, 1 mes por Alfredo Sanz.
- Esta respuesta fue modificada 4 años, 1 mes por Alfredo Sanz.
Alfredo SanzSuperadministradorRecuerda, los dos procedures tiene que estar declardos en el enrutador en TCGI
123456789101112131415161718192021222324252627282930313233343536373839404142PROCEDURE XeviWITH OBJECT TWebPage():New()WITH OBJECT WEdit():New(:WO):cId := "valor1":cTitle := "Valor1":cHelp := "prueba con aaa o con cualquier otro valor":Create()END WITHWITH OBJECT WButton():New(:WO):cText := "Sin miedo, púlsame":cOnClick := "xevi2":cAjaxBevel := "nflcargo":aParams := { { "valor1", "#valor1"} }:Create()END WITHoCgi:SendPage( :Create() )END WITHRETURN//------------------------------------------------------------------------------PROCEDURE xevi2Local cHtmlLocal cDato := oCGI:GetCgiValue("valor1","")IF cDato == "aaa"cHtml := Tag( "script", "window.location.href = '/miweb?miprocedure'" )oCGI:SendScript( cHtml )ELSEcHtml := Tag("script", "alert('Dato NO encontrado')" )oCGI:SendScript( cHtml )ENDIFRETURNEl aParams en wButtons es porque no estamos dentro de un form.
Si declaras un formulario con :cFunction="xevi2" y :cAjaxBevel="nflcargi" y el botón es el submit del form no haría falta poner el :aParams
Alfredo SanzSuperadministradorNo, eso depende de cómo esté configurado el navegador.
Alfredo SanzSuperadministradorAlfredo SanzSuperadministradorAl ArrayBrowse le tienes que informar de la columna que quieres que actúe como campo clave, y que será el valor que te retorne
Eso se hace con la propiedad :nIndexValue
12WITH OBJECT oBrowse := WArrayBrowse():New( :WO ):nIndexValue := 1después, en EditarClasificacion() pones
12Local cRegistrocRegistro := oCGI:GetCGIValue( "Bancos" ) //El :cID del ArrayBrowselo que te devolverá una cadena con <valor columna informada en nIndexValue> | < id de la fila html>
si haces un oCGI:Console( cRegistro ) , el nefele console te devolverá algo así como "003|bancos_lin2"También puedes hacer
123oRegistro := GetRowValue( cRegistro )oCGI:Console(oRegistro:cValue)oCGI:Console(oRegistro:cId)que como ves, te devuelve una estructura donde
:cValue -> valor de nIndexValue de la fila
:cId -> id de la fila (el <tr>) correspondiente dentro de la tablaDe esta forma tienes el id del registro seleccionado para poder consultar en la base de datos y el id de la fila en la que te encuentras para poder poner o extraer la información
Alfredo SanzSuperadministradorUff, este me ha costado, estáis poniendo el listón muy alto 🙂
He tomado como base el ejemplo que ya tenemos y he modificado la función a la que llamamos por ajax
Lo que buscas es algo así
Contenido no disponible.
Por favor, acepta las cookies haciendo clic en este aviso1234567891011121314151617181920212223242526272829PROCEDURE DatosClte()LOCAL cDato := oCGI:GetCgiValue("key","")LOCAL aClientes := {{"123","Alfredo","Sanz","Pérez"},;{"456","Pedro","Amaro","Perdomo"},;{"789","Fernando","Martín","Regalde"}}LOCAL nIdx := HB_Ascan(aClientes,{|x| x[1]==cDato})LOCAL cHtmlif nIdx > 0cHtml := UpdateValues( aClientes[nIdx,2], aClientes[nIdx,3], aClientes[nIdx,4] )ELSEcHtml := UpdateValues( "", "", "" )IF Val(cDato) > 0WITH OBJECT WMsgAlert():New():cText := "Dato no encontrado":cType := "error":lModal := .T.:Create()cHtml += :fullhtml()ENDELSEIF !Empty(cDato)cHtml := Tag("script","window.location.href='https://www.google.es/search?q="+cDato+"'")ENDIFENDIFoCGI:SendScript( cHtml )RETURN- Esta respuesta fue modificada 4 años, 1 mes por Alfredo Sanz.
Alfredo SanzSuperadministradorTienes que hacer la llamada por ajax con :cAjaxBevel := "nflcargo" dentro del form.
Ten en cuenta que si no es por ajax, néfele hace lo que tiene que hacer:
1 - muestra la página web generada con prueba()
2 - termina el script y lo libera de memoria
3 - envía el resultado al servidor y lo recibe el navegador del cliente
4 - al hacer click en enviar formulario:
5 - inicia una nueva ejecución del script
6 - crea una nueva página web con el contenido generado en prueba2()
7 - termina ejecución y lo muestrapor eso solo ves el alert, el resto era de la página web anterior.
En cambio, si lo haces por ajas, el contenido de prueba2() te lo "inyectará" en la página que estás viendo ( esto es, prueba())
Por último, nflcargo es un <div> que siempre está presente en las páginas generadas con néfele. Está oculto y sirve principalmente para poder recibir script generados por ajax que de otra forma no sabríamos dónde meter.
Alfredo SanzSuperadministradorPrueba esto
1234567With Object WButton():New( :WO)AAdd( :aScript, ' function decidir() { return (Math.random() > 0.5 ) ? true : false}')AAdd( :aScript, ' function mostrar(c) { alert("AHORA ES " + c) }'):cText := "¿ Sí o no ?":cOnClick := "#( decidir() ) ? mostrar('SÍ') : mostrar('NO')":Create()End WithAlfredo SanzSuperadministradorXevi,
En javascript el signo = SIEMPRE SIEMPRE SIEMPRE es de asignación
Te lo repito 3 veces para que no te pase como a mi, que la mitad de las veces me olvido de ello 🙂
Para comparar dos valores tienes que usar ==
Alfredo SanzSuperadministradorXevi,
He actualizado el Wiki, incorporando el tratamiento de las cookies.
Lo tienes en https://nefele.dev/wiki/nefele/ocgi#tratamiento-de-cookies
Alfredo SanzSuperadministradorEn cuanto a los bordes redondeados del wPanel;
Claro, por css dentro del control
- Esta respuesta fue modificada 4 años, 1 mes por Alfredo Sanz.
Alfredo SanzSuperadministradorEn cuanto a Bootstrap, ten en cuenta que ahora mismo los controles de nefele (wedit, wbevel, etc..) están creados con la sintaxis del framework de materialize.
Una de las cosas que tenemos en nuestro todo list es compatibilizarlos con bootstrap, pero de momento tenemos muchas otras cosas que hacer antes de meternos con ello.
si miras en https://fractality.ddns.net:44444/xacgi?pruebasfredy
por ejemplo, el acordeón es un control que diseñé con bootstrap y usa el acordeón de este framework.
En el acordeon 3 los iconos son font-awesome, que tampoco es algo propio de materialize
Alfredo SanzSuperadministradorSí, es una opción.
Pero ten en cuente que cCss está pensado para css "inline", esto es, que se encuentra dentro de la página web. Esto tiene sus ventajas y sus inconvenientes.
Por el lado bueno, si asignas el valor al cCss desde dentro de nefele, al ser un cgi te aseguras de que ese código no va ha ser modificado (salvo que el usuario se ponga a jugar con su navegador, pero en todo caso al recargar la página quedará siempre como lo hemos diseñado)
Por el lado malo, este sistema no es nada "SEO", porque genera páginas más grandes y no deja sacar partido a la cache del navegador (imagínate cargar el css de bootstrap así, le añades 120 kb a la página web cada vez de golpe)
Por eso tenemos el método aHeadLink, que te permite indicar un array de enlaces a en el header de la página y que te permite cargar enlaces tanto a ficheros css como js al principio de la página
12345with object TWebPage():New()AAdd(:aPreHeadLinks,'<link rel="stylesheet" href="/login/bootstrap/css/bootstrap.min.css">')AAdd(:aHeadLinks, '<link rel="stylesheet" href="https://nefeleproyect.com/assets/adminLTE/css/AdminLTE.min.css">')AAdd(:aHeadLinks, '<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css">')AAdd(:aHeadLinks, '<link rel="stylesheet" href="'+::cCssPath+'">')Fíjate que también hay un aPreHeadLinks. Lo que hace es cargarlos, pero antes de que se cargen los enlaces que carga nefele de forma automática. Es algo que puede ser interesante al procesar la cascada css
Alfredo SanzSuperadministradorMuy bien, eso nos gusta, que experimentéis!
Si en algún Webpage estás seguro de que no vas a usar materialize, puedes poner a falso las propiedades
:lJsMaterialize := .f. y :lCssMaterialize := .f. para que ni siquiera las cargue y evitar conflictos
Des mismo modo si no vas a utilizar jQuery, puedes establecer :lJQuery := .f.
Alfredo SanzSuperadministradorParece que es un problema de permisos de windows
mira en servicios como tienes el apache
en lugar de la cuenta del sistema elige la opción "esta cuenta" y dale las credenciales del usuario con el que te está funcionando.
Reinicia apache y... que Dios reparta suerte!!
Ya me contarás
Alfredo SanzSuperadministradorOk. mantenos informados de tus avances
Alfredo SanzSuperadministradoroCGI:SetUserData( cVar, uVal ) // Establece un valor en el hash de sesiones
oCGI:GetUserData( cVar, uDefaultVal, lCreate ) // Consulta o establece un valor en el hash de sesiones
Alfredo SanzSuperadministradorXevi, "En teoría" tendría que dar igual, es más, sería más lógico que te funcionara localhost y no la ip local
Prueba http://127.0.0.1:8080 a ver si te deja
30-09-2020 a las 18:16 en respuesta a: Acceder a un "enrutamiento" desde la barra de direcciones del navegador #899Alfredo SanzSuperadministradorSi. Siempre que tengas el método definido en el enrutador puedes acceder de esa forma
si tienes METHOD Verparam INLINE visparam(.)
puedes acceder a localhost/tucgi?verparam
Por seguridad, si no lo has puesto en el enrutador no te dejará acceder así
Alfredo SanzSuperadministradorHola,
Tendrás que configurar tu router para que el puerto 2003 de la ip pública lo redirija al puerto 80 de la dirección ip privada del ordenador donde tienes apache instalado
29-09-2020 a las 21:40 en respuesta a: Se Visualizan símbolos raros en lugar de carácteres especiales #869Alfredo SanzSuperadministradorUff, lo del juego de caracteres es una auténtica locura. Como los americanos no se ven en este problema, nos lían la cabeza a los demás.
Prueba con HB_StrToUTF8 y HB_UTF8ToStr
En nefele tenemos StrToXml(cCadena,lInverso) que igual te sirve. si lInverso = .t. te hace xmlToStr
Ya me dirás si te sirve alguna.
Sería interesante tener una solución común a este problema.
29-09-2020 a las 21:16 en respuesta a: Cual es la forma correcta de llamar procedimientos al dar click en un control ? #868Alfredo SanzSuperadministradorNo. En este caso el onClick no te sirve. los Cards no tienen onClick, aunque en breve lo incorporaremos a la imagen del card
Estas haciendo un anchor directamente desde html, por lo cual tienes que usar otra sintaxis.
El anchor que has puesto , "#Desayunos" te sirve para "saltar" a otro id dentro de la misma página.
Imagina que al inicio de esta página tienes tienes un wBevel con el :cid := "Desayunos". Entonces, al hacer click irás al principio de ese wBevel.
Si lo que quieres es llamar a otro Procedure de tu cgi tienes que hacer lo siguiente:
1:aLinks:= { {"Los mejores desayunos", oCGI:GetEnv("HTTP_REFERER")+"?tuprocedure" }}donde tuprocedure será el nombre que tengas definido en el enrutador de Tcgi
12Class TCgi FROM XCgiMETHOD TuProcedure() Inline MainPage()29-09-2020 a las 10:27 en respuesta a: Se Visualizan símbolos raros en lugar de carácteres especiales #864Alfredo SanzSuperadministradorDe momento no.
Pero lo comentaremos con el equipo de desarrollo de Xailer, a ver si lo pueden incorporar en la próxima versión de Xailer
Alfredo SanzSuperadministradorSi el archivo está dentro de htdocs, ese es el método correcto.
Sólo has de tener en cuenta que algunos apache necesitan que le pongas la / delante ("/tmp...") y que apache es sensible a mayúsculas y minúsculas.
el enlace que has puesto te buscará el archivo en la carpeta tmp que ha de estar dentro del htdocs de apache
si el error que te da es un 404, es que la ruta está mal
Si lo que quieres es enviar un fichero desde dentro del cgi, tienes que usar el método oCgi:SendFile()
más info en https://nefele.dev/wiki/ocgi/sendfile
Alfredo SanzSuperadministradorjeje, déjame hacer un poco de publicidad:
Bueno es lo que tiene utilizar un sistema tan potente como néfele, que en 4 días haces tanto que ya no se parecen en nadaBueno, he cargado tu apache con el exe que me has mandado, y pásmate, funciona
Lo cierto es que es algo muy extraño. Seguiré investigando a ver si encuentro alguna explicación
27-09-2020 a las 21:33 en respuesta a: Se Visualizan símbolos raros en lugar de carácteres especiales #847Alfredo SanzSuperadministradorSí, eso es cosa de la codificación de caracteres.
Html utiliza utf8 y por lo visto excel no.
Utiliza la función AsciiHtml(<texto>) para convertir el texto que te llega a utf8
Más info en https://nefele.dev/wiki/funciones/asciihtml
Alfredo SanzSuperadministradorHe instalado la copia de tu apache
El exe que yo tenía, el que solo lee el excel de c:\prova funciona correctamente
El exe que me has mandado por wetransfer me da este error
sin el código fuente no sé decirte si la línea 150 es antes o después de leer el fichero xls. Ya me dirás
-
AutorEntradas