Moving newly created publishing page to top in MOSS 2007 programmaticaly

60 Views Asked by At

I am stuck with this problem for nearly one day now: In an application, I create a publishing page in code:

PublishingPage newPage = pages.Add(usableName, layout);
newPage.ListItem["Title"] = promoRecord.PromotionName;
newPage.ListItem["Description"] = string.Empty;
newPage.Update();
newPage.CheckIn("First draft");

So far so good. The problem is, I need the newly created page to appear at the top of the navigation. I was naive enough to think something as simple as this:

SPNavigationNodeCollection navigationNodes = pWeb.CurrentNavigationNodes;
SPNavigationNode newNode = null;

foreach (SPNavigationNode node in navigationNodes)
{
  if (node.Url.Equals(prefix + newPage.Url, StringComparison.OrdinalIgnoreCase))
  {
    newNode = node;
  }
}
newNode.MoveToFirst(navigationNodes);

would work. It doesn't, because the page is simply not there (in the CurrentNavigationNodes collection). So I tried with:

newNode = new SPNavigationNode(promoRecord.PromotionName, prefix + newPage.Url);
navigationNodes.AddAsFirst(newNode);

with no luck either - here I got an exception saying that I can't add the page because it's in DRAFT state. Actually, the CurrentNavigation seems to get updated when I go to the frontend management (Manage Content And Structure / Site Administration / Navigation) - and the page appears there. Even if it's in DRAFT mode.

I tried a lot of things with no success... maybe you guys have an idea what I could try?

Thanks a lot in advance!

0

There are 0 best solutions below