Respuestas de foro creadas
-
AutorEntradas
-
Alfredo SanzSuperadministrador
Ok gracias.
Me parece que el problema es que no me lo incluye al exportar el proyecto.
Vamos a ver si lo consigo 🙂
Si no te importa, descárgate la nueva versión Nefele_samples-1-0-2-0.zip y dime si ya funciona. Gracias
- Esta respuesta fue modificada 4 años, 2 meses por Alfredo Sanz.
Alfredo SanzSuperadministradorSi modificas tu diseñador para que genere ficheros html o pdf te tiene que funcionar en Néfele
Todos los ejemplos que tenemos de informes están con FR
En unos días publicaremos un ejemplo de funcionamiento
Alfredo SanzSuperadministradorOk. Gracias, tomo nota
Esta tarde o mañana publicaremos una nueva versión del ejemplo en la que incorporamos una reBar y un menú de opciones
Alfredo SanzSuperadministradorGenial!!
El primer paso ya está dado, ahora a completar el viaje!
Alfredo SanzSuperadministradorPrueba con :cBackgroundColor := "transparent" que creo que el !important lo pone directamente Nefele
>> Por cierto... no veo documentadas en el Wiki esas propiedades.
Ya, tenemos que meterle mano al wiki, que se nos está quedando algo desfasado.
Alfredo SanzSuperadministradorDesde luego, te puedes crear tus propios headers y footers, pero piensa que nefele ya tiene herramientas para hacerlo.
Revisa el ejemplo que hemos puesto en https://nefele.dev/foro/topic/ejemplo-de-formularios-con-nefele/ te va a venir de lujo
No te de apuro preguntar, piensa que vuestras preguntas nos ayudan mucho a mejorar Néfele.
Alfredo SanzSuperadministradorNéfele utiliza el framework Materialize para maquetar las páginas, y materialize organiza el <body> en tres secciones básicas:
<header>: la cabecera. Néfele la utiliza para la reBar de cabecera y menú y para alojar las ventanas modales
<main>: es el contenido de la página propiamente dicha
<footer> : para el pie de página
en TWebpage tienes varias propiedades para cambiar los fondos
Las más sencillas y que solo te permiten cambiar el color de texto y de fondo de la sección <main>
Property cClrText Init "black"
Property cClrPane Init "white"El valor de estas propiedades tiene que ser un texto según el esquema de colores de materialize
Para funciones más avanzadas tienes las siguientes
Para tratar el fondo de toda la página (<body>)
PROPERTY cBodyClass INIT "" // Clases extra a añadir al Body separadas por espacis
PROPERTY cBodyBackground // Fondo ( puede ser una url a una imagen )
PROPERTY cBodyBackgroundColor // Color de fondo ( podemos utilizar sintaxis css como #ff00ff)
PROPERTY cBodyBackgroundSize // tamaño del fondo (corresponde al background-size de css)Para tratar el fondo de la sección <main>
PROPERTY cBackground // Fondo de la Página
PROPERTY cBackgroundSize // Tamaño del fondo
PROPERTY cBackgroundColor // Color del fondo OJO: por defecto cClrPane
PROPERTY lBackgroundRepeat INIT .T. // Si el fondo se repite o no
PROPERTY cBackgroundAlign INIT "center center" // corresponde al background-position de cssUna última cosa:
Recuerda que el fondo por defecto de <main> es White, por lo cual, si pones una imagen de fondo con cBodyBackground , tendrás que establecer
cBackgroundColor := "transparent !important" para que se vea.Esto te permite jugar con efectos sobre el fondo muy interesantes. Prueba a poner una imagen de fondo en <body> a asignar el valor cBackgroundColor:= "radial-gradient(#0000001f, #ffffff)"
- Esta respuesta fue modificada 4 años, 2 meses por Alfredo Sanz.
- Esta respuesta fue modificada 4 años, 2 meses por Alfredo Sanz.
- Esta respuesta fue modificada 4 años, 2 meses por Alfredo Sanz.
- Esta respuesta fue modificada 4 años, 2 meses por Alfredo Sanz.
- Esta respuesta fue modificada 4 años, 2 meses por Alfredo Sanz.
- Esta respuesta fue modificada 4 años, 2 meses por Alfredo Sanz.
Alfredo SanzSuperadministradorSí, realmente puedes inyectar el código html que quieras. Pero no lo hagas en cInHeader. cInHeader es parte de Materialize y lo usamos para incluir algunos elementos que si los eliminas con :cInHeader := "" te dará problemas. En todo caso :cInHeader += ""
La clase WebPage tiene un método llamado :AddHtml( <cTxt> ) que te permite inyectar código html dentro del <body> y puedes usarlo junto con los controles propios de Néfele
Alfredo SanzSuperadministradorSin duda, te recomiendo usarlo. Te va ha facilitar mucho la vida.
El sistema tradicional de informes de Xailer hace años que no lo uso y, la verdad, no recuerdo si dejaba exportar a pdf
Si no, tendrás que generar "a mano" los informes generando html
Alfredo SanzSuperadministradorBueno, no exactamente 🙂
Tienes que usar el control WRebar ( https://nefele.dev/wiki/controles/wrebar ) junto con WSideNav
En unos días publicaremos un ejemplo completo, pero te dejo aquí la idea principal
12345678910111213141516171819202122232425262728293031323334353637383940414243444546PROCEDURE App_Menu( oParent, cUser )LOCAL oItem, aSubLOCAL aItems := { { "Inicio",,"App_Principal","home", xc_SideNavOption }, ;{ "Departamentos",, "App_Departamentos", "card_travel", xc_SideNavOption }, ;{ "Empleados",, "App_Empleados", "person", xc_SideNavOption }, ;{ "Salir",,vSalir( oParent ):Run() , "exit_to_app", xc_SideNavOption } }WITH OBJECT WSideNav():New( oParent ):cBackImage := "//" + GetEnv( "HTTP_HOST" ) + "/images/office.jpg":cId := "Menu":cTitle := "AppGestión Experimental":cText := "Aplicación de Gestión realizada con Néfele Project":lShadow := .T.:cAlignText := xc_CenterFOR EACH aSub IN aItemsWITH OBJECT :AddItem():cText := aSub[1]:cOnClick := aSub[3]:cIcon := aSub[4]:nStyle := aSub[5]END WITHNEXT:Create()END WITHWITH OBJECT WRebar():New(oParent):lBeforeMain :=.T.:lMenuNav :=.T.:cTitle := "AppGestión":cLogo := "/images/icon.png":cTitleAlign := xc_Center:cLogoAlign := xc_Left:cMenuAlign := xc_Right:lBlock := .T.:Create()END WITHRETURNContenido no disponible.
Por favor, acepta las cookies haciendo clic en este aviso- Esta respuesta fue modificada 4 años, 2 meses por Alfredo Sanz.
Alfredo SanzSuperadministradorFenomenal!!
No te pierdas el nuevo ejemplo de formularios que hemos puesto en https://nefele.dev/foro/topic/ejemplo-de-formularios-con-nefele/
Alfredo SanzSuperadministradorHola, bienvenido !!
Te recomiendo leer el post de nuestro blog https://nefele.dev/blog/instalar-apache-en-windows-bien-explicado/
Dos cosas que suelen dar muchos quebraderos de cabeza son:
- Los permisos de usuario. Asegúrate de tener permisos de administrador para poder iniciar el servicio de Apache
- Los cortafuegos. Anula todos los cortafuegos del servidor, al menos durante unos instantes, para asegurarte de que no te están bloqueando
Ya me contarás si lo haces funcionar. Si no, necesitaré algo más de información para poder ayudarte.
Alfredo SanzSuperadministradorPrueba con
:cClrTitle := "yellow"
En la próxima versión de Néfele lo hemos cambiado para que se pueda usar indistintamente cClrText o cClrTitle
Alfredo SanzSuperadministradorRev.223 (25-08-2020)
wFileOpenDlg
+ PROPERTY cHint // Mensaje que aparece en el control cuando esta vacio, tenga o no el foco
+ PROPERTY cAccept // Tipos de Archivos admitidos ej: "image/png, image/jpeg"tCGI
+ METHOD TimeSuicide() // para contener todo el codigo a ejecutar para "Suicidar" nuestro CGI
% Modificado Suicide() para que utilize TimeSuicide()tWebPage
% No se estaban cerrando bien los <div> del Footer cuando había Links
wButton
% He aplicado el ::CreateClass que no existía cuando se creo el control
Alfredo SanzSuperadministradorPara modificar las características de un control puedes hacerlo de dos formas
- Indicando al control que pertenece a una determinada clase css y hacer las modificaciones en el fichero css
12345with object WLabel():New( oPanel ):cType := "div":cClass := "Ejemplos":Create()end with
- Incluir las modificaciones directamente dentro de tu código usando la propiedad oStyle
12345678with object WLabel():New( oPanel ):cType := "div"with object :oStyle:cFont_family := "monospace":cFont_size := 25end:Create()end with- También puedes mezclar las dos formas, en cuyo caso lo que pongas tú por código tendrá preferencia sobre lo que tengas definido en la clase css
123456789101112with object WLabel():New( oPanel ):cType := "div":cPreviewBackground := "#0080001f":cClass := "Ejemplos":cAlign := xc_Center:cText := "Ejemplos de edición"with object :oStyle:cFont_family := "monospace":cFont_size := 25end:Create()end withAlfredo SanzSuperadministradorHola,
Echa un vistazo a https://nefele.dev/wiki/controles/twebpage
Básicamente tienes 2 propiedades en Webpage
:lFooter: para decirle si mostrar o no el footer
- Si quieres un footer "personalizado"
usa cInFooter con el texto html que quieras
- Si quieres usar un footer standar
Tienes varias propiedades a utilizar: cTitleFooter, cClrFotText, etc...
Alfredo SanzSuperadministradorPues no, la verdad es que no termino de hacerme a la idea. Me ayudaría alguna captura de imagen del antes y el después.
De todas formas lo de un bevel dentro de otro para esto me parece un tanto forzado. ¿ Has probado con los padding? el padding en realidad es el margen interno de un bevel y seguramente conseguirás el mismo resultado utilizando menos recursos
https://www.w3schools.com/css/tryit.asp?filename=trycss_padding_sides
Alfredo SanzSuperadministradorHola,
Tienes documentación en nuestro wiki https:nefele.dev/wiki y en el canal de youtube https://www.youtube.com/channel/UCXsYK12Nsffli7mDhJIcFwg/videos y por supuesto, este foro, donde puedes preguntarnos cualquier duda.
A partir de las sugerencias que hicisteis en la reunión de la semana pasada, estamos preparando un nuevo ejemplo mucho más completo sobre la creación de un formulario y el paso de parámetros entre páginas.
También estamos preparando unos cursos de formación, que estarán listos en la última quincena de septiembre.
- Esta respuesta fue modificada 4 años, 3 meses por Alfredo Sanz.
Alfredo SanzSuperadministradorRev.222 (22-08-2020)
CGI
+ PROPERTY nSuicideInterval INIT 50 // segundos para que arranque el suicide
+ PROPERTY lPreloadCss INIT .f. //lee los css en modo precargaNefelecore
+ Function SinAcentos( cString ) // quita acentos y cambia " " por "-"Webpage
+ PROPERTY lCanonical INIT .T. // permite establecer la url canónica de la web. de momento: la misma url sin acentos y cambiando espacios por guiones! En el fooder no aplicaba bien :cTitleFooter
% si no se establece :cTitleFooter por defecto pasa a ser :cTitle
Dropify
+ PROPERTY nMaxFileSize // Tamaño maximo del archivo en Mb
+ PROPERTY cTextFileSize INIT 'El fichero es muy grande ({{ value }} max).';- Esta respuesta fue modificada 4 años, 3 meses por Alfredo Sanz.
Alfredo SanzSuperadministradorPues la verdad es que no termino de entender el problema.
Tal vez sea el texto 19.5HD/1366X768/VGA/5MS/VESA100X100/NEGRO/ENERGY, demasiado largo y sin espacios?
Alfredo SanzSuperadministradorSi puedes, envíame el código html que te genera correspondiente al bevel y el label para echarle un ojo
Alfredo SanzSuperadministradorPrueba con http://localhost/cgi-bin/ejemplo.exe
Alfredo SanzSuperadministradorHola Xevi, me alegra mucho tenerte x aquí,
El problema es que el Wizard no te ha detectado correctamente la ruta de apache
Cambia los datos de fichero de salida en las propiedades del proyecto por las correctas, en xampp si no recuerdo mal es c:\xampp\cgi-bin
Ya me contarás si te funciona
1 Saludico,
Fredy
Alfredo SanzSuperadministradorPrueba a hacerlo así
12345678WITH OBJECT :AddItem()IF ( aSub[5] <> xc_Divider ):cText := aSub[1]:cOnClick := aSub[3]:cIcon := aSub[4]End:nStyle := aSub[5] // <-- Esto después de END IFend with- Esta respuesta fue modificada 4 años, 3 meses por Alfredo Sanz.
Alfredo SanzSuperadministradorEn la nueva versión de Néfele la propiedad de WebPage :cTitle se ha desdoblado en dos propiedades distintas:
- :cTitle: El <title> de la página propiamente dicho
- :cTitleFooter : El título a mostrar en el pie de página en caso de activar :lFooter y no haber creado un footer personalizado con :cInFooter
Alfredo SanzSuperadministradorHola Eduardo. Bienvenido!!
Mándame un email a nefele4harbour@gmail.com y te mando el enlace de skype para la reunión.
Alfredo SanzSuperadministradorPerfecto!!
Ramón, me gustaría poder contar con tu asistencia en la reunión sobre Néfele que estamos preparando para mañana
Alfredo SanzSuperadministradorTen en cuenta que el bevel que pongas en :cAjaxBevel (en tu caso msgalert) tiene que existir en el html
Existe un bevel especial llamado nflcargo , lo crea néfele automáticamente y te puede servir para estas cosas.
Prueba a poner :nAjaxBevel := "nflcargo"
Alfredo SanzSuperadministradorEl planteamiento que haces no es correcto.
La llamada a Ajax es la que te tiene que devolver el alert para inyectarlo en la página. Por ejemplo
- En un browse tenemos un botón de borrar que al hacer click llama por ajax a "borradato"
123456789WITH object :AddCol( "", xc_Center, xc_Center ):nWidth := 1:cToolTip := "borrar":cId := "borra":cClrText := "red":cCursor := "pointer":cOnClick := "borradato":cAjaxBevel := "NflCargo"END12345678910111213141516171819202122232425FUNCTION BorraDatoLOCAL oMsgAlertLOCAL cRegistrocRegistro = GetRowValue( oCGI:GetCGIValue( "borra" ) )WITH OBJECT oMsgAlert := WMsgAlert():New():lTagScript := .T.:cTitle := "¿Confirmar borrado?" + ToString(cRegistro:cID):cType := "info":cAjaxBevel := "nflcargo":cConfirmButton := 'Sí':cConfirmButtonIcon := 'exit_to_app':cOnConfirm := "cBorrarRegistro":aParams := { { "linea", cRegistro:cId} }:cCancelButton := "No":cCancelButtonIcon := "cancel":Create()ENDSendAjax( oMsgAlert:FullHtml() )RETURN NILy nos devuelve el código necesario para hacer el alert y la acción a realizar ( cOnConfirm )
12345678910111213FUNCTION cBorrarRegistro( )LOCAL oAltWITH OBJECT oAlt := WMsgAlert():New( ):cText := "Dato Borrado ":cType := "success":lShowConfirmButton := .t.:Create()END WITHSendAjaxScript( RemoveLine(oCGI:GetCGIValue("linea")) + oAlt:fullhtml())RETURN NIL12345678910111213141516171819202122232425262728293031323334FUNCTION SendAjax( cDato)with object oCgi:Send(""):Send( cDato )endRETURN NIL//-------------------------------------Function SendAjaxScript( cText , cModal , cFocus)IF !Empty(cModal)cText += cOpenModal( cModal)ENDIFIF !Empty(cFocus)cText += SetFocus( cFocus )ENDIFoCGI:send("")oCGI:send("<script>"+ crlf + cText + crlf + "</script>")RETURN NIL//----------------------------------------------Function cOpenModal( cName)RETURN '$("#'+cName+'").modal("open");' + crlf//----------------------------------------------Function SetFocus( cName)RETURN 'document.querySelector("#'+cName+'").focus();' + crlf//-------------------------------------FUNCTION RemoveLine( cLine )RETURN 'document.querySelector("#'+cLine+'").remove();'+crlf- Esta respuesta fue modificada 4 años, 3 meses por Alfredo Sanz.
Alfredo SanzSuperadministradorNéfele Wizard busca el servicio de windows correspondiente a Apache, lo para, realiza las modificaciones y lo arranca de nuevo.
Por lo que veo, tienes Apache ejecutándose, pero no como un servicio y por eso te da el mensaje.
- Arranca el panel de contros de xamp con derechos de administrador
- Marca el check "service" correspondiente a Apache para que se ponga en verde
- Pulsa el botón start del apache
- Arranca el Néfele Wizard con derechos de administrador
Ya me contarás si funciona
Alfredo SanzSuperadministradorRev.219 (16-08-2020)
WebPage
+ PROPERTY cUri // cambia la url de la barra del navegador
+ PROPERTY cSearchConsoleCode INIT "" // Identificador para validar Search Console
+ PROPERTY lIndex INIT .T. // Si los robots indexan o no la página
+ PROPERTY lFollow INIT .T. // Si los robot hacen un follo de la página
+ PROPERTY lTrackUserAgent INIT .T. // Crea el fichero TrackUserAgent donde se registra fecha, hora, ip y useragent de todos los accesos
+ PROPERTY lJsMaterialize INIT .t. //Usamos Javascript materialize% Actualizada versión de jQuery a la 3.5.1
zItemColBrowse
+ PROPERTY cToolTip INIT "" // tooltip de la celdaArrayBrowse
+ Ahora el valor de cada elemento del array a mostrar puede ser a su vez un array de tipo { valor a mostrar, tooltip a mostrar }NefeleFunction
+ FUNCTION PreloadCss( cCss ) // Permite la precarga del css indicado para evitar bloqueosAlfredo SanzSuperadministradorFíjate que las dos columnas tienen el mismo id, por lo cual para néfele son la misma y te está sobreescribiendo los valores. cámbiales el id y ponle "descarga01" y "descarga02"
El NflCargo es para hacer llamadas por Ajax y que el código que retorna te lo inyecte en ese bevel
Alfredo SanzSuperadministradorTe recomiendo lo siguiente:
En el menú superior de Xailer, Vete a : Proyecto / propiedades de proyecto / Librerías
Borra la referencia que te aparece de nefeleproject y añade la nueva
No olvides que tienes que añadir también la librería wClassNefele
Por otra parte, si miras el código fuente de la página web creada con Néfele, verás que aparece unas directiva meta con el nombre "generator" en la que pone la versión de Néfele con la que se ha creado
XHTML12<meta name="copyright" content="© 2019-2020 Néfele Developer Group" /><meta name="generator" content="Néfele Project 0.2 - core:0.2">Alfredo SanzSuperadministradorPrueba el ejemplo que te indico en el mensaje anterior, y si no te funciona:
- En el navegador: botón derecho, ver código fuente de la página
- Copia todo y me lo adjuntas en un archivo
-
AutorEntradas