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:
starfighter83
2009-08-24 12:15:57 +00:00
parent 89fb257583
commit fe744975d8
12 changed files with 631 additions and 22 deletions

View File

@@ -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;
}
}

View File

@@ -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>");
}
}
}

View File

@@ -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 = " &nbsp; <a href=\"javascript:" + this.ClientID + "_clear();\" style=\"color: red\">" + ui.Text("delete") + "</a> &nbsp; ";
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> &nbsp; ");// &nbsp; <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

View File

@@ -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>