August 17, 2010

Fix Maximo 6 UI problem with Microsoft Explorer 8

With latest versions of Internet Explorer have problems when trying to open sub-menus under the Go To main menu. This problem seriously affects Maximo's UI navigation.
The support for Microsoft Explorer 8 has been included in the IBM Maximo 6.2.5 FixPack

If you cannot apply the entire FixPack in your environment you can apply few small changes to a Javascript file to fix the IE8 issue.

  1. Backup the original menus.js file located in [maximo_home]/applications/maximo/maximouiweb/webmodule/webclient/javascript
  2. Replace the setPopLocation function in the script with the one reported below and save menus.js file.
  3. If you are using WebSphere application server you also need to replace the menus.js file located under [WebSphere]\AppServer\profiles\[profilename]\installedApps\[CellName]\MAXIMO.ear\maximouiweb.war\webclient\javascript
  4. Clean the local cache of your Microsoft Internet Explorer: Tools - Delete Browsing History... - Temporary Internet Files.
  5. Refresh the page and... enjoy Maximo on IE8!

Code to be updated in menus.js file


function setPopLocation(popObj)
{
  var opener = popObj.openermenu;
  hrequired = parseInt(document.body.clientWidth-2) - parseInt(popObj.offsetWidth)-10;
  vrequired = parseInt(document.body.clientHeight-2) - parseInt(popObj.offsetHeight) + document.body.scrollTop;
  if(menuX >= hrequired)
  {
    if(opener)
      menuX= menuX-opener.clientWidth-popObj.clientWidth;
    else
      menuX= hrequired;
  }

  if(opener)
    menuY-=parseInt(opener.scrollTop);

  if(menuY > vrequired)
  {
    tempTop = menuY - popObj.offsetHeight + 16;
    cName = popObj.className;
    if(tempTop<5 && cName.indexOf("menu")>=0)
    {
      popObj.style.overflowY="scroll";
      popObj.style.height=document.body.clientHeight-menuY-10;
      popObj.style.width=popObj.clientWidth+30;
    }
    else
      menuY = tempTop;
  }
  
  if(menuX<0)
    menuX=0;

  if(menuY<0)
    menuY=0;
    
  if(opener)
  {
    popObj.style.left=menuX;
    popObj.style.top=menuY;
  }
  else
  {
    popObj.style.left=menuX+document.body.scrollLeft;
    popObj.style.top=menuY+document.body.scrollTop;
  }
}

Reference links

No comments:

Post a Comment