Wholething.FallbackTextProperty 0.2.26

There is a newer version of this package available.
See the version list below for details.
dotnet add package Wholething.FallbackTextProperty --version 0.2.26                
NuGet\Install-Package Wholething.FallbackTextProperty -Version 0.2.26                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Wholething.FallbackTextProperty" Version="0.2.26" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Wholething.FallbackTextProperty --version 0.2.26                
#r "nuget: Wholething.FallbackTextProperty, 0.2.26"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Wholething.FallbackTextProperty as a Cake Addin
#addin nuget:?package=Wholething.FallbackTextProperty&version=0.2.26

// Install Wholething.FallbackTextProperty as a Cake Tool
#tool nuget:?package=Wholething.FallbackTextProperty&version=0.2.26                

Wholething Fallback Text Property

This Umbraco package provides two custom text property editors that allow developers to enter "fallback value", rendered from a Mustache template. The fallback can be built from other node properties and properties of other specific nodes in the content tree.

If you like this property editor you may also like Wholething.FallbackImagePickerProperty.

Use-case

Editors often want the option to override images/values but it is unclear what the default value is. We feel it's a significant improvement in experience for editors to be able to see the default value before deciding to override it.

Team

This property editor is a collaboration between Harry Gordon and Wholething (Dean Leigh and Ault Nathanielsz).

Installation

You can find the package on NuGet: https://www.nuget.org/packages/Wholething.FallbackTextProperty/

Configuration and editor experience

When you configure a "Textstring with Fallback" or "Textarea with Fallback" property you must configure a Mustache template to generate the fallback value.

fallback-text-1

In the example we use the following template: {{1104:heroHeader}} - {{pageTitle}} - Bar. In this case pageTitle refers to the nodes own property, 1104:heroHeader refers to the site home node's property heroHeader and the rest is literal. The result can be seen below:

fallback-text-2

Implementation

The implementation is fairly straight-forward and involves the following:

  • The property editor builds a dictionary of node properties and their values and does the same for any other nodes mentioned in the template.
  • The property editor renders the fallback template but does not store that in the field value (to avoid "caching" depedent values).
  • There is a value converter that returns either the entered value or renders the fallback value.

Limitations

There are a few notable limitations:

  • The fallback template can only handle simple properties. For example referring to other fallback properties in a fallback template wouldn't work.
  • The fallback template rendering does not currently use live values, just whatever is in the model when the editor is loaded.
  • Referring to other nodes in the template by node ID is not ideal, it's a suitable proof of concept but we'd like to look at other ways (for example, by name, doc type or URL).
Product Compatible and additional computed target framework versions.
.NET net5.0 is compatible.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Framework net472 is compatible.  net48 was computed.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.3.0 684 7/18/2022
1.2.0 491 6/16/2022
1.1.25 599 2/17/2022
1.1.22 605 2/14/2022
1.1.16 1,629 12/1/2021
0.2.26 1,098 9/9/2021
0.1.23 372 3/24/2021
0.1.21 339 3/24/2021
0.1.11 336 2/3/2021
0.1.6 346 1/27/2021

0.2 - Package now supports Umbraco 8 and 9 via multi-targeting