UAG 2010 Custom Portal
Hello everyone. In the next couple posts I’ll talk a bit about making changes to the UAG Portal and UAG Logon pages. Most customer deployments require complete rebranding of these two user interfaces and as I found there is not whole a lot of information available on how to do this. I just did a project where customer wanted to have a completely different look from the default UAG branding. Changing text strings in Language file was not enough for them, and unfortunately UAG help does not go into much more detail on how to do other changes to Portal or Logon pages. Also, while customer wanted to have their own unique look and feel, they wanted to make sure we do not modify UAG code and keep it default as much as possible.
I’m not going to discuss how to modify UI for mobile phones or other type of clients. This post discusses how to modify UAG Portal UI for normal browsers only.
First I’ll talk about rebranding the Portal UI. I know it is not what user sees first, but I just feel like talking about it first.
Before we go into the changes let’s compare the default UAG Portal UI and what we want it to look like.
This is what you are most familiar with:
This is what we are going to make it look after a few changes:
They do look very different isn’t it? In the following diagram I’m going to identify specific zones and elements on the original UI that we are going to change:
As you can see I identified seven general areas that must be modified. Each of the areas actually have different elements that controlled via its own configuration files.
Let’s take a look at each area and identify what must be changed:
- Area 1. This is the logo in the left top corner and it must be replaced with our own custom logo.
- Area 2. In this area we need to remove the “Application and Network Access Portal” words out and replace the background with our own custom background.
- Area 3. Here we need to replace all image buttons with text, remove some of these buttons and replace background with our own custom background.
- Area 4. Need to replace it with our custom background graphic.
- Area 5. The left side folder area must be removed.
- Area 6. In main application area we will replace the background color and modify the text shown with each published application.
- Area 7. In footer area we need to replace the text and provide our own background color.
Some of the above areas have other elements as well, like borders for example which we need to either remove or replace with more suitable colors.
All custom changes in UAG are recommended to be done via supported CustomUpdate folder mechanism. Basically, you take the file that you want to modify and copy it in the corresponding CustomUpdate folder. Then you will modify this file and UAG will automagically pick them up and use these settings for displaying UI. It is not recommended or supported to modify files in their default locations.
The Portal UI is controlled by code located in PortlalHomePage folder. There are a lot of folders there, but the two main that we are going to work with are the following:
- App_Themes
- Data
Most of the visible text strings that we see in UI are controlled via languages configuration files. There is one for each supported language. I’m going to work with English only. The default files are located under Data\Languages folder. To customize text strings we’ll copy EN-US.XML file to Data\Languages\CustomUpdate folder and make some changes to it. If you look at this file you’ll see a few hundred IDs with corresponding text. It is called from the application code and all we need to do is to identify proper IDs and modify text to our own liking.
Let’s see what we need to modify in each area.
- Area 1. There is no text there. No changes to EN-US.XML file.
- Area 2. The default UI has the following text: “Application and Network Access Portal” which is not present in our final custom UI. We need to remove this text from EN-US.XML file. This text string is controlled by ID #12. Remove it, so it looks like this: <String id=”12” _locID=”12”></String>
- Area 3. It does not contain text that we need to change via Languages file.
- Area 4. It does not contain text that we need to change via Languages file.
- Area 5. It does not contain text that we need to change via Languages file.
- Area 6. It does not contain text that we need to change via Languages file.
- Area 7. The default UI has the following text: “Contact us | Microsoft Corporation. All rights reserved. Terms and Conditions”. This string is actually controlled via different configuration files:
“Contact us” is controlled via ID 182. If we remove it from languages file, it will still take the space in the footer and the rest of the footer will not be properly aligned. Also, the vertical separator “|” is not controlled via Languages file. Both of this values will be removed from UI by modifying Data\Sitemap\Footer\LeftFooter.sitemap file. Comment out the first two sections, so it looks like this and then copy this file to Data\Sitemap\Footer\CustomUpdate\ folder:
<?xml version=”1.0″ encoding=”utf-8″ ?> <!– <siteMapNode url=”” <siteMapNode url=”” </siteMapNode> |
“Microsoft Corporation. All rights reserved. Terms and Conditions” text is controlled via Languages file using <String id=”1” _locID=”1”>. For our custom portal we will replace it with the following text so it looks like this:
- <String id=”1″ _locID=”1″><!– _locID_CDATA=”HTM” –><![CDATA[<a href=’https://portal.contoso.com’>Home</a> | Contoso Inc | UAG CustomPortal | CloudIdentityBlog.com]]></String>
- Site Title for UAG portal is controlled via String id =11. Modify it to whatever title is required, in our case: <String id=”11″ _locID=”11″>Executive Office for Immigration Review – Portal</String>
After making changes to the EN-US.XML file, copy it to the Data\Languages\CustomUpdate folder. Activate UAG and we see the following UI:
Area three contains a lot of action buttons. Most of these buttons were removed from our UI and all of them were converted to text only presentation.
To modify “Log Off” button and remove little door from UI modify Data\Sitemap\Toolbar\Logout.Sitemap from this:
<?xml version=”1.0″ encoding=”utf-8″ ?> title=”$Resources:Resource, 112″ </siteMapNode> |
To this:
<?xml version=”1.0″ encoding=”utf-8″ ?> <siteMapNode url=”” </siteMapNode> |
And copy it to the Data\Sitemap\Toolbar\CustomUpdate folder.
Refresh UAG Portal on the client and you’ll have this UI:
All other buttons are controlled via the Data\Sitemap\Toolbar\Web.Sitemap file. Modify it to look like this, commenting out all buttons and graphic:
<?xml version=”1.0″ encoding=”utf-8″?> <siteMapNode url=”Default.aspx” title=”Home” description=”Home page” imageUrl=””> <!– <siteMapNode url=”” <siteMapNode url=”javascript:openCredentialsWin(‘/internalsite/credentialssettings.asp’)” <siteMapNode url=”” <siteMapNode provider=”ApplicationListSiteMapProvider” /> <siteMapNode url=”” <siteMapNode url=”javascript:openBrowseAdditional();” <siteMapNode url=”” <!– <siteMapNode url=”javascript:openSystemInformation();” <!– <siteMapNode url=”” <!– <siteMapNode url=”javascript:openHelp();” <!– <siteMapNode url=”” <!– <siteMapNode url=”javascript:showPortalActivity();” <!– <siteMapNode url=”” <!– <siteMapNode url=”mailto:admin@domain.com” <!– Copy the file to the CustomUpdate folder and uncomment the next siteMapNode to add a button to the toolbar for the Forefront UAG client components Installer. –> <!–<siteMapNode url=”~/OfflineInstaller.msi?type=Basic” </siteMapNode> |
And copy it to the Data\Sitemap\Toolbar\CustomUpdate folder.
Refresh UAG Portal on the client and you’ll have this UI:
The rest of the UI will be modified via Cascading Style Sheets in PortalHomePage\App_Themes folder and new graphic files.
To change search results font color to black and to make application tiles text black make the following changes to TilesViewAppList.css file:
.TilesView_SearchResultsTitle { .TilesView_AppItemLink { |
Save this file and copy to the PortalHomePage\App_Themes\CustomUpdate\Office folder.
Refresh UAG Portal on the client and you’ll have this UI:
To modify how text appears in toolbar modify Toolbar.css file to look like this:
#timer { .StaticMenu { .StaticMenuItem { .StaticMenuItem tr td a img { .OverStaticMenuItem { .OverStaticMenuItem tr td img { .OverStaticMenuItem a { .DynamicMenu { .DynamicMenuItem { .DynamicMenuItem a { .DynamicMenuItem img { .DynamicHoverStyle { .DynamicHoverStyle a { |
Save this file and copy to the PortalHomePage\App_Themes\CustomUpdate\Office folder.
Refresh UAG Portal on the client and you’ll have this UI:
The final changes will be done via Office.css file and new graphic files.
Modify Office.css to look like this:
/*Office.css*/ body { div#topStrip { .leftSideBarTable { .TilesViewTable { div#toolbar { .topStripLeftCell { .topStripLeftCell div { .portalTitleCell { .topStripWhiteSpacerCell { .topStripPattern { .topStripOrangeSpacerCell { .topStripRightCell { .toolbarLeftCell { .toolbarMidCell { .toolbarRightCell { .leftPanel { .rightPanel { div#content { .contentLeftMargin { .topLeftMarginGradient { .topRightMarginGradient { .bottomLeftMarginGradient { .bottomRightMarginGradient { .contentRightMargin { .contentLeftSideBarCell { .hiddenSideBar { .mainContentCell { .leftTopSideBarCell { .midTopSideBarCell { .rightTopSideBarCell { .leftSideBarMargin { .appTreeContainerPanel { .sideBarContent { .sideBarContent > div { .sideBarContent img { .sideBarContentPanel { .rightSideBarMargin { .sideBarTitle { .labelTitle { div#footer { div#footer table { div#footer A { .footerLeftCell { .footerMidCell { .footerMidCell div { .footerRightCell { .BigTitle { .main_iframe { .AjaxLoadingPanel { .AjaxLoadingImage { .AjaxLoadingLabel { .AjaxLoadingModal { .treeContentSpacerCell { |
Save this file and copy to the PortalHomePage\App_Themes\CustomUpdate\Office folder.
And in the final step we need to move custom graphic into the PortalHomePage\App_Themes\CustomUpdate\Office\Layout folder. We are replacing the following default images with our custom images:
- Toolbar_middle.gif /* Control background of tool bar with all command buttons */
- Footer_middle.gif /* Control the footer background */
- Header_logo.gif /* Control the left of the top logo area */
- Header_middle.gif /* Control the middle of the top logo area */
- Header_right.gif /* Control the right side of the top logo area */
- Panel_header_left.gif /* Control the left corner of the bar next to Home */
- Panel_header_middle.gif /* Control the tool bar from Home to Name */
- Panel_header_right.gif /* Control the right corner of the bar next to Name */
- Portalbackground.gif /* Control the background inside the main application window */
- Portalbackground2.gif /* Control the background around the main application window */
UAG Portal Image map:
Just copy them to the target folder and then refresh UAG Portal on the client computer and we have the winner:
In next post we will discuss how to modify UAG Logon and Logoff UI pages.
Awesome post, didn’t have a clue how to do this. Language files is as far as I’d got.
Looking forward to the Logon/Logoff pages.
LikeLike
When I do Step: “All other buttons are controlled via the Data\Sitemap\Toolbar\Web.Sitemap file. Modify it to look like this, commenting out all buttons and graphic:” I get an error. I followed it exactly how it is typed out and even copied and pasted it and it still gives an error once I refresh the UAG.
LikeLike
when you comment those buttons out make sure to use double – – , here in UI on the page it was converted to single –
LikeLike
Do you expect problems with future updates when the new UI is implemented?
LikeLike
it depends on what they do with new UI and code behind it, if it is using the same mechanism to build UI then should have minimal impact, if they change the underlying code then it could be substantial. test it first in the lab!!!
LikeLike
How do I get to Portlalhomepage folder? The App_Themes and Data folders? Thanks much
LikeLike
You will find this folders under UAG installation folder, somewhere under c:\Program Files\…
LikeLike