Citrix Storefront Update auf 3.XX – Remember Username
Im Folgenden möchten wir euch zeigen, wie Ihr euer Citrix Storefront ab der Version 3.XX dahingehend customizen könnt, dass das Feld mit dem Usernamen automatisch mit dem zuletzt erfolgreich angemeldeten User gefüllt wird. So entfällt das lästige Eingeben des Benutzernamens.
Hierzu haben wir zwei Möglichkeiten, diese Änderungen umzusetzen. Zum einen über die script.js Datei, die wir unter C:\inetpub\wwwroot\Citrix\XXXWeb\custom finden, oder über die custom.script.js Datei, die wir unter C:\inetpub\wwwroot\Citrix\XXXWeb\contrib finden. Im Folgenden werden wir die Änderungen über die script.js vornehmen.
Entscheidend bei der Wahl der Datei ist, dass das entsprechende Skript beim Aufruf der Seite geladen wird. Dies könnt ihr einfach in der Receiver.html im Verzeichnis C:\inetpub\wwwroot\Citrix\XXXWeb\ nachschauen.
Weiter unten findet ihr folgenden Abschnitt:
<script type="text/javascript" id="customScript"> var query = window.location.search + window.location.hash; if (query.indexOf('-nocustom') == -1) { document.write('<script src="custom/script.js"></scri' + 'pt>'); document.write('<script src="custom/strings.en.js"></scri' + 'pt>'); } </script>
Hier wird das entsprechende Skript geladen, in unserem Fall script.js .
Als nächstes konfigurieren wir nun die script.js Datei.
Hierfür benötigen wir nun zwei Funktionen. Zum einen die authentication_remember_Username und die authentication_preload_Username . Die eine Funktion übernimmt das Speichern des Usernamens und die andere das Laden des Usernames beim Aufruf:
function authentication_remember_Username() { var loggedIn_Username = $('#username').val(); if (loggedIn_Username) { var expires = new Date(); expires.setTime(expires.getTime() + (7 * 24 * 3600 * 1000)); document.cookie = "CITRIX_AUTH_USERNAME" + "=" + loggedIn_Username + '; expires=' + expires.toUTCString() + '; path=/'; } }
function authentication_preload_Username() { // this must be called a bit delayed, // otherwise elements are not loaded to document setTimeout(function () { // check if document and elements are already available // otherwise add 1000 ms before load Username var extra_timeout = !$('#username').length ? 1000 : 1 // Now we are doing the magic ;-) setTimeout(function () { var previous_Username = CTXS.getCookie("CITRIX_AUTH_USERNAME"); if (previous_Username) { $('#username').val(previous_Username).attr('style', 'color:#777'); $('#password').focus(); } else { $('#username').focus(); } }, // short or long, based on availability of document elements extra_timeout); }, // first timeout short after normal graphic loop 500ms 550); }
Danach müssen wir nun noch den Aufruf unserer Funktionen definieren:
$(document).ready(function () { CTXS.Events.subscribe(CTXS.Events.resources.unauthorized, authentication_preload_Username); CTXS.Events.subscribe(CTXS.Events.store.initialised, authentication_remember_Username); });
Unter Storefront 2.X war die Funktion für den Aufruf der authentication_remember_Username Funktion noch:
CTXS.Events.subscribe(CTXS.Events.authentication.success, authentication_remember_Username);
Mit dem Update auf Storefront 3.X hat sich diese Funktion nun geändert.
Comment (1)
Hallo,
bei mir wird der Benutzername trotzdem nicht vorausgefüllt.
kann auch keinen Cookie finden.
habt ihr eine Idee?
Tim