Image Editor Dialog
In version 3.7, you could add a ButtonSelector to a custom control and with a little bit of javascript render up the ImageEdirorDialog.aspx page which would allow you to upload a image into the main sitefinity image library or the selection of a image that has already been uploaded. With sitefinity 4.1 this option no longer exists from what i can tell. To be able to provide the same look and feel of the regular image upload dialog that exists within the rest of Sitefinity, I would like to be able to use the "out of the box" option for uploading an image within a module through ascx template. Is there a way to do this or do I have to build all the pieces myself as the walkthrough here implies (http://www.sitefinity.com/40/help/developers-guide/how-to-how-to-create-a-simple-image-selector.html)? Thanks in advance.
Marc
I have worked on getting the simple image selector and everything on the example works until I try to use the SimpleImageField within my sitefinity project. I recieve the following error:
<%@ Control Language="C#" AutoEventWireup="true" %> <%@ Register Assembly="Telerik.Sitefinity" Namespace="Telerik.Sitefinity.Web.UI" TagPrefix="sitefinity" %> <%@ Register Assembly="Controls" Namespace="Controls.Resources" TagPrefix="custom" %> <sitefinity:ResourceLinks ID="resourcesLinks" runat="server"> <sitefinity:ResourceFile JavaScriptLibrary="JQuery"> </sitefinity:ResourceFile> </sitefinity:ResourceLinks> <sitefinity:ConditionalTemplateContainer ID="conditionalTemplate" runat="server"> <Templates> <sitefinity:ConditionalTemplate Left="DisplayMode" Operator="Equal" Right="Read"> <sitefinity:SitefinityLabel id="titleLabelRead" runat="server" WrapperTagName="div" HideIfNoText="false" CssClass="sfTxtLbl"></sitefinity:SitefinityLabel> <sitefinity:SitefinityLabel id="textLabelRead" runat="server" WrapperTagName="div" HideIfNoText="false" CssClass="sfTxtContent"></sitefinity:SitefinityLabel> <asp:Image ID="image" runat="server" /> <sitefinity:SitefinityLabel id="descriptionLabelRead" runat="server" WrapperTagName="p" HideIfNoText="false" CssClass="sfDescription"></sitefinity:SitefinityLabel> <sitefinity:SitefinityLabel id="exampleLabelRead" runat="server" WrapperTagName="div" HideIfNoText="true" CssClass="sfExample" /> </sitefinity:ConditionalTemplate> <sitefinity:ConditionalTemplate Left="DisplayMode" Operator="Equal" Right="Write"> <sitefinity:SitefinityLabel ID="titleLabelWrite" runat="server" CssClass="sfTxtLbl" /> <asp:LinkButton ID="expandButton" runat="server" OnClientClick="return false;" CssClass="sfOptionalExpander" /> <asp:Panel ID="expandableTarget" runat="server" CssClass="sfFieldWrp"> <telerik:RadWindowManager ID="windowManager" runat="server" Skin="Sitefinity"> <Windows> <telerik:RadWindow ID="simpleImageSelector" Width="600" Height="400" NavigateUrl="~/Sitefinity/Dialog/SimpleImageSelectorDialog" runat="server" ReloadOnShow="true" Modal="true" VisibleStatusbar="false" Behaviors="Close" > </telerik:RadWindow> </Windows> </telerik:RadWindowManager> <asp:TextBox ID="textBox" runat="server" CssClass="sfTxt" /> <asp:HyperLink ID="selectLink" runat="server" NavigateUrl="javascript:void(0);" CssClass="sfLinkBtn sfChange"> <strong class="sfLinkBtnIn">Select...</strong> </asp:HyperLink> <sitefinity:SitefinityLabel id="descriptionLabelWrite" runat="server" WrapperTagName="div" HideIfNoText="true" CssClass="sfDescription" /> <sitefinity:SitefinityLabel id="exampleLabelWrite" runat="server" WrapperTagName="div" HideIfNoText="true" CssClass="sfExample" /> </asp:Panel> </sitefinity:ConditionalTemplate> </Templates> </sitefinity:ConditionalTemplateContainer> Hi Marc,
Please use MediaContentSelecorView. Take a look at this thread
Greetings,
Ivan Dimitrov
the Telerik team
Thanks for the reply. I will dig deeper on that thread and report back.
Cool. That looks to be what I was needing for selecting from existing images. So using that same logic, would I use the MediaContentUploaderView to allow the uploading of a new image and include it either in the ImageControlDesignerTemplate.ascx or in its own ascx depending on how I would like to utilize the control/view? Thanks again.
Hello Marc,
Yes you can use it, but you should set some of the control properties when your control is initialized.
sample
var contentType = typeof(Telerik.Sitefinity.Libraries.Model.Image).FullName; var parentType = typeof(Telerik.Sitefinity.Libraries.Model.Album).FullName; // var libraryBinderServiceUrl = "~/Sitefinity/Services/Content/AlbumService.svc/"; //var mediaContentBinderServiceUrl = "~/Sitefinity/Services/Content/ImageService.svc/"; var itemsName = Res.Get<ImagesResources>().Images; var itemName = Res.Get<ImagesResources>().Image; var itemNameWithArticle = Res.Get<ImagesResources>().ImageWithArticle; var libName = Res.Get<ImagesResources>().Album; //var template = "Telerik.Sitefinity.Resources.Templates.Designers.Libraries.Images.ImageItemDescriptionTemplate.htm"; var displayAltTextField = true; var displayTitleTextField = true; var displayResizingOptionsControl = true; var showOpenOriginalSizeCheckBox = true; this.UploaderView.ContentType = contentType; this.UploaderView.ParentType = parentType; this.UploaderView.LibraryName = libName; this.UploaderView.ItemsName = itemsName; this.UploaderView.ItemName = itemName; this.UploaderView.ItemNameWithArticle = itemNameWithArticle; this.UploaderView.DisplayAltTextField = displayAltTextField; this.UploaderView.DisplayTitleTextField = displayTitleTextField; this.UploaderView.DisplayResizingOptionsControl = displayResizingOptionsControl; this.UploaderView.ShowOpenOriginalSizeCheckBox = showOpenOriginalSizeCheckBox;I have a custom control that I have added to the Page editor Toolboxes... In the custom control, I have a text field for the ImageURL, but I would like to make this an image selector -- Is there a way to do so? I tried using the WebEditor attribute.
Here is my GrayBoxControl.ascx code:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="GrayBoxControl.ascx.cs" Inherits="SitefinityWebApp.Controls.GrayBoxControl" %>
<asp:Panel ID="phContent" runat="server" CssClass="inner" >
<h1><asp:Label ID="siHeaderTextLabel" runat="server"></asp:Label></h1>
<div class='img-container'>
<asp:Image ID="siImage" runat="server" />
<asp:PlaceHolder ID="phLink" runat="server"><p class='action-link'><asp:HyperLink ID="siHyperLink" runat="server" Target="_blank" /></p></asp:PlaceHolder>
</div>
<h2><asp:Label ID="siFooterHeaderLabel" runat="server"></asp:Label></h2>
<p><asp:Label ID="siFooterTextLabel" runat="server"></asp:Label></p>
<asp:TextBox ID="siHeaderText" runat="server" Visible="false"></asp:TextBox>
<asp:TextBox ID="siFooterHeaderText" runat="server" Visible="false"></asp:TextBox>
<asp:TextBox ID="siFooterText" runat="server" Visible="false"></asp:TextBox>
</asp:Panel>
The GrayBoxControl.ascx.cs file:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
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.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Xml.Linq;
using Telerik.Web.UI;
using Telerik.Sitefinity.Web.UI;
using Telerik.Sitefinity.Modules.GenericContent;
using Telerik.Sitefinity.Model;
namespace SitefinityWebApp.Controls
public partial class GrayBoxControl : System.Web.UI.UserControl
protected void Page_Load(object sender, EventArgs e)
bool hasInfo = false;
if (!LinkUrl.IsNullOrEmpty())
siHyperLink.NavigateUrl = LinkUrl;
hasInfo = true;
if (!LinkText.IsNullOrEmpty())
siHyperLink.Text = LinkText;
hasInfo = true;
if (!ImageText.IsNullOrEmpty())
siImage.ImageUrl = ImageText;
hasInfo = true;
if (!HeaderText.IsNullOrEmpty())
siHeaderText.Text = HeaderText;
siHeaderTextLabel.Text = siHeaderText.Text;
hasInfo = true;
if (!FooterHeaderText.IsNullOrEmpty())
siFooterHeaderText.Text = FooterHeaderText;
siFooterHeaderLabel.Text = siFooterHeaderText.Text;
hasInfo = true;
if (!FooterText.IsNullOrEmpty())
siFooterText.Text = FooterText;
siFooterTextLabel.Text = siFooterText.Text;
hasInfo = true;
if (string.IsNullOrEmpty(siHyperLink.NavigateUrl))
phLink.Visible = false;
else
phLink.Visible = true;
hasInfo = true;
if (!hasInfo)
this.phContent.Visible = false;
private string _imageText = "";
private string _linkText = "";
private string _linkUrl = "";
[Browsable(false)]
private string _headerText = "";
public string HeaderText
get return _headerText;
set _headerText = value;
public string ImageText
get return _imageText;
set _imageText = value;
[Browsable(false)]
private string _footerHeaderText = "";
public string FooterHeaderText
get return _footerHeaderText;
set _footerHeaderText = value;
[Browsable(false)]
private string _footerText = "";
public string FooterText
get return _footerText;
set _footerText = value;
public string LinkText
get return _linkText;
set _linkText = value;
public string LinkUrl
get return _linkUrl;
set _linkUrl = value;
private string value = string.Empty;
[WebEditor("Telerik.Libraries.WebControls.ImageSelector, Telerik.Libraries")]
public string Value
get
return this.value;
set
this.value = value;
I would like Value to be an image selector. How can I do this? Please let me know. Thanks!
Hello Huda,
You can use MediaContentSelectorView. It is not possible to use WebEditor attribute on a property a open a new widow from it. Everything should be added into the control designer. Please take a look at this post.
All the best,
Ivan Dimitrov
the Telerik team
Hey Ivan,
I have added a support ticket so I could upload the source code to you guys as I am close, but seem to be running into an issue once the actual selection and/or upload of the image occurs. Ticket number is 440637. Thanks for all your help so far.
Marc
Hello Marc,
Ok , we will get back to your support request.
Best wishes,
Ivan Dimitrov
the Telerik team
Can you set AllowExtensions with MediaContentUploaderView like you can in the RadAsyncUpload control?