Verhaltensänderungen in Intrexx 19.03
Installation
In diesem Abschnitt finden Sie die Verhaltensänderung von Intrexx 19.03.
HTTPS
Intrexx setzt nun per Voreinstellung voraus, dass Portale mit einer
verschlüsselten HTTP-Verbindung (HTTPS)
betrieben werden. Daraus ergeben sich die folgenden Vorteile:
- Verbesserung der Sicherheit
- Unterstützung zur Implementierung neuer Authentifizierungsverfahren
- Die Möglichkeit, Browser-APIs (z.B. Krypt-APIs) vollständig zu nutzen
- Geänderte Datenschutzbestimmungen (Privacy by Default, Privacy by Design)
- Meldungen von modernen Browsern über fehlende Verschlüsselung werden verhindert
Javascript-API changes
-
Selten wird unter Microsoft SQL-Server beim Anzeigen von Tabellen ein Fehler gemeldet.
Dies kann daran liegen, dass eine Sortierung nach einem Langtextfeld eingestellt ist,
was Microsoft SQL-Server nicht leisten kann. Der Fehler wird bereinigt, wenn die Sortierung
der Tabelle geändert und die Applikation anschließend gespeichert wird.
-
Ersatzlos entfallen ist
oHtmlRoot.oUp.oFuncPart
(nicht mehr kompatibel mit der Möglichkeit von Eingaben in
Frei gestalteten Tabellen).
Diese Methode lieferte bisher den Zugriff auf einen beliebigen FuncPart innerhalb des Browserfensters.
Verwenden Sie stattdessen
ix.util.getFuncParts
Damit können alle FuncParts innerhalb des Browserfensters ermittelt werden.
Mit
ix.util.getFuncParts(document.getElementById("Container_Stage"))
können alle FuncParts innerhalb eines Containers ermittelt werden.
Zusätzlich können noch FuncParts der Freien-Tabelle herausgefiltert werden.
Für die meisten Fälle ist dies aber nicht notwendig, da es sich im Gegensatz zu hier um Skripts handelt,
die im Kontext einer Seite ausgeführt werden. Sobald ein beliebiges HTML-Element aus einer Applikationsseite
referenziert ist, kann der FuncPart via
ix.util.getFuncPart(HTMLElement)
geholt werden.
-
Das Tooltip-Schließen bei Abbrechen-Schaltflächen kann, wenn eine Zielseite eingestellt ist und das Tooltip nur geschlossen werden soll,
eventuell problematisch sein. Als Lösung kann entweder die Zielseite herausgenommen werden oder es werden alle Parameter für die Zielseite mitgeschickt.
-
Das Expert-Flag für die Checkbox-Vorauswahl entfällt und wird mit der Eingabetabelle ersetzt.
-
Die Webservice-Unterstützung im Browser (Anzeigen von Elementen, Zuordnen von Feldern beim Speichern, Aufruf aus dem Web) entfällt.
Bessere Umsetzung über Webservice-Aktion im Modul Prozesse, Aufruf z.B. über Userworkflowevent.
-
Das Expert-Attribut customdefault triggert beim Laden einer Seite keine Abhängigkeit mehr.
customdefault wurde bis Intrexx Version 19.03 über JavaScript beim Laden der Seite gefüllt.
Damit wurde ein onChange angetriggert. Nun wird der Wert bereits vom Server geliefert.
Werden durch das entfallene Triggern eventuell damit verbundene Eventlistener nicht ausgelöst,
kann stattdessen die Abhängigkeit im onload-Event der Seite getriggert werden.
-
Funktionen entfallen:
getElement("E62723C1FFCB4D0E828FEA7C5743E836CA4A0546").onchange();
getElement("E62723C1FFCB4D0E828FEA7C5743E836CA4A0546").onclick();
JS-Events werden nun nicht mehr über HTML-Attribute angehängt. Empfehlung: Lösen Sie mit jQuery das Event
aus (funktioniert in allen Browsern):
$( [HTMLElement] ).trigger( [EVENT] )
Beispiel:
$(getElement("E62723C1FFCB4D0E828FEA7C5743E836CA4A0546")).trigger("change")
$(getElement("E62723C1FFCB4D0E828FEA7C5743E836CA4A0546")).trigger("click")
-
Entfallen ist
window.oUp.connector
Verwenden Sie stattdessen
window.location.pathname
-
Deprecated:
ix.loader.popup
Wird in einer kommenden Version komplett entfernt. Bis dahin wird auf
ix.loader.tooltip
umgeleitet. Wenn es einen dringenden Grund gibt, ein Popup zu verwenden, können Anwender über die
ix.loader.api einen eigenen custom renderer (callback-Funktion) angeben und dort den
neuen Inhalt per window.open in einem Popup laden.
-
End of Life für alle Browser ohne vollständige ECMA-Script 5 Unterstützung.
-
Schieberegler: Unterstützung für vertikale Darstellung entfällt ersatzlos.
-
Alte Javascript UP-Objekte für Aktionskontrollen stehen nicht mehr zur Verfügung.
Dies betrifft: upActionControl, upTextActionControl und upImageActionControl.
Die IX-API stellt folgende Alternativen bereit: ix.ajax, ix.loader und upSimpleAjax.
-
Betrifft alle UP-Klassen (JavaScript) für Eingabekontrollen: Die Validierungsmethoden wurden vereinheitlicht und vereinfacht.
Es stehen nachfolgende Methoden zur Verfügung:
public async checkValidity(): Promise<ValidationInfo>
public async reportValidity(): void
Nachfolgende Methoden wurden entfernt bzw sind deprecated:
- validate
- validateRequired
- validateRequiredDo
- validateValue
- validateInput
- validatePattern
-
Entfernt:
editcontrols/datetime/UpDateTimeMainEditControl: toLocalDateString()
-
Die Verwendung von
self.oUp.strOnLoad
wird nur noch beim Laden des Root-Fensters berücksichtigt.
Die Funktion in Intrexx 19.03 deprecated, da der String über ein eval ausgewertet werden muss (Sicherheitsrisiko).
Besser ist die Verwendung von
self.oUp.bindEvent("onload", function() {});
Auf Anwendungsseiten sollte das onload im Skript-Reiter der Seite verwendet werden,
oder via JS-Script beim FuncPart registriert werden:
getElement(PAGE-GUID).oUp.bindEvent("onload", function() {})
Velocity-Funktionen
Die Methode DsucUser#changePassword(JdbcConnection, int, byte[]) wurde nach 4 Jahren Deprecation
endgültig entfernt.
Intrexx-Authentifizierung
Intrexx 9 unterstützt das Intrexx-Challenge-Response-Verfahren zur Authentifizierung nicht mehr.
Daraus ergeben sich notwendige Änderungen beim Deployment und bei Webservice-Logins in Intrexx 9:
-
Es wird empfohlen, Webservices nur noch mit TLS-Verschlüsselung anzubieten.
-
Webservice-Aufrufe von Clients, vor allem auch Intrexx-Clients, die das Challenge-Response-Verfahren
nutzen, müssen auf Login mit Benutzername, Domäne und Passwort umkonfiguriert werden.
-
Bei der Umstellung auf TLS kann es notwendig werden, den konsumierenden Clients oder Portalen
das SSL-Zertifikat des Intrexx-Servers bekannt zu machen.
-
Die Klasse de.uplanet.lucy.server.auxiliaries.RemoteAuthProxy wurde entfernt.
Bei Bedarf kann sie auf Anfrage wieder zur Verfügung gestellt werden.
Portale und Portlets
Mit dem neuen
Portlet-Framework können responsive Portalseiten aufgebaut werden.
Der Aufbau der Grid-Strukturen orientiert sich dabei an den Einstellungen im
Modul Applikationen.
Portlets über mehrere Spalten:
Nach dem Upgrade werden bestehende Portalseiten in das neue Format überführt. Dabei kann jedoch nicht berücksichtigt werden,
ob ein Portlet über mehrere Spalten gezogen wurde. Diese Einstellungen müssen nach dem Upgrade im Grid vorgenommen werden.
Portlets in Anwendungsseiten:
Da das Portlet-Framework komplett asynchron arbeitet, müssen eventuelle Request-Werte über den Portletcontainer an die
eingebundenen Seiten weitergegeben werden. Dies kann beim Upgrade leider nicht automatisiert übernommen werden.
Wenn also Filter von eingebundenen Portlets auf Request-Werte zugreifen, sollten Sie Ihre Aufmerksamkeit auf diese Stelle richten.
Laden von Seiten aus Portlets heraus
Wenn Schaltflächen mit der Zielseitenoption
Im aktuellen Fenster öffnen
aus Portlets heraus Seiten laden, so werden die Seiten im Portlet angezeigt. Bei umfangreichen Seiten werden dann u.U. nicht alle Seitenelemente angezeigt.
Für diesen Fall ist die Einstellung
Im Hauptfenster öffnen
besser geeignet, da die geladene Seite damit vollständig angezeigt werden kann.
Sonstiges
Schaltflächen
Schaltflächen mit
Schaltflächentyp "Schaltfläche"
und
Sprung "auf die Startseite des Portals"
werden nicht mehr unterstützt. Sie werden in eine Schaltfläche mit Typ "Text" gepatcht.
Die
Styleklasse
wird zu Link_Standard gepatcht, individuelle Styles werden entfernt.
Ansichtstabellen
Javascript in Ansichtstabellen mit
Velocity-Zugriff auf den jeweiligen Datensatz der Tabelle:
Scripts, die
$drRecord verwenden funktionieren nicht mehr,
da $drRecord an dieser Stelle nicht mehr aufgelöst wird. Stattdessen sollte der Velocity-Part z.B.
in ein
data-Attribut ausgelagert und im Anschluss per JavaScript wieder ausgelesen werden.
Beispiel:
ActionControl in einer Ansichtstabelle mit folgendem Skriptaufruf:
takeOverTest($drRecord.getValueHolder('integervcontrolB53C1BD7').getValue(), getElement("195D00AD893B2C017E050B1D916688927AAFE825"));
Der Teil
$drRecord.getValueHolder('integervcontrolB53C1BD7').getValue()
wird auf dem Reiter
Expert als Wert eines Attributs "data-bugid"
eingetragen und der Skriptaufruf in
takeOverTest(this.dataset.bugid, getElement("195D00AD893B2C017E050B1D916688927AAFE825"));
geändert.
Weitere Änderungen
-
PlainPasswordLoginModule wurde entfernt. Es kann gleichwertig durch IntrexxLoginModule ersetzt werden.
-
editcontrols/datetime/UpDateTimeMainEditControl: toLocalDateString() entfernt
-
Intrexx-Challenge-Response-Verfahren zur Authentifizierung wird nicht mehr unterstützt.
Daraus ergeben sich notwendige Änderungen beim Deployment und bei Webservice-Logins:
-
Es wird empfohlen, Webservices nur noch mit TLS-Verschlüsselung anzubieten.
-
Webservice-Aufrufe von Clients, vor allem auch Intrexx-Clients, die das Challenge-Response-Verfahren nutzen,
müssen auf Login mit Benutzername, Domäne und Passwort umkonfiguriert werden.
-
Bei der Umstellung auf TLS kann es notwendig werden, den konsumierenden Clients oder Portalen
das SSL-Zertifikat des Intrexx-Servers bekannt zu machen.
-
Die Klasse de.uplanet.lucy.server.auxiliaries.RemoteAuthProxy, die in der Vergangenheit von ein
paar wenigen Kunden eingesetzt wurde, wurde entfernt. Sollte es noch Kunden geben, die diese Klasse
benötigen, kann sie auf Anfrage wieder zur Verfügung gestellt werden.
-
Callable DSPassword wurde entfernt
-
Methode DsucUser#changePassword(JdbcConnection, int, byte[]) wurde nach 4 Jahren Deprecation endgültig entfernt
-
Das Sessionmanagement per URL-Parameter rq_SId wird nicht mehr unterstützt
-
Aus Sicherheitsgründen gibt es nur noch HTTP-Only-Cookies mit (im Fall von HTTPS) gesetztem Secure-Flag
-
Die Klasse PortalServerPath wurde entfernt. Dies hat keinen Einfluss auf Ihr System. Wenden Sie sich bei Fragen an den Support von United Planet.