Skip to main content

Posts

Showing posts from August, 2016

Validating for uniqueness with EPiServer

This is just a short post describing a method found for validating that the value provided for field within a page or block is unique across other instances of that content type. The specific need was for a poll block that provided a question and set of answers for users to pick from, with the results being saved to the dynamic data store. I had an "identifier" field that the editors had to complete, the value of which being unique across all polls. And rather than relying on them to remember that, it's obviously better to validate it. Here was the solution. Firstly I created an extension method that gets a list of all blocks of a given type other than the current block, looking like this: public static IEnumerable<T> GetOtherContentData<T>(this T instance) where T : IContentData { var contentTypeRepository = ServiceLocator.Current.GetInstance<IContentTypeRepository>(); var contentModelUsage = ServiceLocator.Current.GetIn

Redirect to HTTP behind load balancer (apart from localhost) with URL rewrite

Just a short "note to self for future" post as found a few variations for part of this online but needed to pull them together. Requirement is: Ensure all HTTP requests are redirected to HTTPS Handle the fact that the web server is behind a load balancer that terminates HTTPS Allow for local HTTP requests via a custom port <rewrite> <rules> <rule name="Redirect to https" enabled="true" stopProcessing="true"> <match url="^(.*)$" /> <conditions> <add input="{HTTP_X_FORWARDED_PROTO}" pattern="https" negate="true" /> <add input="{HTTP_HOST}" pattern="localhost" negate="true" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" /> </rule> </rules> </rewrite>

Personalisation and caching with Umbraco

A little while ago I put together a package for Umbraco called Personalisation Groups as a means of providing personalisation features to the Umbraco CMS. One addition I've been considering is how to add better support for use of caching for a web application utilising personalisation features. In any context, not just Umbraco, this isn't straightforward. Normally caching, at least on a page level, is going to be varied by the request URL. But of course with personalisation in place, for a given page, we are displaying different content to different users and so we don't want the cached version of a page customised to particular user being displayed to the next. There are a few ways to potentially tackle this. Some personalisation engines would look to do this client-side, using JavaScript to make the page modifications. Donut caching might be another approach if you are able to construct the templates to match it's requirements. I've looked though to tr