Skip to content

Instantly share code, notes, and snippets.

View AThraen's full-sized avatar

Allan Thraen AThraen

View GitHub Profile
@AThraen
AThraen / StartUp.cs
Created September 26, 2022 12:39
Visitor Group impersonation through Quick Navigation in Optimizely Content Cloud
public class Startup{
//...
public void ConfigureServices(IServiceCollection services)
{
//...
services.AddSingleton<IQuickNavigatorItemProvider, VisitorGroupQuickNavigationProvider>();
@AThraen
AThraen / UsefulExtensions.cs
Last active March 7, 2025 12:31
Optimizely CMS - Extension methods for Listing content used on a page and visitor groups used in content
using EPiServer;
using EPiServer.Core;
using EPiServer.Personalization.VisitorGroups;
using System;
using System.Collections.Generic;
using System.Linq;
namespace CodeArt.Optimizely.Extensions
{
public static class UsefulExtensions.cs
@AThraen
AThraen / ContentAnalyzer.cs
Last active June 3, 2022 12:36
ContentReportV2
using EPiServer;
using EPiServer.Approvals;
using EPiServer.Approvals.ContentApprovals;
using EPiServer.Core;
using EPiServer.DataAbstraction;
using EPiServer.Personalization.VisitorGroups;
using EPiServer.Web;
using EPiServer.Web.Mvc.Html;
using Newtonsoft.Json;
using System;
@AThraen
AThraen / FluidExtensions.cs
Created April 24, 2022 19:03
Optimizely CMS with Fluid property support
using EPiServer.ServiceLocation;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace LocalAlloy.Fluid
{
public static class FluidExtensions
{
@AThraen
AThraen / InterceptorInit.cs
Last active October 5, 2021 14:05
Split up Blocks and Media folder roots in Optimizely (Episerver)
using EPiServer.Cms.Shell.UI.UIDescriptors;
using EPiServer.Framework;
using EPiServer.Framework.Initialization;
using EPiServer.ServiceLocation;
using EPiServer.ServiceLocation.Compatibility;
using EPiServer.Shell;
using System;
using System.Linq;
namespace ExperimentSite.Widgets
@AThraen
AThraen / HoneyPotActor.cs
Last active August 23, 2020 06:10
Episerver Forms Honeypot
using EPiServer.Forms.Core.PostSubmissionActor;
using EPiServer.Forms.Core.PostSubmissionActor.Internal;
using EPiServer.Forms.Helpers.Internal;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Demo.Web.Business.Forms
{
@AThraen
AThraen / SiteVirtualRole.cs
Created May 26, 2020 12:49
Use a virtual role to only show blocks available for the current site
public class SiteVirtualRole : VirtualRoleProviderBase
{
public string Site { get; set; }
public override void Initialize(string name, NameValueCollection config)
{
base.Initialize(name, config);
Site = config["site"];
}
public override bool IsInVirtualRole(IPrincipal principal, object context)
{
@AThraen
AThraen / _Layout.cshtml
Created May 11, 2020 07:45
Using Wyam to build a blog website from an RssFeed
<html>
<head>
<title>@ViewBag.Title</title>
</head>
<body>
@RenderBody()
</body>
</html>
@AThraen
AThraen / EnrichFormSubmissionActor.cs
Last active May 15, 2020 14:13
Actor that adds additional system fields to Episerver Forms
using EPiServer;
using EPiServer.Core;
using EPiServer.Forms.Core.PostSubmissionActor;
using EPiServer.Forms.Core.PostSubmissionActor.Internal;
using EPiServer.ServiceLocation;
using EPiServer.Web.Routing;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
@AThraen
AThraen / XHTMLSettingsAttribute.cs
Created January 22, 2020 08:08
Episerver attribute to manage XHTML Configuration
using EPiServer.Shell.ObjectEditing;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace CodeArt.Episerver.Tools
{
[AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]