Skip to content

Instantly share code, notes, and snippets.

@adnanzameer
Last active September 3, 2025 13:14
Show Gist options
  • Select an option

  • Save adnanzameer/8e40abb3278bd876c053952fb13c502a to your computer and use it in GitHub Desktop.

Select an option

Save adnanzameer/8e40abb3278bd876c053952fb13c502a to your computer and use it in GitHub Desktop.
public class PreviewDraftContentAreaRenderer(IContextModeResolver contextModeResolver, IHttpContextAccessor httpContextAccessor) : ContentAreaRenderer
{
// Treat Preview like Edit so renderer doesn't skip edit-time behavior
private bool IsDraftView
{
get
{
var ctx = httpContextAccessor.HttpContext;
var hasParam = ctx?.Request?.Query.TryGetValue("showdrafts", out var val) == true
&& val.ToString().Equals("true", StringComparison.OrdinalIgnoreCase);
return hasParam
|| contextModeResolver.CurrentMode == ContextMode.Edit
|| contextModeResolver.CurrentMode == ContextMode.Preview;
}
}
protected override bool IsInEditMode()
{
return IsDraftView;
}
public override void Render(IHtmlHelper htmlHelper, ContentArea contentArea)
{
if (contentArea == null || contentArea.IsEmpty)
return;
var items = IsDraftView
? contentArea.Fragments.OfType<ContentFragment>().Select(f => new ContentAreaItem(f))
: contentArea.Fragments.GetFilteredFragments(PrincipalInfo.CurrentPrincipal)
.OfType<ContentFragment>()
.Select(f => new ContentAreaItem(f));
RenderContentAreaItems(htmlHelper, items);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment