ullia

textdarstellung der historie

textdarstellung der historie

  • webauthn / ullia_manifest_utils / ulliaPictureImageBuilder_utils

    24.05.2020

    21. Mai 2020

    Neu:

    • webauthn 
    • ullia_manifest_utils
    • ulliaPictureImageBuilder_utils

    inputmode: getColDefInputmode, autocomplete: getColDefAutocomplete

    17.05.2020

    17. Mai 2020

    Neu:

    • getColDefInputmode: Zusätzliche Renderoption für Eingabefelder, definiert über dataOptions.
      Syntax: inputmode={mode} mit {mode}=[text,search,tel,url,email,numeric,decimal,none]
      Beispiel: 
        inputmode=tel  // gibt auf dem iPhone die Telefon-Tastatur
    • getColDefAutocomplete: analog zu getColDefInputmode kann über dataOptions das autocomplete-Attribut speziell angegeben werden
      Syntax: autocomplete={mode} mit {mode} = [on,off,name,honorific-prefix,given-name,additional-name,...]
    • Kombintionsbeispiele:
      Email-Eingabe in einem Textfeld:
      input-type=text; inputmode=email,autocomplete=current-password
      Email-Adresse als Benutzernamen verwenden:
      input-type=text; inputmode=email,autocomplete=username


    getColDefAliasName, getColDefKeyName

    26.04.2020

    26. April 2020

    Neu:

    • getColDefAliasName: Neues ColDef-Attribut _aliasName.
      Dieses Attribut wird intern verwendet um den Alias-Namen eines "Key-Namen" zu transportieren.
      Anwendung: In SELECT-Statements kann der Name beim Anzeigen durch einen Aliasnamen getauscht werden.
      Beispiel: SELECT firstName AS MeinVorname FROM ...
      bewirkt das der Wert von firstName aus ener Tabelle auf der Oberfläche als MeinVorname angezeigt wird.
      Sowohl der Ursprungsname "firstName" als auch der AliasName "MeinVorname" kann hierbei zusätzlich noch über die i18n Tabelle weiter übersetzt werden.
      Nebeneffekt: Wenn auf verschiedenen Seiten der Key ein und derselben Tabellen-Spalte unterschiedlich übersetzt werden soll, dann kann hiermit auch über den AliasNamen ein separater Übersetzungsschlüssel erzeugt werden.
      Beispiel:
        auf Seite A: SELECT firstName AS firstName-Page-A ...
        auf Seite B: SELECT firstName AS firstName-Page-B ...
    • getColDefKeyName: Aufgrund der Einführung von getColDefAliasName wurde die bisherige Funktion getColDefName zur besseren Unterscheidung in getColDefKeyName umbenannt

    fieldset-Container: neuer Coldef-Type / javascript (client): neue PushServerMessage /sql_excecute_delete

    19.04.2020

    19. April 2020

    Neu:

    • fieldset-Container: Neuer ColDef-Type
      Der neue Typ "fieldset-Container" erzeugt analog zum ColDef-Type "HTML-Content" ein edierbares HTML-Fragment. Initial wird dieses jedoch mit einem fieldset/legend/label HTML-Fragment vorbefüllt, wobei in label der ColDefName eingetragen ist.
      Anwendung: Der fieldset-Container eignet sich wunderbar um in diesem mehrere Controls mit Hilfe von Custom-Rendering via collectFrom Anweisungen zusammeln. Hierbei ist darauf zu achten das jedes eingesammelte Control selbst in einem fieldset/div Container eingebettet wird.
      Für eingesammelte Buttons, die in der Regel am Ende eines Fieldsets platziert werden sollen kann hierfür unter class  data der Wert "/foot clear-both" angegeben werden.
    • PushServerMessage: Neue Funktionen um vom client Messages an den Server zu senden
      Hierfür bestehen zwei Möglichkeiten: Einmal direkt über die Angabe des Message-Types (ERROR, INFO, WARNING,...] oder die zwei Hilfsfunktinen PushServerError und PushServerInfo.
      Bei PushServerMessage kann noch optional als zweiter Parameter ein authLevel angegeben werden.
    • sql_excecute_delete: Erste einfache Unterstüzung von
      DELETE * FROM
      Die Implementierung unterstützt aktuell nur das Löschen einer einzelnen Tabellenspalte.

    Security Hheader: X-Frame-Options, X-Content-Type-Options / darkmode_force-color-scheme_dark

    13.04.2020

    13. April 2020

    Oster-Release

    Neu:

    • appearance_tabTrapezoid-darkmode: Neu
    • Security Header:
      • X-Frame-Options: sameorigin
      • X-Content-Type-Options: nosniff
    • darkmode_force-color-scheme_dark: Neu zum Theme-Chooser hinzugefügt: darkmode_force-color-scheme_dark
      Hiermit kann auf Wunsch unabhängig von den Einstellungen des Betriebssystems (option: darkmode_prefers-color-scheme_dark) der Darkmode erwungen (force) werden



    Trace-Table PushTraceToTable / Get-, Has- und SetTraceMessageOptions / copy codeBehind

    11.04.2020

    11. April 2020

    Oster-Samstag Release

    Trace-Table

    Neu:

    • Trace-Table: Neue Log-Tabelle die Trace-Informationen aus den bekannten Push* Server-Aufrufen sowie aus Javascript per Ajax-Call aus debug_out zusätzlich in die neue hierfür angelegte Tabelle "traceTableLogMessages" schreibt.
    • PushTraceToTable: neue "Push-Message" die den übergebenen Text nicht im User-Interfache ausgiebt sondern diesen nur in die neue Tabelle "traceTableLogMessages" schreibt.
    • Get-, Has- und SetTraceMessageOptions: Lesen, Prüfen und Setzen von Trace-Message Optionen
    • copy codeBehind: Beim Kopieren von Formular-Vorlagen (all_applications / webFormTemplates) wird nun auch die  zugrundeliegende codeBehind Code mit kopiert. Hierbei wird der Modul und Funktionsname automatisch dem Ziel-Template angepasst



    line-clamp / autocomplete="new-password" / autocomplete-autofill / Webauthn mit Fido2 unter localhost verwenden

    31.03.2020

    31. März 2020

    webauthn / Fido / localhost Developement mit ullia / autocomplete

    Neu:

    autocomplete="new-password":

    • Bei Kennwort-Feldern (password,auth_password,passwordCrypted) wird beim Setzen der ColDef-Option autocompleteOff nun anstelle des bisherigen Wertes "off" der neue Wert "new-password" gesetzt.
      Hierdurch soll das Vorbefüllen mit den im Browser gespeicherten Daten verhindert werden.

    autocomplete-autofill:

    • Erste Implementierung der Chrome css-Eigenschaft "autofill" zum Setzen von spezifischen Styles, setzt aktuell zwingend das Vendor-Präfix -webkit- voraus und funktioniert nur in webkit Browsern (Chrome)
      Verwendung: Import der CSS-Datei autocomplete-autofill_varCtrl.css

    Nützliche CSS-Eigenschaften:

    • min
    • max
    • clamp

    line-clamp:

    • Mit der webkit spezifischen css-Eigenschaft "-webkit-line-clamp" kann erreicht werden, dass nur die hiermit definierte maximale Anzahl von Zeilen eines Textes angezeigt werden.
      Ullia bietet hierzu den appearance_Type line-clamp an. Dieser läd das zugehörige css und setzt im Control die css-Klasse line-clamp. Der Selector wird auf
      alle Unterelement (.line-clamp *)

    Entwickler-Info's:

    • Bei der Entwicklung von Webauthn Fido2 Anmedeverfahren im Browser hat man unter localhost die Herausforderung das die Browser bei der Kommunikation eine gesicherte SSL Verbindung voraussetzen.
      Das Problem: Kein Zertifikat für localhost vorhanden!
      • Mit Google Chrome kann das Problem wie folgt gelöst werden (erfolgreich getestet mit der Version 81):
      • Apache auf Port 80 lauschen lassen (Listen 80
      • Ullia local-webconfig auf konfigurieren auf g_httpRoot = 'https://localhost'
      • in Chrome https für localhost erlauben: chrome://flags/#allow-insecure-localhost
    • Weitere Lösungsideen und Ansätze:
      • https://letsencrypt.org/docs/certificates-for-localhost/chrome://flags/#allow-insecure-localhost

    IsRedirActivatorControl / RewriteRule root / ulliaAuthFido2 / userSelect-none_controlLabels / slideout-footer / SYSTEM_SECURITY erhöht

    31.03.2020

    25. März 2020

    Covid-19 Home-Holiday Release

    Neu:

    FIDO (Fast IDentity Online):

    • mit der neuen Application ulliaAuthFido2 ist es nun möglich bei mit Fido2 eingerichteten Konten die schnellen und komfortablen Fido2 Login Verfahren zu nutzen.

    IsRedirActivatorControl: Neue Methode um den ActivatorControl - syState eines Controls abzufragen.

    • Anwendung von IsRedirActivatorControl: Wenn z.B. durch einen Button ein Rediirect auf eine andere Seite innerhalb der App ausgeläst wird,
      dann kann auf der Zielseite dann bei diesem Get-Request darauf speziell reagiert werden.

    CSS-Style:

    • userSelect-none_controlLabels: neue CSS-Import-Datei (kann im main-css für ein spezifisches Layout eingebunden werden)
      Hierdurch wird das Markieren von Text unterbunden. Hilfreich ist das bei Beschriftungen von Controls (z.B. checkbox,radio-button labels). Ohne diesen Style kann es gelegentlich vorkommen das z.B. beim Klicken eines Radiobuttons Teile der Beschriftung ungewollt markiert werden.
    • slideout-footer: feststehender Footer, der beim Scrollen hervorkommt, aktuell eingesetzt beim Layout responsiveTOC.

    Bugfix:

    RewriteRule root:

    • Für das korrekte Setzen von pathQuery und Querystring im Server-Root (intern sysLevelRoot) der Ullia-Anwendungen mußte noch die RewriteRule ^-/(.*)$ ergänzt werden

    Erweiterungen:

    • Diverse zusätzliche Checks beim Ausführen von System-Kommando Button-Actionen, hierdurch werden bei Buttons die nicht gemanaged sind folgende Fehler ausgegeben:
        E_SYSTEM_SECURITY_VIOLATION_BUTTON,
        E_INVALID_BUTTON_SYS_CMD
        E_SYSTEM_SECURITY_VIOLATION
      Das Ausführen der Aktion wird in diesem Fall unterbunden

    SELECT *+ / hasHashValue, getHashValue / SKIP_TABDEF_EQ_CHECK / Bugfix ID-11: omRes_setProprietaryPrefix

    15.03.2020

    15. März 2020

    Release: w (nach v wie virus Covid-19)

    Neu:

    SELECT:

    • Mit SELECT *+ werden alle Controls einer SubForm selektiert, nur mit * (ohne +) werden wie bisher Button-Controls nicht selektiert.

    Hash-Array Helper Funktionen:

    • hasHashValue (aHash, key)
      liefert true, wenn aHash ein array ist das den key enthält,
    • getHashValue (aHash, key, default='')
      liefert falls vorhanden den Wert von aHash[key] ansonsten den default.
    • SKIP_TABDEF_EQ_CHECK:
      cleanup_derived_config_values gibt nun einen evt. modifizierten tabDef zurück. Aktuell wird hiermit beim Element navType das Pflichtfeld-Attribut (_req=1) zurückgesezt, wenn der Wert des navTypes aufgrund Vererbung vom Parent entfernt wird (spart etwas Daten :-).
      Ohne das Entfernen des Pflichtfeld-Attributs würde ansonsten der Validator den fehlenden Pflichtfeld-Wert anmeckern.
      Das Änderen der tabDef-Definition wurde nun aber beim Speicher in der Routine db_update bemerkt und als Fehler E_DB_UPDATE_TABDEF:DIFFERENT_1 ausgegeben.
      Da db_update als letzen Parameter optional eine Liste von csvOptions kennt wurde hier für diesen zur Unterdrückung des tabDef-Different-Checks der Optionale Parameter-Wert 'SKIP_TABDEF_EQ_CHECK' eingeführt.

    Bugfix:

    • ID-11: omRes_setProprietaryPrefix 
      biem zweiten Parameter (csvPropertyList) war beim Aufruf die String-Concatenation fälschlicherweise nicht mit dem Punkt sondern dem Komma codiert. ("cssGrid , ',hyphens:'" statt "cssGrid . ',hyphens:'"). Das führte im IE-11 dazu dass als CSS-Style nur noch ,hyphens: ausgeliefert wurde. Somit gab es im IE-11 hier kein relevantes CSS und die Seite wurde ungestyled ausgeliefert.
      FIX: das Modul omStyleCompiler in der Version 7.2.w neu deployen.

    Release Sigrid: SubstitudeBetween / Helper-Funktionen / Refactoring / sql_select_as_htmlTable: renderOptions=tableHeadVertical / app-resources

    15.03.2020

    15. März 2020

    Release: Sigrid

    Neu:

    app-resources:

    • App-Spezifische ressourcen, z.B. CSS-Styles die für alle Layouts greifen sollen
      Aufbau und Ablageort:
      • r/app-resources/{App-Name}/style-css
      • r/app-resources/{App-Name}/images
      • usw.

    Helper-Funktionen:

    sqlQuery_cachedMemoryRowHash:

    •     normalizeLineBreaks
    •     escapeLineBreaks
    •     normalizedEscapedLineBreaks
    •     descapeLineBreaks

    getRawTabDefRows:

    • gibt den Inhalt rechts von "[tabDefRows]:" zurück.


    Bugfix:

    sqlQuery_saveCachedMemory:
    Handling von "NextSequenceNumber" korrigiert / verbessert

    Refactoring:

    SubstitudeBetween: vierter Parameter value ist nun optional mit Default='' (leer)
    Hiermit kann dann ein Bereich zwischen zwei begrenzenden Texten gelöscht werden.

    sql_select_as_htmlTable: Erweiterung um einen zweiten optionalen Parameter renderOptions='' (Komma-Separierte Liste mit render-Optionen).
    Hiermit kann mit Setzten der Option "tableHeadVertical" erreicht werden dass die Spaltenüberschriften vertikal ausgegeben werden.

     

    Tempörär:

    component_dsnTabSubForms: (muss später nochmal per refactoring überarbeitet werden!!!)

    • IsActivatorControl('matchedSpecialLicenseDB')
    • IsActivatorControl('openIssues')
    • diverse Stellen bzgl. OSO-Spezifikas

    März-1 Release: FileSaveContent (...verify)

    01.03.2020

    1. März 2020

    März-1 Release

    Neu:

    Erweiterung:

    • FileSaveContent (...verify)
      Erweiterung von FileSaveContent um den optionalen dritten Parameter verify (default=false)
      FileSaveContent (filePath, content, verify=false)
      Wenn verify auf true gesetzt ist, dann wird überprüft ob die Datei existiert.

    Schoduvel-Release: webauthn

    23.02.2020

    23. Februar 2020

    Schoduvel-Release

    Karneval Braunschweig

    Neu:

    • webauthn-support: Ullia integriert mit der Version 7.2.t erste Funktionalitäten von Web Authentication:
      • An API for accessing Public Key Credentials
      • Level 1
      • W3C Recommendation, 4 March 2019

    webp-support

    16.02.2020

    16. Februar 2020


    Neu:

    • webp-support: Ullia unterstützt mit der Version 7.2.s auch das Grafikformat webp. WEBP-Bilder können intern gelesen und geschrieben werden, auch eine Konvertierung zwischen den Formaten png,jpg,gif und webp ist möglich.

    IsChoiceType / default choice (ChooseList) / cmsGalery: Unterstützung vom Suffix .JPG / appearance-ctrl / Ajax-Table: RenderType / Edg: Anpassungen für Webkit-Browser von Microsoft / Bugfixes

    19.01.2020

    19. Januar 2020

    Erweiterung:

    • IsChoiceType:
      Hilfsfunktion die anhand des Control-Type ermittelt ob ein Control auf Basis einer Liste aufgebaut wird (selectBox, radioList)
       
    • default choice (ChooseList):
      Default-Values von Auswahl-Listen (selectBox, radioList) können nun neben der Angabe des gewünschten Wertes auch über relative Angaben bestimmt werden:
      • [FIRSTINDEX]
      • [FIRSTINDEX+n] (n aus 0,1,...), falls n größer als die Anzahl der Elemente ist, wird der letzte Eintrag ausgewählt.
      • [LASTINDEX]
      • [LASTINDEX-n] (n aus 0,1,...), falls n größer als die Anzahl der Elemente ist, wird der erste Eintrag ausgewählt
      • [ENDSWITH:query-string], wählt den ersten Eintrag aus der Liste aus, der mit dem Text "query-string" endet.
      • [CONTAINS:query-string], wählt den ersten Eintrag aus der Liste aus, der den Text "query-string" enthält.
    • cmsGalery, cmsGalery_List: Unterstützung vom Suffix .JPG. Bisher wurden nur Dateien mit kleingeschriebenen Suffix unterstützt. Neu: Unterstützung unabhängig von Gross- Kleinschreibung.
    • appearance-ctrl: Zusätzliche CSS-Klasse appearance-ctrl um Controls zu Kennzeichnen, die speziell über einen Definition von appearance gerendert werden sollen.
      Anwendung: Für ein Layout wird generell festgelegt dass Radio-Boxen analog dem mdl-Style angezeigt werden sollen. Dieses Verhalten wird per CSS-Selector nur auf Controls angewendet welche nicht die CSS-Klasse appearance-ctrl haben. Somit werden Radio-Boxen die via appearance-Definirion wie Tab-Controls ausehen sollen auch so dargestellt.
    • Ajax-Table, RenderType: Auswertung des Spalten-Datentypes zum type-gerechten Rendern. Hiermit werden nun beispielsweise Spalten des Types url als href-Link ausgegeben.
    • COLDEFNAME_EXTRAS: Im Autoren-Admin-Mode werden beim Kommando "doEditDsnTabDefinition" nun unter dem Spatennamen auch shortcuts zum Editieren des Inhalts angeboten:
      • [edit] beim Typen richtext
      • [T:Template-Name]: bei template_ Definitionen in dataOption
      • [code] wie bisher bei codeBehind (mit spitzen Klappern)
    • Edg: Anpassungen für Webkit-Browser von Microsoft:
      Apperance wird nun analog zu Google-Chrome mit dem notwendigen Vendor-Präfix -webkit- ausgegeben
    • webCrawler_getPage: Erweiterung zum zusätzlichen optionalen Parameter "options". Falls dieser fehlt werden die curl-options über die neue Funktion webCrawler_getCurlOptions () ausgelesen. Diese enthält die Defaults und kann auch durch vorhergehenden Abruf verändert und dann übergeben werden.

    Änderungen:

    • ajaxDataTableDispatch, TableBodyUpdate: Auskommentierung von Sortable.create. Hiermit können Datenfelder in der Ajax-Tabelle markiert und kopiert werden.

    Refactoring:

    • Vereinheitlichung von Template-Parameter-Namen:
      Folgende Namen wurden hierzu in webSiteTemplates.psv ersetzt.
      • ImgRelPath -> RelPath
      • {-§ImgFile§-} -> {-§FileName§-}{-§suffix§-}
    • ajaxFinish: Aufruf von uml2html auskommentiert, da mit UTF-8 Umstellung obsolet.

    Bugfix:

    • finalClearPlaceholder: [-§ClientAbbr§-] wird nun in den entsprechenden Wert des aufrufenden Browsers ersetzt.

    Neujahrsrelease 2020: Layout / Themes: darkmode_prefers-color-scheme_dark / sysStateKeyVal: Trennzeichen-Erweiterung um Slash / Choise -> Choice

    01.01.2020

    01. Januar 2020

    Erweiterung:

    • darkmode_prefers-color-scheme_dark: Layout-Spezifische CSS-Datei zur Unterstützung des Dark-Mode. Wenn diese den Namen
      layout-option_prefers-color-scheme_dark.css
      erhält, dann kann diese optional auf der Konfigurationsseite "AppInfo" im Bereich "Layout / Themes" mit der Option
      darkmode_prefers-color-scheme_dark
      hinzugewählt werden. Hiermit kann dann die Wirkung der Einstellung "Darkmode" aus dem Betriebssystem optional gehalten werden. Sollte die Einstellung nicht optional sein, dann kann die Datei auch fest im Basis-Style-CSS des zugehörigen Layouts importiert werden.

      Aktivierung unter Windows: In den Einstellungen unter "Farben" im Dropdown "Farbe auswählen" den Eintrag "Dunkel" wählen.

    • sysStateKeyVal: Trennzeichen-Erweiterung um Slash
      Trennzeichen-Erweiterung im Dataprovider "dataProviderGetStateKeyValues" um das "/". Hiemit kann sysStateKeyVal auch in Teilen von Pfaden verwendet werden.
      Anwendungsbeispiel: SELECT FileName FROM [FILES]:/images/sysStateKeyVal_category_/gif

    Bugfix

    • Choise -> Choice: Korrektur der Schreibweise
    • css:
      • selAllChoise
      • emailLoginChoise
    • psv:
      • alreadyCustomerChoise
      • customerChoise
      • cashDeskDeliveryChoise
      • userLanguageChoise
      • userLocaleChoise
    • html:
      • tabSelAllChoice_
    • Ersetzungen:
      • customerloginchoise -> customerloginchoice
      • choiseNewOrCustomer -> choiceNewOrCustomer
      • formAdminCacheChoiseRefresh.xml -> formAdminCacheChoiceRefresh.xml
    • Abschließend (Case-Sensitive):
      • choise -> choice
      • Choise -> Choice

    Sylvesterrelease: layoutFolderStyleImporter / renderCmsGalery_List

    31.12.2019

    31. Dezember 2019

    Erweiterung:

    • layoutFolderStyleImporter: Style können nun auch einfach per FileCopy in den Layout-Ordner kopiert werden. Hierbei ist folgende Namenskonvention einzuhalten_
      • Ordnername muss dem Stylenamen entsprechen
      • html-Template: style.html
      • css-Import-File: style.css

    Enhancement:

    • renderCmsGalery_List: Anwendung von applyContentHash für das loopTempl schon bevor die loop startet. Hiermit werden auch über den type serverContext definierte daten-templates für Galerien berücksichtigt
      Beispiel:
      • name=Bild:
      • type=serverContext;
      • data=c//w240/
    • Im template kann dann der Platzhalter [=Bild=] verwendet werden um dann die unter data hinterlegten Werte zu rendern

    createCaptureValue / ullia_OSSL_encrypt

    24.11.2019

    24. November 2019

    Bugfix

    • ullia_OSSL_encrypt: openssl-Funktionen in Verbindung mit UTF-8 String-Manipulationsfunkrionen (mb_*) wie z.B. mb_strlen, mb_substr,... führen zu Fehlern. Hier müssen die nativen Funktionen strlen, substr,... verwendet werden

    Erweiterung:

    • createCaptureValue: Unterstützung von variablen Längen von Zufallscodes. Hierzu kann als Bereich im ColDef minlen und maxlen gesetzt werden.
      Beispiel: 2-9 Stellige Capture-Werte mit minlen=2 und maxlen=9.
      Wertebereiche (0 <= minlen <= maxlen <= mt_getrandmax().
      Wenn minlen nicht gesetzt ist oder minlen < 0, dann wird minlen auf maxlen gesetzt. Damit ergeben sich capture-Werte mit fester Länge.

    exceedsExcecutionTime / overscroll-behavior / customRenderTarget:DIV / SQL-CORE /toLowerCase, toUpperCase, stringPos, subString, stringLen / sql-Bulk Funktions CachedMemory

    27.10.2019

    20. Oktober 2019

    Neu:

    • exceedsExcecutionTime: Gibt zurück ob eine zu prüfende Ausführungszeit überschritten ist.
    • overscroll-behavior: CSS-Eigenschaft im materialAdmin-Layout (Menü #main > nav {overscroll-behavior: contain;}) erweitert. Hiermit wird verhindert dass beim Scrollen über die Grenzen des Containers die Seite im Hintergrund gescrollt und auch ggf. neu geladen wird.
    • toLowerCase, toUpperCase: lower- & uppercase- Funktionen die korrekt mit UTF-8 strings umgehen
    • stringPos, subString, stringLen: string-utilities für UTF-8 strings
    • sql-Bulk Funktions CachedMemory: Diverse Funktionen für Bulk CRUD Operationen auf ULLIA-TabDef Objekten

    Erweiterung:

    • renderConditions: Page Controls unterstützt nun auch die Typen
      buttons_like_radioList
      und
      buttons_like_checkboxList
    • customRenderTarget:DIV: Controls für die ein customRenderTarget definiert ist, jedcoh keinen umschließenden Container (LI) enthalten werden mit einem umschließenden div gerendert. In die HashMap werden nun beide Varianten über addCustRenderKeyVal hinzugefügt. Die mit dem umschließendem div erhält als prefix ein :DIV.
      Anwendung: ein Button soll innerhalb von richtext dargestellt werden, hierzu wird customRenderTarget=BTN_TEST definiert.
      Im richtext kann nun über (nur input-button) oder (div mit styles, events um den eingebettete input-button) das Control eingebettet werden.

    SQL-CORE: SELECT Base-Info

    • SELECT @                           App-/Domain-Liste
    • SELECT @dbDomain             DSN-Liste
    • SELECT dsn@dbDomain        TAB-Liste
    • SELECT dsn:tab@dbDomain  COL-Liste

    Erweiterung sqlParser: sqlDelete, sql_execute, sqlParser_*, sqlQuery_* / Template-Parts

    06.10.2019

    03. Oktober 2019

    Neu:

    • sql_execute: Neue Methode, hierüber wird nun auch das Löschen von Tabelleninhalten ermöglicht. Aktuell wird nur
      DELETE * FROM table (ohne WHERE-Selektion) unterstützt.
    • sqlDelete:
    • sql_execute
    • Template-Parts: Erweiterung der Template-Engine

    Refactoring

    • sqlParser_*, sqlQuery_*: Aufteilung in kleinere spezialisierte Module

    Erweiterung:

    • sqlParser: sql_init_by_select:
      usedTabDef berücksichtigt nun auch als tabDefKey [COUNT].
      Hiermit kann nun sehr einfach die Menge von Einträgen in einer Tabelle ermittelt werden:
      rowCount = sql_query_value('SELECT [COUNT] FROM table');

    TemplateSection

    29.09.2019

    12. September 2019

    Neu:

    • TemplateSection:
      Erweiterung im Template-Rendering. Ab dieser Version können bei den Template-Loops gleichzeitig mehrere Abschnitte definiert werden. Als Trenner wir analog zu TemplateLoop ([!--TemplateLoop--]) der Trenner
      TemplateSection ([!--==========TemplateSection==========--]) verwendet.
      Anwendung: Hierduch ist es nun beispielsweise für radioList-Controls möglich über verschiedene Template-Abschnitte zuerst die Liste der radio-Button zu rendern und dann in einem nachfolgenden Template-Abschitt die Liste der label-Inhalte zu platzieren.

    template-renderer: imageChooserUpload / blockChooserHeadCtrl / CSS Darkmode

    31.08.2019

    31. August 2019

    Neu:

    • template-renderer: imageChooserUpload: Falls hier ein SELECT-Statement verwendet wird, dann wird in den selektierten Spalten bei den typen imageChooserUpload der angegebene Pfad (unter _data) als ServerValue (colName-galeryPath) hinterlegt. Hiermit kann dann im Template über [-_colName-galeryPath_-] zugegriffen und somit der Pfad zu den Bildern erzeugt werden.
      Beispiel:
      style="background-image: url([_-HttpRoot-_]/c/[_-Bild-galeryPath-_]/w1438/[_-Bild-_])">
    • blockChooserHeadCtrl: Neues Design-Element über apperance gesteuert: Der Name es Controls erhält eine Breite von 100% darunter werden dann im Abhängigkeit des gewählten Controls die Optionen (radio- oder checkbox angezeigt. Garniert kann das dann noch zusätzlich optional noch mit den mdl- Styles.
    • CSS Darkmode: erste Unterstüzung im Style "ulliaWebStage" eingebaut.



    hyhenation, justify / Edge-Webkit-Chromium

    11.08.2019

    11. August 2019

    Neu:

    • hyphenation: Über die apperance-Option hyphenation kann für controls der Style hyphens:auto hinzugefügt werden. 
    • justify: Über die apperance-Option text-align__justify kann für controls der Style  text-align-justify (Blocksatz) hinzugefügt werden.

    Enhancement:

    • Edge-Webkit-Chromium: autodetect für zukünftigen neuen Microsoft Chromium Edge Browser erweitert.
      Ullia-Kürzel: edgWk

    json_convert_utils: escape_ullia_json / Refactoring:getRootFilePath / TIPP: Context-Menü via addToCurrentPage / Optimize / TLD-Emails / PrevPath / data-behaviour: radioList + checkboxList / SELECT * FROM [codeBehind] / theme=none

    28.07.2019

    28. Juli 2019

    Neu:

    • json_convert_utils: Erweiterung um die Funktion escape_ullia_json. Diese sorgt dafür dass in JSON eingebettete Texte, welche "Json-Reservierte" Zeichen wie z.B. das Apostroph (') enthalten escaped werden
      ' -> u0027
      Hierdurch können diese Texte über Ajax zum Client transportiert werden.
    • PrevPath: Interne Variable ([ =PrevPath= ]) zeigt auf den Vorgänger-Pfad.
      Anwendungsbeispiel: Navigationspunkt der beim Anklicken ein Redirect auf die aktuelle Seite mit zusätzlichen QueryParametern auslöst: Hierzu wird als sysCommand=redirectTo-configData eingetragen und dann in configDate=[ =PrevPath= ]?someKey=someVal
    • data-behaviour: radioList + checkboxList
      css-Imports via appearanceList
       - ulliaSysConfigCtrl_data-behaviour_radioList.css
       - ulliaSysConfigCtrl_data-behaviour_checkboxList.css
      Hiermit können individuelle Layout/Style -Einstellungen für die Controls vorgenommen werden. Die aktuelle Standard-Implementierung verwendet die Style analog zu .unseen
    • SELECT * FROM [codeBehind]:
      Unterstützung von SELECT-Statements welche über codeBehind [tabDefRows]: erzeugen
    • theme: das verwendete Theme kann nun auch mit dem über den url-get Parameter theme=none abgeschaltet werden. Das kann nützlich sein, wenn man eine Ullia-App mit abweichenden Standard-Style aufruft, dieser jedoch durch die vordefinierten theme-Werte des Standard-Layouts ein abweichendes Styling bekommt.
      Beispiel: https://ullia-domain/?style=someCoolStyle&theme=none

    Refactoring

    • getRootFilePath (): die neue Funktion getRootFilePath ersetzt die globale Variable $g_RootFilePath

    Enhancement:

    • Generic E-Mail validation: Basis Pattern für E-Mail mit neuer TLD-Domain erweitert. Darüber hinaus Individuell gewünschte Einstellungen können im jeweiligen spezifischen Control definiert werden.

    Optimize:

    • Helper OCID-Token: WEID_tokenAutoRefresh
      Performante Funktion zum Checken und Updaten von OpenConnectID WE-Token
    • CRYPTSESSION_raw_value: gibt den gespeicherten verschlüsselten Wert des zugehörigen Keys zurück, hiermit läßt sich performanter festtellen ob der Wert gesetzt ist.
      Verwendung z.B. in has_exchangeToken()

    Tipp:

    • Zum Integrieren des Context-Menüs als Overlay für jede Seite kann in einer beliebigen navArea eine Seite vom navType "addToCurrentPage" erzeugt werden. In Verbindung mit dem sysCommand "contextMenu" dann auf der jeweils aktuellen Seite beim Aufruf dieses "addToCurrentPage"-Menüpunktes ein Overlay (dragWindow) gerendert.



    Pfingst-Release: performControlFieldErrorId / u_labelFieldControls u_nearFieldErrors / Bugfix: performInplaceRename

    10.06.2019

    10. Juni 2019

    Neu:

    • performControlFieldErrorId: Anzeige von Feld-Validerungsfehlern direkt beim jeweiligen Control
    • u_labelFieldControls: generelle bodyClass-Option zur Voreinstellung von labelField-Controls Eingabefeldern
    • u_nearFieldErrors; Fehlermeldungen werden direkt beim Control ausgegeben

    Bugfix

    • performInplaceRename: beim neuen Tag wird nun strip_tags angewendet.



    labelAliasName / sudo-Anzeige / Array to TabDefRows

    26.05.2019

    26. Mai 2019

    Neu:

    • sudo-Anzeige: neben dem Level wird nun auch die Vertrauensstufe angezeigt
      Beispiel: sudo-5/2 bedeutet authLevel=5 mit authTrust=2
      authTrust wird nur angezeigt wenn dieser Größer als eins (>1) ist.
    • "Array to TabDefRows": Diverse Utilities zum Konvertieren von Arrays in ullia-interne Datenrepräsentationen:
        parseArrayAsTabDefHash
        convertArrayToUlliaTabDefRows
        parsArrayAsTabDefCsvChoise

    Refactoring:

    • dropDownColDefNamePrepare: Neu es wird nun die neue aColDefHash Eigenschaft "__labelAliasName__" zum Anzeigen des Labelnamens verwendet (falls vorhanden).
      Hiermit kann der ControlName beliebig gesetzt werden.
      Verwendung bei RenderTypeCtrl im Fall von appearance und filterChain



    spelling / appearance

    05.05.2019

    05. Mai 2019

    Neu:

    • grid:

    Refactoring:

    • apperance -> appearance: überarbeitet

    Spelling:

    • appearance: statt apperance

    Osterrelease: Web Speech API / onAjaxLoaded / Bugfix repairUnique(db_read_all)

    22.04.2019

    22. April 2019

    Neu:

    • Web Speech API:
    • onAjaxLoaded(activatorClientId, activatorName): Neues Client-Event. Das Event wird ausgelöst, sobald ein vorangegangener Ajax-Request wieder zum Client zurückkommt. Die Parameter activatorClientId und , activatorName enthalten die ClientId sowie den Namen des ursprünglich auslösenden Elements (wird als evt bei doHandleEvent übergeben wie folgt PIPE-separiert übergeben:
      doHandleEvent(el, activatorClientId + "|" + activatorName, "onAjaxLoaded");
      Die selbstdefinierte funktion kann dann ggf. prüfen ob die id (el.identify === activatorClientId) dem Element entspricht oder anhand von activatorName Entscheidungen zur weiteren Verarbeitung treffen, und dann ggf. spezifische Aktionen ausführen.
      HINWEIS: ullia-spezifische activatorNamen:
      • Footermenu: getSubNavi
      • dragWindow: dragWindowPersistWin
      • ...

    Bugfix:

    • repairUnique(db_read_all): der Check auf Eindeutigkeit (unique) wird nur ausgeführt wenn das entsprechende Feld auch als unique gekennzeichnet ist (_unique=1 oder id_=key).
    • case-Abschluss mit Doppelpunkt (:) statt Semikomon (;)
      Prüfen:
        case 'auth_email'; -> case 'auth_email':
        case $pwdColName;

    css scroll snap / smooth-scrolling / scrollbar-style / Bugfixes

    14.04.2019

    14. April 2019

    Neu:

    • css scroll snap: Erste "Gehversuche"
    • smooth-scrolling (via css): smooth: scroll-behavior: smooth;
    • scrollbar-style; @import url(webkit!-scrollbar-style.css?optimize=false);
      unterstützt exemplarisch das Stylen (in webkit-browsern) von scrollbar, scrollbar-thumb und scrollbar-track

    Erweiterung:

    • doEditDsnTabDefinition action:dsnTabEdit: Maskierung von Servervariablen wie z.B. während des editierens. Zuvor wurden diese aufgelöst gespeichert, was dann z.B. beim Wechseln der Stages zu falschen Konfigurationen führen konnte.

    Bugfix:

    • Trace-comment in css: Fixed: Kommentare innerhalb von Kommentaren
    • Kein Speichern von vorkompilerten CSS und Javacript im Trace-Modus

    Serverumzug / Konsolidierung: apps & Layouts

    31.03.2019

    31. März 2019

    Neu:

    • Serverumzug: Upgrade auf php-7.2 (Modul-Variante)
      Umzug in der Nacht vom 29.3.2019 bis zum Morgen des 30.03.2019.
      php 7.2 auf Linux 4.4.0-143-generic #169-Ubuntu SMP Thu Feb 7 07:56:38 UTC 2019
    • Konsolidierung von apps:
      • todomvc
      • singlePageApp
      • fotoschule
      • karnagel
      • ulliaDE
      • blende1neu
      • blende1
      • tools
      • sample
    • Konsolidierung von Layouts:
      • amp
      • antikdeele
      • blende1qs
      • bs
      • camara
      • cts
      • ulliaDE
      • ipad
      • iPhone
      • jqm
      • karnagel
      • lederstrumpf
      • m
      • magazin
      • metro
      • photo
      • taffy
      • tasks
      • texoraFlex
      • ulliaDE

    Page-Caching-Support für https

    28.03.2019

    28. März 2019

    Neu:

    • Page-Caching-Support für https: 
      Bisher war ein Caching von vorgerenderten Seiten nur bei nicht verschlüsselten Seiten enabled.
      Mit dieser Version (7.2.a) kann das Feature nun auch bei SSL/TSL verwendet werden.

    Server-Umzug

    27.03.2019

    27. März 2019

    Neu:

    • Server-Umzug: Upgrade auf php-7.1 (Modul-Variante): Ullia-Support für die Versionen 7.2 & 7.3
      Umzug in der Nacht vom 26.3.2019 bis zum Morgen des 27.03.2019.
      Bis zum 26.03.2019:
        php 7.0 auf Linux 3.13.0-166-generic #216-Ubuntu
      Ab dem 27.03.2019:
        php 7.1 auf Linux 4.4.0-143-generic #169-Ubuntu SMP Thu Feb 7 07:56:38 UTC 2019

    Super-User (OTP) / cryptUtil -> openSSL

    24.03.2019

    24. März 2019

    Neu:

    • Super-User Support ab authLevel-1: Bei Einsatz einse Hardware-Schlüssels wird nun die Superuser Authorisierung unterstützt. Der Account ist hierzu wie üblich in der entsprechenden Tabelle hinterlegt.
    • cryptUtil -> openSSL: Verwendung von openSSL zur Verschlüsselung von Daten

    Bugfix: inplaceArrange / Security-Check: performCorePageRendering / edit_control_definitions

    17.03.2019

    17. März 2019

    Neu:

    • edit_control_definitions: Neu: Unterstützung von LI-Margin-Top & LI-Margin-Bottom

    Bugfix:

    • inplaceArrange: css-table-selector genauer spezifiziert, sodaß nun innerhalb von tbody keine weiteren tr-Elemente selektiert werden.
    • Security-Check performCorePageRendering: Post-Requests werden nur akzeptiert, wenn diese von der selben vorgängerseite kommen. Hierzu wurde bereits auf dem Server der Pfad zur jeweiligen Vorgängerseite persistiert.
      Ein Problem hierbei sind z.B. Fehlerhaft konfigurierte nachgeladene Ressourcen (wie z.B. Bilder). Diese lösen asynchron calls gegen den Server aus und führen dann ggf. zu 404 Seiten. Da diese 404 Seiten jedoch von einem Handler abgefangen und gerendert werden, führte das dazu dass diese fälschlicherweise als Vorgängerseite eingetragen wurden und somit bei einem anschließend ausgeführten POST-Request eine Security Fehlermeldung ausgelöst haben.
      Fix: eine Seite wird nur als Vorgängerseite eingetragen, wenn diese auch in der Sitemap existiert.

    [IsAuthorized] / subFormControlsList: authMorph

    24.02.2019

    23. Februar 2019

    Neu:

    • subFormControlsList: Unterstützung der Render-Condition authMorph aktiviert

    Refactoring:

    • [IsAuthorized]: Überarbeitung der Logic beim Auswerten in SQL-WHERE Statements: Falls diese mit [EQ] [IsAuthorized] enden dann kann intern einfach die Methode IsAllowed angewendet werden.
      Desweiteren wird nun auch ein leerer Wert als [TRUE] beim Vergleich mit [EQ] [IsAuthorized] gewertet (Entspricht dem Standardverhalten).

    authLabel, authHasColDefLabel, hasSysState

    17.02.2019

    17. Februar 2019

    Neu:

    • authLabel: neue ColDef-Render-Condition
      Das Anzeigen von Feldbeschriftungen (label's) kann nun auch über die neue ColDef-Condition authLabel gesteuert werden. Hierzu wird die neue Funktion authHasColDefLabel verwendet.
    • dsnTabColumn_Definitions: Ergänzung von _authLabel zum Persistieren von authLabel.
    • hasSysState: analog zu hasState kann nun auch für der System-Status (hasSysState) als renderCondition verwendet werden.

    Refactoring

    • hasColDefLabel: Erweiterung  um den optionalen zweiten Parameter lblClass. Im Parameter lblClass wird der css-Wert notAllowed ergänzt, wenn authHasColDefLabel false ergibt, dieser jedoch aufgrund der Admin-Option "u_ignore_render_conditions" ignoriert wird. Mit geeigneten CSS-Style kann dann das eigentlich nicht gerenderte Label markiert werden (.z.B. durch Halbtransparenz)

    css-filter / authRenderStyleImports / Refactoring / rendercondition: hasAuthTrustStrength

    09.02.2019

    09. Februar 2019

    Neu

    • authRenderStyleImports: analog zur appearanceList steuert ullia intern über die neue Methode "authRenderStyleImports" den Import von css-Styles welche für die Administration und Pflege der Webanwendung notwendig sind. Hiermit werden dann nur noch Styles importiert, welche für den aktuellen Prozess und der aktuellen Anforderung zur Pflege der Webseite notwendig sind.
      Beispiel: Der Style-Import "inplaceEdititable.css" kann zukünfig entfallen, da dieser zukünftig automatisch intern über
      authRenderStyleImports('ulliaSysConfigCtrl_dragWindow.layoutEdit.css') vorgenommen wird.
    • hasAuthTrustStrength: neue renderCondition hasAuthTrustStrength(n) n=1..3
      Hierüber kann das Rendering von Controls über die Sicherheitsstufe der Authentifizierung gesteuert werden
      (schwache Authentifizierung, starke durch 2FA, sehr starke mit Hardwaretoken)

    Refactoring

    • omAuthEvaluateLogical: Aufteilung in einzelne Module:
      (Level, Epoch, HasBodyClass, PathLevel, PathQuery, SysState, TrustStrength, Value)
    • renderConditionTermUtil: Überarbeitung zur verfeinerten Anzeige der renderConditions:
      spezielle Darstellung von has..(yes), sowie Is..(yes), unterdrückt den Suffix "-ulliaSys", unterstützt eine verbessertge Darstellung von authLevel_

    Change:

    • StyleCompiler: css-Filter, die bisher properitär in Uralt-Versionen des IE-6,7,8 verwendeten filter - Anweisungen (ms-filter) werden nicht mehr in den modernen Browsern Firefox, Chrome, Opera, ... herausgefiltert, sondern nun durchgereicht.
      Hiermit wird nun für aktuelle Browser z.B. filter: drop-shadow unterstürzt.

    Bewertungs-Sterne (ratingstars) / Disabled Buttons ohne id / [IsAuthorized] als WHERE-Clause / Bugfix: StyleCompiler*** omRes_base64Images / baseHrefTag, baseHrefUrl: HttpAbsoluteSelfPerform / sysCommand-Content

    20.01.2019

    16. Januar 2019

    Neu

    • Bewertungs-Sterne (ratingstars):
      Mit Hilfe von CSS (ratingstars-flex-reverse) können radioList Elemente auch in Form von Bewertungssternen dargestellt werden.
      Die Lösung benötigt kein Javascript, verwendet jedoch CSS-Flexbox

      Idee: Radio-Buttons mit welche die Anzahl der vergebenen Sterne abbilden.

      Diese Radiobuttons werden absteigend [5..1] und hintereinander im HTML plaziert, direkt dahinter kommen die jeweils zugehörenden label (ebenfalls hintereinander absteigend)

      Mit Hilfe von CSS-Klassen (star-five oder star-six) werden die Label-Elemente als Sterne dargestellt.

      distributeCtrlLblInto-b:64@div#ratingstar-container#star-five
      distributeCtrlLblInto-a:72@section#ratingstar-container#star-six

      Beispiel: siehe ullia-guide.
    • [IsAuthorized] als WHERE-Clause:
      Ein Datensatz (row) wird nur selektiert wenn der User mit den Rechten ausgestattet ist, welche in der column eingetragen ist.
      Beispiel:
      Eine Tabelle enthält eine Spalte mit dem Namen someColumn, sowie weitere Spalten
      Wenn ein Datensatz nun als Inhalt der Spalte someColumn den Wert "authLevel_4" enthält, dann wird dieser nur ausgegeben wenn der User nach seiner Anmeldung auch mindestens den Level 4 hat.
      SELECT * FROM table WHERE someColumn = [IsAuthorized]
      Intern wird die Funktion authIsAllowed mit dem eingetragenen Wert der Tabellenspalte aufgerufen. Ein leerer Eintrag soll hier als "true" gewertet werden, aktuell funktionieren leere Einträge leider noch nicht korrekt: Workaround: [TRUE] statt leer verwenden
      Hinweis: es gibt noch den ColDef-Type "authConditionChecker". Dieser sollte auch als zusätzlicher Filter beim Selektieren von Zeilen dienen, tut er aber aktuell leider nicht! (Wird hoffentlich zeitnah korrigiert)
    • HttpAbsoluteSelfPerform: neuer Platzhalter zum Ausgeben der aktuellen Page als caonical-URL (absolute HTTP Adresse)

    Refactoring

    • Disabled Buttons werden nun ohne id gerendert, das zugehörige label erhält in diesem Fall auch kein for Attribut
    • baseHrefTag, baseHrefUrl: Aufteilen der ursprünglichen Funktion baseHref in die zwei separaten Funtionen baseHrefTag und baseHrefUrl. HttpAbsoluteSelfPerform und baseHrefTag verwenden damit die Neue Funktion baseHrefUrl.
      Verwendung im Projekt / Layout "amp" wird ein link mit dem namen"canonical" verwendet, welche auf die absolute Adresse der Ursprungsseite (die Quelle) zeigt. Im Google-Project amp werden die Seiten von Googel-Servern als gechached-te Version ausgeliefert.
    • sysCommand-Content: der ColDef-Type sysCommand-Content kann nun auch ohne _dataOptions verwendet werden:
      Beispiel:
        appData:sysCommand-Content (_data=appInfo)
        startseite:sysCommand-Content (_data=pagePath_home) oder (_data=pagePath_unterSeite1/unterUnterSeite2/...)

    Bugfix:

    • StyleCompiler / base64Images: Erweiterung / Bugfix der Funktion zum Umgang mit virtuellen Pfaden (/c/r/...)

    Garagen-Leerungsrelease: toggleSwitchCtrl für buttons_like_* / imageUtils: fitToBox

    09.01.2019

    9. Januar 2019

    Neu

    • toggleSwitchCtrl für buttons_like_radioList, buttons_like_checkboxList:
      toggleSwitchCtrl-CSS erweitert: Hiermit ist der toggleSwitch-Style auch für die  "buttons_like_*" -typen verfügbar
      HINWEIS: Der CSS-Ripple-Effekt funktioniert leider nur für die Element-Typen radioList und checkboxList.
    • imageUtils: fitToBox:
      Der Bildgeneratior unterstützt nun das Skallieren von Bildern unter Beibehandung des Aspekt-Ratios.
      Die Bilder werden hierbei so skalliert das diese die Box horizontal und/oder vertikal ausfüllen. Das Bild wird aktuell unten in die erstellte Box gesetzt.
      Beispiele: .../f800x600/..., "fit image into a box of 800 x 600 Pixels", Position: bottom / center

    Refactoring

    New: IsLocalhost / Removed: hasColDefPlaceholderDefaultValue / experimental: CSS-Shapes

    06.01.2019

    6. Januar 2019

    Neu

    • IsLocalhost: neue zusätzliche RenderCondition IsLocalhost. Zu finden unter "System-Events" im condition - Edit Fenster der renderConditions
    • buttons_like_radioList, buttons_like_checkboxList:
      State- und Persistverwaltung kann nun auch mit ohne ohne Javascript verwendet werden.
    • CSS Shape: erste Experimente mit einem float-left Kreis (siehe Ullia-Guide):
      .cssShape
      {
        width:288px;
        height:400px;
        float: left;
        shape-outside: circle(33.38% at 11.03% 53.73%);
      }

    Refactoring

    • removed deprecated hasColDefPlaceholderDefaultValue: Diese Funktion wird nicht mehr benötigt und wurde somit entfernt
    • msgSecretUrl4ExceptionLog: Säubern von in der URL enthaltenden schützenswerten Daten. bevor diese in Logfiles geschrieben werden.

    Neujahrs-Release: Extention prepareStateKeyValue, getColDefStateKeyName / sessionRequestCount()

    01.01.2019

    1. Januar 2019

    Neu

    • Modul sysSessionInfo: Funktion sessionRequestCount()
      Ausgabe der Anzahl von bisher stattgefundenen Request-Anahl, je aktueller Session

    Extention

    • prepareStateKeyValue: Erweiterung um den zusätzlichen Parameter pHashValues.
      Hierdurch werden nun auch bei abgeschalteten Javascript die präperierten Werte bei den Typen
      buttons_like_radioList und buttons_like_checkboxList korrekt zur Weiterverarbeitung in pHashValues zurückgespielt.
    • getColDefStateKeyName:  Erweiterung um den zusätzlichen optionalen Parameter dsnTabKey)

    Sylvester-Release: Style-Links

    31.12.2018

    31. Dezember 2018

    Refactoring

    • Optimierung: Style-Links: pageCss rendert auch die template-css der Controls, die *view_* links können somit entfallen

    Bugfix

    • Style-Links: Generic-Main-Style separat behandelt, user-Inlinestyles werden nun wieder inline gerendert

    Refactoring / clientId (textarea) / sql_query_row_hash: optionaler Default, falls sql nicht matched / temporär: u_disable_security_headers / bodyClass Manipulation mit optionalen Parameter isPersist=false / getControlPersistState / dynamic styles (codeBehind) / css-(de)codung ? / liClass "xOnEvent" entfernt, dataBehaviour / getButtonProcess

    28.12.2018

    28. Dezember 2018

    Temporär

    • u_disable_security_headers:
      vorübergehendes standardmäßiges Abschalten der "security_header" Prüfung.
      (hier muss noch eine nachhaltige Lösung entwickelt werden)

    Neu:

    • textarea: Unterstützung von selbstdefinierter clientId
    • getControlPersistState (key)
    • dynamic styles (codeBehind): Hilfsfunktionen zur manipulation von dynamischen Styles aus codeBehind:
      • updatePagePersitStyle ($cssKey, $cssVal)
      • updateServerClientPagePersitStyle ($cssKey, $cssVal)
    • function preparePersistValue:
        Neu / Erweiterung / bugfix "ControlPersist"
        Neu / Erweiterung Button-value 'buttons_like_radioList,buttons_like_checkboxList'
    • dataBehaviour / script: Erweiterung der Komponente component_buttonList zur Unterstützung von Script-Enabled-ten Browsern um bei der "No-Javascript First" Strategie die Userexperience bei eingeschaltetem Script zu erhöhen.
      Hierzu wird beim Typ "buttons_like_radioList" das onChange-Event umgewandelt in "onClickChange".
      Das Button-Control erhält zusätzlich das Attribut data-behaviour="radioList".
      Die neue Javascript-Funktion "handleClientButtonBehaviour" sorgt dann dafür das das jeweils angeklickte Element durch Setzten der CSS-Class "active" hervorgehoben wird.
    • getButtonProcess: Neue actionButtonUtils-Funktion zum Zurückgeben der Prozess-Aktion, siehe auch getButtonProcessName zur Bestimmung des Prozessnamens

    Change

    • css-(de)codung ?: omRes_NormalizeStylesForClient
        css-decodung von '(?)' in '?'
    • liClass "xOnEvent" entfernt

    Refactoring

    • Umbenennung:
      • getStyleName in getStylePathFileName
      • *ControlPersist in *ControlPersistState (* = get,set,del)
      Erweiterungen:
      • csvFamGrpEvents: scriptGroups erweitert: onScript, onTransfer, group, group0, group1, group2, group3, group4, group5, group6, group7, group8, group9,'
      • sql_query_row_hash (sql, tabDef, rowIndex=0, mustReturnDefaultHash=false)
      • removeBodyClass (cls, isPersist);
      setTheme: das theme wird nicht mehr in die BodyClass geschrieben
    • buttons_like_checkboxList, buttons_like_radioList:
      Persit und State-handling überarbeitet: die beiden typen können nun auch als Javascript-freien Ersatz von radio- und checkbox- Controls verwendet werden.
      onClickChange: Mit eingeschalteten Javascript können statt eines submit auch "onChange" Events (clientseitig ausgelöst über onClick-Events) verarbeitet werden. Beim Definieren über die FamilyGroups werden hierbei analog zu radioList und checkboxList onChange Events definiert, welche dann vom ullia-Framework in onClickChange events gerendert und vom Javascript entsprechend behandelt werden (onEventHandler.js)
    • Umbenennung von getButtonAction in getButtonProcessName

    Bugfix:

    • omUserSettings / getUserThemeCssStyles; Vermeidung von doppelten Includes von getUserCssStyles

    sqlUpdater: sql_append / sql_update / deferred css loading / ulliaScriptImport

    18.11.2018

    18. November 2018

    Neu:

    • sqlUpdater / sql_append: Neues Modul sqlUpdater
      die Funktion sql_append ($sql, $aData)
      wird mit dem ersten Parameter von sql_parse oder dem sql-select-statement sowie einem passenden Daten-Hash aufgerufen.
      Intern wird dann db_append verwendet.
    • sqlUpdater / sql_update: Analog zu sql_append wird hier intern db_update verwwendet
    • deferred css loading: CSS ascnchron laden, Option cssInline=deferred
    • ulliaScriptImport: Import von Script-Bibliotheken innerhalb von "JavaScript-Componenten". Syntax:
      //@ulliaScriptImport url(/r/javascript-js/scriptFileName.js); (HINWEIS: beginnt mit dem auskomentierten @ulliaScriptImport)

    Bugfixes / ullia_display_xml_errors

    20.10.2018

    20. Oktober 2018

    Neu:

    • ullia_display_xml_errors: Erweiterung von ulliaSimpleXml_utils zur Anzeige und zum Handling von XML-Parsing-Fehlern
      Findet auch Verwendung im Modul XmlToArrayParser.

    Bugfix:

    •  ulliaXmlUtils: Handling von XML-Parsing-Errors



    Bugfixes / SafeEntityValue

    14.10.2018

    08. Oktober 2018

    Change:

    • SafeEntityValue: Aufgrund der Umstellung auf UTF-8 ist die Konvertierung von Umlauten mit Hilfe von htmlentities überflüssig.
      Ab dieser Version 7.0v werden nur noch HTML-TAGS entfernt (strip_tags)

    Bugfix:

    • curl-call: aus übergebenen url(+amp; ersetzen in die Normalform (&)



    subFormControlsList: Erweiterung iteratorList / css-icons / validateSubFormControlsLists / jsonDataControlPrepare / RenderBoolCtrl / subFormControlsList_parse

    07.10.2018

    07. Oktober 2018

    Neu:

    • subFormControlsList: Erweiterung iteratorList. Nach dem Semikolon-Trennzeichen (;) für das subFormControls, kann nun neben dem zeiten Select für die Iteratorliste auch ein dataProvider angegeben werden.
      Hiermit kann z.B. mit Hilfe eines Range eine Liste von n-Forms aufgebaut werden
      Beispiel:
        SELECT FirstName,LastName FROM PERSON; [1..7]
        // Baut sieben Gruppen von Eingabemasken mit jeweils FirstName,LastName auf
    • css-icons: neue Tabelle im webDataUlliaSys "Verzeichnis" cssIcons.
      diese Enthält den namen des Icons und in der Spalte css die zuzehörigen css-Anwsisungen.
      Idee (später): Auswahl-Liste der Icons um diese den Controls zuzuweisen.
    • validateSubFormControlsLists: Feldvalidierung über SubFormConrol-Listen
    • jsonDataControlPrepare: dataBind-Util um Feldinhalte aus json-daten zu füllen.
      Kann zur Datenpflege von json-daten verwendet werden.
    • RenderBoolCtrl, Erweiterung: unter _data kann nun auch optional false,true eingetragen werden um den Default von true,false umzukehren.
    • subFormControlsList_parse: analysiert die Definition der subFormControlsList und gibt die Bestandteile als iteratorList und die Definition des subFormControls zurück. Auf dieser Basis arbeitet dann der Validator als auch der Renderer.

    IsRedirectInitiated / Bugfixes / show-indeterminate / bulma style

    30.09.2018

    30. September 2018

    Neu:

    • show-indeterminate: Visualisiert die Anzeige von noch nicht ausgewählten radiobox listen
      Implementiert über appearance "show-indeterminate" im base-Style appearance_show-indeterminate-state.css.
      Diess kann je Style individuell durch eine lokale Kopie angepasst / überschrieben werden. 
    • IsRedirectInitiated; neue Hilfsfunktion im neuen Modul redirHandler
      Kapselt die Logik ob ein Rendering, Redirect oder ein "ServerTransfer" gerendert wird.
    • bulma style: erster Versuch.

    Bugfix:

    • authUserSettingsRestore:
      Aufruf von userAppStateClearAll() entfernt, da ansonsten zuvor über setSysState() gesetzte Werte entfernt werden. (Passierte durch den nach einer Authentifzierung ausgelösten Redirect auf authUserSettingsRestore)

    KOS-Release: individualForm-teaser / ColDefType: compositeKey / toCsvKeyNameList / authStrength / redirectTo-configData / ajaxGetContextMenu / authTrustStrength in appInfo / getButtonTypeFromStyle: button_redirect / Sitemap navi_1..9 only / hasColDefPlaceholderDefaultValue / getPaymentPrice: floatval / dateTimeControls, IsDataRangeProvider: Anwendung von toCsvKeyNameList / input-placeholder-shown / mdl-floatingPlaceholderLabel, mdl-selectbox, mdl-radio, mdl-checkbox, compact-radio-checkbox / ripple-effect

    22.09.2018

    22. September 2018

    Neu:

    • individualForm-teaser: neuer pageContentType: analog zu individualPageForm enthält jedoch einen Richtext-Teaser in dem ein Freitext eingefügt werden kann.
    • compositeKey: Neuer ColDefType "compositeKey: mit diesem könnten nun Felder als zusammengestzte Keys defniert werden.
      Die Implementierung / Validierung hierzu ist aktuell noch offen
    • toCsvKeyNameList: neue Hilfsfunktion zum Umwandeln von Array in csv-key-value Listen
    • authStrength: neuen function getAuthTrustStrength () zum ermitteln der Authentifikationsstärke (loa-0 bis loa-4).
      Aktuell sind folgende Werte implementiert
      • 0: keine Anmeldung (annonym)
      • 1: schwache Authentifizierung (username / password)
      • 2: Zwei-Faktor mit der Google-Authenticator-App
      • 3: Zwei-Faktor mit individuellem Hardware-Key (aktuell: yubikey)
    • redirectTo-configData: Experimentell: ein Page-Link in der Navigation direkt als redirekt auf das Ziel in configData setzen.
      Achtung: Implementierung muss noch überarbeitet und geprüft werden.
    • getButtonTypeFromStyle: button_redirect ergänzt
    • StyleCompiler: Unterstützung von input-placeholder-shown
    • mdl-floatingPlaceholderLabel: input-field, welches das zugehörige Label als Placeholder-Text enthält. Die Steuerung des moves wird über den css-status ":placeholder-shown" vorgenommen
    • mdl-selectbox: selectbox im material-Design
    • mdl-radio: radio-button im material-Design
    • mdl-checkbox: checkbox im material-Design
    • compact-radio-checkbox: Kompatedarstellung von Radio- und Checkbox- Listen
    • ripple-effect; Hervorhebung von aktivierten Controls mit Hilfe eines dem Material-Design angelehnten effekts

    Ullia-Info

    • appInfo zeigt nun authTrustStrength mit an

    Refactoring

    • ajaxGetContextMenu: Initialisierung versuchsweise ohne Bedingungen
    • hasControlLabelOrder: zusätzliche Berücksichtigung von "mdl-controlLabelOrder"
    • getCachedSitemap: Beschränkung der Sitemap auf: navi_1, navi_2, navi_3, navi_4, navi_5, navi_6, navi_7, navi_8, navi_9
    • hasColDefPlaceholderDefaultValue: return false und Ausgabe von DEPRECATED
    • dateTimeControls: Anwendung von toCsvKeyNameList
    • IsDataRangeProvider: Anwendung von toCsvKeyNameList
    • RenderInputCtrl: Prüfung und Ausgabe falls array statt csv als Eingabewert vorliegt

    Bugfix:

    • createSubPage (cleanup_derived_config_values): Korrektur sysRawCmd
      Hiermit werden nun Seiten auf Basis von Templates auch ohne anschließendes "Neuabspeichern" über "ExpertConfig" gleich richtig aufgebaut.
    • processingHashItem_allViews: integer-cast ergänzt
    • prepareStateKeyValue: nicht bei HasPathQuery('sysCommand')
    • getPaymentPrice: Umwandlung mit floatval

    csvChoiceList / google Authenticator / vCard QR-Code

    28.08.2018

    28. August 2018

    Neu:

    • csvChoiceList:
      Neuer ColDef-Type definiert den Inahlt eines Datenfeldes als csv-Liste bestehend aus den Komponenten (key:label)
      Hieraus können dann radioList, checkboxList, select-Boxen auch mit template-Untestütztung erzeugt werden.
    • 2-Faktor Authentifizierung: sudo-Authentifizierung mit Hilfe des Google Authenticators
      Zur Einrichtung kann das interne cryptTool verwendet werden. In einer folgenden Implementierung ist die Einrichtung
      der 2-Faktor Authentifizierung auch für normale User-Accounts angedacht.
    • sqlStore-Feature: QR-Code Anzeige der Adressen im vCard-Format

    component_boolControl / Bugfix (treeView) / renderCondition HasPathQuery / authorizedUserDomainCheck / btn_cancel

    19.08.2018

    19. August 2018

    Neu:

    • component_boolControl:
      RenderBoolCtrl verwendet selectBox mit data (true,false).
      Es werden alle Attribute der selectBox unterstüzt, typeSpecificFlag ergänzt die Auswahl um "Bitte wählen"
    • HasPathQuery: renderCondition
      Neue Render-Bedingung: Prüft ob der angegebene PathQuery gesetzt ist.
      Bsp: url = https://sample-app.ullia.de/imprint/-/Hallo:Welt
      Die renderCondition "sysStateKeyVal_HasPathQuery_Hallo" gibt in diesem Fall [TRUE] zurück.
    • authorizedUserDomainCheck - IsAuthorizedUserDomain: Prüfung der dbAccessGrantList auch für dataTable & ajaxTable:
      hierdurch ist die Verwendung von Tabellen aus anderen Domains auch für nicht-administratoren über Freischaltung der dbAccessGrantList möglich.

    Bugfix:

    • treeView: csvTreeViewGetSubTree berücksichtigt nun auch das Pfadtrennzeichen beim Sammeln der Unterpunkte.
      Hiermit werden nun die Unterpunkte korrekt zusammengesammelt.
      Der Bug bestand darin dass zuvor
      • 1/submenu und
      • 10/otherSubmenu
      fälschlicherweise als Unterpunkte von 1 zusammengefasst wurden

    Refactoring:

    • btn_cancel: der Cancel-Button akzeptiert nun einen optionalen Parameter (sysCmd). hierdurch kann statt wie bisher SelfPerform auch eine andere Funktion ausgeführt werden. Verwendung: in doEditPageContent wird nun bei cancle die Funktion "cancelAction" aufgerufen, welche die Seite ohne zu speichern neu rendert.
    • prepareStateKeyValue: Erweiterung der Abfrage von (WasPostRequest() um !HasPathQuery('sysCommand')):
      Hiermit wird verhindert dass bei einer sysCommand-POST-Action der State verändert wird. Das sorgt mit der Änderung von btn_cancel mit dem oben beschriebenen Parameter dafür das bei cancel der State erhalten bleibt.

    component_boolControl / Bugfix (treeView) / renderCondition HasPathQuery

    12.08.2018

    12. August 2018

    Neu:

    • component_boolControl:
      RenderBoolCtrl verwendet selectBox mit data (true,false).
      Es werden alle Attribute der selectBox unterstüzt, typeSpecificFlag ergänzt die Auswahl um "Bitte wählen"
    • HasPathQuery: renderCondition
      Neue Render-Bedingung: Prüft ob der angegebene PathQuery gesetzt ist.
      Bsp: url = https://sample-app.ullia.de/imprint/-/Hallo:Welt
      Die renderCondition "sysStateKeyVal_HasPathQuery_Hallo" gibt in diesem Fall [TRUE] zurück.

    Bugfix:

    • treeView: csvTreeViewGetSubTree berücksichtigt nun auch das Pfadtrennzeichen beim Sammeln der Unterpunkte.
      Hiermit werden nun die Unterpunkte korrekt zusammengesammelt.
      Der Bug bestand darin dass zuvor
      • 1/submenu und
      • 10/otherSubmenu
      fälschlicherweise als Unterpunkte von 1 zusammengefasst wurden

    Refactoring:

    addons: certificate-utils / subForms via json / crypt_dataUtils: Erweiterung Validierung / crypt-utils / Yubico-LIB

    05.08.2018

    05. August 2018

    Neu:

    • certificate-utils:
      Generisches Modul (addon) zum Lesen von verschlüsselten Daten, arbeitet mit "keepSecretUnderSealWraps"
      :-) zusammen. Zum Erzeugen der Secrets kann crypt-utils (private-ullia-app) verwendet werden.
    • subForms via json: Erster Entwurf um aus dynamisch bereitgestellten json-daten-definitionen  dynamisch Eingabemasken zu rendern. Idee: hiermit könnten Rest-Apis generisch beschickt werden.
    • crypt_dataUtils:  Erweiterung Validierung: Decrypt prüft nun auch auf das korrekte securePwd (könnte auch als Bugfix durchgehen)

    Bugfix:

    • crypt-utils: zum Korrekten verschlüsseln über die Werte der WebApp "crypt-utils: crypt-cert-key" wurde das Lesen der Werte von csvSecureKeyHash auf keyHash umgestellt. Hiermit sind nun auch Ver- und vorallem Entschlüsselungen mit Sonderzeichen-Kennworten möglich, da keyHash keine Konvertierung der Schlüsselzeichen und kein escaping vornimmt

    Refactoring:

    • Yubico-LIB: Auth_Yubico-Konstruktur auf neuesten abwärtskompatiblen Stand gebracht.
       -> in allen webApps muss diese neue Version eingespielt werden.


    epoch_codeBehind-Edit / buttonRedirect (codeBehind) / templateDataRenderer

    29.07.2018

    29. July 2018

    Neu:

    • epoch_codeBehind-Edit:
      Im Konfigurations-Reiter "renderConditions" gibt es nun die Möglichkeit zum Online-Editieren von renderConditions welche durch codeBehind definiert werden zu.
      Zum Neuanlegen kann hier zunächst die "epoch-definition-table" um den Namen des epoch-Rechts ergänzt werden. Anschließend wird für diesen Namen ein Link zum Editieren bereitgestellt.
    • buttonRedirect: Der redirect-Link kann auch mit codeBehind definiert werden.
    • templateDataRenderer: ersetzt alle Stellen eines Templates mit dem Inhalt eines assoziativen Array, Syntax: {key}

    Bugfix:

    • useValidation: Falls über renderCondition das Validieren abgeschaltet ist, wird nun auch keine Validierungs-Fehlermeldung angezeigt.
    • css-class "xOnEvent": auskommentiert.
    • Aufruf von checkIsValidColDefValue prüft vorab auf $authRender, hiermit wird vermieden dass bei nicht gerenderten Feldern IsValidateOK korrekt gesetzt wird.

    Refactoring:

    • templateDataRenderer ersetzt cn_templateRenderer aus addons und steht somit allgemein zur Verfügung


    excelExportUtils

    01.07.2018

    01. July 2018

    Neu:

    • excelExportUtils: excelSqlExport($sql, $path='');
      exportiert die Daten einer Tabelle als Textdatei


    getAppStateValue / Bugfix RedirLoopCount

    18.02.2018

    11. Februar 2018

    Neu:

    • getAppStateValue (key):
      liest den Wert von sysStateKeyVal_key_

    Bugfix:

    • RedirLoopCount:
      Zur Vermeidung von Endlos-Redirects existiert in ullia ein Zähler für aufeinanderfolgende Redirects welcher auf einen maximalen Schwellwert (aktuell 12) prüft. Wenn der Schwellwert überschritten ist wird die technische Fehlermeldung "E_MAX_REDIR_LOOP" ausgegeben und im nächsten Response keine Redirect-Anweisung ausgeliefert.
      Zum Zurücksetzen des Zählers wurde ab Version 7.0l in Post-Request welche durch eine Button-Action ausgelöst wurden mit Hilfe des Befehls
      • delSysState ('RedirLoopCount');
      dieser Zähler zurückgesetzt (Erweiterung im Modul "preparePostButton").
      Hintergrund: Wenn sich beispielsweise zwei Seiten mit Hilfe des Button-Typs (button_redirect) gegenseitig "verlinken" wurde der Zähler stetig hochgesetzt, obwohl der nach jedem Redirect auf die jeweilige Seite keine automatisch Weiterleitung auftritt. Der Zähler kann somit bei jeder aktiven Betätigung eines Buttons zurückgesetzt werden.


    SELECT [UNESCAPED] / applySysStateKeyVal_data / serialize_subFormControls / serialize_subFormControlsList

    11.02.2018

    11. Februar 2018

    Neu:

    • SELECT [UNESCAPED]: Schlüsselwort zum Abschalten vom Escape in kommaseparierten Listen innerhalb des key-Wertes eines Elements.
      Anwendung: Wenn z.B. eine checkboxList aus einem Inhalt eines Tabellenwertes erzeugt werden soll und diese bereits aus einer kommaseparierten wie
        eins,zwei,drei
      Liste besteht, dann würde durch das standardmäßige escaping hieraus
         eins+#44;zwei+#44drei
      entstehen und somit anstatt der erwarteten drei checkboxen lediglich eine mit dem escaped-ten Wert erzeugt,
      Durch Verwendung des neuen Schlüsselwortes [UNESCAPED] werden drei checkboxen erzeugt.
    • applySysStateKeyVal_data: Anwendung von sysStateKeyVal_KEY_NAME - Variablen in Templates
    • serialize_subFormControls / serialize_subFormControlsList: Serialisierung aller definierten Daten-Controls



    imgTag / selectboxList / subFormControlsList / customRenderAddBaseControl

    04.02.2018

    04. Februar 2018

    Neu:

    • imgTag: HTML-Image-Control, unter ColDef-data wird die src via dataProvider bereitgestellt
    • selectboxList: Liste von HTML select-Boxen, definiert über zwei SQL-SELECT Statements; Semikolon separiert.
      (Inspiriert von matrixControls)
    • subFormControlsList: Liste von subFormControls
    • customRenderAddBaseControl: Erweiterung auf nicht in sich verteilbare controls (erster unvollständiger Prototyp)

    Sylvester-Release: E_CHECK_COOKIE fix / contactForm-basic feed / sysCommand_pagePath_

    31.12.2017

    31. Dezember 2017

    Neu:

    • E_CHECK_COOKIE: Fix: Änderung: buttons und capture forcieren nun ebenso wie bisher password eine sichere SSL-Verbindung (forcePageSSL (true)). Hierüber verschwindet die Post-Meldung E_CHECK_COOKIE.
    • sysCommand_pagePath_pathInfo-href: Pages vom Type sysCommand_pagePath verwenden nun direkt den hinter pagePath angegebenen href-Wert, sodaß ein Klick auf diesen Wert direkt zum href zeigt. Hiermit kann z.B. aus dem fastlink-Menu auf ein Kontaktformular der Hauptnavigation verwiesen werden. (Hinweis: im Konfigurationsmodus wird der Original-Link verwendet, sodaß so die ursprüngliche Seite bearbeitet werden kann.

    Hinweis / Tipp:

    • Über den pageContentType "contactForm-basic" kann sehr einfach ein Kontaktformular generiert werden. Zur vollen Funktionalität wird hier noch ein feed-Template benötigt (contactEmailFeed). Dieses wird in ExpertConfig im Feld rendertemplate eingetragen
      (Beispiel: detail_contentPagesDetail, feed_contactEmailFeed)
      Das Template enthält die Form-Namen und dient somit als E-Mail Vorlage zum Versenden.
      Inhaltsbeispiel:
      Aus dem Kontaktformular [ =AppName= ] ([ =LastModifiedDate= ], [ =LastModifiedTime= ], [ =ReleaseInfo= ])
      [ =HttpAbsolutRoot= ]/[ =MetaLanguage= ]/[ =SelfPath= ]
      ========================
      [ =c_courtesytitle= ] [ =c_firstname= ] [ =c_lastname= ] ([ =c_email= ])
      [ =c_subject= ]
      c_courtesytitle: [ =c_courtesytitle= ]
      c_firstname: [ =c_firstname= ]
      c_lastname: [ =c_lastname= ]
      c_email: [ =c_email= ]
      c_subject: [ =c_subject= ]
      c_mailtext:
    • Des Weiteren existiert ein Button mit Data-Action sendContactData. Dieser sorgt dafür dass die Werte des Formulars als Mail mit dem feed-Template verschickt werden. Nach erfolgreichem E-Mail Versand wird in der Form ein subNav-Element gesucht, welches dann angezeigt wird.

    Session: Persist-Options / sysPreferSSL

    03.12.2017

    03. Dezember 2017

    Neu:

    • Session: Persist-Options (Security und Sessiongröße): Neu: über die web-config kann mit dem Wert g_sessPersistOptions der Inhalt der gespeicherten Sessionwerte gesteuert werden (CRPT=verschlüsselt, GZ=Komprimiert, SEC=in Abschnitten abgelegt)
      CRPT beinhaltet GZ, SEC kann on-top verwendet werden. Ohne den Wert verhält es sich wie bisher.
      Für die Realisierung wurde das neues Modul authSysSessionPersist mit zwei Methoden sysSaveSessionData und sysReadSessionData erzeugt.
    • sysPreferSSL: Neu in webconfig über den Systemwert sysPreferSSL kann generell die ssl-Verbindung für alle Seiten als Präferenz angegeben werden. Hierdurch werden auch public-pages über ssl ausgegeben wenn der Anwender noch nicht authentifiziert ist.

    colDefType: linkListSelector / httpStatusCodes / http_status_info

    24.09.2017

    24. September 2017

    Neu:

    • linkListSelector: neuer colDefType: linkListSelector (erste Alpha-Version)
      analog zur radioList und dem buttonSelector, wird hierüber mittels "selfPerform-Links" der Zusand des Controls gesteuert.
      Zweck: ohne Javascript kann mit Hilfe von GET-Request der Zustand manipuliert werden (Suchmaschinentauglich).
    • httpStatusCodes: Tabelle welche zu dem HTTP-Statuscode eine message sowie einen comment enthält. Mit dem neuen Modul "http_status_info" stehen Hilfsmethoden print_httpStatus_info(statzsCode) sowie get_httpStatus_message (httpCode, &cmnd) zur Verfügung mit denen der statusCode entsprechend mit einem Text versehen kann.