Skip to content

Instantly share code, notes, and snippets.

@davidknipe
davidknipe / CaptureRequestsInit.cs
Last active April 14, 2016 15:36
Approval for moving content in Episerver page tree
using System;
using System.Linq;
using Epi9Site.PageMoveApproval.Models;
using EPiServer;
using EPiServer.Core;
using EPiServer.DataAccess;
using EPiServer.Framework;
using EPiServer.Framework.Initialization;
using EPiServer.Framework.Localization;
using EPiServer.Security;
@davidknipe
davidknipe / ConstrainedTextbox.css
Created January 6, 2016 14:21
Constrained Textbox Element Form Element for EPiserver
.epi-forms-icon.epi-forms-constrainedtextboxelementblock__icon {
background-image: url(constrainedtextboxelementblock16x16.png);
}
@davidknipe
davidknipe / AddTimeStampToImages.cs
Created September 1, 2015 15:50
Add a hash based on the image timestamp to ensure images are reloaded whenever they are changed
[InitializableModule]
[ModuleDependency(typeof (EPiServer.Web.InitializationModule))]
public class AddTimeStampToImages : IInitializableModule
{
public void Initialize(InitializationEngine context)
{
ContentRoute.CreatedVirtualPath += CreatedVirtualPath;
}
private void CreatedVirtualPath(object sender, UrlBuilderEventArgs urlBuilderEventArgs)
@davidknipe
davidknipe / ValidateFileCountInit.cs
Last active August 29, 2015 14:25
Restricting the total number of items in an EPiServer media folder
using System.Linq;
using EPiServer.Core;
using EPiServer.Framework;
using EPiServer.Framework.Initialization;
using EPiServer.Framework.Localization;
using EPiServer.ServiceLocation;
using InitializationModule = EPiServer.Web.InitializationModule;
namespace EPiServer.Templates.Alloy.ValidateItemsInFolder
{
@davidknipe
davidknipe / RemoveItemsFromProject.cs
Created June 2, 2015 09:04
Removing items from an EPiServer Project
/// <summary>
/// Removing items from a project
/// </summary>
/// <param name="repo">The ProjectRepository instance</param>
/// <param name="projectItem">The project item(s) to remove</param>
public void RemoveItemsFromProject(ProjectRepository repo, IList<ProjectItem> projectItem)
{
repo.DeleteItems(projectItem.Select(x => x.ID));
}
@davidknipe
davidknipe / AddItemsToProject.cs
Last active August 29, 2015 14:22
Adding items to an EPiServer Project
/// <summary>
/// Add items to a project
/// </summary>
/// <param name="repo">The ProjectRepository instance</param>
/// <param name="project">The project to save the items against</param>
/// <param name="contentReferences">A list of ContentReferences to add to the project. *Note!* the item to add should be the draft version number, not the current published version number</param>
/// <returns>A list of the saved project items</returns>
public IList<ProjectItem> AddItemsToProject(ProjectRepository repo, Project project,
IList<ContentReference> contentReferences)
{
@davidknipe
davidknipe / CreateNewProject.cs
Last active August 29, 2015 14:22
Create an EPiServer Project programmatically
/// <summary>
/// Create a project programmatically
/// </summary>
/// <param name="projectName">The name of the project, e.g. "Weekly article updates"</param>
/// <param name="userName">The username of the person creating the project</param>
/// <returns>The newly created project, null if a project with that name already exists</returns>
public Project CreateNewProject(string projectName, string userName)
{
var repo = ServiceLocator.Current.GetInstance<ProjectRepository>();
var newProject = new Project();
@davidknipe
davidknipe / OverrideIDatabaseFactoryImpl
Last active August 29, 2015 14:18
Override default EPiServer IDatabaseFactory implementation
[InitializableModule]
[ModuleDependency(typeof(ServiceContainerInitialization))]
public class OverrideIDatabaseFactoryImpl : IConfigurableModule
{
public void ConfigureContainer(ServiceConfigurationContext context)
{
context.Container.Configure(x => { x.For<IDatabaseFactory>().Use<CustomIDatabaseFactory>(); });
}
public void Initialize(InitializationEngine context) { }
@davidknipe
davidknipe / CustomIDatabaseFactory
Last active August 29, 2015 14:18
Custom IDatabaseFactory implementation for EPiServer
public class CustomIDatabaseFactory : SqlDatabaseFactory, IDatabaseFactory
{
public new IDatabaseHandler CreateDefaultHandler()
{
SiteDataSettingsElement currentSiteSettings = this.GetCurrentSiteSettings();
ConnectionStringSettings connectionStringSettings = EPiServerDataStoreSection.ConfigurationInstance.ConnectionStrings.ConnectionStrings[currentSiteSettings.ConnectionStringName];
if (connectionStringSettings == null)
{
throw new ConfigurationErrorsException(string.Format(CultureInfo.InvariantCulture, "No connection string found with the configured name '{0}'.", new object[] { currentSiteSettings.ConnectionStringName }));
}
@davidknipe
davidknipe / DebugAwareContentOutputCacheAttribute.cs
Created March 11, 2015 15:25
Debugger aware ContentOutputCacheAttribute for EPiServer - only output caches if a debugger is not attached
public class DebugAwareContentOutputCacheAttribute : ContentOutputCacheAttribute
{
public override bool Disable
{
get
{
if (System.Diagnostics.Debugger.IsAttached)
{
return true;
}