Skip to content

Instantly share code, notes, and snippets.

@AaronSadlerUK
AaronSadlerUK / script.sql
Created April 11, 2024 12:10
Update Umbraco.Dropdown and Umbraco.DropDownMultiple to Umbraco.DropDown.Flexible
select * from cmsDataType where nodeId = ID
--update cmsDataType set propertyEditorAlias = 'Umbraco.DropDown.Flexible' where nodeId = ID
select * from cmsDataTypePreValues where datatypeNodeId = ID
insert into cmsDataTypePreValues (alias, sortorder, [value], datatypeNodeId) values ('multiple', 7, '0', ID)
DECLARE @AlterStatements TABLE (
Statement NVARCHAR(MAX)
)
INSERT INTO @AlterStatements (Statement)
SELECT 'ALTER INDEX [' + I.name + '] ON [' + T.name + '] REBUILD'
FROM sys.indexes I
INNER JOIN sys.tables T ON I.object_id = T.object_id
WHERE I.type_desc = 'NONCLUSTERED'
AND I.name IS NOT NULL
@AaronSadlerUK
AaronSadlerUK / view.cshtml
Created October 13, 2023 13:17
Google Tag Manager Nonce
<script id="gtmScript" data-nonce="@Html.CspScriptNonceValue()">
(function (w, d, s, l, i) {
w[l] = w[l] || []; w[l].push({
'gtm.start':
new Date().getTime(), event: 'gtm.js'
}); var f = d.getElementsByTagName(s)[0],
j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src =
'https://www.googletagmanager.com/gtm.js?id=' + i + dl; var n = d.querySelector('[nonce]');
n && j.setAttribute('nonce', n.nonce || n.getAttribute('nonce')); f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', '###-#######');</script>
@AaronSadlerUK
AaronSadlerUK / IntFriendlyMediaPickerValueConverter.cs
Created August 2, 2023 09:14
IntFriendlyMediaPickerValueConverter
using Umbraco.Cms.Core.Models.PublishedContent;
using Umbraco.Cms.Core;
using Umbraco.Cms.Core.PropertyEditors.ValueConverters;
using Umbraco.Cms.Core.PublishedCache;
using Umbraco.Cms.Core.Composing;
using Umbraco.Cms.Core.DependencyInjection;
using Umbraco.Cms.Core.Services;
public class IntFriendlyMediaPickerValueConverter : MediaPickerValueConverter
{
@AaronSadlerUK
AaronSadlerUK / default.aspx
Created December 14, 2022 16:56
Output Headers
<%@ Page Language="vb" %>
<html>
<head>
<title>Showing HTTP Headers via the Headers Collection in ASP.NET</title>
</head>
<body>
<%
Dim AllHttp As String
@AaronSadlerUK
AaronSadlerUK / Command
Created November 20, 2022 14:55
Auto update WMSVC Certificate after Win-Acme runs
.\wacs.exe --installation script --script "Scripts\ImportWMSVC.ps1" --scriptparameters "'{CertThumbprint}'" --certificatestore My
@AaronSadlerUK
AaronSadlerUK / IValidateYubiKeyOTPService.cs
Last active August 29, 2022 11:23
YubiKey OTP - Umbraco V10
public interface IValidateYubiKeyOTPService
{
Task<bool> ValidateYubiKey(string otp);
}
@AaronSadlerUK
AaronSadlerUK / WebPMiddleware.cs
Last active July 5, 2022 14:04
Dynamic WebP Images in Umbraco V10
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Extensions;
public class WebPMiddleware
{
private readonly RequestDelegate _next;
@AaronSadlerUK
AaronSadlerUK / HeaderPolicyCollection.cs
Last active December 2, 2021 18:05
Configuring HTTP Security Headers In Umbraco V9
public static HeaderPolicyCollection GetHeaderPolicyCollection(bool isDev)
{
var policy = new HeaderPolicyCollection()
.AddFrameOptionsDeny()
.AddXssProtectionBlock()
.AddContentTypeOptionsNoSniff()
.AddReferrerPolicyStrictOriginWhenCrossOrigin()
.RemoveServerHeader()
.AddCrossOriginOpenerPolicy(builder =>
{
@AaronSadlerUK
AaronSadlerUK / ISiteMapXmlService.cs
Created October 13, 2021 09:55
How to create an Xml Sitemap in Umbraco V9
public interface ISiteMapXmlService
{
public string GenerateXml();
}