diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/editContent.aspx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/editContent.aspx.cs
index 201a02ee02..313123899c 100644
--- a/src/Umbraco.Web/umbraco.presentation/umbraco/editContent.aspx.cs
+++ b/src/Umbraco.Web/umbraco.presentation/umbraco/editContent.aspx.cs
@@ -45,8 +45,6 @@ namespace umbraco.cms.presentation
Button UnPublish = new Button();
private Literal littPublishStatus = new Literal();
- private Literal l = new Literal();
- private Literal domainText = new Literal();
private controls.ContentControl.publishModes _canPublish = controls.ContentControl.publishModes.Publish;
private int? m_ContentId = null;
@@ -180,13 +178,6 @@ namespace umbraco.cms.presentation
dpExpire.ShowTime = true;
publishProps.addProperty(ui.Text("content", "expireDate", base.getUser()), dpExpire);
- // url's
- UpdateNiceUrls();
- linkProps.addProperty(ui.Text("content", "urls", base.getUser()), l);
-
- if (domainText.Text != "")
- linkProps.addProperty(ui.Text("content", "alternativeUrls", base.getUser()), domainText);
-
cControl.Save += new System.EventHandler(Save);
cControl.SaveAndPublish += new System.EventHandler(Publish);
cControl.SaveToPublish += new System.EventHandler(SendToPublish);
@@ -225,6 +216,12 @@ namespace umbraco.cms.presentation
}
+ protected override void OnPreRender(EventArgs e)
+ {
+ base.OnPreRender(e);
+ UpdateNiceUrls();
+ }
+
protected void Save(object sender, System.EventArgs e)
{
// error handling test
@@ -324,7 +321,6 @@ namespace umbraco.cms.presentation
UnPublish.Visible = true;
_documentHasPublishedVersion = _document.HasPublishedVersion();
- UpdateNiceUrls();
}
else
{
@@ -347,42 +343,69 @@ namespace umbraco.cms.presentation
_document.UnPublish();
littPublishStatus.Text = ui.Text("content", "itemNotPublished", base.getUser());
UnPublish.Visible = false;
+ _documentHasPublishedVersion = false;
library.UnPublishSingleNode(_document.Id);
//newPublishStatus.Text = "0";
-
}
+ void UpdateNiceUrlProperties(string niceUrlText, string altUrlsText)
+ {
+ Literal lit;
+
+ linkProps.Controls.Clear();
+
+ lit = new Literal();
+ lit.Text = niceUrlText;
+ linkProps.addProperty(ui.Text("content", "urls", base.getUser()), lit);
+
+ if (!string.IsNullOrWhiteSpace(altUrlsText))
+ {
+ lit = new Literal();
+ lit.Text = altUrlsText;
+ linkProps.addProperty(ui.Text("content", "alternativeUrls", base.getUser()), lit);
+ }
+ }
+
void UpdateNiceUrls()
{
if (!_documentHasPublishedVersion)
{
- l.Text = "" + ui.Text("content", "itemNotPublished", base.getUser()) + "";
+ UpdateNiceUrlProperties("" + ui.Text("content", "itemNotPublished", base.getUser()) + "", null);
return;
}
var niceUrlProvider = Umbraco.Web.UmbracoContext.Current.RoutingContext.NiceUrlProvider;
var url = niceUrlProvider.GetNiceUrl(_document.Id);
+ string niceUrlText = null;
+ var altUrlsText = new System.Text.StringBuilder();
if (url == "#")
{
+ // document as a published version yet it's url is "#" => a parent must be
+ // unpublished, walk up the tree until we find it, and report.
var parent = _document;
- while (parent.Published && parent.ParentId > 0)
- parent = new Document(_document.ParentId);
- if (parent.Published)
- l.Text = "" + ui.Text("content", "parentNotPublished", "???", base.getUser()) + "";
+ do
+ {
+ parent = parent.ParentId > 0 ? new Document(parent.ParentId) : null;
+ }
+ while (parent != null && parent.Published);
+
+ if (parent == null) // oops - internal error
+ niceUrlText = "" + ui.Text("content", "parentNotPublished", "???", base.getUser()) + "";
else
- l.Text = "" + ui.Text("content", "parentNotPublished", parent.Text, base.getUser()) + "";
- return;
+ niceUrlText = "" + ui.Text("content", "parentNotPublished", parent.Text, base.getUser()) + "";
+ }
+ else
+ {
+ niceUrlText = string.Format("{0}", url);
+
+ foreach (var altUrl in niceUrlProvider.GetAllAbsoluteNiceUrls(_document.Id).Where(u => u != url))
+ altUrlsText.AppendFormat("{0}
", altUrl);
}
- l.Text = string.Format("{0}", url);
-
- var lb = new System.Text.StringBuilder();
- foreach (var altUrl in niceUrlProvider.GetAllAbsoluteNiceUrls(_document.Id).Where(u => u != url))
- lb.AppendFormat("{0}
", altUrl);
- domainText.Text = lb.ToString();
+ UpdateNiceUrlProperties(niceUrlText, altUrlsText.ToString());
}
///