using System; using System.Collections; using System.Web.UI; using System.Web.UI.WebControls; using umbraco.BusinessLogic; using umbraco.DataLayer; using System.Collections.Generic; [assembly: System.Web.UI.WebResource("umbraco.editorControls.KeyValuePrevalueEditor.js", "text/js")] namespace umbraco.editorControls { /// /// Summary description for KeyValuePrevalueEditor. /// public class KeyValuePrevalueEditor : System.Web.UI.WebControls.PlaceHolder, interfaces.IDataPrevalue { // UI controls public System.Web.UI.WebControls.DropDownList _dropdownlist; public TextBox _textbox; private TextBox _tbhidden; public umbraco.uicontrols.PropertyPanel pp1 = new umbraco.uicontrols.PropertyPanel(); public umbraco.uicontrols.PropertyPanel pp2 = new umbraco.uicontrols.PropertyPanel(); private Hashtable DeleteButtons = new Hashtable(); // referenced datatype private cms.businesslogic.datatype.BaseDataType _datatype; protected static ISqlHelper SqlHelper { get { return Application.SqlHelper; } } public KeyValuePrevalueEditor(cms.businesslogic.datatype.BaseDataType DataType) { // state it knows its datatypedefinitionid _datatype = DataType; setupChildControls(); // Bootstrap delete. if (System.Web.HttpContext.Current.Request["delete"] != null) { DeletePrevalue(int.Parse(System.Web.HttpContext.Current.Request["delete"])); } } private void DeletePrevalue(int id) { SqlHelper.ExecuteNonQuery("delete from cmsDataTypePreValues where id = " + id); } private void setupChildControls() { _dropdownlist = new DropDownList(); _dropdownlist.ID = "dbtype"; _textbox = new TextBox(); _textbox.ID = "AddValue"; _tbhidden = new TextBox(); _tbhidden.Attributes.Add("style", "display:none;"); _tbhidden.CssClass = "valuesHiddenInput"; // put the childcontrols in context - ensuring that // the viewstate is persisted etc. this.Controls.Add(_dropdownlist); this.Controls.Add(_textbox); this.Controls.Add(_tbhidden); _dropdownlist.Items.Add(DBTypes.Date.ToString()); _dropdownlist.Items.Add(DBTypes.Integer.ToString()); _dropdownlist.Items.Add(DBTypes.Ntext.ToString()); _dropdownlist.Items.Add(DBTypes.Nvarchar.ToString()); } protected override void OnInit(EventArgs e) { base.OnInit(e); System.Web.UI.Page page = (System.Web.UI.Page)System.Web.HttpContext.Current.Handler; page.ClientScript.RegisterClientScriptInclude( "umbraco.editorControls.KeyValuePrevalueEditor.js", page.ClientScript.GetWebResourceUrl(typeof(KeyValuePrevalueEditor), "umbraco.editorControls.KeyValuePrevalueEditor.js")); } protected override void OnLoad(EventArgs e) { base.OnLoad (e); if (!Page.IsPostBack) { _dropdownlist.SelectedValue = _datatype.DBType.ToString(); } } public Control Editor { get { return this; } } public void Save() { _datatype.DBType = (cms.businesslogic.datatype.DBTypes)Enum.Parse(typeof(cms.businesslogic.datatype.DBTypes), _dropdownlist.SelectedValue, true); //changes in name and sortorder if (!string.IsNullOrEmpty(_tbhidden.Text)) { int so = 0; foreach (string row in _tbhidden.Text.Split(';')) { if (!string.IsNullOrEmpty(row)) { int id = 0; if (row.Split('|').Length == 2 && int.TryParse(row.Split('|')[0], out id) && row.Split('|')[1].Length > 0) { IParameter[] SqlParams = new IParameter[] { SqlHelper.CreateParameter("@value",row.Split('|')[1]), SqlHelper.CreateParameter("@sortorder",so), SqlHelper.CreateParameter("@id",id)}; SqlHelper.ExecuteNonQuery("update cmsDataTypePreValues set [value] = @value, sortorder = @sortorder where id = @id", SqlParams); } so++; } } _tbhidden.Text = ""; } // If the add new prevalue textbox is filled out - add the value to the collection. if (_textbox.Text != "") { IParameter[] SqlParams = new IParameter[] { SqlHelper.CreateParameter("@value",_textbox.Text), SqlHelper.CreateParameter("@dtdefid",_datatype.DataTypeDefinitionId)}; SqlHelper.ExecuteNonQuery("insert into cmsDataTypePreValues (datatypenodeid,[value],sortorder,alias) values (@dtdefid,@value,0,'')",SqlParams); _textbox.Text = ""; ScriptManager.GetCurrent(Page).SetFocus(_textbox); } } protected override void Render(HtmlTextWriter writer) { writer.Write("
" + ui.Text("dataBaseDatatype") + "
"); _dropdownlist.RenderControl(writer); writer.Write("
"); List> _prevalues = PrevaluesAsKeyValuePairList; if (_prevalues.Count > 0) { writer.Write("
"); writer.Write(""); foreach (KeyValuePair item in _prevalues) { writer.Write(""); } writer.Write("
TextValue
" + item.Value + " " + item.Key.ToString() + "" + ui.Text("delete") + " sort

"); } writer.Write("
" + ui.Text("addPrevalue") + "
"); _textbox.RenderControl(writer); writer.Write("
"); _tbhidden.RenderControl(writer); } public SortedList Prevalues { get { SortedList retval = new SortedList(); IRecordsReader dr = SqlHelper.ExecuteReader( "Select id, [value] from cmsDataTypePreValues where DataTypeNodeId = " + _datatype.DataTypeDefinitionId + " order by sortorder"); while (dr.Read()) retval.Add(dr.GetInt("id"), dr.GetString("value")); dr.Close(); return retval; } } public List> PrevaluesAsKeyValuePairList { get { List> items = new List>(); IRecordsReader dr = SqlHelper.ExecuteReader( "Select id, [value] from cmsDataTypePreValues where DataTypeNodeId = " + _datatype.DataTypeDefinitionId + " order by sortorder"); while (dr.Read()) items.Add(new KeyValuePair(dr.GetInt("id"), dr.GetString("value"))); dr.Close(); return items; } } } }