Gemeinsame Nutzung von Visualforce-Seiten in Salesforce Classic und Lightning Experience
Lernziele
- Auflisten von zwei Vorteilen der gemeinsamen Nutzung von Seiten in Salesforce Classic in Lightning Experience
- Beschreiben des Unterschieds zwischen dem vom Benutzer gewünschten Benutzeroberflächenkontext und dem tatsächlichen
- Beschreiben von drei unterschiedlichen Möglichkeiten zum Testen und Ermitteln des aktuell vom Benutzer verwendeten Benutzeroberflächenkontexts
Gemeinsame Nutzung von Visualforce-Seiten in Salesforce Classic und Lightning Experience
Es ist natürlich dennoch vollkommen verständlich, wenn eine geringfügig oder erheblich andere Verhaltensweise oder Gestaltung wünschenswert ist, die vom Kontext der Benutzeroberfläche abhängt, in dem die Seite ausgeführt wird. In dieser Lektion sehen wir uns mehrere Möglichkeiten an, Seiten zu erstellen, die korrekt in allen Benutzeroberflächen funktionieren. Außerdem erfahren Sie, wie Ihr Code Änderungen in bestimmten Kontexten bewirkt und erkennt.
Erkennen und Reagieren auf den Benutzeroberflächenkontext in Visualforce-Markup
- Theme1: Veraltetes Salesforce-Thema
- Theme2: Benutzeroberflächenthema Salesforce Classic 2005
- Theme3: Benutzeroberflächenthema Salesforce Classic 2010
- Theme4d: Salesforce-Thema "Modernes 'Lightning Experience'"
- Theme4t: Thema "Mobile Salesforce-Anwendung"
- Theme4u: Thema "Lightning-Konsole"
- PortalDefault: Thema "Salesforce-Kundenportal"
- Webstore: Thema "Salesforce AppExchange"
Ãœber die Grundlagen hinaus
Hierbei handelt es sich um eine eher ungewöhnliche Nutzung von <apex:variable>, da wir am Wert, den die Variable erstellt, gar nicht interessiert sind. Wir möchten lediglich eine Komponente, die selbst keine eigene Ausgabe darstellt, um die Komponente <apex:stylesheet> einzukapseln. Stellen Sie sich das am besten vor, als würde die Variable <apex:variable> ihr Attribut "rendered" der Komponente <apex:stylesheet> "leihen".
Zum Glück ist uns die Variable selbst egal, denn durch das Einkapseln eines Elements in die Komponente <apex:variable> wird die Variable überhaupt nicht erstellt! Funktion oder Fehler? Nennen wir es mal... undefiniertes Verhalten und verwenden wir die Variable uiTheme ganz einfach nirgendwo sonst.
Erkennen und Reagieren auf den Benutzeroberflächenkontext in JavaScript
Um zu erkennen, was der Benutzer in JavaScript sieht, verwenden wir eine ähnliche Methode wie beim Ermitteln des aktuellen Benutzeroberflächenkontexts in Visualforce. Rufen Sie die globale Variable UITheme.getUITheme() auf, um einen Wert zurückzugeben, der das aktuelle Benutzeroberflächenthema angibt.
Hier prüft der Code, ob der aktuelle Benutzeroberflächenkontext das Lightning Experience-Thema ist.
Festlegen des Benutzeroberflächenkontexts in Apex
- Theme1: Veraltetes Salesforce-Thema
- Theme2: Benutzeroberflächenthema Salesforce Classic 2005
- Theme3: Benutzeroberflächenthema Salesforce Classic 2010
- Theme4d: Salesforce-Thema "Modernes 'Lightning Experience'"
- Theme4t: Thema "Mobile Salesforce-Anwendung"
- Theme4u: Thema "Lightning-Konsole"
- PortalDefault: Thema "Salesforce-Kundenportal"
- Webstore: Thema "Salesforce AppExchange"
Die Nutzung dieser Methoden in serverseitigem Steuerfeldcode ist eher selten. Jedenfalls im Vergleich zur Angabe verschiedener Visualforce-Markup- oder JavaScript-Codes. Eine bewährte Methode lautet, dass Ihr Steuerfeld- und Steuerfelderweiterungs-Code in Bezug auf den UX-Kontext neutral ist. Lassen Sie Ihren Front-End-Code, egal ob Visualforce oder JavaScript, die Unterschiede zwischen den Benutzeroberflächen behandeln.
Abfragen nach Lightning Experience über SOQL- und API-Zugriff
Es wird nicht empfohlen, die Lightning Experience-Voreinstellung des Benutzers direkt abzufragen. Das Ergebnis gibt die derzeit eingestellte Voreinstellung des Benutzers zurück, nicht die tatsächlich angezeigte Benutzeroberfläche. Es gibt mehrere Bedingungen, bei denen der Voreinstellungswert nicht unbedingt mit der tatsächlich verwendeten Benutzeroberfläche übereinstimmt. Verwenden Sie $User.UIThemeDisplayed oder UserInfo.getUiThemeDisplayed(), um die in der aktuellen Anforderung tatsächlich bereitgestellte Benutzeroberfläche zu ermitteln.