diff --git a/components/editorControls/userControlWrapper/usercontrolPrevalueEditor.cs b/components/editorControls/userControlWrapper/usercontrolPrevalueEditor.cs index a27b8c75fa..5e40494258 100644 --- a/components/editorControls/userControlWrapper/usercontrolPrevalueEditor.cs +++ b/components/editorControls/userControlWrapper/usercontrolPrevalueEditor.cs @@ -1,5 +1,6 @@ using System; using System.Configuration; +using System.Drawing; using System.Web; using System.Web.Security; using System.Web.UI; @@ -18,25 +19,25 @@ using umbraco.cms.businesslogic.datatype; namespace umbraco.editorControls.userControlGrapper { - public class usercontrolPrevalueEditor : System.Web.UI.WebControls.PlaceHolder, umbraco.interfaces.IDataPrevalue - { - public ISqlHelper SqlHelper - { - get { return Application.SqlHelper; } - } + public class usercontrolPrevalueEditor : System.Web.UI.WebControls.PlaceHolder, umbraco.interfaces.IDataPrevalue + { + public ISqlHelper SqlHelper + { + get { return Application.SqlHelper; } + } - #region IDataPrevalue Members + #region IDataPrevalue Members - // referenced datatype - private umbraco.cms.businesslogic.datatype.BaseDataType _datatype; + // referenced datatype + private umbraco.cms.businesslogic.datatype.BaseDataType _datatype; - private DropDownList _dropdownlist; - private DropDownList _dropdownlistUserControl; - private PlaceHolder _phSettings; + private DropDownList _dropdownlist; + private DropDownList _dropdownlistUserControl; + private PlaceHolder _phSettings; - private Dictionary dtSettings = new Dictionary(); + private Dictionary dtSettings = new Dictionary(); - public usercontrolPrevalueEditor(umbraco.cms.businesslogic.datatype.BaseDataType DataType) + public usercontrolPrevalueEditor(umbraco.cms.businesslogic.datatype.BaseDataType DataType) { // state it knows its datatypedefinitionid _datatype = DataType; @@ -56,229 +57,283 @@ namespace umbraco.editorControls.userControlGrapper _dropdownlistUserControl = new DropDownList(); _dropdownlistUserControl.ID = "usercontrol"; - _phSettings = new PlaceHolder(); - _phSettings.ID = "settings"; + _phSettings = new PlaceHolder(); + _phSettings.ID = "settings"; // put the childcontrols in context - ensuring that // the viewstate is persisted etc. Controls.Add(_dropdownlist); Controls.Add(_dropdownlistUserControl); - Controls.Add(_phSettings); + Controls.Add(_phSettings); - // populate the usercontrol dropdown - _dropdownlistUserControl.Items.Add(new ListItem(ui.Text("choose"), "")); - populateUserControls( IOHelper.MapPath( SystemDirectories.Usercontrols) ); + // populate the usercontrol dropdown + _dropdownlistUserControl.Items.Add(new ListItem(ui.Text("choose"), "")); + populateUserControls( IOHelper.MapPath( SystemDirectories.Usercontrols) ); - + } - private void populateUserControls(string path) - { - DirectoryInfo di = new DirectoryInfo(path); - foreach (FileInfo uc in di.GetFiles("*.ascx")) - { - string root = IOHelper.MapPath(SystemDirectories.Root); + private void populateUserControls(string path) + { + DirectoryInfo di = new DirectoryInfo(path); + foreach (FileInfo uc in di.GetFiles("*.ascx")) + { + string root = IOHelper.MapPath(SystemDirectories.Root); - _dropdownlistUserControl.Items.Add( - - new ListItem( - uc.FullName.Substring(root.Length).Replace(IOHelper.DirSepChar, '/')) + _dropdownlistUserControl.Items.Add( + + new ListItem( + uc.FullName.Substring(root.Length).Replace(IOHelper.DirSepChar, '/')) - /* - new ListItem( - uc.FullName.Substring( uc.FullName.IndexOf(root), uc.FullName.Length - uc.FullName.IndexOf(root)).Replace(IOHelper.DirSepChar, '/')) - */ - ); + /* + new ListItem( + uc.FullName.Substring( uc.FullName.IndexOf(root), uc.FullName.Length - uc.FullName.IndexOf(root)).Replace(IOHelper.DirSepChar, '/')) + */ + ); - } - foreach (DirectoryInfo dir in di.GetDirectories()) - populateUserControls(dir.FullName); - } + } + foreach (DirectoryInfo dir in di.GetDirectories()) + populateUserControls(dir.FullName); + } - public Control Editor - { - get - { - return this; - } - } + public Control Editor + { + get + { + return this; + } + } - protected override void OnLoad(EventArgs e) - { - base.OnLoad(e); - if (!Page.IsPostBack) - { - string config = Configuration; - if (config != "") - { - _dropdownlistUserControl.SelectedValue = config; + protected override void OnLoad(EventArgs e) + { + base.OnLoad(e); + if (!Page.IsPostBack) + { + string config = Configuration; + if (config != "") + { + _dropdownlistUserControl.SelectedValue = config; - - } - _dropdownlist.SelectedValue = _datatype.DBType.ToString(); + + } + _dropdownlist.SelectedValue = _datatype.DBType.ToString(); - - } + + } - //check for settings - if (!string.IsNullOrEmpty(Configuration)) - LoadSetttings(Configuration); - + //check for settings + if (!string.IsNullOrEmpty(Configuration)) + LoadSetttings(Configuration); + - } + } - private Dictionary GetSettings(Type t) - { - Dictionary settings = new Dictionary(); + private Dictionary GetSettings(Type t) + { + Dictionary settings = new Dictionary(); - foreach (System.Reflection.PropertyInfo p in t.GetProperties()) - { + foreach (System.Reflection.PropertyInfo p in t.GetProperties()) + { - object[] o = p.GetCustomAttributes(typeof(DataEditorSetting), true); + object[] o = p.GetCustomAttributes(typeof(DataEditorSetting), true); - if (o.Length > 0) - settings.Add(p.Name, (DataEditorSetting)o[0]); - } - return settings; - } + if (o.Length > 0) + settings.Add(p.Name, (DataEditorSetting)o[0]); + } + return settings; + } - private bool HasSettings(Type t) - { - bool hasSettings = false; - foreach (System.Reflection.PropertyInfo p in t.GetProperties()) - { - object[] o = p.GetCustomAttributes(typeof(DataEditorSetting), true); + private bool HasSettings(Type t) + { + bool hasSettings = false; + foreach (System.Reflection.PropertyInfo p in t.GetProperties()) + { + object[] o = p.GetCustomAttributes(typeof(DataEditorSetting), true); - if (o.Length > 0) - { - hasSettings = true; - break; - } - } + if (o.Length > 0) + { + hasSettings = true; + break; + } + } - return hasSettings; - } + return hasSettings; + } - private void LoadSetttings(string fileName) - { - if (System.IO.File.Exists(IOHelper.MapPath("~/" + fileName))) - { - - UserControl oControl = (UserControl)this.Page.LoadControl(@"~/" + fileName); + private void LoadSetttings(string fileName) + { + if (System.IO.File.Exists(IOHelper.MapPath("~/" + fileName))) + { + + UserControl oControl = (UserControl)this.Page.LoadControl(@"~/" + fileName); - Type type = oControl.GetType(); + Type type = oControl.GetType(); - Dictionary settings = GetSettings(type); + Dictionary settings = GetSettings(type); - foreach (KeyValuePair kv in settings) - { - DataEditorSettingType dst = kv.Value.GetDataEditorSettingType(); - dtSettings.Add(kv.Key, dst); + foreach (KeyValuePair kv in settings) + { + DataEditorSettingType dst = kv.Value.GetDataEditorSettingType(); + dtSettings.Add(kv.Key, dst); - DataEditorPropertyPanel panel = new DataEditorPropertyPanel(); - panel.Text = kv.Value.GetName(); - panel.Text += "
" + kv.Value.description + ""; + DataEditorPropertyPanel panel = new DataEditorPropertyPanel(); + panel.Text = kv.Value.GetName(); + panel.Text += "
" + kv.Value.description + ""; - if (HasSettings(type)) - { - DataEditorSettingsStorage ss = new DataEditorSettingsStorage(); + if (HasSettings(type)) + { + DataEditorSettingsStorage ss = new DataEditorSettingsStorage(); - List> s = ss.GetSettings(_datatype.DataTypeDefinitionId); - ss.Dispose(); + List> s = ss.GetSettings(_datatype.DataTypeDefinitionId); + ss.Dispose(); - if (s.Find(set => set.Key == kv.Key).Value != null) - dst.Value = s.Find(set => set.Key == kv.Key).Value; + if (s.Find(set => set.Key == kv.Key).Value != null) + dst.Value = s.Find(set => set.Key == kv.Key).Value; - } + } - panel.Controls.Add(dst.RenderControl(kv.Value)); + panel.Controls.Add(dst.RenderControl(kv.Value)); - _phSettings.Controls.Add(panel); + Label invalid = new Label(); + invalid.Attributes.Add("style", "color:#8A1F11"); + invalid.ID = "lbl" + kv.Key; + panel.Controls.Add(invalid); - } - } - } + _phSettings.Controls.Add(panel); + + } + } + } - public void Save() - { - _datatype.DBType = (umbraco.cms.businesslogic.datatype.DBTypes)Enum.Parse(typeof(umbraco.cms.businesslogic.datatype.DBTypes), _dropdownlist.SelectedValue, true); + public void Save() + { + bool hasErrors = false; + foreach (KeyValuePair k in dtSettings) + { + var result = k.Value.Validate(); + Label lbl = FindControlRecursive