[Nefele] Changelog

Foros Néfele 4 Harbour Foros Noticias y novedades [Nefele] Changelog

Etiquetado: 

  • Este debate tiene 20 respuestas, 2 mensajes y ha sido actualizado por última vez el 3 años, 3 meses por Alfredo SanzAlfredo Sanz. This post has been viewed 1200 times
Mostrando 20 respuestas a los debates
  • Autor
    Entradas
    • #1747
      Alfredo SanzAlfredo Sanz
      Superadministrador

      REV 2110

      11-03-2020 
        + source\zClassNefele\SimpleMenu.prg
           Clase que hereda de SideNav para la creación de menús
           PROPERTY cIcon INIT "star" // icono de fontawesome a colocar a la izquierda de cada opción
        * include\css\nefelecore.css
          // Incluidas definciones para utilizar el modo lCompress de los wForm
        * source\zClass\source\Form.prg
          + PROPERTY lCompress INIT .F. // Habilita el modo de tamaño comprimido
        * source\zClass\source\Edit.prg
          + PROPERTY lCompress // Habilita el modo de tamaño comprimido, por defecto utiliza el definido en wForm
        * source\zClass\source\Combobox.prg
          + PROPERTY lCompress // Habilita el modo de tamaño comprimido, por defecto utiliza el definido en wForm
        * source\zClass\source\FileOpenDlg.prg
          + PROPERTY lCompress // Habilita el modo de tamaño comprimido, por defecto utiliza el definido en wForm

      08-03-2020 
        * samples\Nefele_Samples\
          + Incluidos ejemplos cpn wPDFReports

        * source\zClass\source\Cgi.prg
           ! La estructura que retorna GetCodefCookie incluye un campo 'Value' que comparte contenido con el campo 'Valor'
             para ir internacionalizando el tema, hay que ver como podemos avisar de que ese campo va a desaparecer
        !! source\zClass\source\WebPage.prg
          !! PROPERTY lPDFReports remplaza a ljsPDF
        * source\zClass\source\SplitButton.prg
          % Se ha homogeneizado con wButton para que respete aWidth y aOffset
          % PROPERTY lCenter // Se mantiene por compatibilidad con versiones anteriores
          + PROPERTY cPosition INIT xc_Center // Alineación con respecto a su contenedor
          + PROPERTY lContainer INIT .T. // Contenedor interno del botón
          % oIconMenu por defecto pasa a ser "arrow_drop_down_circle"

        * source\zClass\source\PDFReport.prg
          ! Homogeneizadas todas las propiedades de Color para que funcionen como en cualquier control, admitiendo
            colores materialize, en Hexadecimas RGB y numerico

      07-03-2021
        * source\zClass\source\Webpage.prg
          + PROPERTY lPDFObject INIT .T. // Utilizaremos PDFObject para la gestión de PDF embebidos
        * source\zClass\source\PDFReport.prg
          ¡¡ Se han cambiado el orden de los parametros de todos los metodos para que esten primero los imprecindibles
          + METHOD QrCode( nLeft, nTop, nWidth, nHeight, cText, cEccLevel, nClrPane, nClrText, nMargin, nModuleSize, lAuto )
          // Para incluir Códigos QR en los report.
          + PROPERTY lPDFObject INIT .T. // Por defecto se utilizara PDFObject para el embebido de PDF

      01-03-2021 
        * samples\Nefele_Samples\
          + Ejemplo Generación Códigos QR
        * source\zClass\source\Webpage.prg
          + PROPERTY lQrJS2 // Inicializa la página para que pueda contener Códigos QR
          + source\zClass\source\QrCode.prg // Clase para la creación de códigos QR
        * source\NefeleCore.prg
          + FUNCTION nfl_MakeQrCode() // Funciones para la creación de códigos QR
        * \samples\Nefele_Samples\
          + Ejemplos uso pdf
          + \samples\EnviarPdf
          Ejemplo de uso pdfs

        * include\core\css\ext-materialize.css
           + .card-content { overflow: auto; } // Para evitar que el contenido se salga
        * source\zClass\source\SideNav.prg
           + Habilitadas las propiedades relacionadas con ShadowSheet ( lShadowSheet, cShadowSheetTitle y cShadowSheetSubTitle )
             se aplica a todas la opciones del Menú que llaman a nuestro CGI. Las que ejecuten JS o href no tienen ShadowSheet
        * source\zClass\source\Cgi.prg
          + PROPERTY aSecurityPolicy INIT {} // Nos permite añadir Parametros de Seguridad en el Header del envío
        * source\NefeleFunction.prg
          + FUNCTION nfl_DefaultSecurityPolicy( lHTTPS ) // Configuración basica de seguridad con las pruebas que hemos realizado

      Loading spinner
    • #1718
      Alfredo SanzAlfredo Sanz
      Superadministrador

      REV 2107

      * source\zClass\source\NefeleControl.prg
        Aceleradores de teclado ( ej. alt + a ). (De momento solo en edit y button)
          + PROPERTY cShortCut // ::cSortCut= "Alt+A"
          + PROPERTY cShortCutAction INIT "click"

      * source\zClass\source\wArrayBrose.prg
         ! Comprueba si la cabecera o las celdas llevan icono comparando con "icon:", antes lo hacia con "icon" y fallaba

      * source\zClass\source\Edit.prg
         % si ::SetSearch() y ::nTimeOut > 0, al pulsar la x lanza el evento de cambio con texto := ""

      Loading spinner
    • #1702
      Alfredo SanzAlfredo Sanz
      Superadministrador

      REV 2103

      21-01-2021 

      * source\zClass\source\ItemColBrowse.prg
        + PROPERTY lDefault INIT .f. // Utilizar si los datos nos llegan ordenados ya por esta columna
        + PROPERTY lSort INIT .t. // La columna se puede ordenar
        + PROPERTY lSearch INIT .t. // La columna tiene caja de búsqueda

      * source\NefeleFunctions.prg
        ! FUNCTION nfl_CallAutoForm // No añadia ; al final, por lo que fallaba si se le adjuntaban otras funciones

      Loading spinner
      • Esta respuesta fue modificada 3 años, 5 meses por Alfredo SanzAlfredo Sanz.
    • #1681
      Alfredo SanzAlfredo Sanz
      Superadministrador

      REV 2101

      07-01-2021

      * source\zClass\source\wArrayBrose.prg
      + Se pueden utilizar los estilos xc_Striped y xc_Highlight al mismo tiempo
      + PROPERTY lSort INIT .f. // Ordenación por columnas
      + PROPERTY lSearch INIT .t. // Búsqueda por columnas
      + PROPERTY cSearchTxt INIT "Buscar" // Texto placeholder casilla búsqueda columna
      + PROPERTY cSearchId INIT "buscar" // Id de la caja de búsqueda externa
      + PROPERTY lScroll INIT .f. // Browse scrollable
      + PROPERTY cHeight INIT "90vh" // Altura del browse

      Ver ejemplo de uso en https://nefele.dev/foro/topic/nuevo-ejemplo-warraybrowse/

      Loading spinner
    • #1661
      Alfredo SanzAlfredo Sanz
      Superadministrador

      Rev 2052

      27-12-2020
      * source\zClass\source\Timepicker.prg
      + PROPERTY lAutoSelect INIT .F. // No se selecciona el texto al coger el foco
      + PROPERTY nAdjustTime // Ajusta el tiempo seleccionado en el picker al valor indicado.
      // si nAdjusTime = 5 y seleccionamos las 12:03, lo cambia a 12:05

      * source\zClass\source\button.prg
      % Eliminado el texto "Enviar" por defecto cuando :cText está vacío

      Loading spinner
      • Esta respuesta fue modificada 3 años, 6 meses por Alfredo SanzAlfredo Sanz.
      • Esta respuesta fue modificada 3 años, 6 meses por Alfredo SanzAlfredo Sanz.
    • #1660
      Alfredo SanzAlfredo Sanz
      Superadministrador

      Rev 2051

      18-12-2020
      * source\zClass\source\Rebar.prg
      ! Faltaban unas comillas en la img del Method PlaceLogo()
      * source\zClass\source\Form.prg
      + PROPERTY lValidatePlus INIT .f. // Sistema de validación basado en https://jqueryvalidation.org/
      + PROPERTY cValidateLang INIT "es" //Idioma a usar
      + PROPERTY cValidateText // Texto alternativo al usado por defecto "Este campo es obligatorio"

      * source\zClass\source\edit.prg
      ! No se podia usar nLength y nTimeOut conjuntamente
      + cAjaxTimeOut recibe parámetros definidos en aParams

      16-12-2020
      * source\zClass\source\edit.prg
      ! Permitia erroneamente caracteres especiales en las cadenas de AutoComplete, ahora filtra '"', CRLF, CR, LF

      15-12-2020
      * AddOn\MySQL MariaDB\Source\MariaBD_Connect.prg
      % FUNCTION MariaDBConnect(cSqlHost,cSqlUser,cSqlPass,cSqlDDBB,nPort,nTimeOut)
      // Añadidos nPort y nTimeOut

      * source\ConfigINI_DDBB.prg
      % Se ha añadido nPort y nTimeOut a las llamadas a los DataSource de Xailer

      Loading spinner
      • Esta respuesta fue modificada 3 años, 6 meses por Alfredo SanzAlfredo Sanz.
      • Esta respuesta fue modificada 3 años, 6 meses por Alfredo SanzAlfredo Sanz.
    • #1659
      Alfredo SanzAlfredo Sanz
      Superadministrador

      Rev 2050

      12-12-2020
      * source\zClass\source\cgi.prg
      ! Corregido bug con UserData

      09-12-2020
      * source\NefeleFunctions.prg
      % FUNCTION nfl_OpenModal(cId, lDirect, cIdFocus)
      % FUNCTION nfl_CloseModal(cId, lDirect, cIdFocus)
      // con cIdFocus podemos indicar el control que cogera el foco al Abrir/Cerrar el Modal

      * source\zClass\source\icon.prg
      METHOD Merge( oIcon )// Fusiona las propiedades del Objeto con las del pasado por parametro si no se han definido

      * source\zClass\source\ItemListView.prg
      % Aplicamos el Methodo Merge en oIconEdit y oIconDelete, para poder definir propiedades en cada Item y el resto utilizar las de ListView
      % Permitimos utilizar Iconos sin su correspondiente cOnClick, son meramente informativos

      * source\zClass\source\cgi.prg
      ! Cookie2Session y Session2Cookie no estaba funcionando correctamente

      07-12-2020
      * source\zClass\source\FlatingBtn.prg
      ! Corregido bug al crear el control

      Loading spinner
      • Esta respuesta fue modificada 3 años, 6 meses por Alfredo SanzAlfredo Sanz.
      • Esta respuesta fue modificada 3 años, 6 meses por Alfredo SanzAlfredo Sanz.
    • #1658
      Alfredo SanzAlfredo Sanz
      Superadministrador

      Rev 2049

      04-12-2020
      * source\zClass\source\Badge.prg
      % Evento OnClick en los Badge, se modifica el cursor a pointer si hay cOnClick
      + PROPERTY cOnClick
      + PROPERTY cTarget

      * source\zClass\source\Chips.prg
      % Evento OnClick en los Chips, se modifica el cursor a pointer si hay cOnClick
      + PROPERTY cOnClick
      + PROPERTY cTarget

      * source\zClass\source\NefeleControl.prg
      % METHOD CreateEvent // Admite URL como cFunction, las ejecuta con Window.Open e incluye un event.stopPropagation()

      Loading spinner
      • Esta respuesta fue modificada 3 años, 6 meses por Alfredo SanzAlfredo Sanz.
      • Esta respuesta fue modificada 3 años, 6 meses por Alfredo SanzAlfredo Sanz.
    • #1657
      Alfredo SanzAlfredo Sanz
      Superadministrador

      Versión 0.3.6

      04-12-2020
      * source\zClass\source\MsgAlert.prg
      ! No ponia correctamente la version de ext-materialize, utilizaba la de Nefele.ch
      % Ahora si se carga en una página habilita ::lAlert en tWebPage y si no lo carga directamente pero utilziando ::oCGI:cVersionMaterialize

      03-12-2020
      * source\zClass\source\ItemListView.prg
      % Los eventos OnClick de ambos botones incluyen una aParam "EVENT" con "EditClick" o "DeleteClick"

      01-12-2020
      * source\zClass\source\ArrayBrowse.prg
      % Las columnas no heredaban los aParams del WArrayBrowse - Resuelto

      29-11-2020
      * source\NefeleFuntions.prg
      - FUNCTION ReplaceChars // Deprecated
      + FUNCTION nfl_ReplaceChars
      * source\zClass\source\NefeleControl.prg
      % METHOD EventFunction // Cuando la llamada a generar es por AJAX añade un aParam para que el CGI pueda identificarla
      * source\zClass\source\Cgi.prg
      + PROPERTY lAjaxCall INIT .F. // La llamada al CGI ha sido desde AutoFormAjax

      28-11-2020
      * source\zClass\source\ItemFloatButton.prg
      % Pasan a heredar de wControl para integrarle CreateEvent
      + METHOD CreateFloatBtn() // Para utilizar en wFloatBtn
      + METHOD CreateSplitBtn() // Para utilizar en wSplitButton
      % Aplicadas las propiedades ::cClrPane y ::cClrText, si es xc_Divider ::cClrText es el color de la linea
      * source\zClass\source\SplitButton.prg
      % Implementamos CreateEvent en los iTems para homogeneizar código
      % Utilizamos CreateSplitBtn para crear cada uno de los Item
      * source\zClass\source\FloatingBtn.prg
      % Implementamos CreateEvent en los iTems para homogeneizar código
      % Utilizamos CreateFloatBtn para crear cada uno de los Item
      * source\zClass\source\icon.prg
      + PROPERTY cClrIcon // Aunque internamente utilizamos ::cClrText me parecia que era más intuitivo

      27-11-2020
      * source\NefeleFunctions.prg
      ! FUNCTION nfl_CreateParamToScript // Con los HASH y los Array los paso a BASE64 para evitar problemas
      * source\zClass\source\Cgi.prg
      % METHOD New // Procesa los HASH y ARRAY encapsulados por Néfele en aParams en BASE64
      * source\zClass\source\PDFReport.prg
      + PROPERTY cModalBevel INIT "" // Si queremos que una vez creado el PDF se visualize en una ventana Modal

      26-11-2020
      * source\zClass\source\PDFReport.prg
      + PROPERTY lShow INIT .T. // Se abre directamente en modo vista previa en otra pestaña del navegador
      // Metadatos del PDF
      + PROPERTY cPDFTitle INIT ""
      + PROPERTY cPDFSubject INIT ""
      + PROPERTY cPDFAuthor INIT ""
      + PROPERTY cPDFKeyword INIT ""
      + PROPERTY cPDFCreator INIT "wPDFReport by Néfele Project"

      25-11-2020
      * source\XA_Application.prg
      % METHOD Console // Soporte de HASH como valor para enviar a NéfeleConsole
      * source\NefeleFunctions.prg
      % FUNCTION nfl_CreateParamToScript // Admite HASH y ARRAY como valores de aParam
      * source\zClass\source\Cgi.prg
      % METHOD New // Procesa los HASH y ARRAY encapsulados por Néfele en aParams

      22-11-2020
      * source\zClass\source\ItemListView.prg
      ! cOnClickDelete no estaba funcionando

      21-11-2020
      * source\ConfigINI_DDBB.prg
      + Soporte para PostgresSQL
      * include\Nefele.ch
      + #define xc_PostgreSQL 10505
      * source\zClass\source\AdoConnect.prg
      + Soporte para PostgreSQL

      Loading spinner
      • Esta respuesta fue modificada 3 años, 6 meses por Alfredo SanzAlfredo Sanz.
    • #973
      Alfredo SanzAlfredo Sanz
      Superadministrador

      Resumen modificaciones Néfele 0.3

      - NéfeleWizard
      + Podemos indicarle la carpeta de Apache y de Xailer de manera manual
      + Nos permite crear un proyecto Néfele vacio, solo con el enrutados y una página con "Hola Mundo"
      % Si seleccionamos un combre de carpeta con un espacio, se sustituye en el proyecto y en el alias por un guion medio "-"

      - wArrayBrowse
      + PROPERTY lIncludeArray INIT .t. // incluye un array json en el html con los datos de la tabla
      + PROPERTY aSaveData INIT {} // Datos a incluir en el array anterior, por defecto toda la tabla
      + FUNCTION jSonToArray( cId ) // Retorna el codigo javascript para convertir el json en un array javascript RETURN 'JSON.parse(document.querySelector("'+cId+'").value)'
      % el Width de la columna ahora puede ser un % (si :nWidth es numérico) o la medida css indicada ( si es una cadena)
      + 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 }

      - wItemColBrowse
      + PROPERTY cMacro INIT "" // Control a evaluar en la creación de la columna
      + PROPERTY cToolTip INIT "" // tooltip de la celda

      - wBadge
      // Nuevo Control para la creación de Badge
      % Para forzar a que calcule correctamente el ancho del Badge en lChip, reemplazamos los espacios de cText por  
      + PROPERTY lChips // El Badget se presenta como un wChips
      + PROPERTY lPulse // Se presenta con efecto Pulse
      + PROPERTY lShadow // Se presenta con sombra
      + PROPERTY cImage // Imagen
      + PROPERTY cAltImage // texto Alternativo
      + PROPERTY cIcon // Icono que aparecera a la izquierda
      + PROPERTY cClrIcon // Color del Icono
      % METHOD Set( cText, cClass, lBold, lNew, lPulse, cClrPane, cClrText )
      + METHOD SetArray( aProperties ) // aProperties := {cText, cClass, lBold, lNew, lPulse, cClrPane, cClrText}

      - wBevel
      + Incorporadas funcionalidades de wPanel
      + PROPERTY lShowFocus INIT .f. // Se resalta al pasar el raton por encima
      + PROPERTY lUseCard INIT .f.
      + PROPERTY nShadowDeep INIT 2 // Tipo de sombra a usar
      + PROPERTY cText INIT "" WRITE INLINE ::FcText := ::AdjustText( Value )
      + PROPERTY cClrTitle INIT "" WRITE INLINE ::FcClrTitle := CheckClr(Value)
      + PROPERTY nFontTitle INIT 5 // Tamaño de la Fuente segun Materialize para el Titulo
      + PROPERTY cTitleAlign INIT xc_Left // Alineación del Titulo
      + PROPERTY lLine INIT .F. // Pone una linea horizontas bajo el Title
      + PROPERTY cBackground // Fondo de la Página (realmente: fondo del tag <main>
      + PROPERTY cBackgroundSize // Tamaño del fondo
      + PROPERTY cBackgroundColor INIT "" // Color del fondo
      + PROPERTY lBackgroundRepeat INIT .T.
      + PROPERTY cBackgroundAlign INIT "center center" // Horizontal y Vertical

      - wBevelFoot
      + PROPERTY lScroolBars INIT .f. // para que no salgan las barras en el footer modal
      % El cId de bevelfooter pasa a ser el cId del bevel + "_" + ::cClassId

      - wButton
      + PROPERTY cClrText INIT "" // Anunque la heredaba de wControl no se estaba aplicando en el Create
      ! PROPERTY lBold Ponia <strong> y no se notaba, lo sustitui por <b>
      + PROPERTY lHide INIT .f. // oculta el botón
      // Llamada a URL externa con o sin parametros por POST y GET
      cAction := URL a llamar
      cUrlParam := Parametros a enviar por GET
      aParams := Parametros a enviar por POST
      Por defecto los parametros por POST se encriptan, se puede deshabilitar en ::lEncript
      + PROPERTY aDefaultClass INIT {'waves-effect waves-light'} //Clases por defecto a aplicar al boton
      + PROPERTY cIconWidth INIT "20px" // Tamaño por defecto del icono
      + PROPERTY nIconRotate // Rotacion en º a aplicar al icono
      + PROPERTY cToolTip

      - wCard
      + Pasa a ser un objeto contenedor dentro del que podemos añadir otros controles, se incuyen en la parte baja
      del card en el area difinida como 'class="card_action"'.

      - wChips
      + PROPERTY lPulse // Se presenta con efecto Pulse
      + PROPERTY lShadow // Se presenta con sombra

      - tCGI
      + METHOD aParamsToHash( lMini )
      // lMini == .T. { Params1 => value1, Params2 => value2, ... }
      // lMini == .F. { Params1 => { value => value1, tmpfile => tmpfile, type => type}, ...}
      ! SendHardCookie no funcionaba bien para formatos fechas. Formato correcto: oCGI:SendHardCookie("Variable","Valor","2020100215:00:00")
      + METHOD SendJSon( cJSon ) // Para hacer envios de JSon bien declarado, no envia cTTFB
      + PROPERTY aColors INIT ArrayColors()
      + PROPERTY cSameSitePolicy INIT "lax" //protección cookies //https://www.tarlogic.com/blog/same-site-cookies-ataques-csrf/
      % Modificado SendStatus para que funcione lNoCache en Firefox
      % METHOD SendScript // Lo he modificado para que no incluya <script></script> porque ya enviamos el tipo mime como application/javascript"
      + METHOD TimeSuicide() // para contener todo el codigo a ejecutar para "Suicidar" nuestro CGI
      % Modificado Suicide() para que utilize TimeSuicide()
      + PROPERTY nSuicideInterval INIT 50 // segundos para que arranque el suicide
      + PROPERTY lPreloadCss INIT .f. //lee los css en modo precarga
      % En las cookies codificadas, el cambio de navegador ahora informa de un error pero no invalida el cookie

      - wEdit
      + Aplicación de la propiedad cAlingSymbol del oMask cuando ::oMask:cPicture == "currency"
      % En la creación de Edit de Fecha se estaba definiendo dos veces minDate y faltaba maxDate
      + METHOD Code() INLINE ::ohtml:cInMain
      + PROPERTY cToolTip
      % cAjaxTimeout ahora se ejecuta cambién cuando el control pierde el foco

      - wFileOpenDlg
      + PROPERTY cAcceptExt INIT {} // extensiones permitidas
      + PROPERTY lRequired INIT .t.
      + PROPERTY cHint // Mensaje que aparece en el control cuando esta vacio, tenga o no el foco

      - wImage
      + PROPERTY cImage2 INIT "" // imagen a mostar si pasamos el cursor sobre la principal
      + PROPERTY cAlt2 INIT ""
      + PROPERTY lClickZoom INIT .T. // Zoom al hacer click en la imagen
      % Quitado el cursor default a pointer. Da la sensación de que se puede hacer click para ir a otro sitio y puede resultar confuso. siempre tenemos :cCursor
      + PROPERTY cAlt INIT "" // permite asignar un alt a la imagen

      - wItemListView
      % En Firefox en el Badge se cortaba cText, si era lChips no pasaba
      - PROPERTY cBadgeClass INIT "bold" // clase a aplicar a los badges en el listview
      + PROPERTY oBadge // para aplicar los badges en el listview

      - wMask
      + PROPERTY cAlingSymbol INIT xc_Right Valores xc_right,xc_left
      // Para posicionar el simbolo de la moneda a la Derecha o a la Izquierda
      + PROPERTY lAutoUnmask INIT .t. // Elimina los caracteres propios de la máscara al consultar el valor
      + PROPERTY cValidatorAPlaceHolder INIT " " //Caracter del placeholder
      + PROPERTY cValidatorBPlaceHolder INIT " " //Caracter del placeholder

      - NefeleFunctions
      + FUNCTION ArrayColors() // Nos da la lista completa de los colores de Materialize { "#rrggbb", "nombre", .F.}
      % FUNCTION CheckClr( cClr )
      cClr puede ser:
      Un valor númerico resultante de rgb(50,255,255)
      Una cadena "#rrggbb"
      o una cadena "rgb(r,g,b)"
      Si corresponde con un color de Materialize nos renorna la Clase del color, si no crea una clase nueva nfl-rrggbb
      y la añade a oCGI:aColors para evitar duplicados
      + FUNCTION ReplaceClrMaterialize( cItem, nCol ) // Busca cItem en la lista de colores Materialize y nos retorna la hexadecimal, si no lo encuentra nos retorna cItem
      % Ahora, la creación de iconos en todo nefele se hace a través de FUNCTION PutIcon()
      + UpdateAjaxById( {{ "id del elemento", valor},{...}}) // actualiza el .value del control con el id indicado con el nuevo valor
      + ReplaceChars( cInput, cSearch, cReplace ) -> cOutput
      + FUNCTION PreloadCss( cCss ) // Permite la precarga del css indicado para evitar bloqueos

      - wPanel
      % Pasa a heredar las funcionalidades de wBevel
      + PROPERTY lUseCard INIT .T. // si .f. no pone la clase Card al panel, que en algunos casos de problemas de ajuste

      - wRebar
      % si cClrText tiene contenido, se lo asigna a cClrTitle, dado que en la mayoría de los controles usamos cCrlText

      - wSeparator
      + PROPERTY cProgressClr INIT ""
      + PROPERTY cProgressPane INIT ""
      + PROPERTY nProgress // muestra un preloader horizontal dentro del separator con el % de linea indicado. si es -1 lo hace indeterminate https://materializecss.com/preloader.html

      - wSideNav
      % METHOD AddItem(cText,cOnClick,cIcon,nStyle,aParams,cAction,aBadge) // añadido aBadge {{texto[, clase a utilizar (new) y color]}} // añade badges al menu
      + PROPERTY cTitleClass INIT "z-depth-5" // Clase a aplicar al Title del menu

      - wItemSidenav
      + PROPERTY oBadge // para aplicar los badges en el SideNav

      - wSplitButton
      % METHOD AddItem(cOnClick, cIcon, cText, lDivider, aParams, cAjaxBevel, lModalResult, aBadge) // añadido aBadge {{texto[, clase a utilizar (new) y color]}} // añade badges

      - wItemFloatButton
      + PROPERTY oBadge // para aplicar los badges en el wSpliButton
      // Pordefecto oBadge:lNew := .T.

      - wTabs
      // Nuevo Control de Tabs
      + PROPERTY cClassId INIT "tab"
      + PROPERTY aWidth init {,,,} // Ojo que no funciona bien materialize
      + PROPERTY aItems INIT {}
      + PROPERTY lFixedWidth INIT .t.
      + METHOD AddItem( cTitle, cTarget, lDisabled, lDefault)

      - wItemTabs
      + PROPERTY cFolder // id del bevel asociado
      + PROPERTY cTitle
      + PROPERTY lDisabled INIT .f.
      + PROPERTY lDefault INIT .F. // Pestaña por defecto

      - tWebPage.prg
      + PROPERTY aBreadCrumbs INIT {} // Pone breadcrumbs al pie de página {{url,texto},...}
      + PROPERTY lSnippet INIT .T. // si .f. no pone description en serp
      + PROPERTY cDescription INIT Application:cDescription //permite un meta description personalizado para la página
      % Movida la sábana al pie de página para que no afecte al seo en buscadores
      % No se estaban cerrando bien los <div> del Footer cuando habia Links
      + 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
      + 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
      % Cambiada la posición del shadowsheet para que ocupe toda la página

      Loading spinner
    • #704
      Alfredo SanzAlfredo Sanz
      Superadministrador

      Rev.232 (16-09-2020)

      * source\image.prg
      + PROPERTY cImage2 INIT "" // imagen a mostar si pasamos el cursor sobre la principal
      + PROPERTY cAlt2 INIT ""
      + PROPERTY lClickZoom INIT .T. // Zoom al hacer click en la imagen
      % Quitado el cursor default a pointer. Da la sensación de que se puede hacer click para ir a otro sitio y puede resultar confuso. siempre tenemos :cCursor

      * source\nefeleControl.prg
      + METHOD Create() Ha de tener los procesos comunes a todos los botones. LLamar con ::super:create() al principio del create del control
      + METHOD Measure( n ) //Devuelve medidas en formato correcto
      + Incoporado ::nTabIndex al método Create

      * source\button.prg
      + PROPERTY lHide INIT .f. // oculta el botón. nota: hay que añadirlo a otros botones

      * source\Button.prg
      // Llamada a URL externa con o sin parametros por POST y GET
      cAction := URL a llamar
      cUrlParam := Parametros a enviar por GET
      aParams := Parametros a enviar por POST
      Por defecto los parametros por POST se encriptan, se puede deshabilitar en ::lEncript

      * source\Edit.prg
      ! NO estaba aplicandose lAjaxWaitOn en AjaxTimeOut
      ! NO se añadia # a cAjaxBevel en AjaxTimeOut
      ! No ponia en minusculas cAjaxBevel

      * source\ListView.prg
      % Se habia desconfigurado en nType xc_Avatar
      % Optimizado el uso de cSecondTitle cunado no es Colapsible

      Loading spinner
    • #625
      Alfredo SanzAlfredo Sanz
      Superadministrador

      Rev.228 (09-09-2020)

      * source\FloatBtn.prg
      % El texto que aparece al dato del btn ahora tiene el id lbl_ + cIdDelBoton

      * source\button.prg
      + PROPERTY aDefaultClass INIT {'waves-effect waves-light'} //Clases por defecto a aplicar al boton
      + PROPERTY cIconWidth INIT "20px" // Tamaño por defecto del icono
      + PROPERTY nIconRotate // Rotacion en º a aplicar al icono
      + PROPERTY cToolTip

      * source\SideNav.prg
      + PROPERTY cTitleClass INIT "z-depth-5" // Clase a aplicar al Title del menu

      * source\Rebar.prg
      % si cClrText tiene contenido, se lo asigna a cClrTitle, dado que en la mayoría de los controles usamos cCrlText

      * source\ListView.prg
      + METHOD CreateItem ( oItem ) // la creación del item se hace en un method, no directamente en el código

      * source\image.prg
      + PROPERTY cAlt INIT "" // permite asignar un alt a la imagen

      * source\NefeleFunctions.prg
      % ahora, la creación de iconos en todo nefele se hace a través de FUNCTION PutIcon()
      + UpdateAjaxById( {{ "id del elemento", valor},{...}}) // actualiza el .value del control con el id indicado con el nuevo valor

      * source\NefeleControl.prg
      + PROPERTY lAjaxAppend INIT .f. // Si .t. la respuesta ajax se añadirá a la actual

      * source\mask.prg
      + PROPERTY cValidatorAPlaceHolder INIT " " //Caracter del placeholder
      + PROPERTY cValidatorBPlaceHolder INIT " " //Caracter del placeholder

      * source\cgi.prg
      + PROPERTY cSameSitePolicy INIT "lax" //protección cookies //https://www.tarlogic.com/blog/same-site-cookies-ataques-csrf/
      % Modeficado SendStatus para que funcione lNoCache en Firefox

      * source\webpage.prg
      + PROPERTY lSnippet INIT .T. // si .f. no pone description en serp
      + PROPERTY cDescription INIT Application:cDescription //permite un meta description personalizado para la página
      % Movida la sábana al pie de página para que no afecte al seo en buscadores

      * source\edit.prg
      % cAjaxTimeout ahora se ejecuta cambién cuando el control pierde el foco

      Loading spinner
    • #596
      Alfredo SanzAlfredo Sanz
      Superadministrador

      Rev.226 (02-09-2020) 

      * source\nefelecontrol.prg
      % CreateEvent // Estaba añadiendo un ; de más cuando se utilizaba para llamar a una funcion JS directamente

      * source\bevel.prg
      % reemplazada la llamada a ::CreateOnClick por ::CreateEvent para ir eliminando ::CreateOnClick

      Loading spinner
      • Esta respuesta fue modificada 3 años, 10 meses por Alfredo SanzAlfredo Sanz.
    • #467
      Alfredo SanzAlfredo Sanz
      Superadministrador

      Rev.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

      Loading spinner
    • #454
      Alfredo SanzAlfredo Sanz
      Superadministrador

      Rev.222 (22-08-2020)

      CGI

      + PROPERTY nSuicideInterval INIT 50 // segundos para que arranque el suicide
      + PROPERTY lPreloadCss INIT .f. //lee los css en modo precarga

      Nefelecore

      + 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).';

      Loading spinner
      • Esta respuesta fue modificada 3 años, 10 meses por Alfredo SanzAlfredo Sanz.
    • #393
      Alfredo SanzAlfredo Sanz
      Superadministrador

      Rev.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 celda

       ArrayBrowse

      + 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 bloqueos

      Loading spinner
    • #369
      Alfredo SanzAlfredo Sanz
      Superadministrador

      Rev.214b (12-08-2020)

      oEdit:oMask

      + PROPERTY lAutoUnmask INIT .t. // Elimina los caracteres propios de la máscara al consultar el valor

      Loading spinner
    • #367
      Alfredo SanzAlfredo Sanz
      Superadministrador

      Rev.214 (12-08-2020)

      WebPage

      % Cambiada la posición del shadowsheet para que ocupe toda la página

      Cgi

      % En las cookies codificadas, el cambio de navegador ahora informa de un error pero no invalida el cookie

      Loading spinner
      • Esta respuesta fue modificada 3 años, 10 meses por Alfredo SanzAlfredo Sanz.
    • #362
      Alfredo SanzAlfredo Sanz
      Superadministrador

      ===== PUBLICADA LA VERSIÓN 0.02 DE NEFELE ====

      Os la podéis descargar de https://nefele.dev/blog/download/nefele-wizard-0-02/

      Loading spinner
    • #189
      Alfredo SanzAlfredo Sanz
      Superadministrador

      Rev.212 (09-08-2020)

      Edit

      % Arreglado bug que impedia utilizar oMask:cPicture y nLenght al mismo tiempo

      % Arraglado bug que impedía asignar propiedades si no se ponia cPicture

      CGI

      + PROPERTY   lShowSystemMessages  INIT .t. // Muestra por console errores generados por el sistema

      Dropify

      % Arreglado bug en el tipo de ficheros aceptados

      zItemColBrowse

      + PROPERTY cClass INIT "" // clases adicionales a cada columna

      Loading spinner
      • Esta respuesta fue modificada 3 años, 10 meses por Alfredo SanzAlfredo Sanz.
    • #170
      Alfredo SanzAlfredo Sanz
      Superadministrador

      Rev.211 (05-08-2020)

      ArrayBrowse

      % Corregido problema en el onClick de los botones de columna

      Webpage

      % cVersionCoreFiles // Hasta tener un solo ch La versión nefele pasa a indicarse directamente en la property

      + PROPERTY lShadowSheetCircle INIT .T. // si la sábana ha de mostrar o no el circulito girando

      + PROPERTY aOgTags INIT "" // Etiquetado pagina para Fb y Whatssap {sitename, title, description, image}

      Para usar esta característica, tan solo tenemos que incluir la propiedad aOgTag en una vez definia a página. El siguiente ejemplo corresponde a la página https://samples.nefele.dev/archivo (Compártela por Whatsapp para ver cómo queda)

       

       

      Cgi

      + METHOD Tiempos // Permite tener un log de los tiempos de ejecución de la app.

      % lCheckNavigator cambiado a .f. por defecto

      Loading spinner
      • Este debate fue modificado 3 años, 11 meses por Alfredo SanzAlfredo Sanz.
      • Este debate fue modificado 3 años, 11 meses por Alfredo SanzAlfredo Sanz.
      • Este debate fue modificado 3 años, 11 meses por Alfredo SanzAlfredo Sanz.
      • Este debate fue modificado 3 años, 11 meses por Alfredo SanzAlfredo Sanz.
      • Este debate fue modificado 3 años, 11 meses por Alfredo SanzAlfredo Sanz.
      • Este debate fue modificado 3 años, 11 meses por Alfredo SanzAlfredo Sanz.
      • Este debate fue modificado 3 años, 11 meses por Alfredo SanzAlfredo Sanz.
      • Este debate fue modificado 3 años, 11 meses por Alfredo SanzAlfredo Sanz.
      • Este debate fue modificado 3 años, 11 meses por Alfredo SanzAlfredo Sanz.
Mostrando 20 respuestas a los debates
  • El debate ‘[Nefele] Changelog’ está cerrado y no admite más respuestas.

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para «permitir cookies» y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en «Aceptar» estarás dando tu consentimiento a esto.

Cerrar