Respuestas de foro creadas
-
AutorEntradas
-
quimParticipante
Buenos dias
Siguendo este hilo de la wRebar...
En el wiki, parece no estar del todo documentado, aunque su status es de estar al 100%... lo digo sólo con ánimo de aviso a los documentadores, se podría incluir de forma rápida las propiedades y métodos ?
El caso es que pongamos :
:cLogo := "img/logo.png"
:cLogoAlign := xc_Rightpero no encuentro la forma 'néfele' de informar de un ancho del logo, al estilo de
cLogoWidth :="80%"
Existe alguna forma de hacerlo, sin tener que recurrir al cuchillo CSS ?
Saludos
quimParticipanteGracias por la respuesta Xevi, compruebo que en este tema estáis muy bien servidos en Xailer 😉
Saludos
quimParticipanteGracias por la respuesta.
No conocía SwithMail pero pinta muy bien. Parece una version mejorada del famoso blat.exe :))
De todas formas, supongo que depende de la lógica que se quiera aplicar al CGI, por ejemplo, si se espera un resultado del envio del correo, aunque se llame a un proceso externo para realizar ese envío, el CGI deberá de esperar a un resultado.
Aún tengo que comprender como poder hacer el envio, liberando al CGI, pero que ese mismo CGI pueda devolver una respuesta
El debate está abierto :))
quimParticipanteCómo haces para que te salga el codigo formateado ?
quimParticipanteSiguiendo con el ejemplo de Xevi, si depuramos por la consola de Néfele sale esto, sólo por curiosidad ya que el ejemplo funciona
Saludos
quimParticipanteXevi
Tu ejemplo me funciona bien, supongo que debe ser tu versión de la LIB
Sólo comentarte que no es necesario declarar oAlert, puedes hacerlo así directamente
1234567891011121314151617181920PROCEDURE VerificarDatos()Local cHtmlLocal cDato := oCGI:GetCgiValue("valor1","")If cDato == "aaa"cHtml := Tag( "script", "window.location.href = 'https://nefele.dev'" )ElseWITH OBJECT WMsgAlert():New():cText := "No encuentro " + Tag( "b", cDato ):cIcon := "ERROR":Create()cHtml := :FullHtml()END WITHEndIfoCGI:SendScript( cHtml )RETURNPor cierto, no consigo formatear el código correctamente en las entradas de este foro, lo muestra sin el sangrado original
Cuando quiero incluir código, lo selecciono en la pestaña HTML y le doy al botón CODE, que hago mal ?
Gracias !
Saludos
quimParticipanteFredy
Utiliza mejor hb_memowrit() que puedes controlar caracter final de fichero
https://vivaclipper.wordpress.com/2014/01/16/hb_memowrit/
Saludos
quimParticipanteXevi
Siempre nos queda poder programar funcionalidades personalizadas
Néfele te permite 'meter el cuchillo' y extender sin límite 😉Fíjate en el siguiente código :
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051static function myScript()local cScript := ""TEXT INTO cScriptvar form = document.querySelector('#uploads'); // == WForm():cId// Interceptando accion por defecto del formularioform.onsubmit = function(e) {// mostrar popup, capturar datos, etcprompt("Please enter your name", "Harry Potter");// parar propagación del evento originale.preventDefault();// devolver true / false si dejamos que el formulario siga// con la accion programada originalreturn false;}ENDTEXTreturn cScript//------------------------------------------------------------------------------WITH OBJECT TWebPage():New()AAdd( :aScript, myScript() )WITH OBJECT WForm():New(:WO):cId := "uploads":cFunction := "myfunction"WITH OBJECT WFileOpenDlg():New(:WO):cName := "files":cTitle := "Seleccione uno o varios archivos para adjuntar":lMultiple := .T.:Create()ENDWITH OBJECT WButton():New(:WO):lSubmit := .T.:cText := "Subir":Create()END:Create()ENDoCGI:SendPageNoCache( :Create() )ENDquimParticipanteXevi
No entiendo que quieras lanzar un submit por Ajax cuando lo puedes hacer perfectamente con un formulario
123456789101112131415161718192021222324252627PROCEDURE UploadFiles()WITH OBJECT TWebPage():New():lFooter := .F.:AddHTML( "<h3>Subir archivos</h3>" )WITH OBJECT WForm():New(:WO):cFunction := "actualizahorario":aParams := {{"control","1"}}WITH OBJECT WFileOpenDlg():New(:WO):cName := "fichero":cTitle := "Seleccione uno o varios archivos para adjuntar":lMultiple := .T.:Create()ENDWITH OBJECT WButton():New(:WO):lSubmit := .T.:cText := "Subir":Create()END:Create()ENDoCGI:SendPageNoCache( :Create() )ENDRETURNSaludos
- Esta respuesta fue modificada 4 años, 2 meses por quim.
quimParticipanteXevi
Estás intentando que el CGI te abra un excel ?
El CGI sólo puede devolver 'datos', es decir, html, json, xml,...
Saludos
Quim
quimParticipanteXevi
Creo que para que el CGI te haga caso, tienes que anteponer el carácter # al nombre de la funcion CGI, en tu caso así :
'#actualizahorario'
Saludos
Quim
quimParticipanteBuenos dias
Aquí tienes uno que uso ...
12345678910111213141516171819202122232425262728293031local n, nLenlocal aModel// Modelo de datosaModel := {;{"3420", "m1.jpg", "Pijama homewear"}, ;{"4653", "m2.jpg", "Pijama corazones"}, ;{"7689", "m3.jpg", "Baby escolar"}, ;{"1234", "m4.jpg", "Camisola verano"}, ;{"5323", "m5.jpg", "Pijama caballero"}, ;{"7260", "m6.jpg", "Camisa sportwear"} ;}nLen := Len(aModel)for n:=1 to nLenWith Object WCard():New( oParent ):cId := "m"+ aModel[n,1]:cTitle := aModel[n,1]:nTitleFontSize := 4:cText := aModel[n,3]:nHeightText := 50:cImage := "images/quim/img/"+ aModel[n,2]:aLinks := {}:aWidth[xc_S] := 4:lHorizontal := .F.:oStyle:cHeight := "300px":Create()End WithnextSaludos
quimParticipanteBuenos dias
Dices ...
el botón "de dentro de la columna" no tiene por qué tener ninguna acción ( ya se encarga la columna de hacerlo)
Pero si el WArrayBrowse lo has definido con
:cOnClick := NIL // o " "
No tendría que saltar a ningún evento click de la columna no ?
Saludos
quimParticipantePero el evento sigue hasta la llamada de Ajax
PD. No me deja publicar mensajes con + de 1 imagen 😉
quimParticipanteSí que sale
quimParticipanteBuenos dias
Ya he conseguido la funcionalidad deseada, no sé si seria posible 'nefelizar', de momento funciona y sigo adelante 😉
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354static function Js_SwitchBtn()local cScriptTEXT INTO cScript// Boton +$('.t-add').click(function(e){var item=$('#'+e.target.dataset.talla);var num=parseInt(item[0].value);num++;item.val(num);e.preventDefault();});// Boton -$('.t-remove').click(function(e){var item=$('#'+e.target.dataset.talla);var num=parseInt(item[0].value);if (num>0) num--;item.val(num);e.preventDefault();});ENDTEXTreturn { cScript }//------------------------------------------------------------------------------PROCEDURE CreateTable( oParent )local nlocal cGet, cBtnlocal aItems := {}local aData := { ;{"S",23.85,2},;{"M",23.85,3},;{"L",23.85,1},;{"XL",23.85,5},;{"2XL",25.25,3}, ;{"3XL",25.25,1}, ;{"4XL",26.70,2} ;}for n:=1 to len(aData)cGet := '<input type="text" id="T'+LTrim(Str(n))+'" value="'+LTrim(Str(aData[n,3]))+'" readonly style="border: none;text-align: center;">'aData[n,3] := cGetcBtn := '<a class="t-add btn-floating btn-small waves-effect waves-light green">'cBtn += '<i class="material-icons" title="incrementa" data-talla="T'+LTrim(Str(n))+'">add</i></a>'AAdd(aData[n], cBtn )cBtn := '<a class="t-remove btn-floating btn-small waves-effect waves-light red">'cBtn += '<i class="material-icons" title="decrementa" data-talla="T'+LTrim(Str(n))+'">remove</i></a>'AAdd(aData[n], cBtn )AAdd(aItems, aData[n] )nextquimParticipanteBuenos dias
Siguiendo con la funcionalidad anterior, intento dotar de funcionalidad via Nefele los botones.
Dado el siguiente código
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253static function Js_SwitchBtn()local cScriptTEXT INTO cScriptfunction SwitchBtn(n) {if(n > 0){alert('incrementar')} else {alert('decrementar')}return false;}ENDTEXTreturn { cScript }//--------------------------------------------------PROCEDURE CreateTable( oParent )local cGet := '<input style="border: none; text-align: center;" readonly="readonly" type="text" value="2" />'local cBtn1 := '<button class="btn-floating btn-small waves-effect waves-light green"><i class="material-icons">add</i></button>'local cBtn2 := '<button class="btn-floating btn-small waves-effect waves-light red"><i class="material-icons">remove</i></button>'local aItems:= { ;{"S",23.85,cGet,cBtn1,cBtn2},;{"M",23.85,cGet,cBtn1,cBtn2},;{"L",23.85,cGet,cBtn1,cBtn2},;{"XL",23.85,cGet,cBtn1,cBtn2},;{"2XL",25.25,cGet,cBtn1,cBtn2}, ;{"3XL",25.25,cGet,cBtn1,cBtn2}, ;{"4XL",26.70,cGet,cBtn1,cBtn2} ;}WITH OBJECT WArrayBrowse():New( oParent )// Cargar el script:aScript := Js_SwitchBtn()// definir columnas...// Definir columnas con botonWITH OBJECT :AddCol("") AS WItemColBrowse:cAlign := xc_Center:cOnClick := "#SwitchBtn(1)"ENDWITH OBJECT :AddCol("") AS WItemColBrowse:cAlign := xc_Center:cOnClick := "#SwitchBtn(0)"ENDAl hacer click en el botón + o en el botón - se lanza correctamente la llamada a SwitchBtn definida en el script, pero no sé cómo detener la propagación del evento, ya que sigue con la llamada al CGI, según muestra la cónsola
Alguna idea ?
Saludos
quimParticipanteBuenas tardes
Tabla 'nefelizada' (me va gustando el nombrecito ) con el componente wArrayBrowse y funcionalidad de botones activada, la verdad es que la velocidad de desarrollo es espectacular 😎
Saludos
quimParticipanteBuenas tardes
Se me había pasado por alto ... es wArrayBrowse, una buena base para empezar
Saludos
quimParticipanteBuenos dias
No entiendo muy bien este componente ni su utilidad ...
En la demo https://materializecss.com/pushpin-demo.html
Parece que hace un desplazamiento vertical, al estilo de las single web pages, que todo está cargado en una página y se hacen desplazamientos entre secciones, tomando el alto del dispositivo. Es así ?
Saludos
quimParticipanteBuenos dias
Sólo comentar que la llamada a javascript funciona tanto precediendo con @ como con #
Va a seguir así o se suprimirá alguna de sus formas ?
Saludos
quimParticipanteBuenos dias
Perfecto poder ejecutar via # javascript, una muy buena idea 😎
Genial también la galería facybox, entiendo que es complementario con el componente materializecss materialbox() ya que el primero nos sirve para una presentación rápida de varias fotos y el segundo, para un zoom en una imagen, fuera de facybox
Saludos y gracias por las respuestas 😉
quimParticipanteBuenas tardes
Sí, entiendo como son las llamadas Ajax, es en el tratamiento de la respuesta donde hay que incluir codigo javascript, ya que la página (o el trozo, o el json,...), ya ha sido devuelta al navegador por la funcion indicada en cOnChange o en el submit de un boton de formulario
Un pequeño ejemplo en código, para ver lo que digo (si no está resuelto por otra parte)
1234567891011121314151617181920212223242526272829303132333435function autoformajax( id, url, params, ..., fnCallBack ){$.ajax({url: url,method: "POST",data: params,success: function( html ) {// 1)if( html.substring(0, 7) == "" ) {// Tratar error} else {// Inyectar resultado en su contenedor$( id ).append( html ); o $( id ).html( html );// 2)// Llamar a la funcion callback, despues de renderizar el html// por si hay algun elemento dom afectadoif (fnCallBack) {try {fnCallBack();} catch (e) {console.log("ERROR : ", e.message);}}}},error: function (e) {$( id ).html(e.responseText);}})}Saludos
quimParticipanteGracias por la respuesta... seguiremos aprendiendo
Cuáles son los controles materializecss que os cuestan implementar ?
Saludos
quimParticipanteMoltes gràcies Xevi !!
Era eso, mi inexperiencia con el IDE de Xailer 🙄
Saludos
16-09-2020 a las 08:55 en respuesta a: Eliminar elementos HTML no deseados, que se incluyen por defecto #685quimParticipanteBuenos dias Fredy (desde tiempos de Olivares 2000 😉
No entiendo... sale la banda "Néfele Project", quítala y deja sólo la banda del copyright a ver que queda
Saludos
15-09-2020 a las 18:25 en respuesta a: Eliminar elementos HTML no deseados, que se incluyen por defecto #674quimParticipanteBuenas tardes Alfredo ( Freddy como te llamábamos hace mucho tiempo, me dirijo a tí, como gustes 😉
Sigue saliendo... Creo que hay que controlar cuando cTitleFooter y cSubTitle son NIL, ya que si están vacios, pintan el texto por defecto con "Néfele project...", "Crear paginas web..."
y si cTitleFooter tiene un espacio vacio, no se pinta, pero cSubTitle, aunque sea NIL o espacio en blanco, se pinta por crearse su contenedor padre,
un div .container que no se tendría que crear.
Lo he podido suprimir, aplicando el estilo
:cCSS += 'footer > .container { display:none; }'
Saludos
quimParticipanteRevisando la página de descargas de Xailer http://download.xailer.com/?es&cat=1 ya se hace mención que incluye MinGW, es que algunos somos despistados ... 🙄
quimParticipanteDiego
Según sus autores en el wiki https://nefele.dev/wiki/nefele/iniciar
Actualmente la Aplicaciones Néfele se desarrollan y compilan con Xailer así que si no disponemos de el habrá que descargarlo e instalarlo, siga las instrucciones de la página de Xailer para descargar y registrar la versión Personal que es gratuita.
Mas adelante esta previsto desligarlo de Xailer y que pueda editarse con cualquier editor y compilar directamente con Harbour y MinGW.
Personalmente también estoy ansioso, habrá que esperar a que esté listo 😉
quimParticipanteNo pasa nada así vamos viendo como depurar errores 😉
quimParticipanteMuchas gracias, no lo encontraba ... en la ayuda del IDE sale como Ctrl + B Expandir abreviatura
Existe algún sitio donde editar estos snippets ?
-
AutorEntradas