ullia

changeLog

changeLog

fullScreen ulliaChangeLog
Page 11 of 17, Zeile 201-220 von Treffern, Gesamtzeilen 323
idx
 
201-220 von , tab_totalLength: 323
201 203 6.0n 20.02.2016 Bugfix: authMorph, authDisquised, setStyleState / new: authStyleClass, deleted: allowed / Security: Button-Action 20. Februar 2016 NEW: authMorph / authDisquised : Korrektur von Store und Restore inkl. Client-Edit bei authDisquised setStyleState: SetAppPersistState setzt nun wieder den Präfix "style_", hiermit wird dann die BodyClass style_ styleName gesetzt, wodurch wieder der mockup-style funktioniert. authStyleClass : conditional Rendering von CSS-Style-Klassennamen für Controls: beim Zutreffen der Bedingung werden die angegeben CSS-Klassennamen dem Control ergänzt oder oder entfernt (entfernt bei vorangestelltem Minuszeichen) Syntax: logischer-Ausdruck @ CSS-Class-List (Das at-Zeichen (@) trennt Bedingung und Style-Classes Beispiel : epoch_secondsExceeded-inactivity_4 @ bgCrey colorRed -hidden (Wenn zwischen zwei Requests mindestens vier Sekunden vergangen sind dann werden dem Element die CSS-Style-Namen bgGrey und colorRed hinzugefügt und, falls vorhanden, der CSS-Style-Name hidden entfernt . Security: Action-Button-Security : Aktionen von Buttons werden nur ausgeführt, wenn diese nicht den Serverstatus disabled haben und auch gerendert worden sind. Nur mit ajax-calls vom Client an den Server kann der Zustand von Buttons vor einem Client-Submit geändert werden. Wirkung : Wenn die Ausführung einer Button-Action aufgrund von fehlenden Berechtigungen oder aufgrund des aktuellen Applikationszustands nicht möglich ist, dann ist es für einen potentieller Angreifer durch diese Maßnahme nicht möglich die Buttonaktion auf dem Server mit Hilfe eines modifizierten POST-Requests unberechtigterweise durchzuführen. Simples Beispiel: ein Speichern-Button ist aufgrund einer fehlenden Berechtigung disabled. Der Button ist somit im Brwoser nicht anklickbar. Ein Angreifer kann nun mit Hilfe der in modernen Browsern verfügbaren Developer-Tools im Client-HTML-Code das disabled-Attribut des Buttons entfernen und somit die Ausführung des Buttons im Browser freischalten. Wenn nun der Button ausgeführt wird, dann erkennt Ullia auf dem Server, daß der Button eigentlich nicht ausführbar ist. Es wird einen Fehlermeldung ausgegeben und die Buttonaktion wird nicht ausgeführt. Fehler-Keys:    E_UNAUTHORIZED_BUTTON : bei zuvor nicht gerenderten Buttons oder    E_UNEXPECTED_DISABLED_BUTTON : bei disabled Buttons. Bugfix: ajax style-execute : Rücksetzen der temporären Styl-Render-App nun korrekterweise vor der Persistierung in der Session DELETED: allowed : Die als deprecated noch vorhandene Rendercondition allowed wurde mit der Version 6.0n entfernt. Die alternative authRender ist bereits seit langem im Einsatz.
202 204 6.0o 28.02.2016 ajaxAnimate_ / animation, animChild_ / datalist validation / distributeInto 28. Februar 2016 NEW: css-präfix ajaxAnimate_   : Anwendungsbeispiel: Wenn die map im siblingMenu den CSS-Klassennamen ajaxAnimate_slideInUp erhält dann fährt die Sitemap von unten in den Bildschirm. animation : in einer individualPageForm wird mit einem subFormControls-Element z.b. ein Kontaktformular erstellt und diesem die CSS-Klasse "animate-1s bounceInDown" zugewiesen. Damit bounced das Formular von oben an seine position. ajax-animation : obiges Beispiel wird mit der Rendercondition authRender=IsAjaxRequest versehen. Damit wird das Element bei einem Post-Request nicht gerendert. Wenn nun das Client-Event onLoadAjaxAction-A gesetzt wird und A auf alle Elemente Zeigt welche per Ajax nachgeladen werden, dann animieren die Elemente nach dem ajax-load asynchron in den Bildschirm. animChild_: Animation-Präfix für eine Animations-CSS-Klasse. Verwendung: im Navi-Bereich wird so nicht der Menüpunkt beim Laden animiert sondern der Content. distributeInto : customRendering: distributeInto verteilt nun die selektierten Elemente (L, C, LC oder CL) in ein Zielobjekt mit optional definierten Container. Anwendung: Collapsible oder Accordion für ausgewählte Abschnitte, Hierzu wird entsprechend eine checkboxList (für Collapsible) oder eine radioList (für Accordion) definiert. Anschließend werden die C (Controls) mit distributeTo vor die jeweiligen Abschnitte verteilt und die L (label-for) Elemente mit distributeInto über die Abschnitte verteilt. Ergebnis : ein TabControl über den Abschnitten, welches die Sichtbarkeit steuert. (Entsprechend geeignetes CSS vorausgesetzt) Bugfix: datalist-validation : Korrektur bei der Ermittlung von zulässigen datalist-Werten. (Wenn ein Wert gepostet wird, welcher nicht in der datalist-Liste enthalten ist, dann wird ein Fehler ausgegeben.
203 205 6.0p 06.03.2016 interweaveInto 06. März 2016 NEW: interweaveInto : Erste Beta-Version mit welcher checkboxList- und radioList- Controls ineinander verschachtelt werden können.
204 206 6.0q 13.03.2016 authMorph: i18n - label / dataMapperUtils / inputList / inplaceEdit via dataTableList (i18nContent) / onTimerSeconds / u_deny_ajax_timer_events / js: has_debug_level / validation(subFormControls) 13. März 2016 NEW: dataMapperUtils : Erste Beta-Version: mapped Daten über eine Definitionstabelle. Anwendung: Wenn z.B. XML Daten von einem Datenprovider in Ullia weiterverarbeitet werden sollen, dann bietet sich ein xpath-Mapping an. Hierzu werden die xpath-Definitionen in einer "dataMapper-Tabelle" eingetragen und über dataMapperEvaluateSQL auswertet. inputList : inputList ersetzt textInputList (default) und searchInputList und unterstützt nun neu template-rendering. Vom text-type abweichende Liste von input-Controls werden in ColDef-dataOptions mit dem Präfix type_ definiert. Dort kann auch das Schlüsselwort template eingetragen werden, woraufhin die input-Liste über das individuell definierte Template gerendert wird. Anwendung: Shop-System: eine beliebige Daten-Liste kann mit Hilfe der inputList und des Templates in so gerendert werden dass zu jedem Artikel ein Eingabefeld vom Typ numeric (=Anzahl der gewünschten Artikel) gerendert wird. i nplaceEdit via dataTableList (i18nContent) : Werden Spalten einer Daten-Tabelle mit der ColDef-Option i18nContent ausgezeichnet dann können diese direkt in der Tabelle via inplaceEdit (entsprechendes Recht vorausgesetzt) übersetzt / editiert werden. onTimerSecond s : Mit onTimerSeconds S EC können zeitgesteuert alle SEC -Sekunden ( S EC = 1,2,3,...) famGrp-Events ausgeführt werden. Um überschneidende Anfragen zu vermeiden, wird erst nach dem Response einer Anfrage das nächste TimerEvent gestartet. Eine Einstellung von onTimerSeconds1 bewirkt führt also nur dann jede Sekunde zu einem Request, wenn die Ausführungszeit (Request -> Server -> Response -> onLoad + Scriptverarbeitung) bei 0 liegen würde. Dauert letzteres z.B. drei Sekunden, würden nur alle vier Sekunden Requests abgesetzt werden. Beispiel: onTimerSeconds15 mit famGrp=K führt alle 15 Sekunden das FamGrp-Event K aus. Anwendungsbeispiel: Alle 15 Sekunden soll per Ajax am Server nachgefragt werden, ob ein neue Nachricht anzuzeigen ist. Feinere Abstufungen können in Milisekunden angegeben werden, hierzu ist ein Punkt vor SEC notwendig. Die Definition von onTimerSec.250 führt alle 250 ms zur Ausführung. Aufgrund der Serverlast sollten Werte < 15 Sekunden nur mit Bedacht verwendet werden, insbesondere wenn viele Clients (=Anzahl von Usern) "im Spiel" sind. u_deny_ajax_timer_events : neue Settings-BodyClass zum Abschalten der Ajax-Server-Calls durch den Anwender. has_debug_level (javascript): debug_show und debug_out wertet ab Ullia-Version 6.0q nun optional den in der BodyClass gesetzten authUserLevel_ -Wert über die neue Funktion has_debug_level( level ) aus. Hiermit kann die Ausgabe auf User mit einem mindest- authLevel beschränkt werden. Bsp.: debug_show("Hallo", 9 ) wird nur bei Usern mit authUserLevel_ 9 (Admin) ausgegeben. HINWEIS: inplaceEdit generell : alle mit label umschlossenen Elemente können mit inplaceEdit umbenannt werden. In den Elementen kommt die Übersetzung aber nur zum tragen, wenn diese mit den Übersetzungszeichen umschlossen sind, also: nicht übersetzter Fließtext [label] DieserTextWirdUersetzt [/label] hier gehts ohne Übersetzung weiter. Bugfix: authMorph - label : Wenn über die renderCondition authMorph zum tragen kam, dann wurde das zugehörende label zum Control nicht internationalisiert. Mit der Version 6.0q ist der Fehler behoben. validation (subFormControls): Korrektur / Bugfix: subFormControls werden in der Validation-Phase nicht mehr ausgelassen, wenn diese in der Renderbedinung sysStateKeyVal_Validation-ulliaSys_ enthalten. Hintergrund: "hasValidation-Error" kann sich durch durch Prüfung der Unterformularfelder ergeben. Bug ist in folgender Konstellation aufgetreten: Ein subFormControl-Element wird gerendert wenn der Button "Neu hinzufügen" geklickt wird oder wenn beim Klick auf den Speichern-Button ein Validierungsfehler auftritt. Wenn bis zum Zeitpunkt der Validierung des subFormControls noch kein Fehler aufgetreten ist, dann muss dennoch die Validierung des subFormControls durchgeführt werden, welche dann ggf. zu einem Validierungsfehler führen kann. Somit ggf. eine auftretende Validierungsverletzung durch das subFormControl-Formular ausgegeben, hasValidationError geht auf true und das Formular wird anschließend in der Renderphase ausgegeben.
205 207 6.0r 20.03.2016 raspi-Release / Raspberry 3 / Raspbian Jessie / raspberryUtils 20. März 2016 NEW: ullia & Raspberry PI : Ullia kann auch auf dem Mini-Server Raspberry PI betrieben werden. Zum Proof wurde auf einen 39 EUR teuren Rasperry PI 3 das ZIP Archiv des Raspbian Jessie Image heruntergeladen und unter Windows mit dem Win32DiskImager auf eine microSD kopiert. Der Raspi 3 hat damit anstandslos Debian Jessie gebootet. raspberryUtils : Neues Interface-Modul, kann z.B. in codeBehind mit using('raspberryUtils') eingebunden werden. Das Modul bietet u.A. folgende Methoden an: raspi_read_pins() // gibt ein Array mit dem aktuellen raspi-pin Status zurück raspi_read_active_pins() // gibt im Array die aktiven pins zurück (kann gut mit einer checkboxList verwendet werden) Konfiguration unter Linux Debian (Raspbian) Installation: sudo apt-get install apache2 -y: ( instaliert den Apache2 Webserver ) sudo apt-get install php5 libapache2-mod-php5 -y: ( installiert PHP-5 ) sudo apt-get install php5-gd: ( GD Graphics Library ) Apache Konfiguration : sudo a2enmod filter sudo a2enmod deflate sudo a2enmod expires sudo a2enmod rewrite     (mod_rewrite aktivieren) sudo a2enmod mime Ullia Konfiguration: htaccess aktivieren: zunächst muss die htaccess-Datei zur Verwendung im Apache-2 Server freigegeben werden. Hierzu wird mit folgendem Behehl die 000-default-Datei mit dem Editor nano geöffnet:   sudo nano etc/apache2/sites-enabled/000-default und dort für das Verzeichnis /var/www/html " AllowOverride All " eingetragen werden. Abschließend muss der Apache neu gestartet werden: sudo service apache2 restart Die Ullia-Installation erfolgt nun wie geöhnlich im root-Verzeichnis des Webservers (bei Raspi-3 /var/www/html) Anschließend ist noch die Ullia-webconfig dei Werte für den http-Root (in der Regel der Domainname oder die IP des Webservers) sowie optional die default-App und der default-Style zu setzen.
206 208 6.0s 28.03.2016 Oster-Release: USERSESSION, APPSESSION, GLOBSESSION / addons 28. März 2016 NEW: USERSESSION : Analog zu PersistValue steht nun auch die Funktion USERSESSION(key, val) zum Speichern von User-Session-Daten zur Verfügung. Mit val = USERSESSION(key) kann der Wert gelesen werden, USERSESSION(key, null) löscht key und val aus der Usersession. Die Daten in USERSESSION sind nur für den individuellen USER zugänglich und werden beim Abmelden gelöscht. Die Anwendung bietet sich in codeBehind-Funktionen an. APPSESSION : Wie USERSESSION, jedoch global und Benutzerunabhängig je Application Anwendungsbeispiel: die Anwendung "raspi" misst die Temperatur der CPU, hierbei soll die jeweils kleinste (CPUMINTEMP) und größte Termperatur (CPUMAXTEMP) zentral für alle Anwender der App "raspi" verwaltet und zur Verfügung gestellt werden. GLOBSESSION : Wie APPSESSION auch nicht Userspezifisch, jedoch auch nicht Applicationsabhängig. Hiermit können über alle Anwendungen hinweg Daten gemeinsam verwendet werden. Anwendung: Die Daten (CPUMINTEMP) und (CPUMAXTEMP) aus dem CPU-Termperaturbeispiel von oben könnten auch in anderen Anwendungen verwendet werden. Hierzu müssen diese statt in APPSESSION dann in GLOBSESSION gespeichert werden. addons : neuer Ablageort für anwendungsspezifische Module. Diese sind optional und dienen der besseren Übersicht und Trennung von Ullia-Basis Modulen und spezifischen Anwendungsmodulen. Anwendungsbeispiel: Zum verwenden von Fritz-Box spezifischen Schnittstelen gibt es ein ullia-Modul welches den Zugriff auf die Fritz-Box kapselt. Diese die befinden sich in addons-Ordner fritzBox und können über using('fritzBox/ modulName ') im codeBehind eingebunden werden.
207 209 6.0t 08.04.2016 Serverumzug php-7 / USERSESSION / sysSecureSession / userCredential / Key-Store authUserCredentialKeyStore 8. April 2016 Serverumzug: 08. April 2016: In der Nacht vom 7. auf den 8. April wurden sämtliche Domains und Subdomains auf einen Server mit php-7 als Servermodul umgezogen. NEW: keyStore : Unterstützung von benutzerspezifischer verschlüsselter Datenablage (Beta). sysSecureSession : verschlüsselte nicht sichtbare Session-Daten. userCredential : Beim Login wird für jeden User ein "Cretential" erzeugt mit welchen er benutzerspezifisch verschlüsselte Daten in einer keyStore Tabelle speichern kann (authUserCredentialKeyStore). Nur der angemeldete Benutzer kann diese entschlüsseln. CHANGE: Um Verwechselungen und Konflikte zu vermeiden wurde SESSION aus dem Osterrelease in USERSESSION umbenannt Bemerkenswert: Der Provider All-Inkl unterstüzt ab 08.04.2016 08:00 Uhr in Tarifen mit SSL - Unterstützung die Einbindung von kostenlosen Let’s Encrypt-Zertifikaten. Diese werden sogar 30 Tage vor ablauf automatisch verlängert.
208 210 6.0u 18.04.2016 Bachelor-Release: u_use_cache_compression 18. April 2016 Das Release ist dem Bachelor-Abschluss von Johanna gewidmet :-) NEW: u_use_cache_compression : Optionale Kompression von cache-Daten.
209 211 6.0v 24.04.2016 opCacheConfig / IsCacheable & u_clientstorage / toBase64Sections / fromBase64Sections 24. April 2016 NEW: opCacheConfig (Admin only): Status und Konfiguration des Bytecode Caches (falls vorhanden) authUserGetCredential Erweiterung: neben dem schon vorhandenen optionalen securePwd kann nun auch ein optionaler gernicPwdKey angegeben werden. Dieser setzt den owner der verschlüsselten Daten auf _SYS_CREDENTIAL_PWD_KEY_ Diese Daten können von allen angemeldeten Usern mit authLevel_3 entschlüsselt werden. toBase64Sections, fromBase64Sections: weitere Optimierung zum abschnittsweisen speichern von verschlüsselten Daten. Verification der entschlüsselten Daten Change: IsCacheable & u_clientstorage: Der Settings-Parameter u_clientstorage verhindert nicht mehr das serverseitige Cachen.
210 212 6.0w 08.05.2016 Bugfix: onAjaxResponse / findButton; NEW: raspberryHomeAutomation / raspi_remote_send / asyncExec 08. Mai 2016 NEW: raspberryHomeAutomation: neues addon "raspberryPi/raspberryHomeAutomation" mit Hilfsfunktionen zur Heimautomatisierung. raspi_remote_send: Funktion zum steuern von 433 MHz Funktsteckdosen. Aufruf: raspi_remote_send ($systemCode, $unitCodes, $setON=true); der systemCode entspricht hierbei den DIP-Schaltern der Funktsteckdosen und ist entsprechend zu konfigurieren. Beispiel:   raspi_remote_send ('11100', 3); sended Einschaltkode an Steckdose drei   raspi_remote_send ('11100', 3, false); schaltet Steckdose drei aus asyncExec: Erste Implementierung von asynchronen exec-call. (Die aktuelle Implementierung funktioniert nicht beim Starten von Streaming) Bugfix: javascript - findButton: die Delegation von on**** - events an Buttons repariert onAjaxResponse: bei OnChange-Events bei Checkboxen welche an einen definierten Button gebunden waren, wurden in einer Ajax-Loop fünf (5=max. syncCount) weiter Requests abgesetzt (Hintergrund onAjaxResponse versucht den value der Checkbox zu synchronisieren, dieser ist jedoch bei nicht Checkboxen null und somit ungleich dem erwarteten Wert).
211 213 6.0x 16.05.2016 Pfingstrelease: SVG-Support / useState für keyHash, secureKeyHash und csvSecureKeyHash / CRYPTSESSION 16. Mai 2016 NEW: SVG-Support via addons: Generieren von SVG-Graphiken CRYPTSESSION: sensible Session-Daten können nun mit CRYPTSESSION auch verschlüsselt in der Session gespeichert werden. Erweiterung: HTML-Content unterstützt nun auch bei codeBehind die renderPhasen preparing und processing keyHash, secureKeyHash und csvSecureKeyHash: neuer optionaler Parameter "useState=false" Falls kein Wert im pHash[key] hinterlegt ist, dann wird der Wert über getState(key) zurückgegeben. Anwendung: Vorbelegung von Controls mit zuvor vom User gesetzten Werten. Aufrufbeispiel: csvSecureKeyHash ($key, $pHash, $useState=true);
212 214 6.0y 22.05.2016 Odroid-C2 Release: Experimental Client-Events: onInput, onSelect, onInvalid, memory_get_peak_usage / ulliaConfigurationChecker 21. Mai 2016 Odroid-C2 Release: Ullia läuft nun unter Ubuntu 16 auf dem 2 GHZ Arm Minicomputer NEW: onInput: neues html5 famGrp-Event: analog zu onChange, wirkt jedoch unmittelbar bei Änderungen in text- und textarea- Feldern und nicht erst beim Verlassen des Feldes. (Funktion: "wackelig") onSelect: Event beim markieren eines Textbereichs in Textfeldern (Funktion: "wackelig") onInvalid: Event für ungültige Werte (funktioniert bisher aber leider nicht :-) memory_get_peak_usage: Für Admins: Anzeige in und für appInfo ulliaConfigurationChecker: Neue Funktion authInfo_configurationCheck in appInfo zum Testen auf Vollständigkeit der Konfiguration.  Refactoring: Modul perlFuncUtils und zugehörige Funktion perlChop eleminiert, die Funktion perlChop konnte wurde Caller durch einen einfachen Umbau mit substr(str, 1) ersetzt werden. Modul und Funktion wurden daher nicht mehr benötigt stateKeyValuUtil umbenannt in stateKeyValUtil
213 215 6.0z 29.05.2016 *SESSION: -GET- mit Default / App & Style: für User ab authLevel-3 / SELECT # / SELECT #+ 26. Mai 2016 Neu: App & Style: Angelmeldete User mit authLevel-3 oder höher können nun in appInfo freigegebene Styles und Apps wählen SELECT #: Neuer Dataprovider für die verfügbaren Layout-Style-Namen des jeweils angemeldeten Users SELECT #+: Dataprovider für die installierten Layout-Style-Namen App-, Style und Sprachumschaltung nun für User ab authLevel_1, wenn im entsprechenden Benutzeraccount die zugehörenden Werte freigegeben sind. Erweiterung: *SESSION: USER-, APP-, GLOB- und CRYPT-SESSiON unterstüzen nun auch einen Default-Wert beim Lesen. Beispiel: val = USERSESSION('key', '-GET-', 'der Defaut');
214 216 6.1. 04.06.2016 HasPathQuery / g_pathQueryString -> $g_pathQuery / getCachedImageFilePath 04. Juni 2016 Neu: getCachedImageFilePath (path, definition) Die Funktion generiert eine virtuellen Pfad der Form /c/.../definition/.. und gibt diesen zurück. Change: HasPathQuery : Erweiterung um einen optionalen zweiten Parameter val. Hiermit kann dann erfragt werden ob ein Key mit einem ganz bestimmten Wert gesetzt wurde. Beispiel: HasPathQuery ('speichern', 'ja') g_pathQueryString (umbenannt in g_pathQuery )
215 217 6.1.a 12.06.2016 Ostsee Release 12. Juni 2016 Ostsee Release Neu: function  codeBehindCreateLocalVars:  button: code-Vorlage if (IsActionButton(buttonBaseName)) {} ergänzt. function  getModTime (): gibt date('Y-m-d H:i:s') zurück function IsEditPreparing (): Neue Hilfsfunktion, prüft aktuell ob die ProcessPhase = inplaceConditionEdit ist function IsPreparing (): Prüft neben der ProcessPhase " preparing " auch auf  IsEditPreparing. Bugfix: Escape des Hochkommas in mit Hochkomma definierten Textvariablen führte nach dem Speichern zu Syntaxfehlern im codeBehind.
216 218 6.1.b 04.07.2016 Fenster Release 27. Juni 2016 Fenster Release: stark eingeschränkte Arbeitsmöglichkeiten vom 16.6. bis vorraussichtlich 6.7.2016 Neu: function getExpandedSysStateKeyValList : verwendet authExpandRightSelection(getSysStateKeyValList()) Bugfix: dataProviderGetStateKeyValues: durch Verwendung der neuen Funktion getExpandedSysStateKeyValList arbeitet matchStringToLogical nun auch korrekt bei checkboxList-Typen edit_control_definitions: ajaxInplaceLayoutEdit_save prüft ob ajaxControlData für den übergebenen ajaxDataKey passt. Falls nicht wird das Speichern nicht durchgeführt und eine Fehlermeldung ausgegeben. ToDo: Der Fall tritt z.B. checkboxList-Typen auf, wenn auf das Label einer checkbox-Option mit edit_control_definitions im Layout angepasst werden soll. Hierbei wird nicht die korrekte Beziehung zum Haupt-Control hergestellt (Ein Problem im Javascript Client-Code).
217 219 6.1.c 10.07.2016 Für Heiner 04. Juli 2016: Für Heiner (+2.7.2016)
218 220 6.1.d 31.07.2016 IsColDefMorphMode / authMorph-control / contextualMenu / toFuncCodeName Neu IsColDefMorphMode (aColDefHash): Prüft ob der Wert des Key ('_IsMorphMode_') auf true steht authMorph-control : neue container-CSS-Klasse toFuncCodeName : neue Hilfsfunktion um einen Namen in eine geeigneten Funktionsnamen zu konvertieren. (ersetzt aktuell Minuszeichen in Unterstriche) Bugfix: authMorph: dataProvider verwendet im morph-modus nicht der client-readonly-cache: Damit werden dann auch die Daten für ausgewählte Datensätze korrekt angezeigt. (Davor wurde immer der erste gespeicherte Datensatz aus dem readonly-cache geladen) Beim Anlegen einer neuen Seite, welche als Namen ein Bindestrich (Minuszeichen "-") enthalten hat, wurde der Code von codeBehind-controls nicht gefunden. Durch Konvertierung des Namens mit der neuen Hilfsmethode " toFuncCodeName " konnte das Problem behoben werden. Problem: wenn eine Seite -xml enthielt wird im codeBehind beim gernerieren des Funktionsnamen _xml daraus. Das führte zum abschneiden von pInfo an der Stelle '_x', wenn im codeBehind-Editor die Buttons createSimpleStub oder createFullCodeBehindStub aufgerufen wurde. Hier wurde durch den Split an der stelle _x der Rest der pathActions abgeschnitten sodaß die erforderliche /action:createSimpleStub nicht mehr vorhanden war. Generell sollte nochmal intensiv geprüft werden ob der Split an '_x' notwendig ist. (Dieser wurde mal eingeführt um die xy Koordinaten bei image-buttons zu eleminieren. Idee: contextualMenu: Analog zu filterMenu rendert die css-Style-class "contextualMenu" ein Kontextmenü. Die Optik kann sich hierbei am Material-Design mit den drei übereinanderliedgenden Punkten orientieren.
219 221 6.1.e 14.08.2016 writelock via session_start / IsAjaxCall / prevTimeStamp / u_render_inline_script / security / hasMessageLevel / BtnSelfPerform -> SelfPath 14. August 2016 Neu: session_start mit session_name (UL1IASESS) in ajaxRequests: Hiermit sollen konkorierende Schreibzugriffe vermieden werden. Die Aktivierung kann über das vorhandensein des Cookies UL1IASESS geprüft werden. Security: Neuer Default beim Einbetten von Javascript: Seitenspezifisches Javascript wird nun standardmaßig aus Sicherheitsgründen über einen zweiten script-Link eingebunden. u_render_inline_script : neue Option mit welcher Page-Javascript auch direkt inline in die Seite gerendert wird. Das Javascript funktioniert nur dann wenn dieses über die Content-Security-Policy (CSP) freigegeben ist. Change: Security: db_tabdef_read: verwendet nun immer strip_tags Security: db_tabrow_read: optionaler Parameter secure=false, bei secure=true wird strip_tags angewendet. Bei der Gelegenheit wurde auch gleich die nicht mehr verwendete Readgröße von 8192 Bytes in einigen Aufrufen von db_tabrow_read eleminiert. hasMessageLevel : Wenn level > 9 angegeben werden, dann wird die Nachricht nur angezeigt, wenn der User den authLevel 9 hat und die Debug-Option "u_msgdebug" gesetz ist. Bugfix: IsAjaxCall = true; darf im Modul _ajaxUpdater erst nach dem import von _baseConfig gesetzt werden, da in _baseConfig der Wert auf false gesetzt wird getOneTripValue ('_sysSession:prevTimeStamp_') zum Zwischenspeichern von _sysSession:TimeStamp_ eingeführt. Hiermit kann 'time since last access' berechnet werden. richedit: tinyMceBugFix erstellt und bei inplaceEdititable importiert. Damit kann nun wieder das externe edit-Fenster geschlossen werden. Deprecated Hinweis: Bei die Meldung  E_DEPRECATED [BtnSelfPerform, use SelfPath] ersccheint , gibt es wie folgt Abhilfe: den Inhalt von webSiteTemplates GaleryDetail galeryPages in der jeweiligen app korrigieren. Hier einfach btn_(BtnSelfPerform=) in in btn_(SelfPath) ersetzen
220 222 6.1.f 28.08.2016 sysConfigAnimation / appInfo: memory_limit / appInfo mit sticky bottom textAlign-right / db_open: [TRUE] Check / Message-Level [GT] 9 28. August 2016 Neu: Vorbereitung sysConfigAnimation memory_limit: appInfo zeigt im Abschnitt Application nun die max. Speichergrenze (memory_limit) an. appInfo rendert nun die Abschnitts-Buttons mit den Styles "sticky bottom textAlign-right" Messages mit level > 9: PushError, PushInfo und PushWarning unterstützen nun auch MessageLevel > 9, diese werden nur ausgegeben, wenn der User den auhtLevel 9 besitzt und zusätzlich die BodyClass-Option u_msgdebug gesetzt ist. Nützlich ist das für Meldungen bei denen der Admin z.B. noch ToDo's sehen kann, welche aber nicht immer angezeigt werden sollen. Bugfix: db_open: wenn tab als [TRUE] definiert ist, wird keine Fehlermeldung mehr ausgegeben.