Last active
July 13, 2017 17:46
-
-
Save jonathanread/8381312e1b78c1a64017 to your computer and use it in GitHub Desktop.
Call To Action Widget. Designers go in ~/MVC/Designers Folder
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.ComponentModel; | |
using System.Linq; | |
using System.Web.Mvc; | |
using Telerik.Sitefinity.Mvc; | |
using SitefinityWebApp.Mvc.Models; | |
using Telerik.Sitefinity.Multisite; | |
using Telerik.Sitefinity.Modules.Libraries; | |
using Telerik.Sitefinity.Libraries.Model; | |
using Telerik.Sitefinity.Services; | |
using Tenet.Sitefinity; | |
using Telerik.Sitefinity.Modules.Pages; | |
namespace SitefinityWebApp.Mvc.Controllers | |
{ | |
[ControllerToolboxItem(Name = "CallToAction", Title = "CallToAction", SectionName = "MvcWidgets"), Telerik.Sitefinity.Web.UI.ControlDesign.ControlDesigner(typeof(SitefinityWebApp.Mvc.Designers.CallToActionDesigner))] | |
public class CallToActionController : Controller | |
{ | |
public String ExternalUrl { get; set; } | |
public Guid Link { get; set; } | |
public bool OpenInNewWindow { get; set; } | |
public Guid Image { get; set; } | |
public ActionResult Index() | |
{ | |
var model = new CallToActionModel(); | |
model.Link = GetPageLink(this.Link); | |
if (!String.IsNullOrEmpty(this.ExternalUrl)) | |
{ | |
model.Link = this.ExternalUrl; | |
} | |
else | |
{ | |
model.Link = GetPageLink(this.Link); | |
} | |
model.Image = GetImageUrl(this.Image); | |
model.OpenInNewWindow = this.OpenInNewWindow ? "target=_blank" : ""; | |
return View("Default", model); | |
} | |
protected override void HandleUnknownAction(string actionName) | |
{ | |
Index().ExecuteResult(ControllerContext); | |
} | |
private String GetImageUrl(Guid imageId) | |
{ | |
LibrariesManager librariesManager = LibrariesManager.GetManager(Helpers.GetCurrentProvider("Libraries")); | |
String mediaUrl = String.Empty; | |
try | |
{ | |
Image image = librariesManager.GetImages().Where(i => i.Id == imageId).FirstOrDefault(); | |
if (image != null) | |
{ | |
mediaUrl = image.MediaUrl; | |
} | |
} | |
catch (Exception ex) | |
{ | |
mediaUrl = string.Empty; | |
} | |
return mediaUrl; | |
} | |
private String GetPageLink(Guid pageId) | |
{ | |
String url = string.Empty; | |
try | |
{ | |
PageManager pageManager = PageManager.GetManager(Helpers.GetCurrentProvider("Page")); | |
if (pageId != null && pageId != Guid.Empty) | |
{ | |
var page = pageManager.GetPageNode(pageId); | |
if (page != null) | |
{ | |
url = page.GetUrl().Replace("~", String.Empty); | |
} | |
} | |
} | |
catch (Exception ex) | |
{ | |
url = string.Empty; | |
} | |
return url; | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<%@ Control %> | |
<%@ Register Assembly="Telerik.Sitefinity" TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI" %> | |
<%@ Register Assembly="Telerik.Sitefinity" TagPrefix="sitefinity" Namespace="Telerik.Sitefinity.Web.UI" %> | |
<%@ Register Assembly="Telerik.Sitefinity" TagPrefix="sfFields" Namespace="Telerik.Sitefinity.Web.UI.Fields" %> | |
<sitefinity:ResourceLinks ID="resourcesLinks" runat="server"> | |
<sitefinity:ResourceFile Name="Styles/Ajax.css" /> | |
<sitefinity:ResourceFile Name="Styles/jQuery/jquery.ui.core.css" /> | |
<sitefinity:ResourceFile Name="Styles/jQuery/jquery.ui.dialog.css" /> | |
<sitefinity:ResourceFile Name="Styles/jQuery/jquery.ui.theme.sitefinity.css" /> | |
</sitefinity:ResourceLinks> | |
<style> | |
img{max-width:100%;} | |
</style> | |
<div id="designerLayoutRoot" class="sfContentViews sfSingleContentView" style="max-height: 600px; overflow: auto; "> | |
<ol> | |
<li class="sfFormCtrl"> | |
<asp:Label runat="server" CssClass="sfTxtLbl">Image</asp:Label> | |
<img id="previewImage" src="" alt="" style="display:none;" /> | |
<span style="display: none;" class="sfSelectedItem" id="selectedImage"></span> | |
<div> | |
<asp:LinkButton ID="selectButtonImage" OnClientClick="return false;" runat="server" CssClass="sfLinkBtn sfChange"> | |
<span class="sfLinkBtnIn"> | |
<asp:Literal runat="server" Text="<%$Resources:Labels, SelectDotDotDot %>" /> | |
</span> | |
</asp:LinkButton> | |
<asp:LinkButton ID="deselectButtonImage" OnClientClick="return false;" runat="server" CssClass="sfLinkBtn sfChange"> | |
<span class="sfLinkBtnIn"> | |
<asp:Literal runat="server" Text="<%$Resources:Labels, Remove %>" /> | |
</span> | |
</asp:LinkButton> | |
</div> | |
<sf:EditorContentManagerDialog runat="server" ID="selectorImage" DialogMode="Image" HostedInRadWindow="false" BodyCssClass="" /> | |
<div class="sfExample"></div> | |
</li> | |
<li class="sfFormCtrl"> | |
<asp:Label runat="server" AssociatedControlID="ExternalUrl" CssClass="sfTxtLbl">ExternalUrl</asp:Label> | |
<asp:TextBox ID="ExternalUrl" runat="server" CssClass="sfTxt" /> | |
<div class="sfExample">Paste external links here, if this field is populated it will overwrite the internal page selector</div> | |
</li> | |
<li class="sfFormCtrl"> | |
<label class="sfTxtLbl" for="selectedLinkLabel">Internal Page</label> | |
<span style="display: none;" class="sfSelectedItem" id="selectedLinkLabel"> | |
<asp:Literal runat="server" Text="" /> | |
</span> | |
<span class="sfLinkBtn sfChange"> | |
<a href="javascript: void(0)" class="sfLinkBtnIn" id="pageSelectButtonLink"> | |
<asp:Literal runat="server" Text="<%$Resources:Labels, SelectDotDotDot %>" /> | |
</a> | |
</span> | |
<div id="selectorTagLink" runat="server" style="display: none;"> | |
<sf:PagesSelector runat="server" ID="pageSelectorLink" | |
AllowExternalPagesSelection="false" AllowMultipleSelection="false" /> | |
</div> | |
<div class="sfExample">Use this to select an internal page for this image to navigate to. If the External link field is populated this will be ignored</div> | |
</li> | |
<li class="sfFormCtrl"> | |
<asp:CheckBox runat="server" ID="OpenInNewWindow" Text="OpenInNewWindow" CssClass="sfCheckBox"/> | |
<div class="sfExample">Check to have link open in new window</div> | |
</li> | |
</ol> | |
</div> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Linq; | |
using System.Web.UI; | |
using Telerik.Sitefinity.Web.UI; | |
using Telerik.Sitefinity.Web.UI.ControlDesign; | |
using System.Collections.Generic; | |
using System.Web.UI.WebControls; | |
using System.Web; | |
using Telerik.Sitefinity.Localization; | |
using Telerik.Sitefinity.Modules.Pages; | |
using System.Web.UI.HtmlControls; | |
namespace SitefinityWebApp.Mvc.Designers | |
{ | |
/// <summary> | |
/// Represents a designer for the <typeparamref name="SitefinityWebApp.Mvc.Controllers.CallToActionController"/> widget | |
/// </summary> | |
public class CallToActionDesigner : ControlDesignerBase | |
{ | |
#region Properties | |
/// <summary> | |
/// Obsolete. Use LayoutTemplatePath instead. | |
/// </summary> | |
protected override string LayoutTemplateName | |
{ | |
get | |
{ | |
return string.Empty; | |
} | |
} | |
/// <summary> | |
/// Gets the layout template's relative or virtual path. | |
/// </summary> | |
public override string LayoutTemplatePath | |
{ | |
get | |
{ | |
if (string.IsNullOrEmpty(base.LayoutTemplatePath)) | |
return CallToActionDesigner.layoutTemplatePath; | |
return base.LayoutTemplatePath; | |
} | |
set | |
{ | |
base.LayoutTemplatePath = value; | |
} | |
} | |
protected override HtmlTextWriterTag TagKey | |
{ | |
get | |
{ | |
return HtmlTextWriterTag.Div; | |
} | |
} | |
#endregion | |
#region Control references | |
/// <summary> | |
/// The LinkButton for selecting Image. | |
/// </summary> | |
/// <value>The page selector control.</value> | |
protected internal virtual LinkButton SelectButtonImage | |
{ | |
get | |
{ | |
return this.Container.GetControl<LinkButton>("selectButtonImage", false); | |
} | |
} | |
/// <summary> | |
/// The LinkButton for deselecting Image. | |
/// </summary> | |
/// <value>The page selector control.</value> | |
protected internal virtual LinkButton DeselectButtonImage | |
{ | |
get | |
{ | |
return this.Container.GetControl<LinkButton>("deselectButtonImage", false); | |
} | |
} | |
/// <summary> | |
/// Gets the RadEditor Manager dialog for inserting image, document or video for the Image property. | |
/// </summary> | |
/// <value>The RadEditor Manager dialog for inserting image, document or video.</value> | |
protected EditorContentManagerDialog SelectorImage | |
{ | |
get | |
{ | |
return this.Container.GetControl<EditorContentManagerDialog>("selectorImage", false); | |
} | |
} | |
/// <summary> | |
/// Gets the control that is bound to the ExternalUrl property | |
/// </summary> | |
protected virtual Control ExternalUrl | |
{ | |
get | |
{ | |
return this.Container.GetControl<Control>("ExternalUrl", true); | |
} | |
} | |
/// <summary> | |
/// Gets the page selector control. | |
/// </summary> | |
/// <value>The page selector control.</value> | |
protected internal virtual PagesSelector PageSelectorLink | |
{ | |
get | |
{ | |
return this.Container.GetControl<PagesSelector>("pageSelectorLink", true); | |
} | |
} | |
/// <summary> | |
/// Gets the selector tag. | |
/// </summary> | |
/// <value>The selector tag.</value> | |
public HtmlGenericControl SelectorTagLink | |
{ | |
get | |
{ | |
return this.Container.GetControl<HtmlGenericControl>("selectorTagLink", true); | |
} | |
} | |
/// <summary> | |
/// Gets the control that is bound to the OpenInNewWindow property | |
/// </summary> | |
protected virtual Control OpenInNewWindow | |
{ | |
get | |
{ | |
return this.Container.GetControl<Control>("OpenInNewWindow", true); | |
} | |
} | |
#endregion | |
#region Methods | |
protected override void InitializeControls(Telerik.Sitefinity.Web.UI.GenericContainer container) | |
{ | |
// Place your initialization logic here | |
if (this.PropertyEditor != null) | |
{ | |
var uiCulture = this.PropertyEditor.PropertyValuesCulture; | |
this.PageSelectorLink.UICulture = uiCulture; | |
} | |
} | |
#endregion | |
#region IScriptControl implementation | |
/// <summary> | |
/// Gets a collection of script descriptors that represent ECMAScript (JavaScript) client components. | |
/// </summary> | |
public override System.Collections.Generic.IEnumerable<System.Web.UI.ScriptDescriptor> GetScriptDescriptors() | |
{ | |
var scriptDescriptors = new List<ScriptDescriptor>(base.GetScriptDescriptors()); | |
var descriptor = (ScriptControlDescriptor)scriptDescriptors.Last(); | |
descriptor.AddElementProperty("selectButtonImage", this.SelectButtonImage.ClientID); | |
descriptor.AddElementProperty("deselectButtonImage", this.DeselectButtonImage.ClientID); | |
descriptor.AddComponentProperty("selectorImage", this.SelectorImage.ClientID); | |
descriptor.AddElementProperty("externalUrl", this.ExternalUrl.ClientID); | |
descriptor.AddComponentProperty("pageSelectorLink", this.PageSelectorLink.ClientID); | |
descriptor.AddElementProperty("selectorTagLink", this.SelectorTagLink.ClientID); | |
descriptor.AddElementProperty("openInNewWindow", this.OpenInNewWindow.ClientID); | |
descriptor.AddProperty("imageServiceUrl", this.imageServiceUrl); | |
return scriptDescriptors; | |
} | |
/// <summary> | |
/// Gets a collection of ScriptReference objects that define script resources that the control requires. | |
/// </summary> | |
public override System.Collections.Generic.IEnumerable<System.Web.UI.ScriptReference> GetScriptReferences() | |
{ | |
var scripts = new List<ScriptReference>(base.GetScriptReferences()); | |
scripts.Add(new ScriptReference(CallToActionDesigner.scriptReference)); | |
return scripts; | |
} | |
/// <summary> | |
/// Gets the required by the control, core library scripts predefined in the <see cref="ScriptRef"/> enum. | |
/// </summary> | |
protected override ScriptRef GetRequiredCoreScripts() | |
{ | |
return ScriptRef.JQuery | ScriptRef.JQueryUI; | |
} | |
#endregion | |
#region Private members & constants | |
public static readonly string layoutTemplatePath = "~/Mvc/Designers/CallToActionDesigner.ascx"; | |
public const string scriptReference = "~/Mvc/Designers/CallToActionDesigner.js"; | |
private string imageServiceUrl = VirtualPathUtility.ToAbsolute("~/Sitefinity/Services/Content/ImageService.svc/"); | |
#endregion | |
} | |
} | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Type.registerNamespace("SitefinityWebApp.Mvc.Designers"); | |
SitefinityWebApp.Mvc.Designers.CallToActionDesigner = function (element) { | |
/* Initialize Image fields */ | |
this._selectButtonImage = null; | |
this._selectButtonImageClickDelegate = null; | |
this._deselectButtonImage = null; | |
this._deselectButtonImageClickDelegate = null; | |
this._selectorImageCloseDelegate = null; | |
this._selectorImageUploaderViewFileChangedDelegate = null; | |
this._ImageDialog = null; | |
this._selectorImage = null; | |
this._ImageId = null; | |
/* Initialize ExternalUrl fields */ | |
this._externalUrl = null; | |
/* Initialize Link fields */ | |
this._pageSelectorLink = null; | |
this._selectorTagLink = null; | |
this._LinkDialog = null; | |
this._showPageSelectorLinkDelegate = null; | |
this._pageSelectedLinkDelegate = null; | |
/* Initialize OpenInNewWindow fields */ | |
this._openInNewWindow = null; | |
/* Initialize the service url for the image thumbnails */ | |
this.imageServiceUrl = null; | |
/* Calls the base constructor */ | |
SitefinityWebApp.Mvc.Designers.CallToActionDesigner.initializeBase(this, [element]); | |
} | |
SitefinityWebApp.Mvc.Designers.CallToActionDesigner.prototype = { | |
/* --------------------------------- set up and tear down --------------------------------- */ | |
initialize: function () { | |
/* Here you can attach to events or do other initialization */ | |
SitefinityWebApp.Mvc.Designers.CallToActionDesigner.callBaseMethod(this, 'initialize'); | |
/* Initialize Image */ | |
this._selectButtonImageClickDelegate = Function.createDelegate(this, this._selectButtonImageClicked); | |
if (this._selectButtonImage) { | |
$addHandler(this._selectButtonImage, "click", this._selectButtonImageClickDelegate); | |
} | |
this._deselectButtonImageClickDelegate = Function.createDelegate(this, this._deselectButtonImageClicked); | |
if (this._deselectButtonImage) { | |
$addHandler(this._deselectButtonImage, "click", this._deselectButtonImageClickDelegate); | |
} | |
if (this._selectorImage) { | |
this._ImageDialog = jQuery(this._selectorImage.get_element()).dialog({ | |
autoOpen: false, | |
modal: false, | |
width: 655, | |
height: "auto", | |
closeOnEscape: true, | |
resizable: false, | |
draggable: false, | |
zIndex: 5000, | |
close: this._selectorImageCloseDelegate | |
}); | |
} | |
jQuery("#previewImage").load(function () { | |
dialogBase.resizeToContent(); | |
}); | |
this._selectorImageInsertDelegate = Function.createDelegate(this, this._selectorImageInsertHandler); | |
this._selectorImage.set_customInsertDelegate(this._selectorImageInsertDelegate); | |
$addHandler(this._selectorImage._cancelLink, "click", this._selectorImageCloseHandler); | |
this._selectorImageCloseDelegate = Function.createDelegate(this, this._selectorImageCloseHandler); | |
this._selectorImageUploaderViewFileChangedDelegate = Function.createDelegate(this, this._selectorImageUploaderViewFileChangedHandler); | |
/* Initialize Link */ | |
this._showPageSelectorLinkDelegate = Function.createDelegate(this, this._showPageSelectorLinkHandler); | |
$addHandler(this.get_pageSelectButtonLink(), "click", this._showPageSelectorLinkDelegate); | |
this._pageSelectedLinkDelegate = Function.createDelegate(this, this._pageSelectedLinkHandler); | |
this.get_pageSelectorLink().add_doneClientSelection(this._pageSelectedLinkDelegate); | |
if (this._selectorTagLink) { | |
this._LinkDialog = jQuery(this._selectorTagLink).dialog({ | |
autoOpen: false, | |
modal: false, | |
width: 395, | |
closeOnEscape: true, | |
resizable: false, | |
draggable: false, | |
zIndex: 5000 | |
}); | |
} | |
}, | |
dispose: function () { | |
/* this is the place to unbind/dispose the event handlers created in the initialize method */ | |
SitefinityWebApp.Mvc.Designers.CallToActionDesigner.callBaseMethod(this, 'dispose'); | |
/* Dispose Image */ | |
if (this._selectButtonImage) { | |
$removeHandler(this._selectButtonImage, "click", this._selectButtonImageClickDelegate); | |
} | |
if (this._selectButtonImageClickDelegate) { | |
delete this._selectButtonImageClickDelegate; | |
} | |
if (this._deselectButtonImage) { | |
$removeHandler(this._deselectButtonImage, "click", this._deselectButtonImageClickDelegate); | |
} | |
if (this._deselectButtonImageClickDelegate) { | |
delete this._deselectButtonImageClickDelegate; | |
} | |
$removeHandler(this._selectorImage._cancelLink, "click", this._selectorImageCloseHandler); | |
if (this._selectorImageCloseDelegate) { | |
delete this._selectorImageCloseDelegate; | |
} | |
if (this._selectorImageUploaderViewFileChangedDelegate) { | |
this._selectorImage._uploaderView.remove_onFileChanged(this._selectorImageUploaderViewFileChangedDelegate); | |
delete this._selectorImageUploaderViewFileChangedDelegate; | |
} | |
/* Dispose Link */ | |
if (this._showPageSelectorLinkDelegate) { | |
$removeHandler(this.get_pageSelectButtonLink(), "click", this._showPageSelectorLinkDelegate); | |
delete this._showPageSelectorLinkDelegate; | |
} | |
if (this._pageSelectedLinkDelegate) { | |
this.get_pageSelectorLink().remove_doneClientSelection(this._pageSelectedLinkDelegate); | |
delete this._pageSelectedLinkDelegate; | |
} | |
}, | |
/* --------------------------------- public methods ---------------------------------- */ | |
findElement: function (id) { | |
var result = jQuery(this.get_element()).find("#" + id).get(0); | |
return result; | |
}, | |
/* Called when the designer window gets opened and here is place to "bind" your designer to the control properties */ | |
refreshUI: function () { | |
var controlData = this._propertyEditor.get_control().Settings; /* JavaScript clone of your control - all the control properties will be properties of the controlData too */ | |
/* RefreshUI Image */ | |
this.get_selectedImage().innerHTML = controlData.Image; | |
if (controlData.Image && controlData.Image != "00000000-0000-0000-0000-000000000000") { | |
this.get_selectButtonImage().innerHTML = "<span class=\"sfLinkBtnIn\">Change</span>"; | |
jQuery(this.get_deselectButtonImage()).show() | |
var url = this.imageServiceUrl + controlData.Image + "/?published=true"; | |
jQuery.ajax({ | |
url: url, | |
type: "GET", | |
contentType: "application/json", | |
dataType: "json", | |
success: function (data) { | |
jQuery("#previewImage").show(); | |
jQuery("#previewImage").attr("src", data.Item.ThumbnailUrl); | |
dialogBase.resizeToContent(); | |
} | |
}); | |
} | |
else { | |
jQuery(this.get_deselectButtonImage()).hide() | |
} | |
/* RefreshUI ExternalUrl */ | |
jQuery(this.get_externalUrl()).val(controlData.ExternalUrl); | |
/* RefreshUI Link */ | |
if (controlData.Link && controlData.Link !== "00000000-0000-0000-0000-000000000000") { | |
var pagesSelectorLink = this.get_pageSelectorLink().get_pageSelector(); | |
var selectedPageLabelLink = this.get_selectedLinkLabel(); | |
var selectedPageButtonLink = this.get_pageSelectButtonLink(); | |
pagesSelectorLink.add_selectionApplied(function (o, args) { | |
var selectedPage = pagesSelectorLink.get_selectedItem(); | |
if (selectedPage) { | |
selectedPageLabelLink.innerHTML = selectedPage.Title.Value; | |
jQuery(selectedPageLabelLink).show(); | |
selectedPageButtonLink.innerHTML = '<span>Change</span>'; | |
} | |
}); | |
pagesSelectorLink.set_selectedItems([{ Id: controlData.Link}]); | |
} | |
/* RefreshUI OpenInNewWindow */ | |
jQuery(this.get_openInNewWindow()).attr("checked", controlData.OpenInNewWindow); | |
}, | |
/* Called when the "Save" button is clicked. Here you can transfer the settings from the designer to the control */ | |
applyChanges: function () { | |
var controlData = this._propertyEditor.get_control().Settings; | |
/* ApplyChanges Image */ | |
controlData.Image = this.get_selectedImage().innerHTML; | |
/* ApplyChanges ExternalUrl */ | |
controlData.ExternalUrl = jQuery(this.get_externalUrl()).val(); | |
/* ApplyChanges Link */ | |
/* ApplyChanges OpenInNewWindow */ | |
controlData.OpenInNewWindow = jQuery(this.get_openInNewWindow()).is(":checked"); | |
}, | |
/* --------------------------------- event handlers ---------------------------------- */ | |
/* Image event handlers */ | |
_selectButtonImageClicked: function (sender, args) { | |
this._selectorImage._uploaderView.add_onFileChanged(this._selectorImageUploaderViewFileChangedDelegate); | |
this._ImageDialog.dialog("open"); | |
jQuery("#designerLayoutRoot").hide(); | |
this._ImageDialog.dialog().parent().css("min-width", "655px"); | |
dialogBase.resizeToContent(); | |
try { | |
this._selectorImage.get_uploaderView().get_altTextField().set_value(""); | |
} | |
catch (ex) { } | |
jQuery(this._selectorImage.get_uploaderView().get_settingsPanel()).hide(); | |
return false; | |
}, | |
_deselectButtonImageClicked: function (sender, args) { | |
jQuery("#previewImage").hide(); | |
jQuery("#previewImage").attr("src", ""); | |
this.get_selectedImage().innerHTML = "00000000-0000-0000-0000-000000000000"; | |
this.get_selectButtonImage().innerHTML = "<span class=\"sfLinkBtnIn\">Select...</span>"; | |
jQuery(this.get_deselectButtonImage()).hide() | |
dialogBase.resizeToContent(); | |
return false; | |
}, | |
/* --------------------------------- private methods --------------------------------- */ | |
/* Image private methods */ | |
_selectorImageInsertHandler: function (selectedItem) { | |
if (selectedItem) { | |
this._ImageId = selectedItem.Id; | |
this.get_selectedImage().innerHTML = this._ImageId; | |
jQuery(this.get_deselectButtonImage()).show() | |
this.get_selectButtonImage().innerHTML = "<span class=\"sfLinkBtnIn\">Change</span>"; | |
jQuery("#previewImage").show(); | |
jQuery("#previewImage").attr("src", selectedItem.ThumbnailUrl); | |
} | |
this._ImageDialog.dialog("close"); | |
jQuery("#designerLayoutRoot").show(); | |
dialogBase.resizeToContent(); | |
}, | |
_selectorImageCloseHandler: function () { | |
if(this._ImageDialog){ | |
this._ImageDialog.dialog("close"); | |
} | |
jQuery("#designerLayoutRoot").show(); | |
dialogBase.resizeToContent(); | |
}, | |
_selectorImageUploaderViewFileChangedHandler: function () { | |
dialogBase.resizeToContent(); | |
}, | |
/* Link private methods */ | |
_showPageSelectorLinkHandler: function (selectedItem) { | |
var controlData = this._propertyEditor.get_control().Settings; | |
var pagesSelector = this.get_pageSelectorLink().get_pageSelector(); | |
if (controlData.Link) { | |
pagesSelector.set_selectedItems([{ Id: controlData.Link }]); | |
} | |
this._LinkDialog.dialog("open"); | |
jQuery("#designerLayoutRoot").hide(); | |
this._LinkDialog.dialog().parent().css("min-width", "355px"); | |
dialogBase.resizeToContent(); | |
}, | |
_pageSelectedLinkHandler: function (items) { | |
var controlData = this._propertyEditor.get_control().Settings; | |
var pagesSelector = this.get_pageSelectorLink().get_pageSelector(); | |
this._LinkDialog.dialog("close"); | |
jQuery("#designerLayoutRoot").show(); | |
dialogBase.resizeToContent(); | |
if (items == null) { | |
return; | |
} | |
var selectedPage = pagesSelector.get_selectedItem(); | |
if (selectedPage) { | |
this.get_selectedLinkLabel().innerHTML = selectedPage.Title.Value; | |
jQuery(this.get_selectedLinkLabel()).show(); | |
this.get_pageSelectButtonLink().innerHTML = '<span>Change</span>'; | |
controlData.Link = selectedPage.Id; | |
} | |
else { | |
jQuery(this.get_selectedLinkLabel()).hide(); | |
this.get_pageSelectButtonLink().innerHTML = '<span>Select...</span>'; | |
controlData.Link = "00000000-0000-0000-0000-000000000000"; | |
} | |
}, | |
/* --------------------------------- properties -------------------------------------- */ | |
/* Image properties */ | |
get_selectorImage: function () { | |
return this._selectorImage; | |
}, | |
set_selectorImage: function (value) { | |
this._selectorImage = value; | |
}, | |
get_selectButtonImage: function () { | |
return this._selectButtonImage; | |
}, | |
set_selectButtonImage: function (value) { | |
this._selectButtonImage = value; | |
}, | |
get_deselectButtonImage: function () { | |
return this._deselectButtonImage; | |
}, | |
set_deselectButtonImage: function (value) { | |
this._deselectButtonImage = value; | |
}, | |
get_selectedImage: function () { | |
if (this._selectedImage == null) { | |
this._selectedImage = this.findElement("selectedImage"); | |
} | |
return this._selectedImage; | |
}, | |
/* ExternalUrl properties */ | |
get_externalUrl: function () { return this._externalUrl; }, | |
set_externalUrl: function (value) { this._externalUrl = value; }, | |
/* Link properties */ | |
get_pageSelectButtonLink: function () { | |
if (this._pageSelectButtonLink == null) { | |
this._pageSelectButtonLink = this.findElement("pageSelectButtonLink"); | |
} | |
return this._pageSelectButtonLink; | |
}, | |
get_selectedLinkLabel: function () { | |
if (this._selectedLinkLabel == null) { | |
this._selectedLinkLabel = this.findElement("selectedLinkLabel"); | |
} | |
return this._selectedLinkLabel; | |
}, | |
get_pageSelectorLink: function () { | |
return this._pageSelectorLink; | |
}, | |
set_pageSelectorLink: function (val) { | |
this._pageSelectorLink = val; | |
}, | |
get_selectorTagLink: function () { | |
return this._selectorTagLink; | |
}, | |
set_selectorTagLink: function (value) { | |
this._selectorTagLink = value; | |
}, | |
/* OpenInNewWindow properties */ | |
get_openInNewWindow: function () { return this._openInNewWindow; }, | |
set_openInNewWindow: function (value) { this._openInNewWindow = value; } | |
} | |
SitefinityWebApp.Mvc.Designers.CallToActionDesigner.registerClass('SitefinityWebApp.Mvc.Designers.CallToActionDesigner', Telerik.Sitefinity.Web.UI.ControlDesign.ControlDesignerBase); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.Linq; | |
using Telerik.Sitefinity.Model.ContentLinks; | |
namespace SitefinityWebApp.Mvc.Models | |
{ | |
public class CallToActionModel | |
{ | |
public String Link { get; set; } | |
public String OpenInNewWindow { get; set; } | |
public String Image { get; set; } | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@model SitefinityWebApp.Mvc.Models.CallToActionModel | |
<a href="@Model.Link" @Model.OpenInNewWindow class="call-to-action"> | |
<img src="@Model.Image" /> | |
</a> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment