ullia

textdarstellung der historie

textdarstellung der historie

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