DO NOT DOWNLOAD. DOWNLOAT LATEST STABLE FROM RELEASE TAB
Created 4.1.0 branch [TFS Changeset #55082]
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
namespace umbraco.editorControls.userControlGrapper
|
||||
{
|
||||
public interface IUsercontrolDataEditor
|
||||
{
|
||||
object value { get; set;}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Configuration;
|
||||
using System.Web;
|
||||
using System.Web.Security;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
using System.Web.UI.WebControls.WebParts;
|
||||
using System.Web.UI.HtmlControls;
|
||||
|
||||
using umbraco.interfaces;
|
||||
using umbraco.editorControls;
|
||||
|
||||
namespace umbraco.editorControls.userControlGrapper
|
||||
{
|
||||
public class usercontrolDataEditor : System.Web.UI.WebControls.PlaceHolder, umbraco.interfaces.IDataEditor
|
||||
{
|
||||
private umbraco.interfaces.IData _data;
|
||||
private string _usercontrolPath;
|
||||
|
||||
|
||||
public usercontrolDataEditor(umbraco.interfaces.IData Data, string UsercontrolPath)
|
||||
{
|
||||
_data = Data;
|
||||
_usercontrolPath = UsercontrolPath;
|
||||
}
|
||||
|
||||
public virtual bool TreatAsRichTextEditor
|
||||
{
|
||||
get {return false;}
|
||||
}
|
||||
|
||||
public bool ShowLabel
|
||||
{
|
||||
get {return true;}
|
||||
}
|
||||
|
||||
public Control Editor {get{return this;}}
|
||||
|
||||
public void Save()
|
||||
{
|
||||
IUsercontrolDataEditor uc =
|
||||
(IUsercontrolDataEditor)Controls[0] as IUsercontrolDataEditor;
|
||||
|
||||
_data.Value = uc.value;
|
||||
}
|
||||
|
||||
protected override void OnInit(EventArgs e)
|
||||
{
|
||||
base.OnInit (e);
|
||||
|
||||
this.Controls.Add(
|
||||
new System.Web.UI.UserControl().LoadControl(_usercontrolPath));
|
||||
|
||||
if (!Page.IsPostBack)
|
||||
((IUsercontrolDataEditor)Controls[0] as IUsercontrolDataEditor).value = _data.Value;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Configuration;
|
||||
using System.Web;
|
||||
using System.Web.Security;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
using System.Web.UI.WebControls.WebParts;
|
||||
using System.Web.UI.HtmlControls;
|
||||
|
||||
namespace umbraco.editorControls.userControlGrapper
|
||||
{
|
||||
public class usercontrolDataType : umbraco.cms.businesslogic.datatype.BaseDataType, umbraco.interfaces.IDataType
|
||||
{
|
||||
private umbraco.interfaces.IDataEditor _Editor;
|
||||
private umbraco.interfaces.IData _baseData;
|
||||
private usercontrolPrevalueEditor _prevalueeditor;
|
||||
|
||||
public override umbraco.interfaces.IDataEditor DataEditor
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_Editor == null)
|
||||
_Editor = new usercontrolDataEditor(Data, ((usercontrolPrevalueEditor) PrevalueEditor).Configuration );
|
||||
return _Editor;
|
||||
}
|
||||
}
|
||||
|
||||
public override umbraco.interfaces.IData Data
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_baseData == null)
|
||||
_baseData = new umbraco.cms.businesslogic.datatype.DefaultData(this);
|
||||
return _baseData;
|
||||
}
|
||||
}
|
||||
public override Guid Id
|
||||
{
|
||||
get { return new Guid("D15E1281-E456-4b24-AA86-1DDA3E4299D5"); }
|
||||
}
|
||||
|
||||
public override string DataTypeName
|
||||
{
|
||||
get { return "umbraco usercontrol wrapper"; }
|
||||
}
|
||||
|
||||
public override umbraco.interfaces.IDataPrevalue PrevalueEditor
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_prevalueeditor == null)
|
||||
_prevalueeditor = new usercontrolPrevalueEditor(this);
|
||||
return _prevalueeditor;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,146 @@
|
||||
using System;
|
||||
using System.Configuration;
|
||||
using System.Web;
|
||||
using System.Web.Security;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
using System.Web.UI.WebControls.WebParts;
|
||||
using System.Web.UI.HtmlControls;
|
||||
using System.IO;
|
||||
|
||||
using umbraco.DataLayer;
|
||||
using umbraco.BusinessLogic;
|
||||
|
||||
using umbraco.editorControls;
|
||||
|
||||
namespace umbraco.editorControls.userControlGrapper
|
||||
{
|
||||
public class usercontrolPrevalueEditor : System.Web.UI.WebControls.PlaceHolder, umbraco.interfaces.IDataPrevalue
|
||||
{
|
||||
public ISqlHelper SqlHelper
|
||||
{
|
||||
get { return Application.SqlHelper; }
|
||||
}
|
||||
|
||||
#region IDataPrevalue Members
|
||||
|
||||
// referenced datatype
|
||||
private umbraco.cms.businesslogic.datatype.BaseDataType _datatype;
|
||||
|
||||
private DropDownList _dropdownlist;
|
||||
private DropDownList _dropdownlistUserControl;
|
||||
|
||||
|
||||
public usercontrolPrevalueEditor(umbraco.cms.businesslogic.datatype.BaseDataType DataType)
|
||||
{
|
||||
// state it knows its datatypedefinitionid
|
||||
_datatype = DataType;
|
||||
setupChildControls();
|
||||
|
||||
}
|
||||
|
||||
private void setupChildControls()
|
||||
{
|
||||
_dropdownlist = new DropDownList();
|
||||
_dropdownlist.ID = "dbtype";
|
||||
_dropdownlist.Items.Add(DBTypes.Date.ToString());
|
||||
_dropdownlist.Items.Add(DBTypes.Integer.ToString());
|
||||
_dropdownlist.Items.Add(DBTypes.Ntext.ToString());
|
||||
_dropdownlist.Items.Add(DBTypes.Nvarchar.ToString());
|
||||
|
||||
_dropdownlistUserControl = new DropDownList();
|
||||
_dropdownlistUserControl.ID = "usercontrol";
|
||||
|
||||
// put the childcontrols in context - ensuring that
|
||||
// the viewstate is persisted etc.
|
||||
Controls.Add(_dropdownlist);
|
||||
Controls.Add(_dropdownlistUserControl);
|
||||
|
||||
// populate the usercontrol dropdown
|
||||
_dropdownlistUserControl.Items.Add(new ListItem(ui.Text("choose"), ""));
|
||||
populateUserControls(System.Web.HttpContext.Current.Server.MapPath("/usercontrols"));
|
||||
|
||||
}
|
||||
|
||||
private void populateUserControls(string path)
|
||||
{
|
||||
DirectoryInfo di = new DirectoryInfo(path);
|
||||
foreach (FileInfo uc in di.GetFiles("*.ascx"))
|
||||
{
|
||||
_dropdownlistUserControl.Items.Add(
|
||||
new ListItem(uc.FullName.Substring(uc.FullName.IndexOf("\\usercontrols"), uc.FullName.Length - uc.FullName.IndexOf("\\usercontrols")).Replace("\\", "/")));
|
||||
|
||||
}
|
||||
foreach (DirectoryInfo dir in di.GetDirectories())
|
||||
populateUserControls(dir.FullName);
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
_dropdownlist.SelectedValue = _datatype.DBType.ToString();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void Save()
|
||||
{
|
||||
_datatype.DBType = (umbraco.cms.businesslogic.datatype.DBTypes)Enum.Parse(typeof(umbraco.cms.businesslogic.datatype.DBTypes), _dropdownlist.SelectedValue, true);
|
||||
|
||||
// Generate data-string
|
||||
string data = _dropdownlistUserControl.SelectedValue;
|
||||
|
||||
// If the add new prevalue textbox is filled out - add the value to the collection.
|
||||
IParameter[] SqlParams = new IParameter[] {
|
||||
SqlHelper.CreateParameter("@value",data),
|
||||
SqlHelper.CreateParameter("@dtdefid",_datatype.DataTypeDefinitionId)};
|
||||
SqlHelper.ExecuteNonQuery("delete from cmsDataTypePreValues where datatypenodeid = @dtdefid", SqlParams);
|
||||
SqlHelper.ExecuteNonQuery("insert into cmsDataTypePreValues (datatypenodeid,[value],sortorder,alias) values (@dtdefid,@value,0,'')", SqlParams);
|
||||
}
|
||||
|
||||
protected override void Render(HtmlTextWriter writer)
|
||||
{
|
||||
writer.WriteLine("<table>");
|
||||
writer.WriteLine("<tr><th>Database datatype</th><td>");
|
||||
_dropdownlist.RenderControl(writer);
|
||||
writer.Write("</td></tr>");
|
||||
writer.Write("<tr><th>Usercontrol:</th><td>");
|
||||
_dropdownlistUserControl.RenderControl(writer);
|
||||
writer.Write("</td></tr>");
|
||||
writer.Write("</table>");
|
||||
}
|
||||
|
||||
public string Configuration
|
||||
{
|
||||
get
|
||||
{
|
||||
object conf =
|
||||
SqlHelper.ExecuteScalar<object>("select value from cmsDataTypePreValues where datatypenodeid = @datatypenodeid",
|
||||
SqlHelper.CreateParameter("@datatypenodeid", _datatype.DataTypeDefinitionId));
|
||||
if (conf != null)
|
||||
return conf.ToString();
|
||||
else
|
||||
return "";
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user