0
votes

I may have found an odd issue today with Umbraco 4.8.1 (this is not an issue with earlier versions and not tested newer ones as of yet).

Steps to reproduce

  1. Open up Umbraco Administration System on Windows XP Use any Internet Explorer based browser - this is not an issue with Chrome, Firefox or Safari
  2. Log in to the administration system.
  3. Navigate to the content section.
  4. Click on content and create a new item of content and select a document type.
  5. Click Create.

At this point I would expect to be presented with the dashboard for the newly created item. But what actually happens is the create dialog disappears and you remain on the same intial dashboard and the tree does not update. If you click Reload Nodes on the tree then the new node is in there - you can click on it and then get the same new content dashboard.

This issue occurs on IE6, IE7 and IE8 when using the windows xp operating system. When I use Windows 7 this is not an issue and this appears to work fine.

I used fiddler to check the local traffic on both machines. On Windows 7 version I noticed a second call to create.aspx? which retuned a 200 and then a subsequent call to editContent.aspx etc - on Windows XP this second call happens but the subsequent editContent.aspx does never get called. It does seem to create the node but then fails to redirect or call the page subsequently.

Can anyone help? suggest what is going on? I tried looking on the forums and google without much help?

Please do not respond with tell your client not to use Windows XP. Please do not respond with you will have better luck on the umbraco forums - i've already posted there: http://our.umbraco.org/forum/using/ui-questions/36841-Create-Content-does-not-redirect-to-new-Content-Page-on-IE6-8-on-Windows-XP

1

1 Answers

0
votes

After some investigation I found the reason what was causing this. Umbraco uses a javascript file UmbracoClientManager.js and a function on it called contentFrame - to redirect the main dashboard frame.

In 4.7.1 and previous versions no setTimeout closure was added around the redirect:

Line 133 umbraco_client\Application\UmbracoClientManager (version 4.8.1+)

var self = this;
window.setTimeout(function(){
  if (typeof self.mainWindow().right != "undefined") {
    self.mainWindow().right.location.href = strLocation;
  }
  else {
    self.mainWindow().location.href = strLocation; //set the current windows location  
          if the right frame doesn't exist int he current context
  }
},200);

Line 133 umbraco_client\Application\UmbracoClientManager (version 4.7.1) - the same code above is actually

if (typeof this.mainWindow().right != "undefined") {
 this.mainWindow().right.location.href = strLocation;
  }
else {
  this.mainWindow().location.href = strLocation; //set the current windows location if the right frame doesn't exist int he current context
}

Thus if the dashboard page you are redirecting to takes longer than 200ms then it will not show and the javascript function will timeout in versions 4.8.1 or higher

So best thing is to do if you have dashboards which take longer than 200ms - is to up this to a suitable value.

This I documented here: http://issues.umbraco.org/issue/U4-1311