From b5099c37c75544169fef27fda87f363eedcae003 Mon Sep 17 00:00:00 2001 From: "Darren@Darren-VAIO" Date: Sun, 16 Sep 2012 10:49:19 -0200 Subject: [PATCH] Standard doc type properties no longer prefixed with @ in "Insert Umbraco page field" dialogue Fixed #U4-859 --- src/Umbraco.Web.UI/Umbraco.Web.UI.csproj | 4 +- src/Umbraco.Web.UI/umbraco/config/lang/en.xml | 2 + src/Umbraco.Web/Umbraco.Web.csproj | 4 +- .../umbraco/dialogs/umbracoField.aspx | 4 +- .../umbraco/dialogs/umbracoField.aspx.cs | 15 ++-- .../dialogs/umbracoField.aspx.designer.cs | 4 +- src/umbraco.controls/FieldDropDownList.cs | 72 +++++++++++++++++++ src/umbraco.controls/umbraco.controls.csproj | 1 + 8 files changed, 95 insertions(+), 11 deletions(-) create mode 100644 src/umbraco.controls/FieldDropDownList.cs diff --git a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj index b0cdc05b62..4d5089314c 100644 --- a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj +++ b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj @@ -1417,7 +1417,9 @@ - + + Designer + diff --git a/src/Umbraco.Web.UI/umbraco/config/lang/en.xml b/src/Umbraco.Web.UI/umbraco/config/lang/en.xml index 2b8a936f9b..414c45bf13 100644 --- a/src/Umbraco.Web.UI/umbraco/config/lang/en.xml +++ b/src/Umbraco.Web.UI/umbraco/config/lang/en.xml @@ -728,6 +728,7 @@ To manage your website, simply open the umbraco back office and start adding con Choose field Convert Linebreaks Replaces linebreaks with html-tag <br> + Custom Fields Yes, Date only Format as date HTML encode @@ -741,6 +742,7 @@ To manage your website, simply open the umbraco back office and start adding con Recursive Remove Paragraph tags Will remove any <P> in the beginning and end of the text + Standard Fields Uppercase URL encode Will format special characters in URLs diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj index 7cc4f7a018..364096d3d8 100644 --- a/src/Umbraco.Web/Umbraco.Web.csproj +++ b/src/Umbraco.Web/Umbraco.Web.csproj @@ -1937,7 +1937,9 @@ - + + ASPXCodeBehind + diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/umbracoField.aspx b/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/umbracoField.aspx index 90d53ef6a4..9f3bda9703 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/umbracoField.aspx +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/umbracoField.aspx @@ -86,11 +86,11 @@ - + - +
<%=umbraco.ui.Text("templateEditor", "usedIfEmpty")%> diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/umbracoField.aspx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/umbracoField.aspx.cs index db0f4a2e4b..4be7474e5f 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/umbracoField.aspx.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/umbracoField.aspx.cs @@ -59,9 +59,13 @@ namespace umbraco.dialogs else { fieldSql = "select distinct alias from cmsPropertyType order by alias"; - pp_insertField.Text = umbraco.ui.Text("templateEditor", "chooseField"); + pp_insertField.Text = ui.Text("templateEditor", "chooseField"); } - + + fieldPicker.ChooseText = ui.Text("templateEditor", "chooseField"); + fieldPicker.StandardPropertiesLabel = ui.Text("templateEditor", "standardFields"); + fieldPicker.CustomPropertiesLabel = ui.Text("templateEditor", "customFields"); + IRecordsReader dataTypes = SqlHelper.ExecuteReader(fieldSql); fieldPicker.DataTextField = "alias"; fieldPicker.DataValueField = "alias"; @@ -70,6 +74,10 @@ namespace umbraco.dialogs fieldPicker.Attributes.Add("onChange", "document.forms[0].field.value = document.forms[0]." + fieldPicker.ClientID + "[document.forms[0]." + fieldPicker.ClientID + ".selectedIndex].value;"); dataTypes.Close(); + altFieldPicker.ChooseText = ui.Text("templateEditor", "chooseField"); + altFieldPicker.StandardPropertiesLabel = ui.Text("templateEditor", "standardFields"); + altFieldPicker.CustomPropertiesLabel = ui.Text("templateEditor", "customFields"); + IRecordsReader dataTypes2 = SqlHelper.ExecuteReader(fieldSql); altFieldPicker.DataTextField = "alias"; altFieldPicker.DataValueField = "alias"; @@ -78,9 +86,6 @@ namespace umbraco.dialogs altFieldPicker.Attributes.Add("onChange", "document.forms[0].useIfEmpty.value = document.forms[0]." + altFieldPicker.ClientID + "[document.forms[0]." + altFieldPicker.ClientID + ".selectedIndex].value;"); dataTypes2.Close(); - fieldPicker.Items.Insert(0,new ListItem(ui.Text("general", "choose", base.getUser()))); - altFieldPicker.Items.Insert(0,new ListItem(ui.Text("general", "choose", base.getUser()))); - // Pre values if (!m_IsDictionaryMode) { diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/umbracoField.aspx.designer.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/umbracoField.aspx.designer.cs index 337ccc31e6..3cbbd22ed4 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/umbracoField.aspx.designer.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/umbracoField.aspx.designer.cs @@ -55,7 +55,7 @@ namespace umbraco.dialogs { /// Auto-generated field. /// To modify move field declaration from designer file to code-behind file. /// - protected global::System.Web.UI.WebControls.ListBox fieldPicker; + protected global::umbraco.uicontrols.FieldDropDownList fieldPicker; /// /// pp_insertAltField control. @@ -73,7 +73,7 @@ namespace umbraco.dialogs { /// Auto-generated field. /// To modify move field declaration from designer file to code-behind file. /// - protected global::System.Web.UI.WebControls.ListBox altFieldPicker; + protected global::umbraco.uicontrols.FieldDropDownList altFieldPicker; /// /// pp_insertAltText control. diff --git a/src/umbraco.controls/FieldDropDownList.cs b/src/umbraco.controls/FieldDropDownList.cs new file mode 100644 index 0000000000..9520dc2e4b --- /dev/null +++ b/src/umbraco.controls/FieldDropDownList.cs @@ -0,0 +1,72 @@ +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +namespace umbraco.uicontrols +{ + public class FieldDropDownList : DropDownList + { + private bool _customOptionsStarted; + private bool _standardOptionsStarted; + + public string CustomPropertiesLabel { get; set; } + public string StandardPropertiesLabel { get; set; } + public string ChooseText { get; set; } + + protected override void RenderContents(HtmlTextWriter writer) + { + if (Items.Count > 0 && Items[0].Text.StartsWith("#")) + { + Items.Insert(0, new ListItem(ChooseText, "")); + SelectedIndex = 0; + + base.RenderContents(writer); + return; + } + + writer.Write("", ChooseText); + + foreach (ListItem item in Items) + { + if (!_customOptionsStarted) + { + RenderOptionGroupBeginTag(CustomPropertiesLabel, writer); + _customOptionsStarted = true; + } + else if (item.Text.StartsWith("@") && !_standardOptionsStarted) + { + _standardOptionsStarted = true; + RenderOptionGroupEndTag(writer); + RenderOptionGroupBeginTag(StandardPropertiesLabel, writer); + } + + writer.WriteBeginTag("option"); + writer.WriteAttribute("value", item.Value, true); + + foreach (string key in item.Attributes.Keys) + writer.WriteAttribute(key, item.Attributes[key]); + + writer.Write(HtmlTextWriter.TagRightChar); + HttpUtility.HtmlEncode(item.Text.Replace("@", ""), writer); + writer.WriteEndTag("option"); + writer.WriteLine(); + } + + RenderOptionGroupEndTag(writer); + } + + private void RenderOptionGroupBeginTag(string name, HtmlTextWriter writer) + { + writer.WriteBeginTag("optgroup"); + writer.WriteAttribute("label", name); + writer.Write(HtmlTextWriter.TagRightChar); + writer.WriteLine(); + } + + private void RenderOptionGroupEndTag(HtmlTextWriter writer) + { + writer.WriteEndTag("optgroup"); + writer.WriteLine(); + } + } +} \ No newline at end of file diff --git a/src/umbraco.controls/umbraco.controls.csproj b/src/umbraco.controls/umbraco.controls.csproj index 23c677eaf5..7323a80d0c 100644 --- a/src/umbraco.controls/umbraco.controls.csproj +++ b/src/umbraco.controls/umbraco.controls.csproj @@ -86,6 +86,7 @@ Properties\SolutionInfo.cs +