DO NOT DOWNLOAD. DOWNLOAD LATEST STABLE FROM RELEASE TAB
Initial checkin of updates to media picker datatype (preview, advanced dialog with upload) [TFS Changeset #58362]
This commit is contained in:
@@ -16,7 +16,9 @@ namespace umbraco.editorControls.mediapicker
|
||||
get
|
||||
{
|
||||
if (_Editor == null)
|
||||
_Editor = new mediaChooser(Data);
|
||||
_Editor = new mediaChooser(Data,
|
||||
((MediaPickerPrevalueEditor)PrevalueEditor).ShowPreview,
|
||||
((MediaPickerPrevalueEditor)PrevalueEditor).ShowAdvancedDialog);
|
||||
return _Editor;
|
||||
}
|
||||
}
|
||||
@@ -51,7 +53,7 @@ namespace umbraco.editorControls.mediapicker
|
||||
get
|
||||
{
|
||||
if (_prevalueeditor == null)
|
||||
_prevalueeditor = new DefaultPrevalueEditor(this,false);
|
||||
_prevalueeditor = new MediaPickerPrevalueEditor(this);
|
||||
return _prevalueeditor;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,160 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
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.mediapicker
|
||||
{
|
||||
public class MediaPickerPrevalueEditor : System.Web.UI.WebControls.PlaceHolder, umbraco.interfaces.IDataPrevalue
|
||||
{
|
||||
|
||||
public ISqlHelper SqlHelper
|
||||
{
|
||||
get { return Application.SqlHelper; }
|
||||
}
|
||||
|
||||
//private DropDownList _dropdownlist;
|
||||
private CheckBox _checkboxShowPreview;
|
||||
private CheckBox _checkboxShowAdvancedDialog;
|
||||
|
||||
private umbraco.cms.businesslogic.datatype.BaseDataType _datatype;
|
||||
|
||||
public MediaPickerPrevalueEditor(umbraco.cms.businesslogic.datatype.BaseDataType DataType)
|
||||
{
|
||||
_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());
|
||||
|
||||
_checkboxShowPreview = new CheckBox();
|
||||
_checkboxShowPreview.ID = "showpreview";
|
||||
|
||||
_checkboxShowAdvancedDialog = new CheckBox();
|
||||
_checkboxShowAdvancedDialog.ID = "showadvanceddialog";
|
||||
|
||||
//Controls.Add(_dropdownlist);
|
||||
|
||||
Controls.Add(_checkboxShowPreview);
|
||||
Controls.Add(_checkboxShowAdvancedDialog);
|
||||
|
||||
}
|
||||
|
||||
public Control Editor
|
||||
{
|
||||
get
|
||||
{
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnLoad(EventArgs e)
|
||||
{
|
||||
base.OnLoad(e);
|
||||
if (!Page.IsPostBack)
|
||||
{
|
||||
|
||||
_checkboxShowPreview.Checked = ShowPreview;
|
||||
_checkboxShowAdvancedDialog.Checked = ShowAdvancedDialog;
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public void Save()
|
||||
{
|
||||
_datatype.DBType = umbraco.cms.businesslogic.datatype.DBTypes.Integer;
|
||||
|
||||
// Generate data-string
|
||||
string data = _checkboxShowPreview.Checked.ToString() + "|" + _checkboxShowAdvancedDialog.Checked.ToString();
|
||||
|
||||
// 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);
|
||||
}
|
||||
|
||||
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 "";
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public bool ShowPreview
|
||||
{
|
||||
get
|
||||
{
|
||||
string[] config = Configuration.Split("|".ToCharArray());
|
||||
if (config.Length > 1)
|
||||
{
|
||||
return Convert.ToBoolean(config[0]);
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public bool ShowAdvancedDialog
|
||||
{
|
||||
get
|
||||
{
|
||||
string[] config = Configuration.Split("|".ToCharArray());
|
||||
if (config.Length > 1)
|
||||
{
|
||||
return Convert.ToBoolean(config[1]);
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
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>Show preview:</th><td>");
|
||||
_checkboxShowPreview.RenderControl(writer);
|
||||
writer.Write("</td></tr>");
|
||||
writer.Write("<tr><th>Show advanced dialog:</th><td>");
|
||||
_checkboxShowAdvancedDialog.RenderControl(writer);
|
||||
writer.Write("</td></tr>");
|
||||
writer.Write("</table>");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -15,11 +15,21 @@ namespace umbraco.editorControls
|
||||
public class mediaChooser : System.Web.UI.WebControls.HiddenField, interfaces.IDataEditor
|
||||
{
|
||||
interfaces.IData _data;
|
||||
bool _showpreview;
|
||||
bool _showadvanced;
|
||||
|
||||
public mediaChooser(interfaces.IData Data)
|
||||
{
|
||||
_data = Data;
|
||||
}
|
||||
|
||||
public mediaChooser(interfaces.IData Data, bool ShowPreview, bool ShowAdvanced)
|
||||
{
|
||||
_data = Data;
|
||||
_showpreview = ShowPreview;
|
||||
_showadvanced = ShowAdvanced;
|
||||
}
|
||||
|
||||
public System.Web.UI.Control Editor { get { return this; } }
|
||||
#region IDataField Members
|
||||
|
||||
@@ -62,25 +72,45 @@ namespace umbraco.editorControls
|
||||
// We need to make sure we have a reference to the legacy ajax calls in the scriptmanager
|
||||
presentation.webservices.ajaxHelpers.EnsureLegacyCalls(base.Page);
|
||||
|
||||
// And a reference to the media picker calls
|
||||
ScriptManager sm = ScriptManager.GetCurrent(base.Page);
|
||||
ServiceReference webservicePath = new ServiceReference(GlobalSettings.Path + "/webservices/MediaPickerService.asmx");
|
||||
|
||||
if (!sm.Services.Contains(webservicePath))
|
||||
sm.Services.Add(webservicePath);
|
||||
}
|
||||
|
||||
protected override void Render(System.Web.UI.HtmlTextWriter writer)
|
||||
{
|
||||
|
||||
string tempTitle = "";
|
||||
int mediaId = -1;
|
||||
string deleteLink = " <a href=\"javascript:" + this.ClientID + "_clear();\" style=\"color: red\">" + ui.Text("delete") + "</a> ";
|
||||
try
|
||||
{
|
||||
if (base.Value != "")
|
||||
{
|
||||
mediaId = int.Parse(base.Value);
|
||||
tempTitle = new cms.businesslogic.CMSNode(int.Parse(base.Value)).Text;
|
||||
}
|
||||
}
|
||||
catch { }
|
||||
|
||||
string dialog = "\nshowPopWin('" + TreeService.GetPickerUrl(true, "media", "media") + "', 300, 400, " + ClientID + "_saveId)";
|
||||
if (_showadvanced)
|
||||
dialog = "\nshowPopWin('" + GlobalSettings.Path + "/dialogs/mediaPicker.aspx" + "', 500, 530, " + ClientID + "_saveId)";
|
||||
|
||||
string preview = string.Empty;
|
||||
if (_showpreview)
|
||||
preview = "\numbraco.presentation.webservices.MediaPickerService.GetThumbNail(treePicker, " + this.ClientID + "_UpdateThumbNail);" +
|
||||
"\numbraco.presentation.webservices.MediaPickerService.GetFile(treePicker, " + this.ClientID + "_UpdateLink);";
|
||||
|
||||
|
||||
string strScript = "function " + this.ClientID + "_chooseId() {" +
|
||||
"\nshowPopWin('" + TreeService.GetPickerUrl(true,"media","media") + "', 300, 400, " + ClientID + "_saveId)" +
|
||||
//"\nshowPopWin('" + TreeService.GetPickerUrl(true, "media", "media") + "', 300, 400, " + ClientID + "_saveId)" +
|
||||
//"\nshowPopWin('" + GlobalSettings.Path + "/dialogs/mediaPicker.aspx" + "', 500, 530, " + ClientID + "_saveId)" +
|
||||
// "\nvar treePicker = window.showModalDialog(, 'treePicker', 'dialogWidth=350px;dialogHeight=300px;scrollbars=no;center=yes;border=thin;help=no;status=no') " +
|
||||
dialog +
|
||||
"\n}" +
|
||||
"\nfunction " + ClientID + "_saveId(treePicker) {" +
|
||||
"\nsetTimeout('" + ClientID + "_saveIdDo(' + treePicker + ')', 200);" +
|
||||
@@ -90,6 +120,7 @@ namespace umbraco.editorControls
|
||||
"\ndocument.getElementById(\"" + this.ClientID + "\").value = treePicker;" +
|
||||
"\nif (treePicker > 0) {" +
|
||||
"\numbraco.presentation.webservices.legacyAjaxCalls.GetNodeName(treePicker, " + this.ClientID + "_updateContentTitle" + ");" +
|
||||
preview+
|
||||
"\n} " +
|
||||
"\n}" +
|
||||
"\n} " +
|
||||
@@ -99,6 +130,16 @@ namespace umbraco.editorControls
|
||||
"\nfunction " + this.ClientID + "_clear() {" +
|
||||
"\ndocument.getElementById(\"" + this.ClientID + "_title\").innerHTML = \"\";" +
|
||||
"\ndocument.getElementById(\"" + this.ClientID + "\").value = \"\";" +
|
||||
"\ndocument.getElementById(\"" + this.ClientID + "_preview\").style.display = 'none';" +
|
||||
"\n}" +
|
||||
"\nfunction " + this.ClientID + "_UpdateThumbNail(retVal){" +
|
||||
"\nif(retVal != \"\"){" +
|
||||
"\ndocument.getElementById(\"" + this.ClientID + "_thumbnail\").src = retVal;" +
|
||||
"\ndocument.getElementById(\"" + this.ClientID + "_preview\").style.display = 'block';}" +
|
||||
"\nelse{document.getElementById(\"" + this.ClientID + "_preview\").style.display = 'none';}" +
|
||||
"\n}"+
|
||||
"\nfunction " + this.ClientID + "_UpdateLink(retVal){" +
|
||||
"\ndocument.getElementById(\"" + this.ClientID + "_thumbnaillink\").href = retVal;" +
|
||||
"\n}";
|
||||
|
||||
try
|
||||
@@ -116,6 +157,28 @@ namespace umbraco.editorControls
|
||||
if (base.Value == "")
|
||||
deleteLink = "";
|
||||
writer.WriteLine("<span id=\"" + this.ClientID + "_title\"><b>" + tempTitle + "</b>" + deleteLink + "</span><a href=\"javascript:" + this.ClientID + "_chooseId()\">" + ui.Text("choose") + "...</a> ");// <input type=\"hidden\" id=\"" + this.ClientID + "\" name=\"" + this.ClientID + "\" value=\"" + this.Text + "\">");
|
||||
|
||||
|
||||
|
||||
//Thumbnail preview
|
||||
if (_showpreview)
|
||||
{
|
||||
string thumb = string.Empty;
|
||||
string link = string.Empty;
|
||||
string style = "display:none;";
|
||||
if (mediaId != -1)
|
||||
{
|
||||
style = string.Empty;
|
||||
thumb = string.Format(" src=\"{0}\" ", presentation.webservices.MediaPickerServiceHelpers.GetThumbNail(mediaId));
|
||||
link = string.Format(" href=\"{0}\" ", presentation.webservices.MediaPickerServiceHelpers.GetFile(mediaId));
|
||||
}
|
||||
|
||||
writer.WriteLine("<div id=\"" + this.ClientID + "_preview\" style=\"margin-top:5px;" + style + "\"><a " + link + "id=\"" + this.ClientID + "_thumbnaillink\" target=\"_blank\" ><img " + thumb + "id=\"" + this.ClientID + "_thumbnail\" /></a></div>");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
base.Render(writer);
|
||||
}
|
||||
#endregion
|
||||
|
||||
@@ -258,6 +258,7 @@
|
||||
<Compile Include="mediapicker\MediaPickerDataType.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="mediapicker\MediaPickerPrevalueEditor.cs" />
|
||||
<Compile Include="memberpicker\memberPicker.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
|
||||
Reference in New Issue
Block a user