Erweiterterbarkeit vom Login-Framework (kundenspezifische Panels)
Wenn die Basisfunktionalität nicht ausreichend ist, kann sowohl das Standard- als auch das Serverlogin-Panel durch eine eigene Implementierung ersetzt werden. Dieses Kapitel beschreibt wie Sie eigene Panels für das Login-Framework verwenden.
-
Setzen Sie die Config-Einträge loginPanelLocal und loginPanelServer in der [ui]-Sektion der Config-Datei
Config-Eintrag | Beschreibung |
---|---|
loginPanelLocal | Panel für die lokale Authentifizierung. |
loginPanelServer | Panel für die serverseitige Authentifizierung für UI-Manager. |
-
Um ein kundenspezifisches Panel zu verwenden, fügen Sie eine Klasse zu dem Login-Framework hinzu WinCC_OA_Proj/scripts/libs/classes/loginFramework. Die Klasse implementiert die LoginFrameworkChild-Ansicht LoginFrameworkChildView. Fügen Sie die Klasse basierend auf den zwei Beispielen WinCC_OA_Proj/scripts/libs/classes/loginFramework/LoginFrameworkLoginServer.ctl und LoginFrameworkLoginStd.ctl und basierend auf den Klassen LoginFrameworkChildView und loginFrameworkController.
-
Implementieren Sie alle Funktionen Ihrer Klasse, welche die LoginFrameworkChildView-Klasse implementiert. Wenn die Funktionen der Klasse nicht implementiert sind, wird keine Aktion ausgeführt, wenn eine spezifische Funktion aufgerufen wird.
-
Das kundenspezifische Panel muss zumindest folgende Punkte implementieren
- Einen shared_ptr auf den loginFrameworkController als panelglobale Variable setzen:
#uses "classes/loginFramework/LoginFrameworkLoginStd"
shared_ptr<OaAuthUI> m_ui;
shared_ptr<LoginFrameworkController> m_loginFrameworkController = LoginFrameworkController::getInstance();
- Diesen shared_ptr dem Controller-Objekt übergeben - siehe unterhalb.
- Wenn Systembenutzungsbenachrichtigungen unterstützt werden sollen, muss zusätzlich noch das OaAuthUI- Objekt dem Controller übergeben werden:
m_ui = new OaAuthUI();
shared_ptr<LoginFrameworkChildView> view = new LoginFrameworkLoginStd(self, "txt_username", "txt_password", "txt_domain", "chkBx_userLang", "chkBx_monitor");
m_loginFrameworkController.setLoginFrameworkChildView(view);
m_loginFrameworkController.setOaAuthUI(m_ui); /* if there is a system use notification after the login we need to handle the starting of the UI from the Controller setFrameworkView(); */