Respuestas de foro creadas
-
AutorEntradas
-
DanielParticipante
Buenas tardes,
¿podrían responderme?
Gracias
DanielParticipanteMe respondo a mi mismo.
Cambiar la propiedad :cIcon de la TwebPage() principal.
Saludos
Daniel
DanielParticipantePedro,
Ahora si enlazó correctamente y tengo funcionando nefele_samples
Muchas gracias por tu ayuda
Saludos
DanielParticipantePedro,
Muchas gracias por tu ayuda. El error inicial desapareció, pero ahora tengo un nuevo mensaje también al enlazar.
Desde ya muchas gracias
Daniel
DanielParticipanteGabriel,
El puero de escucha se lo cambié al TS-PLUS para liberar el 443 haciendo esto: (puede variar según la versión que tengas), abres el AdminTool del TS-PLUS, ahí hay una opción que se llama WEB, dentro de esa hay una opción que se llama "HTTP/HTTPS Port Numbers" la cual permite cambiar los números de puertos a utilizar.
Una vez cambiado, reinicias el equipo.
Saludos
DanielParticipanteFredy,
Muchas gracias. Lo estudiaré.
Saludos
DanielParticipanteFredy,
Quedó funcionando perfecto.
Muchas gracias
DanielParticipanteHola Foro,
Estoy probando por primera vez SSL y ya tengo funcionando correctamente el acceso por https://.....
Ahora bien, siguiendo los consejos detallados en este hilo, e intentado hacer la redirección http a https pero no lo logro.
He utilizado tanto la forma de Xevi como la de Pedro y ninguna me hace la redireccion, está claro que luego de cada cambio en httpd.conf reinicio Apache.
Lo que he hecho es copiar y pegar las instrucciones ofrecidas, pero no se si es que, el contenido de dichas instrucciones dependen de cada servidor o deben ser colocadas en determinado lugar del httpd.conf u otra razón, para que funcione bien.
También he revisado el enlace que suguiere Alfredo pero me vi "superado".
Agradecería cualquier orientación
Un saludo
Daniel
DanielParticipanteXevi,
Muchas gracias por la aclaración.
Un saludo
DanielParticipanteXevi,
Funcionó perfecto.
Disculpa mi ignorancia, ¿dónde podría obtener una "lista" de esos comandos?
Muchas gracias
DanielParticipanteResuelto.
Resulta que en ese servidor hay otro servicio que "escucha" el puerto 443, por suerte dicho servicio admite cambiarle el puerto facilmente.
Por si a alguno le sirve el dato, ese servico es TS-Plus, un servidor de escritorio remoto al cual tambien se puede acceder por web.
Saludos
DanielParticipanteAlfredo
No conocía HTTP_REFERER.
Lo probé y fui consultando con oCGI:Console() y veo que solo HTTP_REFERER ya contiene todo el texto de la Url "original", así que quedó funcionando con esto
1:cUrlToGo := GetEnv("HTTP_REFERER")Muchas gracias por la ayuda
- Esta respuesta fue modificada 4 años, 1 mes por Daniel.
DanielParticipanteGracias Pedro,
Saludos
DanielParticipanteGracias Alfredo,
Lo probaré.
Saludos
DanielParticipanteAnte todo muchas gracias por vuestra ayuda.
Algunos comentarios:
Respecto a los ejemplos autocontenidos estoy totalmente de acuerdo, en el caso que puse, me ganó la ansiedad de poder compratir "algo" luego de tanta ayuda que he recibido y una vez que lo tuve andando copié y pegué sin más. Para la idea de "ejemplos de usuario" va mi +1
En cuanto a las ñÑ çÇ y tildes, he observado que dentro de los prg que fuí creando, como algunos de ellos, salieron de copio y pego de los ejemplos y otros los creé de cero, tenía diferencia en la codificación, estando tanto en ANSI como en UTF-8, lo que explica porqué en algunos casos los caracteres en cuestón se ven bien y en otros no. Para traer y mostrar datos de un DBF (viejito de la época de MS-DOS) la solución que apliqué fue:
StrToXml(OEMToAnsi(familias->detalle), teniendo el PRG en UTF-8
Por último, comparto la alegría que sentí en el momento que mi primer aplicación con Néfele quedó funcional, es algo muy sencillo pero cumple con su cometido. Descontando el tiempo de aprendizaje, el ensayo y error y los largos minutos que invertí en elegir el aspecto (colores, fonts, etc.), podría decir que me tomó tan solo 1 hora de trabajo, sin saber absolutamente nada del mundo web.
Mis felicitaciones al equipo Néfele por lo que están haciendo.
Daniel
DanielParticipanteMe respondo y les envío un pequeño aporte
He podido realizar una lista dentro de otra y comparto el código, seguramente se podrá hacer mucho mas linda pero bueno, paso a paso.
Lo que no me funciona es que las Ñ, ñ y los tildes se muestren correctamente, ¿cual es el truco?
12345678910111213141516171819202122232425262728With Object WListView():New(:WO):cType := xc_Expandable:lTitleItem := .T.:cClrPane := "light-blue lighten-4":cClrText := "white":cIconOpen := "keyboard_arrow_up":cIconClose := "keyboard_arrow_down"for nI := 1 to Len(aFamilias)With Object :AddItem(aFamilias[nI,1],,AsciiHTML(aFamilias[nI,2])) As wItemListView:lDefault := .F.With Object WListView():New(:WO):lTitleItem := .T.:cClrPane := "light-blue lighten-5"for nJ := 1 to Len(aArticulos)if aArticulos[nJ,2] == aFamilias[nI,1]With Object :AddItem(nJ,,AsciiHTML(aArticulos[nJ,4]),AsciiHTML(aArticulos[nJ,6])) As wItemListViewWith Object :oBadge As wBadge:cText := LTrim(Transform(aArticulos[nJ,5], "99,999.99"))End WithEnd Withendifnext:Create()End WithEnd Withnext:Create()End WithDanielParticipanteExelente, comprendido
Muchas gracias
Un saludo
DanielParticipanteMuchas gracias por tu respuesta.
Aver si voy entendiendo. Si bien nuestro programa estará formado por varios prg, cada uno de ellos tiene sus propias variables y para compartir los valores de las mismas entre unos y otros debemos utilizar los métodos mencionados, dado que los valores de las mismas néfele los guarda en "algún lugar" como para que sean visibles "como si fueran púbicas"; lo que me hace pensar que cada acción del usuario, como por ejemplo pulsar un boton o elejir una opción de un menú, ejecuta nuevamente nuestro cgi.
¿es así?
DanielParticipantePerfecto, comprendí.
Muchas gracias por tu tiempo.
Saludos
DanielParticipantexhermita,
Muchas gracias por tu explicación. Al no saber nada de Json se me hace medio difícil comprender, pero mas hayá de eso, lo que nunca había visto es esta forma de llamar una función RecuperaBBDD()["Familias"], hasta donde yo sabía los parámetros siempre se ponen dentro de los paréntesis.
Nuevamente gracias
Saludos
DanielParticipanteAlfredo,
Mucha gracias por tu ayuda, me quedó clarísimo.
Con respecto a la pretunta 2,
2) LOCAL aTodos := RecuperaBBDD()["Articulos"] <- ¿que función cumple ["Articulos"] luego de nombrar una función que por su definición no recibe parámetros?
Tu podrás explicarme o indicarme donde leer sobre esa sintaxis?
Desde ya muchas gracias
Saludos
DanielParticipanteAlfredo,
Se entiende perfecto.
Muchas gracias.
Saludos
DanielParticipanteComprendido,
Muchas gracias.
Saludos
Daniel
DanielParticipanteLo que me sucedió es que estoy acostumbrado a crear .ch donde pongo solamente "defines" sin valor a los efectos de que se compile o no, partes del código, según personalizaciones que hago de acuerdo al cliente
En particular en este caso, el .ch solo tiene (por ahora) un linea:
1#define POPEYEMuchas gracias a todos por la ayuda.
Daniel
DanielParticipanteGracia Juan,
Fucionó perfecto.
Saludos
Daniel
DanielParticipanteProbando pegar codigo
12345678910Class TCgi FROM XCgi// Este es nuestro Router para evitar inyección de código malicioso y aportar la máxima seguridad.// Solo se permite la llamada a los Method de oCgi aquí nombrados que a su vez llaman a Procedure, Function o Method'sMETHOD MainFunction() INLINE MainPage()METHOD Inicio() INLINE MainPage()* METHOD OtraMas() Inline OtraMas() //Y así tantas como queramosEND CLASSDanielParticipanteResuelto,
De todas las pruebas que hice ayer faltó esta:
Comenté las lineas que tiene #ifdef y #endif y ahora anda bien.
Gracias a todos.
Saludos
Daniel
DanielParticipanteAlfredo,
Gracias por tu ayuda.
Este es mi código,
//Función principal de la app Web
PROCEDURE MainPage()// Comenzamos instanciando la Página Web que queremos crear
With Object TWebPage():New()
// Para no tener que estar repitiendo código, la construcción del wRebar y del wSideNav lo tengo en un PROCEDURE
// que puedo llamar desde todo el proyecto
AppMenu( :WO )
:lValign := .T.
// :cIcon := "MacroSistemas"
:cTitle := "VirtualMenú"
:cTitleFooter := "MacroVentas ®"
:cSubTitle := "Sistema de punto de venta y gestión"
:cCopyright := '© VirtualMenú By MacroSistemas'
:cClrCrText := "blue"
:cClrFootPane := "black"// Dentro de la web montamos un primer contenedor bEvel que ocupa 4/12 anchura en pantallas grandes
// en una mediana o pequeña se adaptará responsivamente ya que no le damos tamaño
With Object WBevel():New(:WO)
:aWidth[xc_L] := 4With Object WLabel():New(:WO)
:nFontSize := 5
:lBold := .T.
:cAlign := xc_Center
:lBR := .T.
:cText := "Hola Mundo"
:Create()
End With
:Create()
End WithoCgi:SendPage( :Create() ) // Se crea el HTML final y se envía al navegador saliendo del ejecutable CGI
End With
RETURN
//------------------------------------------------------------------------------
// Aquí contruyo el wRebar y el wSideNav, al estar en un PROCEDURE aparte puedo crearlos dentro de cualquiera de
// las tWebPage del proyecto
// Necesito tWebPage donde he de crearlos, asi que se lo paso como parametro en oParent
PROCEDURE AppMenu(oParent, cTitle)
local cRestaurante#ifdef POPEYE
cRestaurante := 'Restaurante Popei'
cTitle := 'Restaurante Popei'
#endif POPEYE// Instanciamos el wSideNav (El menú lateral)
with object WSideNav():New(oParent)
// Como todas las propiedades image de Néfele podemos asiganerle una URL, un path de nuestro Apache o un BASE64
:cBackImage := "/images/Velero.jpeg"
:cId := "Menu"
:cTitle := cRestaurante
:cClrTiTle := "white"
:cText := "Menú"
:cClrText := "white"
:lShadow := .T. // Esta sombra afecta a los cText y a cTitle y se utiliza para que resalten sobre la imagen del fondo
// vamos a añadirle opciones a nuesto menú
// AddItem( cText, cFunction, cIcon, nStyle, aParams, cAction, aBadge {cText,cClass} )
:AddItem("Inicio","Inicio","home", xc_SideNavOption)
// :AddItem("Formularios","MainForms","note_add", xc_SideNavOption)
// :AddItem("Listas","MainListViews","contacts", xc_SideNavOption,,,"Novedad")
// :AddItem("Alertas","MainAlert","highlight", xc_SideNavOption,,,{"Novedad","red pulse"})
// :AddItem("Charts","MainCharts","data_usage", xc_SideNavOption,,,{"Novedad","blue pulse"})
// Como siempre, una vez definidas todas la propiedades procedemos a la creación
:Create()
end with// Vamos con el wRebar
with object WRebar():New(oParent)
// Por defecto el wRebar esta creado para estar dividido en 3 areas, MenuNav, Titulo y Logo
// Podemos no poner cualquiera de los tres elementos, e incluso podemos utilizar el wRebar como un contenedor
// y crear dentro de el otros controles.
:cClrPane := "blue darken-1"
:lBeforeMain := .T. // Forzamos a que el wRebar este fuera del <main>
:lMenuNav := .T. // Lleva el icono de apertuta del wSideNav
:lBlock := .T. // Se queda fijo en la parte alta aunque se produzca un scroll
:cTitle := cTitle
:cTitleAlign := xc_Center // Podemos colocar el MenuNav, el Titulo y el Logo en cualquira de las tres posiciones left, center y right
:cLogo := "/images/MacroSistemas.jpg"
:cLogoAlign := xc_Right
// :cUrlToGo := "https://nefele.dev" // Cuando picamos en el Logo nos lleva a esta URL
:Create()
end withRETURN
//------------------------------------------------------------------------------
DanielParticipanteGabriel,
Una consulta, ¿como hiciste para "pegar" tu código y que quede dentro de un cuadrado bien formateado y coloreado?
Muchas gracias
Saludos
Daniel
DanielParticipanteGabriel,
Muchas gracias por compartir tu código, lo he revisado y salvo un #define que yo tengo, el resto está bastante parecido, propiedad mas propiedad menos.
Saludos
Daniel
DanielParticipanteXevi,
Mucha gracias
Un saludo
Daniel
-
AutorEntradas