Skip to content

Instantly share code, notes, and snippets.

@ArveSystad
Created August 10, 2013 13:38
Show Gist options
  • Save ArveSystad/6200463 to your computer and use it in GitHub Desktop.
Save ArveSystad/6200463 to your computer and use it in GitHub Desktop.
Example VirtualRoleInitializer for EPiServer utilizing PlugInSettings
[GuiPlugIn(Area = PlugInArea.None, Description = "Web Application Settings")]
public sealed class ApplicationSettings
{
private static ApplicationSettings instance;
public ApplicationSettings()
{
PlugInSettings.SettingsChanged += UpdateVirtualRoles;
}
void UpdateVirtualRoles(object sender, EventArgs e)
{
VirtualRoleInitializer.RegisterVirtualRoles();
}
public static ApplicationSettings Instance
{
get
{
if (instance == null)
{
instance = new ApplicationSettings();
PlugInSettings.AutoPopulate(instance);
}
return instance;
}
}
[PlugInProperty(Description = "Awesome, necessary configuration", AdminControl = typeof(TextBox), AdminControlValue = "Text")]
public string MyAwesomeConfigValue { get; set; }
}
[InitializableModule]
[ModuleDependency((typeof(EPiServer.Web.InitializationModule)))]
public class VirtualRoleInitializer : IInitializableModule
{
public void Initialize(InitializationEngine context)
{
RegisterVirtualRoles();
}
public static void RegisterVirtualRoles()
{
var virtualRoleRepository = VirtualRoleRepository<VirtualRoleProviderBase>.GetDefault();
string role = virtualRoleRepository.GetAllRoles().FirstOrDefault(x => x.Contains(typeof(MyVirtualRoleType).Name));
if(role != null)
virtualRoleRepository.Unregister(role, true); // First, remove the role if it exists already. I don't want to have duplicate roles
virtualRoleRepository.Register(typeof(MyVirtualRoleType).Name, new MyVirtualRoleType
{
SomeProperty = ApplicationSettings.Instance.MyAwesomeConfigValue
});
}
public void Uninitialize(InitializationEngine context) { }
public void Preload(string[] parameters) { }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment