Skip to content

Instantly share code, notes, and snippets.

@naepalm
Last active Jul 20, 2017
Embed
What would you like to do?
Grid extensions for use with Ditto, Skybrud, DocType Grid Editor, and the DocType Grid Editor Reusable Content package
using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
using Our.Umbraco.Ditto;
using Offroadcode.Web.Models.Widgets;
using Skybrud.Umbraco.GridData;
using Skybrud.Umbraco.GridData.Values;
using Umbraco.Core.Models;
using Umbraco.Web;
namespace Offroadcode.Web.Extensions
{
public static class GridExtensions
{
private static readonly UmbracoHelper _umbraco = new UmbracoHelper(UmbracoContext.Current);
public static T GetWidgetControl<T>(this IPublishedContent content) where T : WidgetBaseModel
{
// Set a variable to use the default content if no linked content has been selected
var widget = content.As<T>();
// Check to see if there's a linked page value
if (widget.HasLinkedContentId)
{
// Run the linked page value through Umbraco.TypedContent() to get the IPublishedContent page
var dtgePage = _umbraco.TypedContent(widget.LinkedContentId);
// The value shouldn't ever be null, but weird things happen, so let's just make sure
if (dtgePage != null)
{
// Set the content to use the linked page instead of the default DTGE values
widget = dtgePage.As<T>();
}
}
return widget;
}
}
}
using Our.Umbraco.Ditto;
using Umbraco.Core.Models;
using Umbraco.Core.Models.PublishedContent;
namespace Offroadcode.Web.Models.Widgets
{
public class WidgetBaseModel : PublishedContentModel
{
public WidgetBaseModel(IPublishedContent content) : base(content)
{
}
[UmbracoProperty("dtgeLinkedId")]
public string LinkedContentId { get; set; }
public bool HasLinkedContentId => !string.IsNullOrEmpty(LinkedContentId);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment