In a recent blog post, I discussed a common situation where one might need to add content to the login page. Since then, many customers asked if I can suggest a way to add content in other places on the page. For example, if we want to provide guidance for users regarding the username format to be used.

Well, essentially, the same technique I described in “my terms” can be used here, and with some creative CSS and HTML, a lot can be done. The Login page uses many strings that are retrieved from the main language file, and each of these can be modified with the CDATA method to add any content you need, and without having to actually touch the default page itself. Here’s a list of strings that the Login page uses (I abbreviated some of the text):

 

4 - "This site is intended for authorized users only."

5 - "If you experience access problems contact the <a href='mailto:'>site administrator</a>."

62 - "Log On"

85 - "The site cannot be accessed"

86 - "To access this site, adjust the security settings in the browser to a lower level."

87 - "Click here"

88 - "for more information."

102 - "Complete all the required fields before logging on."

103 - "Enter additional credentials to access applications associated with the credentials from the portal page."

104 - "Log On"

105 - "User name:"

106 - "Password:"

107 - "Authenticate using:"

108 - "User name:"

109 - "Password:"

110 - "For security purposes, when you finish working with this site do one of the following:"

111 - "Note: The Caps Lock key is on. Passwords are case-sensitive."

112 - "Language:"

113 - "Do you want to reload the page in the selected language? All data entered on the page will be deleted."

114 - "You are accessing this site from an endpoint running Microsoft Windows XP with Service Pack 2 (or a later service pack)."

115 - "To ensure full site functionality a Windows update is required. To download and install the update, click"

118 - "Internet Explorer is configured by default to block pop-ups. To receive inactivity timeout notifications and other warnings, configure the browser to allow pop-ups from this site."

119 - "You are accessing this site from an endpoint running Windows Server 2003 with Service Pack 1 (or a later service pack)."

120 - "You are accessing this site from an endpoint running Windows Vista or Windows Server 2008."

125 - "Forefront UAG endpoint components were not installed because you accessed this site using a 64-bit version of Internet Explorer. To install the components access the site using a 32-bit browser."

129 - "You are accessing this site from an endpoint running Windows Server 2008 R2."

829 - "Microsoft Forefront Unified Access Gateway - Logon Page"

You could alter any of them to your liking. For example, you can add a line break, and some font and color changes after string 105, to have some text there. For example, this:

<String id="105" _locID="105">User name:<![CDATA[<BR><font color=red size=-3><BR>Please use the<BR>Domain\Username format</font>]]></String>

Would produce this:

clip_image002

If you don’t think this is elegant enough, and want the text to appear in some other place on-screen, you might customize other strings. Adding some text at the beginning of string 4, for example, would show up under the line. If you want to have something even more elaborate, then this is all about HTML and CSS trickery, and how creative your coding skills are. For example, the “position” style element can be used to drop a paragraph anywhere on-screen. For example:

<String id="105" _locID="105">User name:<![CDATA[<p style="position:absolute;top:215px;left:560px;">Please&nbsp;feed&nbsp;in&nbsp;your username&nbsp;using&nbsp;the&nbsp;format <B>user@domain</p>]]></String>

Will look like this:

clip_image004

Is this the perfect solution? Hardly – an absolute position is measured from the edge of the screen, so people using IE with a different display-resolution or with the IE window floating may see the text floating somewhere else. Note that I’m also using the &nbsp; (non-breaking space) to force the text to flow as I wish.

You might even consider using more dynamic scripts, like this or this. The possibilities are endless, of course. One thing to keep in mind, though, is that you need to perform thorough testing to maintain browser compatibility and platform compatibility for your code. Also, injecting huge scripts into a CDATA statement may be challenging. Good luck!