Respuestas de foro creadas
-
AutorEntradas
-
Pedro AmaroSuperadministrador
Supongo que es esto lo que pretendes.
123456789101112131415161718192021222324252627282930313233343536PROCEDURE MainPage()// Comenzamos instanciando la Página Web que queremos crearWith Object TWebPage():New():lValign := .T.With Object WArrayBrowse():New(:WO):AddCol("Imagen"):AddCol("Nombre"):AddCol("PVP",,xc_Right, xc_Numeric, "@z 999.99"):AddRow( { PutImagen("https://sincarta.es/samples_images/aquarius.png"), "Aquarius Naranja", 1.2} ):AddRow( { PutImagen("https://sincarta.es/samples_images/bifrutas.png"), "Bifrutas", 1} ):AddRow( { PutImagen("https://sincarta.es/samples_images/cocacola.png"), "Coca Cola Lata", 1} ):AddRow( { PutImagen("https://sincarta.es/samples_images/colacao.png"), "Colacao", .9} ):Create()END WithoCgi:SendPage( :Create() ) // Se crea el HTML final y se envía al navegador saliendo del ejecutable CGIEnd WithRETURN//------------------------------------------------------------------------------FUNCTION PutImagen( cImage )LOCAL cSalidaWith Object WImage():New():lResponsive :=.T.:cImage := cImage:Create()cSalida := :FullHtml()End WithRETURN cSalidaPrueba y nos cuentas
- Esta respuesta fue modificada 4 años, 2 meses por Pedro Amaro.
Pedro AmaroSuperadministradorNo esta aún bien documentado en el Wiki, pero igual te sirve esto como pista.
123456<strong>Tratamiento de Cookies</strong>oCgi:GetCodefCookie - Recuperar valor de un cookie encriptado.oCgi:GetCookieValue - Recuperar valor de un cookie.oCgi:SendHardCookie - Enviar cookie con permanencia temporal.oCgi:SendSoftCookie - Enviar cookie de sesión.oCgi:DeleteCookie - Borrar cookies.- Esta respuesta fue modificada 4 años, 2 meses por Pedro Amaro.
- Esta respuesta fue modificada 4 años, 2 meses por Alfredo Sanz.
Pedro AmaroSuperadministradorEfectivamente, se nos quedo atrás esa posibilidad, en la nueva distribución de Néfele que publicaremos este fin de semana ya se contempla la posibilidad de utilizar un wCard como contenedor de controles, estos se colocaran en la parte baja en el div card-action, justo antes que los links (si los hay).
12345678910111213141516171819202122232425262728//Card con imagen, links, textos y un wButtonwith object WCard():New( :WO ):cId := "card":cTitle := "Esto es una Card de Nefele":cText := "Puede contener un texto muy extenso que se repartirá por el card de forma que quedará ajustado a la anchura.":cImage := "https://images-wixmp-ed30a86b8c4ca887773594c2.wixmp.com/f/6b6b4e9a-1af0-4896-aa2c-56c032bcedc7/d8hg5m2-fe374e71-166f-4ef0-8306-32c7317cbd7c.jpg/v1/fill/w_900,h_900,q_75,strp/nefele_by_francescapoliti_d8hg5m2-fullview.jpg?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1cm46YXBwOjdlMGQxODg5ODIyNjQzNzNhNWYwZDQxNWVhMGQyNmUwIiwiaXNzIjoidXJuOmFwcDo3ZTBkMTg4OTgyMjY0MzczYTVmMGQ0MTVlYTBkMjZlMCIsIm9iaiI6W1t7ImhlaWdodCI6Ijw9OTAwIiwicGF0aCI6IlwvZlwvNmI2YjRlOWEtMWFmMC00ODk2LWFhMmMtNTZjMDMyYmNlZGM3XC9kOGhnNW0yLWZlMzc0ZTcxLTE2NmYtNGVmMC04MzA2LTMyYzczMTdjYmQ3Yy5qcGciLCJ3aWR0aCI6Ijw9OTAwIn1dXSwiYXVkIjpbInVybjpzZXJ2aWNlOmltYWdlLm9wZXJhdGlvbnMiXX0.l2eIBu6c9jf0lkbzO9xYZI1Vk2wEs_vObawdENYOFOY":cClrText := "white-text":cClrPane := "blue-grey darken-1":aLinks := { { "Xailer","http://www.xailer.com" }, { "Google","https://www.google.es" }, { "Materialize","https://materializecss.com" } }:aWidth[ xc_S ] := 12:aWidth[ xc_M ] := 8:aOffset[ xc_M ] := 2:lHorizontal := .F.:lShowFocus := .T.With Object WButton():New(:WO):cId := "boton":cText := "Texto del button":cOnClick := "Action del button":cIcon := "apps":lLarge := .T.:Create()End WithWith Object WSeparator():New(:WO):lBR := .T.:Create()End With:Create()End WithPedro AmaroSuperadministradorTambién puedes utilizar RDD, en las propiedades del proyecto, en librerías incluye la de harbour rddads.
Pedro AmaroSuperadministradorHe probado con Apache a buscar un fichero ubicado en un NAS, en una carpeta publica que no requiere autentificación y he puesto esto para verlo.
1oCGI:Console( File( "\\nas2pc\public\xailer604_beta.exe" ) )Y me da .T. que es lo correcto.
No se si el problema que tienes es porque el recurso compartido al que estas accediendo necesita autentificación, y al intentar acceder con Apache como servicio se autentifica con el usuario asignado en la definición del servicio y no lo reconoce como en servidor del recurso.
Xamp abre Apache como programa por lo que se autentifica con el usuario local y cualquier otro permiso que tenga asignado.
Pedro AmaroSuperadministradorTienes oCgi:cPathTmp que apunta a hb_dirBase() + "tmp\"
La carpeta se crea si no existe al ejecutar la primera vez el CGIEsta indicado en el Wiki, el las propiedades de oCGI
- Esta respuesta fue modificada 4 años, 2 meses por Pedro Amaro.
- Esta respuesta fue modificada 4 años, 2 meses por Pedro Amaro.
- Esta respuesta fue modificada 4 años, 2 meses por Pedro Amaro.
Pedro AmaroSuperadministradorVeo que ya lo lograste
Felicidades
30-09-2020 a las 18:12 en respuesta a: Acceder a un "enrutamiento" desde la barra de direcciones del navegador #883Pedro AmaroSuperadministradorComo ya sabes, si llamas al CGI con un parámetro ?metodo, es utilizado como el metodo a llamar.
Tambien puedes hacerlo con ?function=metodo
Echale un ojo a esto https://nefele.dev/wiki/tecnicas/urlamigable puedes tambien una solución
Pedro AmaroSuperadministradorEfectivamente se nos ha quedado a medias el Rebar, hay una propiedad cMenuAlign solo afecta al botón de Menú, el menú sale siempre por la izquierda.
Pedro AmaroSuperadministradorEsta semana queremos publicar la nueva versión del Ejemplo con los ListView y alguna cosa más, pero necesitamos publicar tambien una actualización de Néfele para que les funcionen todos los ejemplos y esperamos tenerlo todo listo durante lo que queda de semana.
Pedro AmaroSuperadministradorSi tienes Xailer Personal tendras que seguir haciendolo como lo haces con Harbour.
Si tienes Xailer Profesional o Enterprice dispones de la clase TAdsDataSource
- Esta respuesta fue modificada 4 años, 2 meses por Pedro Amaro.
Pedro AmaroSuperadministradorLa propiedad que te interesa es cSelected
Si alimentas el wComboBox con un array simple {"a","b","c" ... } pones cSelected := "b"
Si lo alimentas con un array bidimensional {{1,"a"},{2,"b"},{3,"c"}, ...} pones cSelected := 2
Si lo alimentas con AddItems en cSelected debes asignarle el valor del parametro/propiedad cIndex
Pedro AmaroSuperadministradorGetTempFile hace una llamada al API de Windows, supongo que Apache no toca nada y Xamp hace algún cambio en alguna propiedad de Windows para asignarle una carpeta distinta.
En Néfele tienes la función xGetTempFilename(cPath, cExt, nLen) donde nLen es lo largo que quieres el nombre del fichero.
- Esta respuesta fue modificada 4 años, 2 meses por Pedro Amaro.
Pedro AmaroSuperadministradorBuenas noches Vicente;
Cuando creamos un proyecto con NéfeleWizard, entre los procesos que realiza para crear el nuevo proyecto añade un Alias al fichero de configuración de tu Apache, httpd.conf que normalmente esta en Apache24\conf\
Si abres el fichero veras que tienes una línea como esta que te creo el NéfeleWizard.
1ScriptAlias /pro01 "${SRVROOT}/cgi-bin/pro01.exe"Con esta línea conseguimos que Apache ejecute pro01.exe cuando en el navegador escribas localhost/pro01
Si quieres que al teclear en el navegador localhost/negocio se ejecute negocio.exe tendrás que añadir a mano en el httpd.conf el Alias correspondiente
1ScriptAlias /negocio "${SRVROOT}/cgi-bin/negocio.exe"Esto tenemos que tenerlo en cuenta cuando pongamos nuestros proyectos en producción en un Apache que no sea el que utilizamos durante el desarrollo.
Recuerda que para que los cambios que realices en httpd.conf sean efectivos tendrás que reiniciar el Apache.
Tenemos previsto que en la próxima versión de NéfeleWizard podamos pedirle que se asegure de que tenemos bien asignado el Alias del proyecto actual, se creara o no con el NéfeleWizard.
Como te comentan Fredy y Xevi, siempre puedes llamar a tu proyecto desde el navegador indicándole todo el path; localhost/cgi-bin/negocio.exe
Estoy pensado en preparar en el Wiki una sección con las configuraciones básicas de Apache que tenemos que tener en cuenta cuando pongamos un proyecto en producción.
Saludos
- Esta respuesta fue modificada 4 años, 2 meses por Pedro Amaro.
Pedro AmaroSuperadministradorEfectivamente, el NefeleWizard añade esas líneas en el hhtpd.conf.
Pues tendremos que ver por que le funciona a Fredy, yo no utilizo Office así que o puedo probarlo.
Un Saludo
Pedro AmaroSuperadministradorBuenas tardes Xevi;
No se si será este el problema que tienes, pero se parece mucho a lo que tuvimos cuando implementamos ADO en Néfele, y al uso de otros servicios OLE, el hecho de que Fredy no tenga problema me da pistas de que puede ser así.
Añade en httpd.conf las siguientes lineas y reinicia el Apache
123456SetEnv ProgramFiles "C:\Program Files"SetEnv "ProgramFiles(x86)" "C:\Program Files (x86)"SetEnv ProgramFilesW6432 "C:\Program Files"SetEnv CommonProgramFiles "C:\Program Files\Common Files"SetEnv "CommonProgramFiles(x86)" "C:\Program Files (x86)\Common Files"SetEnv CommonProgramFilesW6432 "C:\Program Files\Common Files"Solemos ponerlo justo debajo de
123Define SRVROOT "c:/Apache24"ServerRoot "${SRVROOT}"El problema parece ser porque OLE no consigue saber donde encontrar sus componentes cuando es ejecutado desde Apache, no sabemos si es por que es un servicio.
Pruebalo y nos cuentas
Pedro AmaroSuperadministradorBuenos días;
Doy por hecho que puedes acceder al ejemplo desde tu ordenador con localhost/nefele_samples o en su defecto con localhost/cgi-bin/nefele_samples.exe.
Si el móvil esta conectado a la misma red que el servidor apache solo necesitas en el navegador del móvil remplazar localhost por la ip de servidor apache, en caso de no estar en la misma red tendrás que abrir un puerto en tu router para poder acceder al apache desde internet, no te recomiendo que abras directamente el 80 o el 8080 ya que los ataques suelen ir directamente a esos puertos, en el router podrás poner un puerto externo y otro interno, y luego en el móvil pones tu IP publica seguida del puerto externo que has definido.
Ej: si en nuestro router definimos como puerto externo el 1080 seria algo así xxx.xxx.xxx.xxx:1080/nefele_samples o 75.14.28.12:1080/cgi-bin/nefele_samples.exeYa nos cuentas que tal te ha ido
SaludosPedro AmaroSuperadministradorPushPin no logramos que funcionara
https://materializecss.com/pushpin.htmlPedro AmaroSuperadministradorSi, la idea es incluir todos los controles de Materialize, este se nos quedo atras y no se muy bien porque, a simple vista es facíl de Nefelizar.
Nos ponemos con el, hay algún otro que no hemos conseguido que funcionen pero seguimos intentandolo.
Para que se ejecute la inicilización del Tabs en el Document ready reemplaza
1:aScript := {"$('.tabs').tabs();"}por
1cOnReady := "$('.tabs').tabs();"Aunque lo parezca cOnReady no se utiliza como una cadena, es una manera de utilizar más comodamente aOnReady, al asignarle un valor hace un AAdd(), tambien tenemos cScript para hacer lo mismo con aScript.
- Esta respuesta fue modificada 4 años, 2 meses por Pedro Amaro.
- Esta respuesta fue modificada 4 años, 2 meses por Pedro Amaro.
16-09-2020 a las 09:54 en respuesta a: Eliminar elementos HTML no deseados, que se incluyen por defecto #689Pedro AmaroSuperadministradorBuenos días Quim;
Esto es lo que pretendes, creo que el problema es que tratamos de diferente manera si cTitleFooter es Nil y si es "", si es Nil lo reemplazamos por cTitle y si el "" no montamos la franja.
Pedro AmaroSuperadministradorPor ahora no;
es uno de los objetivos previstos, ya que tambíen queremos poder utilizar nuestros proyectos Néfele en servidores Linux y eso nos obligará a compilar sin nada que tenga que ver con windows y las libs de Xailer tiene mucho de windows.
Los que estamos desarrollando el nucleo de Néfele utilizamos todos Xailer y al existir una versión gratuita de Xailer nos parece que seria un desperdicio de recursos centrarnos en este momento en desligar Néfele de Xailer.
Ahora tenemos que dedicar nuestro tiempo (que no es mucho) en rematar Néfele, la Wiki, atender los foros y preparar los ejemplos para crear una comunidad que con sus necesidades nos ayuden a mejorar Néfele.
La idea es que cuando liberemos el código fuente, la comunidad pueda ayudar a mantener Néfele, irlo adaptando a las nuevas necesidades que nos plantee la web y crear "sabores" para otros entornos de compilación/ejecución.
Pedro AmaroSuperadministradorBuenas tardes;
TApplication es un Objeto de Xailer, y esta documentado en su ayuda.
TCgi():New() realiza todos los procesos necesarios para comunicarse con el Servidor Http y recibir lo que nos ha enviado el Navegador.
El Metodo Run() de TCgi es el que se encarga de llamar al Procedure o Función de nuestra aplicación según los parametros recibidos desde el navegador y el router que hemos definido al sobreargar la clase TCgi.
Pedro AmaroSuperadministradorEn el IDE de Xailer, Menú Herramientas, Opciones del Editor
Pedro AmaroSuperadministradorBuenos días;
Para utlizar el autocompletado de Xailer utilizamos CTRL+B, escribimos primero el nombre de la clase Néfele que queremos montar y pulsamos CTRL+B
wEdit [CTRL+B]
1234567With Object WEdit():New(:WO):cId := Nil //Conviene poner uno:cHint := "Texto que muestra":cIcon := "person":SetRequired():Create()End WithSaludos
Pedro AmaroSuperadministradorPuedes hacerlo por Ajax, de forma que lo que te retorne sea un nuevo wArrayBrowse con una fila más.
Lo puedes hacer también sin Ajax pero te obliga a recargar toda la página, la verdad es que los primeros proyectos que hicimos están así tampoco queda mal.
Estamos trabajando en añadir esa funcionalidad directamente desde la página web, pero por ahora no lo tenemos operativo al 100%.
Saludos
Pedro
Pedro AmaroSuperadministradorSe me olvidaba comentarte que debes tener en cuenta que en caso de que el wSwitch este a False, el submit del formulario no te va ha devolver ningún valor para ese cId, por eso añadimos a GetCGIValue el parametro xDefault, y así tener siempre un valor valido.
Pedro AmaroSuperadministradorBuenas tardes;
Para leer la propiedad del estado de un wSwitch tienes que utilizar la propiedad checked no value, value siempre devuelve el valor inicial del wSwitch, cosas de Materialize.
https://nefele.dev/wiki/controles/wswitch
-
AutorEntradas